staging: olpc_dcon: Remove _strtoul() function.
authorMarek Belisko <marek.belisko@open-nandra.com>
Fri, 11 Feb 2011 01:49:24 +0000 (17:49 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 18 Feb 2011 20:33:20 +0000 (12:33 -0800)
olpc_dcon driver use self invented _strtoul  function
which make similar check like strict_strtoul just extend
for space checking at last string place. Normally access
to sys file looks echo 1024 > /sys/... so space could be considered
as error character and we could simplify code using just strict_strtoul
function instead self invented.

Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
Signed-off-by: Andres Salomon <dilinger@queued.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/olpc_dcon/olpc_dcon.c

index d3c280052d16019ad447a9713803b5a6b98881af..52b7b306a575f0f41c1e835de9ff1dcc292c4278 100644 (file)
@@ -549,48 +549,33 @@ static ssize_t dcon_resumeline_show(struct device *dev,
        return sprintf(buf, "%d\n", resumeline);
 }
 
-static int _strtoul(const char *buf, int len, unsigned int *val)
-{
-
-       char *endp;
-       unsigned int output = simple_strtoul(buf, &endp, 0);
-       int size = endp - buf;
-
-       if (*endp && isspace(*endp))
-               size++;
-
-       if (size != len)
-               return -EINVAL;
-
-       *val = output;
-       return 0;
-}
-
 static ssize_t dcon_mono_store(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
-       int enable_mono;
-       int rc = -EINVAL;
+       unsigned long enable_mono;
+       int rc;
 
-       if (_strtoul(buf, count, &enable_mono))
-               return -EINVAL;
+       rc = strict_strtoul(buf, 10, &enable_mono);
+       if (rc)
+               return rc;
 
        dcon_set_mono_mode(dev_get_drvdata(dev), enable_mono ? true : false);
-       rc = count;
 
-       return rc;
+       return count;
 }
 
 static ssize_t dcon_freeze_store(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
        struct dcon_priv *dcon = dev_get_drvdata(dev);
-       int output;
+       unsigned long output;
+       int ret;
 
-       if (_strtoul(buf, count, &output))
-               return -EINVAL;
+       ret = strict_strtoul(buf, 10, &output);
+       if (ret)
+               return ret;
 
-       printk(KERN_INFO "dcon_freeze_store: %d\n", output);
+       printk(KERN_INFO "dcon_freeze_store: %lu\n", output);
 
        switch (output) {
        case 0:
@@ -612,26 +597,28 @@ static ssize_t dcon_freeze_store(struct device *dev,
 static ssize_t dcon_resumeline_store(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
-       int rl;
-       int rc = -EINVAL;
+       unsigned long rl;
+       int rc;
 
-       if (_strtoul(buf, count, &rl))
+       rc = strict_strtoul(buf, 10, &rl);
+       if (rc)
                return rc;
 
        resumeline = rl;
        dcon_write(dev_get_drvdata(dev), DCON_REG_SCAN_INT, resumeline);
-       rc = count;
 
-       return rc;
+       return count;
 }
 
 static ssize_t dcon_sleep_store(struct device *dev,
        struct device_attribute *attr, const char *buf, size_t count)
 {
-       int output;
+       unsigned long output;
+       int ret;
 
-       if (_strtoul(buf, count, &output))
-               return -EINVAL;
+       ret = strict_strtoul(buf, 10, &output);
+       if (ret)
+               return ret;
 
        dcon_sleep(dev_get_drvdata(dev), output ? true : false);
        return count;