home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume4 / match1.2 / MatchFound.c < prev    next >
C/C++ Source or Header  |  1986-11-30  |  1KB  |  34 lines

  1. #include <stdio.h>
  2. #include "match.h"
  3. #include "Extern.h"
  4. MatchFound(Desc, BuffPos, Buffer, BuffEnd)
  5. struct PattDesc *Desc; /* state info about search for one string */
  6. int BuffPos; /* offset of first char of buffer into the file being searched */
  7. char *Buffer, /* pointer to the first character in the buffer */
  8.     *BuffEnd; /* pointer to the last character in the buffer */
  9. {
  10.     register char *MLineBegin, *MLineEnd;
  11.     
  12.     Desc->Success = 0;
  13.     /* Start points to first character after a successful match */
  14.     MLineBegin = MLineEnd = Desc->Start - 1;
  15.     while(MLineBegin >=Buffer && *MLineBegin != '\n') --MLineBegin;
  16.     ++MLineBegin;
  17.     while( MLineEnd <= BuffEnd && *MLineEnd != '\n') ++MLineEnd;
  18.     if (MLineEnd > BuffEnd) --MLineEnd;
  19.     /* fixed 25jun85 pdbain. suppress multiple matches of the same
  20.     * pattern on one line */
  21.     Desc->Start = MLineEnd + 1;
  22.     /* check if exact match */
  23.     if (xFlag && !( Desc->PatLen == (*MLineEnd != '\n' ? ((MLineEnd -
  24.     MLineBegin) + 1) : (MLineEnd - MLineBegin))))
  25.         return(0); /* failure */
  26.     if (sFlag) return(1);
  27.     if (cFlag) {
  28.         ++MatchCount;
  29.         return(1);
  30.     } /* if */
  31.     PrintLine(BuffPos+(Desc->Start-Buffer),MLineBegin,MLineEnd);
  32.     return(1);
  33. } /* MatchFound */
  34.