mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-28 19:05:30 +10:00
kconfig: move sym_escape_string_value() to confdata.c
Now that sym_escape_string_value() is only used in confdata.c it can be a 'static' function. Rename it escape_string_value() because it is agnostic about (struct sym *). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
parent
51d792cb5d
commit
80f7bc7737
@ -620,6 +620,49 @@ static void conf_write_heading(FILE *fp, const struct comment_style *cs)
|
|||||||
fprintf(fp, "%s\n", cs->postfix);
|
fprintf(fp, "%s\n", cs->postfix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The returned pointer must be freed on the caller side */
|
||||||
|
static char *escape_string_value(const char *in)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
char *out;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = strlen(in) + strlen("\"\"") + 1;
|
||||||
|
|
||||||
|
p = in;
|
||||||
|
while (1) {
|
||||||
|
p += strcspn(p, "\"\\");
|
||||||
|
|
||||||
|
if (p[0] == '\0')
|
||||||
|
break;
|
||||||
|
|
||||||
|
len++;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
out = xmalloc(len);
|
||||||
|
out[0] = '\0';
|
||||||
|
|
||||||
|
strcat(out, "\"");
|
||||||
|
|
||||||
|
p = in;
|
||||||
|
while (1) {
|
||||||
|
len = strcspn(p, "\"\\");
|
||||||
|
strncat(out, p, len);
|
||||||
|
p += len;
|
||||||
|
|
||||||
|
if (p[0] == '\0')
|
||||||
|
break;
|
||||||
|
|
||||||
|
strcat(out, "\\");
|
||||||
|
strncat(out, p++, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat(out, "\"");
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Kconfig configuration printer
|
* Kconfig configuration printer
|
||||||
*
|
*
|
||||||
@ -648,7 +691,7 @@ static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sym->type == S_STRING && escape_string) {
|
if (sym->type == S_STRING && escape_string) {
|
||||||
escaped = sym_escape_string_value(val);
|
escaped = escape_string_value(val);
|
||||||
val = escaped;
|
val = escaped;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -702,7 +745,7 @@ static void print_symbol_for_c(FILE *fp, struct symbol *sym)
|
|||||||
val_prefix = "0x";
|
val_prefix = "0x";
|
||||||
break;
|
break;
|
||||||
case S_STRING:
|
case S_STRING:
|
||||||
escaped = sym_escape_string_value(val);
|
escaped = escape_string_value(val);
|
||||||
val = escaped;
|
val = escaped;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -18,7 +18,6 @@ extern struct symbol * symbol_hash[SYMBOL_HASHSIZE];
|
|||||||
|
|
||||||
struct symbol * sym_lookup(const char *name, int flags);
|
struct symbol * sym_lookup(const char *name, int flags);
|
||||||
struct symbol * sym_find(const char *name);
|
struct symbol * sym_find(const char *name);
|
||||||
char *sym_escape_string_value(const char *in);
|
|
||||||
void print_symbol_for_listconfig(struct symbol *sym);
|
void print_symbol_for_listconfig(struct symbol *sym);
|
||||||
struct symbol ** sym_re_search(const char *pattern);
|
struct symbol ** sym_re_search(const char *pattern);
|
||||||
const char * sym_type_name(enum symbol_type type);
|
const char * sym_type_name(enum symbol_type type);
|
||||||
|
|||||||
@ -871,50 +871,6 @@ struct symbol *sym_find(const char *name)
|
|||||||
return symbol;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The returned pointer must be freed on the caller side */
|
|
||||||
char *sym_escape_string_value(const char *in)
|
|
||||||
{
|
|
||||||
const char *p;
|
|
||||||
size_t reslen;
|
|
||||||
char *res;
|
|
||||||
size_t l;
|
|
||||||
|
|
||||||
reslen = strlen(in) + strlen("\"\"") + 1;
|
|
||||||
|
|
||||||
p = in;
|
|
||||||
for (;;) {
|
|
||||||
l = strcspn(p, "\"\\");
|
|
||||||
p += l;
|
|
||||||
|
|
||||||
if (p[0] == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
reslen++;
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = xmalloc(reslen);
|
|
||||||
res[0] = '\0';
|
|
||||||
|
|
||||||
strcat(res, "\"");
|
|
||||||
|
|
||||||
p = in;
|
|
||||||
for (;;) {
|
|
||||||
l = strcspn(p, "\"\\");
|
|
||||||
strncat(res, p, l);
|
|
||||||
p += l;
|
|
||||||
|
|
||||||
if (p[0] == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
strcat(res, "\\");
|
|
||||||
strncat(res, p++, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
strcat(res, "\"");
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct sym_match {
|
struct sym_match {
|
||||||
struct symbol *sym;
|
struct symbol *sym;
|
||||||
off_t so, eo;
|
off_t so, eo;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user