summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2015-03-08 10:12:45 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-03-12 20:45:18 (GMT)
commit7b6aff0655c965959a59cc7fa3ed51c2a1fbcd44 (patch)
tree59173940684a1d6cd36d33be590ceac19d8cd927 /compat
parenta3ddcefd97b0e033eca045f07e0a262e1e7bb483 (diff)
downloadgit-7b6aff0655c965959a59cc7fa3ed51c2a1fbcd44.zip
git-7b6aff0655c965959a59cc7fa3ed51c2a1fbcd44.tar.gz
git-7b6aff0655c965959a59cc7fa3ed51c2a1fbcd44.tar.bz2
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>
Diffstat (limited to 'compat')
-rw-r--r--compat/mingw.c11
-rw-r--r--compat/mingw.h9
2 files changed, 20 insertions, 0 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 70f3191..496e6f8 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -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;
+}
diff --git a/compat/mingw.h b/compat/mingw.h
index 5e499cf..a6f7b9f 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -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