staging: speakup: remove custom string_unescape_any_inplace
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 30 Apr 2013 22:27:31 +0000 (15:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 May 2013 00:04:03 +0000 (17:04 -0700)
There is generic implementation of the function to unescape strings.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: William Hubbs <w.d.hubbs@gmail.com>
Cc: Chris Brannon <chris@the-brannons.com>
Cc: Kirk Reiser <kirk@braille.uwo.ca>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/staging/speakup/kobjects.c
drivers/staging/speakup/speakup.h
drivers/staging/speakup/varhandlers.c

index d6d9264e4ca7992e994bb19ecb08f836d40b1619..943b6c134a229d99e189f2376ddcf8a74d79eb06 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/kernel.h>
 #include <linux/kobject.h>
 #include <linux/string.h>
+#include <linux/string_helpers.h>
 #include <linux/sysfs.h>
 #include <linux/ctype.h>
 
@@ -417,7 +418,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
                bytes = min_t(size_t, len, 250);
                strncpy(tmp, ptr, bytes);
                tmp[bytes] = '\0';
-               spk_xlate(tmp);
+               string_unescape_any_inplace(tmp);
                synth_printf("%s", tmp);
                ptr += bytes;
                len -= bytes;
@@ -605,7 +606,8 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
        if (param->data == NULL)
                return 0;
        ret = 0;
-       cp = spk_xlate((char *) buf);
+       cp = (char *)buf;
+       string_unescape_any_inplace(cp);
 
        spk_lock(flags);
        switch (param->var_type) {
index c387a02fc1c2bdf97fe8f21892b95311ab7d5c21..0126f714821a126808670de2655b0017461b5346 100644 (file)
@@ -54,7 +54,6 @@ void spk_get_index_count(int *linecount, int *sentcount);
 extern int spk_set_key_info(const u_char *key_info, u_char *k_buffer);
 extern char *spk_strlwr(char *s);
 extern char *spk_s2uchar(char *start, char *dest);
-extern char *spk_xlate(char *s);
 extern int speakup_kobj_init(void);
 extern void speakup_kobj_exit(void);
 extern int spk_chartab_get_value(char *keyword);
index 0099cb12e56065291144e74ee9c13d27ea17f6ff..7f6288fc2299b91dbecc653d763ca7006ec6b8ca 100644 (file)
@@ -328,49 +328,3 @@ char *spk_s2uchar(char *start, char *dest)
        *dest = (u_char)val;
        return start;
 }
-
-char *spk_xlate(char *s)
-{
-       static const char finds[] = "nrtvafe";
-       static const char subs[] = "\n\r\t\013\001\014\033";
-       static const char hx[] = "0123456789abcdefABCDEF";
-       char *p = s, *p1, *p2, c;
-       int num;
-       while ((p = strchr(p, '\\'))) {
-               p1 = p+1;
-               p2 = strchr(finds, *p1);
-               if (p2) {
-                       *p++ = subs[p2-finds];
-                       p1++;
-               } else if (*p1 >= '0' && *p1 <= '7') {
-                       num = (*p1++)&7;
-                       while (num < 32 && *p1 >= '0' && *p1 <= '7') {
-                               num <<= 3;
-                               num += (*p1++)&7;
-                       }
-                       *p++ = num;
-               } else if (*p1 == 'x' &&
-                               strchr(hx, p1[1]) && strchr(hx, p1[2])) {
-                       p1++;
-                       c = *p1++;
-                       if (c > '9')
-                               c = (c - '7') & 0x0f;
-                       else
-                               c -= '0';
-                       num = c << 4;
-                       c = *p1++;
-                       if (c > '9')
-                               c = (c-'7')&0x0f;
-                       else
-                               c -= '0';
-                       num += c;
-                       *p++ = num;
-               } else
-                       *p++ = *p1++;
-               p2 = p;
-               while (*p1)
-                       *p2++ = *p1++;
-               *p2 = '\0';
-       }
-       return s;
-}