forked from luck/tmp_suning_uos_patched
staging: speakup: remove custom string_unescape_any_inplace
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>
This commit is contained in:
parent
16c7fa0582
commit
576d742e4a
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user