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>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2015-03-08 17:12:45 +07:00 committed by Junio C Hamano
parent a3ddcefd97
commit 7b6aff0655
2 changed files with 20 additions and 0 deletions

View File

@ -2128,3 +2128,14 @@ void mingw_startup()
/* initialize Unicode console */ /* initialize Unicode console */
winansi_init(); 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;
}

View File

@ -76,6 +76,14 @@ struct itimerval {
}; };
#define ITIMER_REAL 0 #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 * sanitize preprocessor namespace polluted by Windows headers defining
* macros which collide with git local versions * 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 setitimer(int type, struct itimerval *in, struct itimerval *out);
int sigaction(int sig, struct sigaction *in, struct sigaction *out); int sigaction(int sig, struct sigaction *in, struct sigaction *out);
int link(const char *oldpath, const char *newpath); int link(const char *oldpath, const char *newpath);
int uname(struct utsname *buf);
/* /*
* replacements of existing functions * replacements of existing functions