MatchFound.c 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #include <stdio.h>
  2. #include "bm.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. char *MLineBegin, *MLineEnd;
  11. Desc->Success = 0;
  12. /* Start points to first character after a successful match */
  13. MLineBegin = MLineEnd = Desc->Start - 1;
  14. while(MLineBegin >=Buffer && *MLineBegin != '\n') --MLineBegin;
  15. ++MLineBegin;
  16. while( MLineEnd <= BuffEnd && *MLineEnd != '\n') ++MLineEnd;
  17. if (MLineEnd > BuffEnd) --MLineEnd;
  18. /* fixed 25jun85 pdbain. suppress multiple matches of the same
  19. * pattern on one line */
  20. Desc->Start = MLineEnd + 1;
  21. /* check if exact match */
  22. if (xFlag && !( Desc->PatLen == (*MLineEnd != '\n' ? ((MLineEnd -
  23. MLineBegin) + 1) : (MLineEnd - MLineBegin))))
  24. return(0); /* failure */
  25. if (sFlag) return(1);
  26. if (cFlag) {
  27. ++MatchCount;
  28. return(1);
  29. } /* if */
  30. PrintLine(BuffPos+(Desc->Start-Buffer),MLineBegin,MLineEnd);
  31. return(1);
  32. } /* MatchFound */