kconfig: remove compat_getline()
authorMasahiro Yamada <masahiroy@kernel.org>
Fri, 2 Feb 2024 15:58:02 +0000 (00:58 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 19 Feb 2024 09:20:40 +0000 (18:20 +0900)
Commit 1a7a8c6fd8ca ("kconfig: allow long lines in config file") added
a self-implemented getline() for better portability.

However, getline() is standardized [1] and already used in other programs
such as scripts/kallsyms.c.

Use getline() provided by libc.

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getdelim.html

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/confdata.c

index f53dcdd445976aa8759e13e6e3103ef02f76ead1..7f0aa39b68c1e266113a6b1221ee9fde5cf2ab26 100644 (file)
@@ -293,63 +293,12 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
        return 0;
 }
 
-#define LINE_GROWTH 16
-static int add_byte(int c, char **lineptr, size_t slen, size_t *n)
-{
-       size_t new_size = slen + 1;
-
-       if (new_size > *n) {
-               new_size += LINE_GROWTH - 1;
-               new_size *= 2;
-               *lineptr = xrealloc(*lineptr, new_size);
-               *n = new_size;
-       }
-
-       (*lineptr)[slen] = c;
-
-       return 0;
-}
-
-static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream)
-{
-       char *line = *lineptr;
-       size_t slen = 0;
-
-       for (;;) {
-               int c = getc(stream);
-
-               switch (c) {
-               case '\n':
-                       if (add_byte(c, &line, slen, n) < 0)
-                               goto e_out;
-                       slen++;
-                       /* fall through */
-               case EOF:
-                       if (add_byte('\0', &line, slen, n) < 0)
-                               goto e_out;
-                       *lineptr = line;
-                       if (slen == 0)
-                               return -1;
-                       return slen;
-               default:
-                       if (add_byte(c, &line, slen, n) < 0)
-                               goto e_out;
-                       slen++;
-               }
-       }
-
-e_out:
-       line[slen-1] = '\0';
-       *lineptr = line;
-       return -1;
-}
-
 /* like getline(), but the newline character is stripped away */
 static ssize_t getline_stripped(char **lineptr, size_t *n, FILE *stream)
 {
        ssize_t len;
 
-       len = compat_getline(lineptr, n, stream);
+       len = getline(lineptr, n, stream);
 
        if (len > 0 && (*lineptr)[len - 1] == '\n') {
                len--;