[PATCH v3 2/2] Cygwin: uname: add host machine tag to sysname.
Jeremy Drake
cygwin@jdrake.com
Wed Nov 27 19:26:50 GMT 2024
From: Jeremy Drake <cygwin@jdrake.com>
If the Cygwin dll's architecture is different from the host system's
architecture, append an additional tag that indicates the host system
architecture (the Cygwin dll's architecture is already indicated in
machine).
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
---
v2: get rid of hardcoded string lengths, use wincap accessors
directly instead of caching their returns, actually add "n" variable as
intended
v3: inline append_host_suffix, remove unnecessary switch cases, fix typo
strcpy -> stpcpy in ARM64 case
winsup/cygwin/uname.cc | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index dd4160189c..52c807ae54 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -33,11 +33,25 @@ uname_x (struct utsname *name)
__try
{
char buf[NI_MAXHOST + 1] ATTRIBUTE_NONSTRING;
+ int n;
memset (name, 0, sizeof (*name));
/* sysname */
- __small_sprintf (name->sysname, "CYGWIN_%s-%u",
- wincap.osname (), wincap.build_number ());
+ n = __small_sprintf (name->sysname, "CYGWIN_%s-%u",
+ wincap.osname (), wincap.build_number ());
+ if (wincap.host_machine () != wincap.cygwin_machine ())
+ {
+ switch (wincap.host_machine ())
+ {
+ case IMAGE_FILE_MACHINE_ARM64:
+ n = stpcpy (name->sysname + n, "-ARM64") - name->sysname;
+ break;
+ default:
+ n += __small_sprintf (name->sysname + n, "-%04y",
+ (int) wincap.host_machine ());
+ break;
+ }
+ }
/* nodename */
memset (buf, 0, sizeof buf);
cygwin_gethostname (buf, sizeof buf - 1);
--
2.47.0.windows.2
More information about the Cygwin-patches
mailing list