mingw32: add uname()

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>

Nguyễn Thái Ngọc Duy committed Mar 8, 2015 at 17:12 UTC 7b6aff0655c965959a59cc7fa3ed51c2a1fbcd44
2 files changed +20
compat/mingw.c
+11
@@ -2128,3 +2128,14 @@ void mingw_startup()
2128 /* initialize Unicode console */
2129 winansi_init();
2130 }
2131 +
2132 +int uname(struct utsname *buf)
2133 +{
2134 + DWORD v = GetVersion();
2135 + memset(buf, 0, sizeof(*buf));
2136 + strcpy(buf->sysname, "Windows");
2137 + sprintf(buf->release, "%u.%u", v & 0xff, (v >> 8) & 0xff);
2138 + /* assuming NT variants only.. */
2139 + sprintf(buf->version, "%u", (v >> 16) & 0x7fff);
2140 + return 0;
2141 +}
compat/mingw.h
+9
@@ -76,6 +76,14 @@ struct itimerval {
76 };
77 #define ITIMER_REAL 0
78
79 +struct utsname {
80 + char sysname[16];
81 + char nodename[1];
82 + char release[16];
83 + char version[16];
84 + char machine[1];
85 +};
86 +
87 /*
88 * sanitize preprocessor namespace polluted by Windows headers defining
89 * macros which collide with git local versions
@@ -171,6 +179,7 @@ struct passwd *getpwuid(uid_t uid);
179 int setitimer(int type, struct itimerval *in, struct itimerval *out);
180 int sigaction(int sig, struct sigaction *in, struct sigaction *out);
181 int link(const char *oldpath, const char *newpath);
182 +int uname(struct utsname *buf);
183
184 /*
185 * replacements of existing functions