kconfig: move sym_escape_string_value() to confdata.c
authorMasahiro Yamada <masahiroy@kernel.org>
Fri, 1 Oct 2021 05:32:48 +0000 (14:32 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 11 Oct 2021 14:13:23 +0000 (23:13 +0900)
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>
scripts/kconfig/confdata.c
scripts/kconfig/lkc_proto.h
scripts/kconfig/symbol.c

index f17a2a9562ee247db8dc9d249d4c65382dec9131..26b39d34e2be6e16638a1917f77c000e258eb231 100644 (file)
@@ -620,6 +620,49 @@ static void conf_write_heading(FILE *fp, const struct comment_style *cs)
        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
  *
@@ -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) {
-               escaped = sym_escape_string_value(val);
+               escaped = escape_string_value(val);
                val = escaped;
        }
 
@@ -702,7 +745,7 @@ static void print_symbol_for_c(FILE *fp, struct symbol *sym)
                        val_prefix = "0x";
                break;
        case S_STRING:
-               escaped = sym_escape_string_value(val);
+               escaped = escape_string_value(val);
                val = escaped;
        default:
                break;
index ec4a01bb60cebd6137183cfefbed473a510b89eb..edd1e617b25c5c3683ba4287f108ccb690608d10 100644 (file)
@@ -18,7 +18,6 @@ extern struct symbol * symbol_hash[SYMBOL_HASHSIZE];
 
 struct symbol * sym_lookup(const char *name, int flags);
 struct symbol * sym_find(const char *name);
-char *sym_escape_string_value(const char *in);
 void print_symbol_for_listconfig(struct symbol *sym);
 struct symbol ** sym_re_search(const char *pattern);
 const char * sym_type_name(enum symbol_type type);
index 6bf8665a6a0f46f8b2da0b75d847e264ac387c4a..0572330bf8a78aed51877dfa7429aab23d55069d 100644 (file)
@@ -871,50 +871,6 @@ struct symbol *sym_find(const char *name)
        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 symbol   *sym;
        off_t           so, eo;