version 1.9, 2003/08/07 16:42:59 |
version 1.10, 2007/01/15 22:26:35 |
|
|
uname(name) |
uname(name) |
struct utsname *name; |
struct utsname *name; |
{ |
{ |
int mib[2], rval; |
int mib[2]; |
size_t len; |
size_t len; |
char *p; |
char *p; |
|
|
rval = 0; |
|
|
|
_DIAGASSERT(name != NULL); |
_DIAGASSERT(name != NULL); |
|
|
mib[0] = CTL_KERN; |
mib[0] = CTL_KERN; |
mib[1] = KERN_OSTYPE; |
mib[1] = KERN_OSTYPE; |
len = sizeof(name->sysname); |
len = sizeof(name->sysname); |
if (sysctl(mib, 2, &name->sysname, &len, NULL, 0) == -1) |
if (sysctl(mib, 2, &name->sysname, &len, NULL, 0) == -1) |
rval = -1; |
goto error; |
|
|
mib[0] = CTL_KERN; |
mib[0] = CTL_KERN; |
mib[1] = KERN_HOSTNAME; |
mib[1] = KERN_HOSTNAME; |
len = sizeof(name->nodename); |
len = sizeof(name->nodename); |
if (sysctl(mib, 2, &name->nodename, &len, NULL, 0) == -1) |
if (sysctl(mib, 2, &name->nodename, &len, NULL, 0) == -1) |
rval = -1; |
goto error; |
|
|
mib[0] = CTL_KERN; |
mib[0] = CTL_KERN; |
mib[1] = KERN_OSRELEASE; |
mib[1] = KERN_OSRELEASE; |
len = sizeof(name->release); |
len = sizeof(name->release); |
if (sysctl(mib, 2, &name->release, &len, NULL, 0) == -1) |
if (sysctl(mib, 2, &name->release, &len, NULL, 0) == -1) |
rval = -1; |
goto error; |
|
|
/* The version may have newlines in it, turn them into spaces. */ |
|
mib[0] = CTL_KERN; |
mib[0] = CTL_KERN; |
mib[1] = KERN_VERSION; |
mib[1] = KERN_VERSION; |
len = sizeof(name->version); |
len = sizeof(name->version); |
if (sysctl(mib, 2, &name->version, &len, NULL, 0) == -1) |
if (sysctl(mib, 2, &name->version, &len, NULL, 0) == -1) |
rval = -1; |
goto error; |
else |
|
for (p = name->version; len--; ++p) { |
/* The version may have newlines in it, turn them into spaces. */ |
if (*p == '\n' || *p == '\t') { |
for (p = name->version; len--; ++p) { |
if (len > 1) |
if (*p == '\n' || *p == '\t') { |
*p = ' '; |
if (len > 1) |
else |
*p = ' '; |
*p = '\0'; |
else |
} |
*p = '\0'; |
} |
} |
|
} |
|
|
mib[0] = CTL_HW; |
mib[0] = CTL_HW; |
mib[1] = HW_MACHINE; |
mib[1] = HW_MACHINE; |
len = sizeof(name->machine); |
len = sizeof(name->machine); |
if (sysctl(mib, 2, &name->machine, &len, NULL, 0) == -1) |
if (sysctl(mib, 2, &name->machine, &len, NULL, 0) == -1) |
rval = -1; |
goto error; |
return (rval); |
return (0); |
|
|
|
error: |
|
return (-1); |
} |
} |