diff --git a/text.h b/text.h index ac867ae..250120a 100644 --- a/text.h +++ b/text.h @@ -8,5 +8,5 @@ struct linebuf { #define EMPTY_LINEBUF {NULL, 0, 0,} void getlines(FILE *, struct linebuf *); -char *afgets(char **, size_t *, FILE *); +size_t afgets(char **, size_t *, FILE *); void concat(FILE *, const char *, FILE *, const char *); diff --git a/util/afgets.c b/util/afgets.c index e1d719d..a01e3ed 100644 --- a/util/afgets.c +++ b/util/afgets.c @@ -6,7 +6,7 @@ #include "../text.h" #include "../util.h" -char * +size_t afgets(char **p, size_t *size, FILE *fp) { char buf[BUFSIZ]; @@ -14,7 +14,7 @@ afgets(char **p, size_t *size, FILE *fp) while(fgets(buf, sizeof buf, fp)) { len += (n = strlen(buf)); - if(len+1 > *size && !(*p = realloc(*p, len+1))) + if(len+1 > *size && !(*p = realloc(*p, *size = len+1))) eprintf("realloc:"); strcpy(&(*p)[len-n], buf); @@ -23,5 +23,5 @@ afgets(char **p, size_t *size, FILE *fp) break; } - return (len > 0) ? *p : NULL; + return len; }