$NetBSD$ --- src/paste.c.orig 2006-01-03 17:23:26.000000000 +0000 +++ src/paste.c @@ -52,14 +52,6 @@ /* Indicates that no delimiter should be added in the current position. */ #define EMPTY_DELIM '\0' -static FILE dummy_closed; -/* Element marking a file that has reached EOF and been closed. */ -#define CLOSED (&dummy_closed) - -static FILE dummy_endlist; -/* Element marking end of list of open files. */ -#define ENDLIST (&dummy_endlist) - /* Name this program was run with. */ char *program_name; @@ -76,6 +68,8 @@ static char *delims; /* A pointer to the character after the end of `delims'. */ static char const *delim_end; +#define CLOSED NULL + static struct option const longopts[] = { {"serial", no_argument, 0, 's'}, @@ -156,7 +150,7 @@ paste_parallel (size_t nfiles, char **fn store the delimiters for closed files. */ char *delbuf; FILE **fileptr; /* Streams open to the files to process. */ - size_t files_open; /* Number of files still open to process. */ + size_t files_open, last_file; /* Number of files still open to process. */ bool opened_stdin = false; /* true if any fopen got fd == STDIN_FILENO */ delbuf = xmalloc (nfiles + 2); @@ -183,7 +177,7 @@ paste_parallel (size_t nfiles, char **fn } } - fileptr[files_open] = ENDLIST; + last_file = files_open; if (opened_stdin && have_read_stdin) error (EXIT_FAILURE, 0, _("standard input is closed")); @@ -200,7 +194,7 @@ paste_parallel (size_t nfiles, char **fn size_t delims_saved = 0; /* Number of delims saved in `delbuf'. */ size_t i; - for (i = 0; fileptr[i] != ENDLIST && files_open; i++) + for (i = 0; i < last_file && files_open; i++) { int chr IF_LINT (= 0); /* Input character. */ size_t line_length = 0; /* Number of chars in line. */ @@ -246,7 +240,7 @@ paste_parallel (size_t nfiles, char **fn files_open--; } - if (fileptr[i + 1] == ENDLIST) + if (i + 1 == last_file) { /* End of this output line. Is this the end of the whole thing? */ @@ -277,7 +271,7 @@ paste_parallel (size_t nfiles, char **fn somedone = true; /* Except for last file, replace last newline with delim. */ - if (fileptr[i + 1] != ENDLIST) + if (i + 1 != last_file) { if (chr != '\n' && chr != EOF) putc (chr, stdout);