diff options
Diffstat (limited to 'src/filter.c')
-rw-r--r-- | src/filter.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/src/filter.c b/src/filter.c index 987366a..1ac199f 100644 --- a/src/filter.c +++ b/src/filter.c @@ -47,9 +47,9 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd, va_list ap; /* allocate and initialize new filter */ - f = (struct filter *) flex_alloc (sizeof (struct filter)); + f = malloc(sizeof(struct filter)); if (!f) - flexerror (_("flex_alloc failed (f) in filter_create_ext")); + flexerror(_("malloc failed (f) in filter_create_ext")); memset (f, 0, sizeof (*f)); f->filter_func = NULL; f->extra = NULL; @@ -66,23 +66,16 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd, /* allocate argv, and populate it with the argument list. */ max_args = 8; - f->argv = - (const char **) flex_alloc (sizeof (char *) * - (max_args + 1)); + f->argv = malloc(sizeof(char *) * (size_t) (max_args + 1)); if (!f->argv) - flexerror (_("flex_alloc failed (f->argv) in filter_create_ext")); + flexerror(_("malloc failed (f->argv) in filter_create_ext")); f->argv[f->argc++] = cmd; va_start (ap, cmd); while ((s = va_arg (ap, const char *)) != NULL) { if (f->argc >= max_args) { max_args += 8; - f->argv = - (const char **) flex_realloc (f->argv, - sizeof (char - *) * - (max_args + - 1)); + f->argv = realloc(f->argv, sizeof(char*) * (size_t) (max_args + 1)); } f->argv[f->argc++] = s; } @@ -107,9 +100,9 @@ struct filter *filter_create_int (struct filter *chain, struct filter *f; /* allocate and initialize new filter */ - f = (struct filter *) flex_alloc (sizeof (struct filter)); + f = malloc(sizeof(struct filter)); if (!f) - flexerror (_("flex_alloc failed in filter_create_int")); + flexerror(_("malloc failed in filter_create_int")); memset (f, 0, sizeof (*f)); f->next = NULL; f->argc = 0; @@ -174,6 +167,8 @@ clearerr(stdin); flexfatal (_("dup2(pipes[0],0)")); close (pipes[0]); fseek (stdin, 0, SEEK_CUR); + ungetc(' ', stdin); /* still an evil hack, but one that works better */ + (void)fgetc(stdin); /* on NetBSD than the fseek attempt does */ /* run as a filter, either internally or by exec */ if (chain->filter_func) { @@ -288,9 +283,9 @@ int filter_tee_header (struct filter *chain) fprintf (to_c, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n", outfilename ? outfilename : "<stdout>"); - buf = (char *) flex_alloc (readsz); + buf = malloc((size_t) readsz); if (!buf) - flexerror (_("flex_alloc failed in filter_tee_header")); + flexerror(_("malloc failed in filter_tee_header")); while (fgets (buf, readsz, stdin)) { fputs (buf, to_c); if (write_header) @@ -341,7 +336,7 @@ int filter_tee_header (struct filter *chain) int filter_fix_linedirs (struct filter *chain) { char *buf; - const int readsz = 512; + const size_t readsz = 512; int lineno = 1; bool in_gen = true; /* in generated code */ bool last_was_blank = false; @@ -349,11 +344,11 @@ int filter_fix_linedirs (struct filter *chain) if (!chain) return 0; - buf = (char *) flex_alloc (readsz); + buf = malloc(readsz); if (!buf) - flexerror (_("flex_alloc failed in filter_fix_linedirs")); + flexerror(_("malloc failed in filter_fix_linedirs")); - while (fgets (buf, readsz, stdin)) { + while (fgets (buf, (int) readsz, stdin)) { regmatch_t m[10]; |