Skip to content

Commit

Permalink
Support 'operating-system-release' on MS-Windows
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
Eli-Zaretskii committed Jan 29, 2021
1 parent 83591e1 commit 75eb2d0
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/editfns.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions src/w32common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions src/w32fns.c
Original file line number Diff line number Diff line change
Expand Up @@ -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, ...)
Expand Down

0 comments on commit 75eb2d0

Please sign in to comment.