From: Alan Cox Date: Sun, 28 Dec 2014 22:28:52 +0000 (+0000) Subject: utsname: add utsname functionality X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=5a8c0f37af3f83ee79df268f7cc8c1c7634179ec;p=FUZIX.git utsname: add utsname functionality --- diff --git a/Library/libs/utsname.c b/Library/libs/utsname.c index c7a81431..201f0967 100644 --- a/Library/libs/utsname.c +++ b/Library/libs/utsname.c @@ -1,33 +1,36 @@ -/* - * utsname.c for UZIX - * by A&L Software 1999 - * - * - * FIXME: rewrite for fuzix string packing - */ - #include #include #include #include +#include -/* FIXME */ -int uname(struct utsname *__utsbuf) +int uname(struct utsname *utsbuf) { + static struct { + struct _uzisysinfoblk i; + char buf[128]; + } uts; + char *x[5]; + int bytes = _uname(&uts.i, sizeof(uts)); + char *p = uts.buf; + char *xp = x[0]; + int ct = 0; -#if 0 - struct s_kdata kdata; - int i; - getfsys(GI_KDAT, &kdata); - strcpy(__utsbuf->sysname, kdata.k_name); - strcpy(__utsbuf->nodename, kdata.k_name); - for (i = 0; i < strlen(__utsbuf->nodename); i++) - __utsbuf->nodename[i] = tolower(__utsbuf->nodename[i]); - strcpy(__utsbuf->release, kdata.k_release); - strcpy(__utsbuf->version, kdata.k_version); - strcpy(__utsbuf->machine, kdata.k_machine); - strcpy(__utsbuf->domainname, "(localhost)"); - return 0; + if (bytes == -1) + return bytes; -#endif /* */ + x[0] = utsbuf->release; + x[1] = utsbuf->sysname; + x[2] = utsbuf->version; + x[2] = utsbuf->machine; + bytes -= sizeof(struct _uzisysinfoblk); + + while(xp = x[ct++]) { + do { + *xp++=*p++; + bytes--; + } + while(*p && bytes); + } + return 0; }