/* P_SEARCH.C */ #include LOCAL_D VOID *fcb=NULL; LOCAL_C VOID panic(TEXT *msg, INT errno) { TEXT bb[E_MAX_ERROR_TEXT_SIZE]; p_errs(&bb[0],errno); p_printf("%s: %s",msg,&bb[0]); p_leave(errno); } #pragma save #pragma ENTER_CALL LOCAL_C INT CDECL SearchFile(TEXT *file, TEXT *pattern) { INT ret; TEXT line[P_FMAXRSIZE]; if ((ret=p_open(&fcb,file,P_FTEXT))<0) panic("Failed to open file",ret); while ((ret=p_read(fcb,&line[0],sizeof(line)))>=0) { line[ret]=0; if (ret && p_ssubi(&line[0],pattern)>=0) p_printf(&line[0]); } p_close(fcb); if (ret!=E_FILE_EOF) panic("Failed to read file",ret); return(0); } #pragma restore GLDEF_C INT main(VOID) { TEXT *p; TEXT bb[P_FNAMESIZE]; while (p_getl(">",&bb[0],P_FNAMESIZE)) { p=p_skipch(&bb[0]); *p++=0; p=p_skipwh(p); p_printf("Searching %s for %s",&bb[0],p); p_enter3(SearchFile,&bb[0],p); } return(0); }