diff options
Diffstat (limited to 'sbin/sysctl/sysctl.c')
-rw-r--r-- | sbin/sysctl/sysctl.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sbin/sysctl/sysctl.c b/sbin/sysctl/sysctl.c index efa8825..85621e0 100644 --- a/sbin/sysctl/sysctl.c +++ b/sbin/sysctl/sysctl.c @@ -563,7 +563,12 @@ show_var(int *oid, int nlen) fputs(val, stdout); if(*fmt == 'U') printf(hflag ? "%'u" : "%u", *(unsigned int *)p); - else + else if (*fmt == 'K') { + if (*(int *)p < 0) + printf("%d", *(int *)p); + else + printf("%d.%dC", (*(int *)p - 2732) / 10, (*(int *)p - 2732) % 10); + } else printf(hflag ? "%'d" : "%d", *(int *)p); val = " "; len -= sizeof(int); @@ -580,7 +585,12 @@ show_var(int *oid, int nlen) fputs(val, stdout); if(*fmt == 'U') printf(hflag ? "%'lu" : "%lu", *(unsigned long *)p); - else + else if (*fmt == 'K') { + if (*(long *)p < 0) + printf("%ld", *(long *)p); + else + printf("%ld.%ldC", (*(long *)p - 2732) / 10, (*(long *)p - 2732) % 10); + } else printf(hflag ? "%'ld" : "%ld", *(long *)p); val = " "; len -= sizeof(long); |