]> git.eshelyaron.com Git - emacs.git/commitdiff
Support 'operating-system-release' on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Fri, 29 Jan 2021 11:52:31 +0000 (13:52 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 29 Jan 2021 11:52:31 +0000 (13:52 +0200)
* src/w32fns.c (w32_version_string) [WINDOWSNT]: New function.
* src/w32common.h (w32_version_string) [WINDOWSNT]: Add prototype.
* src/editfns.c (init_editfns) [WINDOWSNT]: Produce a non-nil
string with the OS version.

src/editfns.c
src/w32common.h
src/w32fns.c

index 3c2a858b46e511f3b9f76c8927b8f7024410b679..e3285494c144b05d0dc4408121345ee2626a2737 100644 (file)
@@ -52,6 +52,9 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "window.h"
 #include "blockinput.h"
 
+#ifdef WINDOWSNT
+# include "w32common.h"
+#endif
 static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
 static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool);
 
@@ -121,12 +124,14 @@ init_editfns (void)
   else if (NILP (Vuser_full_name))
     Vuser_full_name = build_string ("unknown");
 
-#ifdef HAVE_SYS_UTSNAME_H
+#if defined HAVE_SYS_UTSNAME_H
   {
     struct utsname uts;
     uname (&uts);
     Voperating_system_release = build_string (uts.release);
   }
+#elif defined WINDOWSNT
+  Voperating_system_release = build_string (w32_version_string ());
 #else
   Voperating_system_release = Qnil;
 #endif
index 94bb457e59d44b3fc3f128c320f4f176b37cfa1e..714a2386a68b52575c488f4404ffe3f9a12ef135 100644 (file)
@@ -50,6 +50,11 @@ extern int os_subtype;
 /* Cache system info, e.g., the NT page size.  */
 extern void cache_system_info (void);
 
+#ifdef WINDOWSNT
+/* Return a static buffer with the MS-Windows version string.  */
+extern char * w32_version_string (void);
+#endif
+
 typedef void (* VOIDFNPTR) (void);
 
 /* Load a function address from a DLL.  Cast the result via VOIDFNPTR
index 7519c752b68e4ff679299c5462bcb58513ca5890..e93a0b85d93d54de3df832e9d8882c007f674b91 100644 (file)
@@ -9480,6 +9480,18 @@ cache_system_info (void)
   w32_num_mouse_buttons = GetSystemMetrics (SM_CMOUSEBUTTONS);
 }
 
+#ifdef WINDOWSNT
+char *
+w32_version_string (void)
+{
+  /* NNN.NNN.NNNNNNNNNN */
+  static char version_string[3 + 1 + 3 + 1 + 10 + 1];
+  _snprintf (version_string, sizeof version_string, "%d.%d.%d",
+            w32_major_version, w32_minor_version, w32_build_number);
+  return version_string;
+}
+#endif
+
 #ifdef EMACSDEBUG
 void
 _DebPrint (const char *fmt, ...)