Path: tut!draken!kth!mcvax!np1!n62 From: n62@np1.hep.nl (Klamer Schutte) Newsgroups: comp.os.minix Subject: fixes for grep(1) Keywords: minix-st Message-ID: <152@np1.hep.nl> Date: 29 Mar 89 15:31:25 GMT Reply-To: n62@nikhefh.hep.nl (Klamer Schutte) Organization: Nikhef-H, Amsterdam (the Netherlands). Lines: 62 (This bug is found on MINIX-ST; probably also resident on minix-pc???) There was a bug in grep.c : in regexp.c (in libc.a) regexp() has 3 arguments; in grep.c only the first 2 are used. This prevented grep from correctly interpreting a regular expression starting with ^. Patch, enjoy! Klamer Schutte (.signature at end) ---------------------------------------------------------------------------- *** grep.c.B Thu Mar 22 18:35:13 1989 --- grep.c Thu Mar 22 18:44:04 1989 *************** *** 104,124 **** char buf[MAXLINE]; int lineno = 0; while(getline(buf,MAXLINE) != NULL) { char *cr = index(buf,'\n'); lineno++; if(cr == 0) { std_err("Line too long in "); std_err(name == 0 ? "stdin":name); } else *cr = '\0'; ! if(regexec(exp,buf)) { if(pmflag) pline(name,lineno,buf); if(status != 2) status = 0; } else if(pnmflag) pline(name,lineno,buf); } } void regerror(s) --- 104,128 ---- char buf[MAXLINE]; int lineno = 0; + int bol = 1, next_bol; + while(getline(buf,MAXLINE) != NULL) { char *cr = index(buf,'\n'); lineno++; + next_bol = (int) cr; if(cr == 0) { std_err("Line too long in "); std_err(name == 0 ? "stdin":name); } else *cr = '\0'; ! if(regexec(exp,buf,bol)) { if(pmflag) pline(name,lineno,buf); if(status != 2) status = 0; } else if(pnmflag) pline(name,lineno,buf); + bol = next_bol; } } void regerror(s) -- ________________________________________________________________________________ Klamer Schutte mcvax!nikhefh!n62 n62@nikhefh.hep.nl