mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
kconfig: remove compat_getline()
Commit 1a7a8c6fd8
("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>
This commit is contained in:
parent
17787468d4
commit
aa8427fb13
@ -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--;
|
||||
|
Loading…
Reference in New Issue
Block a user