diff options
-rw-r--r-- | coreutils/sort.c | 4 | ||||
-rw-r--r-- | dc.c | 2 | ||||
-rw-r--r-- | findutils/grep.c | 31 | ||||
-rw-r--r-- | grep.c | 31 | ||||
-rw-r--r-- | internal.h | 2 | ||||
-rw-r--r-- | miscutils/dc.c | 2 | ||||
-rw-r--r-- | sort.c | 4 | ||||
-rw-r--r-- | utility.c | 75 |
8 files changed, 34 insertions, 117 deletions
diff --git a/coreutils/sort.c b/coreutils/sort.c index 93062faa4..a28122d51 100644 --- a/coreutils/sort.c +++ b/coreutils/sort.c @@ -84,7 +84,7 @@ static Line *line_newFromFile(FILE * src) Line *self; char *cstring = NULL; - if ((cstring = cstring_lineFromFile(src))) { + if ((cstring = get_line_from_file(src))) { self = line_alloc(); if (self == NULL) { return NULL; @@ -304,4 +304,4 @@ int sort_main(int argc, char **argv) return(0); } -/* $Id: sort.c,v 1.17 2000/06/19 17:25:40 andersen Exp $ */ +/* $Id: sort.c,v 1.18 2000/06/28 22:15:26 markw Exp $ */ @@ -170,7 +170,7 @@ int dc_main(int argc, char **argv) char *line = NULL; char *cursor = NULL; char *token = NULL; - while ((line = cstring_lineFromFile(stdin))) { + while ((line = get_line_from_file(stdin))) { cursor = line; len = number_of_tokens(line); for (i = 0; i < len; i++) { diff --git a/findutils/grep.c b/findutils/grep.c index aca469e2f..a374e114d 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -46,8 +46,6 @@ static const char grep_usage[] = #endif ; -static const int GROWBY = 80; /* how large we will grow strings by */ - /* options */ static int ignore_case = 0; static int print_filename = 0; @@ -62,35 +60,6 @@ static int nmatches = 0; /* keeps track of the number of matches */ static char *cur_file = NULL; /* the current file we are reading */ -/* This returns a malloc'ed char * which must be stored and free'ed */ -/* XXX: This function should probably go in a 'common'/'util'/'misc' file - * somewhere so it can be used by other folks. */ -static char *get_line_from_file(FILE *file) -{ - int ch; - int idx = 0; - char *linebuf = NULL; - int linebufsz = 0; - - while (1) { - ch = fgetc(file); - if (ch == EOF) - break; - /* grow the line buffer as necessary */ - if (idx > linebufsz-1) - linebuf = realloc(linebuf, linebufsz += GROWBY); - linebuf[idx++] = (char)ch; - if ((char)ch == '\n') - break; - } - - if (idx == 0) - return NULL; - - linebuf[idx] = 0; - return linebuf; -} - static void print_matched_line(char *line, int linenum) { if (print_filename) @@ -46,8 +46,6 @@ static const char grep_usage[] = #endif ; -static const int GROWBY = 80; /* how large we will grow strings by */ - /* options */ static int ignore_case = 0; static int print_filename = 0; @@ -62,35 +60,6 @@ static int nmatches = 0; /* keeps track of the number of matches */ static char *cur_file = NULL; /* the current file we are reading */ -/* This returns a malloc'ed char * which must be stored and free'ed */ -/* XXX: This function should probably go in a 'common'/'util'/'misc' file - * somewhere so it can be used by other folks. */ -static char *get_line_from_file(FILE *file) -{ - int ch; - int idx = 0; - char *linebuf = NULL; - int linebufsz = 0; - - while (1) { - ch = fgetc(file); - if (ch == EOF) - break; - /* grow the line buffer as necessary */ - if (idx > linebufsz-1) - linebuf = realloc(linebuf, linebufsz += GROWBY); - linebuf[idx++] = (char)ch; - if ((char)ch == '\n') - break; - } - - if (idx == 0) - return NULL; - - linebuf[idx] = 0; - return linebuf; -} - static void print_matched_line(char *line, int linenum) { if (print_filename) diff --git a/internal.h b/internal.h index 6e4f06cb5..41a72e18a 100644 --- a/internal.h +++ b/internal.h @@ -258,7 +258,7 @@ extern long getNum (const char *cp); extern pid_t* findPidByName( char* pidName); extern void *xmalloc (size_t size); extern int find_real_root_device_name(char* name); -extern char *cstring_lineFromFile(FILE *f); +extern char *get_line_from_file(FILE *file); /* These parse entries in /etc/passwd and /etc/group. This is desirable * for BusyBox since we want to avoid using the glibc NSS stuff, which diff --git a/miscutils/dc.c b/miscutils/dc.c index 31a5471c3..5bf3bc984 100644 --- a/miscutils/dc.c +++ b/miscutils/dc.c @@ -170,7 +170,7 @@ int dc_main(int argc, char **argv) char *line = NULL; char *cursor = NULL; char *token = NULL; - while ((line = cstring_lineFromFile(stdin))) { + while ((line = get_line_from_file(stdin))) { cursor = line; len = number_of_tokens(line); for (i = 0; i < len; i++) { @@ -84,7 +84,7 @@ static Line *line_newFromFile(FILE * src) Line *self; char *cstring = NULL; - if ((cstring = cstring_lineFromFile(src))) { + if ((cstring = get_line_from_file(src))) { self = line_alloc(); if (self == NULL) { return NULL; @@ -304,4 +304,4 @@ int sort_main(int argc, char **argv) return(0); } -/* $Id: sort.c,v 1.17 2000/06/19 17:25:40 andersen Exp $ */ +/* $Id: sort.c,v 1.18 2000/06/28 22:15:26 markw Exp $ */ @@ -1586,56 +1586,35 @@ extern int find_real_root_device_name(char* name) } #endif -const unsigned int CSTRING_BUFFER_LENGTH = 1024; -/* recursive parser that returns cstrings of arbitrary length - * from a FILE* - */ -static char * -cstring_alloc(FILE* f, int depth) -{ - char *cstring; - char buffer[CSTRING_BUFFER_LENGTH]; - int target = CSTRING_BUFFER_LENGTH * depth; - int c, i, len, size; - - /* fill buffer */ - i = 0; - while ((c = fgetc(f)) != EOF) { - buffer[i] = (char) c; - if (buffer[i++] == 0x0a) { break; } - if (i == CSTRING_BUFFER_LENGTH) { break; } - } - len = i; - - /* recurse or malloc? */ - if (len == CSTRING_BUFFER_LENGTH) { - cstring = cstring_alloc(f, (depth + 1)); - } else { - /* [special case] EOF */ - if ((depth | len) == 0) { return NULL; } - - /* malloc */ - size = target + len + 1; - cstring = malloc(size); - if (!cstring) { return NULL; } - cstring[size - 1] = 0; - } - - /* copy buffer */ - if (cstring) { - memcpy(&cstring[target], buffer, len); - } - return cstring; -} +static const int GROWBY = 80; /* how large we will grow strings by */ -/* - * wrapper around recursive cstring_alloc - * it's the caller's responsibility to free the cstring - */ -char * -cstring_lineFromFile(FILE *f) +/* get_line_from_file() - This function reads an entire line from a text file + * up to a newline. It returns a malloc'ed char * which must be stored and + * free'ed by the caller. */ +extern char *get_line_from_file(FILE *file) { - return cstring_alloc(f, 0); + int ch; + int idx = 0; + char *linebuf = NULL; + int linebufsz = 0; + + while (1) { + ch = fgetc(file); + if (ch == EOF) + break; + /* grow the line buffer as necessary */ + if (idx > linebufsz-1) + linebuf = realloc(linebuf, linebufsz += GROWBY); + linebuf[idx++] = (char)ch; + if ((char)ch == '\n') + break; + } + + if (idx == 0) + return NULL; + + linebuf[idx] = 0; + return linebuf; } /* END CODE */ |