Use getline instead of readline

This commit is contained in:
Bert
2011-05-29 11:45:58 +02:00
parent 2252a0148d
commit ea23115af4
6 changed files with 19 additions and 52 deletions

38
util.c
View File

@ -140,7 +140,7 @@ char* absolute_path(const char *filename) {
path = (char*) s_malloc(len);
snprintf(path, len, "%s/%s", dir, basename);
goto end;
goto end;
error:
if (path) {
@ -297,39 +297,3 @@ int r_mkdir(const char *path) {
return err;
}
char* readline(FILE *stream) {
size_t len;
char *buf, *s, *end;
if (!stream || feof(stream) || ferror(stream))
return NULL;
len = FNAME_LEN;
s = buf = (char*) s_malloc(len * sizeof(char));
do {
*s = '\0';
fgets(s, len - (s - buf), stream);
if ((end = strchr(s, '\n'))) {
*end = '\0';
} else if (strlen(s) + 1 == len - (s - buf)) {
buf = (char*) s_realloc(buf, 2 * len * sizeof(char));
s = buf + len - 1;
len *= 2;
} else {
s += strlen(s);
}
} while (!end && !feof(stream) && !ferror(stream));
if (ferror(stream)) {
s = NULL;
} else {
s = (char*) s_malloc((strlen(buf) + 1) * sizeof(char));
strcpy(s, buf);
}
free(buf);
return s;
}