mingw32: add uname()
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 8 Mar 2015 10:12:45 +0000 (17:12 +0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Mar 2015 20:45:18 +0000 (13:45 -0700)
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/mingw.c
compat/mingw.h
index 70f3191a4f19f10a156d1f2c054943d5147ab049..496e6f8bb0217c40450c61e88fbf1e08fdb3f704 100644 (file)
@@ -2128,3 +2128,14 @@ void mingw_startup()
        /* initialize Unicode console */
        winansi_init();
 }
+
+int uname(struct utsname *buf)
+{
+       DWORD v = GetVersion();
+       memset(buf, 0, sizeof(*buf));
+       strcpy(buf->sysname, "Windows");
+       sprintf(buf->release, "%u.%u", v & 0xff, (v >> 8) & 0xff);
+       /* assuming NT variants only.. */
+       sprintf(buf->version, "%u", (v >> 16) & 0x7fff);
+       return 0;
+}
index 5e499cfb71a00ea81013c1ed21e9a5e9dc9e2544..a6f7b9f1a79e6e13bec379482e5ab23edb057dd8 100644 (file)
@@ -76,6 +76,14 @@ struct itimerval {
 };
 #define ITIMER_REAL 0
 
+struct utsname {
+       char sysname[16];
+       char nodename[1];
+       char release[16];
+       char version[16];
+       char machine[1];
+};
+
 /*
  * sanitize preprocessor namespace polluted by Windows headers defining
  * macros which collide with git local versions
@@ -171,6 +179,7 @@ struct passwd *getpwuid(uid_t uid);
 int setitimer(int type, struct itimerval *in, struct itimerval *out);
 int sigaction(int sig, struct sigaction *in, struct sigaction *out);
 int link(const char *oldpath, const char *newpath);
+int uname(struct utsname *buf);
 
 /*
  * replacements of existing functions