rogerc@ncrcae.Columbia.NCR.COM (Roger Collins) (12/19/87)
This is SysV.2 fgrep with all the changes posted by guy@gorodish.Sun.COM (Guy Harris). Execute the following: echo asd | fgrep 'asdf asder asd' The output should be "asd", but no output is produced. The cause is that fgrep expects a newline after the last key-word. An easy fix is to kludge the getargc() function to add a newline at the end of a file *if* newline is not already there. Here is the new getargc(): ---------- getargc() { static char lastc = 0; register c; if (wordf) { c = getc(wordf); if (c == EOF) { if (ferror(wordf)) { fprintf(stderr,"fgrep: Read error\n"); exit(1); } fclose(wordf); } } else { if ((c = *argptr++) == '\0') { c = EOF; --argptr; } } if (c == EOF && lastc != '\n') c = '\n'; return(lastc=c); } ---------- This works whether the word list is input on the command line or with the "-f" option. Merry Christmas, -- Roger Collins NCR - E&M Columbia rogerc@ncrcae.Columbia.NCR.COM Disclaimer: Everything here is opinion and all opinions expressed here are my own and do not reflect those of my employer or anyone else.