summaryrefslogtreecommitdiffstats
path: root/sbin/sysctl
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-10-21 18:31:54 +0000
committered <ed@FreeBSD.org>2009-10-21 18:31:54 +0000
commit5598d561ce3ef08a3a8c5d518ca09e28883ff050 (patch)
tree23fe20d4924775ea060d4d15b5ab17ca153a0768 /sbin/sysctl
parent5ac7c6cc4e2462cb819184a2e2efc3cc49d4b667 (diff)
downloadFreeBSD-src-5598d561ce3ef08a3a8c5d518ca09e28883ff050.zip
FreeBSD-src-5598d561ce3ef08a3a8c5d518ca09e28883ff050.tar.gz
Make input parsing in Farhenheit actually work.
Don't clobber *p with '\0' when testing whether it has the value of 'F'. Just use the semantics of strtof() properly. If it returns p, we know that it parsed the string until it reached 'C' or 'F'. The code has not changed since it has been imported (r161951, Sep 3, 2006). Submitted by: Alexandre Perrin <kaworu@kaworu.ch> MFC after: 1 week
Diffstat (limited to 'sbin/sysctl')
-rw-r--r--sbin/sysctl/sysctl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sbin/sysctl/sysctl.c b/sbin/sysctl/sysctl.c
index 4140fb3..4810c61 100644
--- a/sbin/sysctl/sysctl.c
+++ b/sbin/sysctl/sysctl.c
@@ -68,7 +68,7 @@ static int sysctl_all(int *oid, int len);
static int name2oid(char *, int *);
static void set_T_dev_t(char *, void **, size_t *);
-static int set_IK(char *, int *);
+static int set_IK(const char *, int *);
static void
usage(void)
@@ -452,19 +452,19 @@ set_T_dev_t(char *path, void **val, size_t *size)
}
static int
-set_IK(char *str, int *val)
+set_IK(const char *str, int *val)
{
float temp;
int len, kelv;
- char *p, *endptr;
+ const char *p;
+ char *endptr;
if ((len = strlen(str)) == 0)
return (0);
p = &str[len - 1];
if (*p == 'C' || *p == 'F') {
- *p = '\0';
temp = strtof(str, &endptr);
- if (endptr == str || *endptr != '\0')
+ if (endptr == str || endptr != p)
return (0);
if (*p == 'F')
temp = (temp - 32) * 5 / 9;
OpenPOWER on IntegriCloud