sunrpc/cache: convert to use string_escape_str()
There is nice kernel helper to escape a given strings by provided rules. Let's use it instead of custom approach. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> [bfields@redhat.com: fix length calculation] Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
acf06a7fa1
commit
1b2e122d16
1 changed files with 6 additions and 20 deletions
|
@ -20,6 +20,7 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
@ -1067,30 +1068,15 @@ void qword_add(char **bpp, int *lp, char *str)
|
|||
{
|
||||
char *bp = *bpp;
|
||||
int len = *lp;
|
||||
char c;
|
||||
int ret;
|
||||
|
||||
if (len < 0) return;
|
||||
|
||||
while ((c=*str++) && len)
|
||||
switch(c) {
|
||||
case ' ':
|
||||
case '\t':
|
||||
case '\n':
|
||||
case '\\':
|
||||
if (len >= 4) {
|
||||
*bp++ = '\\';
|
||||
*bp++ = '0' + ((c & 0300)>>6);
|
||||
*bp++ = '0' + ((c & 0070)>>3);
|
||||
*bp++ = '0' + ((c & 0007)>>0);
|
||||
}
|
||||
len -= 4;
|
||||
break;
|
||||
default:
|
||||
*bp++ = c;
|
||||
len--;
|
||||
}
|
||||
if (c || len <1) len = -1;
|
||||
ret = string_escape_str(str, &bp, len, ESCAPE_OCTAL, "\\ \n\t");
|
||||
if (ret < 0 || ret == len)
|
||||
len = -1;
|
||||
else {
|
||||
len -= ret;
|
||||
*bp++ = ' ';
|
||||
len--;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue