home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / canada-remote-systems / cpower / globcp.arc / FINDSTR.C < prev    next >
Text File  |  2019-04-13  |  1KB  |  68 lines

  1. /*
  2.  * ├OPYRIGHT (├) ┴DRIAN ╨EPPER, 1989
  3.  *
  4.  *  ┬UT ╔ (┴DRIAN ╨EPPER) CONSIDER THIS
  5.  * MATERIAL TO BE IN THE ╨UBLIC ─OMAIN.
  6.  */
  7. /*
  8.  * FINDSTR.C - STRING SEARCH PROGRAM
  9.  *
  10.  *  ╘HIS PROGRAM WILL PRINT ALL OCCURRENCES
  11.  * OF THE GIVEN STRING IN THE SPECIFIED FILES.
  12.  *
  13.  *  ╘HE FILES CAN BE SPECIFIED AS A LIST OF
  14.  * PATTERNS.
  15.  */
  16. #INCLUDE <STDIO.H>
  17.  
  18. #DEFINE ═┴╪┬╒╞ 250
  19.  
  20. CHAR *INDEX();
  21. STATIC CHAR *MATCHSTR = ╬╒╠╠;
  22.  
  23. MAIN(ARGC, ARGV) 
  24. UNSIGNED ARGC; 
  25. CHAR *ARGV[];
  26.   INT FINDSTR();
  27.   UNSIGNED I;
  28.  
  29.   IF(ARGC < 3)█
  30.     FPRINTF(STDOUT, "%S: <MATCH-STRING> FILE(S)\N",
  31.       ARGV[0]);
  32.     EXIT();
  33.   ▌
  34.   MATCHSTR = ARGV[1];
  35.   FOR(I=2; I<ARGC; ++I)
  36.     GLOB(ARGV[I],&FINDSTR);
  37.  
  38. STATIC CHAR BUF[═┴╪┬╒╞] = █0▌;
  39.  
  40. FINDSTR(FILENAME)
  41. CHAR *FILENAME;
  42.   ╞╔╠┼ INFID;
  43.   CHAR *P;
  44.   CHAR C1;
  45.   UNSIGNED LENGTH, LINENO;
  46.  
  47.   C1 = *MATCHSTR;
  48.   LENGTH = STRLEN(MATCHSTR);
  49.   INFID = FOPEN(FILENAME, "R");
  50.   IF(INFID == ╬╒╠╠) █
  51.     FPRINTF(STDOUT, "CANNOT OPEN %S.\N", FILENAME);
  52.     RETURN;
  53.   ▌
  54.   FOR (LINENO=1; FGETS(BUF, ═┴╪┬╒╞, INFID); ++LINENO) █
  55.     FOR (P=BUF; (P=INDEX(P, C1)) != ╬╒╠╠; ++P) █
  56.       /* CONSIDER ALL OCCURRENCES OF C1 */
  57.       IF(STRNCMP(P, MATCHSTR, LENGTH) == 0) █
  58.         PRINTF("%S %D:%S", FILENAME, LINENO, BUF);
  59.         BREAK;  /* STOP AFTER FIRST MATCH ON LINE */
  60.       ▌
  61.     ▌
  62.   ▌
  63.   FCLOSE(INFID);
  64.