/[grep]/grep/src/grep.c
ViewVC logotype

Diff of /grep/src/grep.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.112 by charles_levert, Thu Jul 7 05:32:30 2005 UTC revision 1.113 by charles_levert, Wed Aug 24 07:28:29 2005 UTC
# Line 753  print_line_middle (const char *beg, cons Line 753  print_line_middle (const char *beg, cons
753  {  {
754    size_t match_size;    size_t match_size;
755    size_t match_offset;    size_t match_offset;
756      const char *mid = NULL;
757    char *buf;            /* XXX */    char *buf;            /* XXX */
758    const char *ibeg;     /* XXX */    const char *ibeg;     /* XXX */
759    
# Line 784  print_line_middle (const char *beg, cons Line 785  print_line_middle (const char *beg, cons
785    
786        /* Avoid hanging on grep --color "" foo */        /* Avoid hanging on grep --color "" foo */
787        if (match_size == 0)        if (match_size == 0)
788          break;          {
789              /* Make minimal progress; there may be further non-empty matches.  */
790        if (only_matching)            /* XXX - Could really advance by one whole multi-octet character.  */
791          print_line_head(b, lim, SEP_CHAR_MATCH);            match_size = 1;
792              if (!mid)
793                mid = beg;
794            }
795        else        else
796          {          {
797            PR_SGR_START(mlines_color);            if (only_matching)
798            fwrite (beg, sizeof (char), match_offset, stdout);              print_line_head(b, lim, SEP_CHAR_MATCH);
799              else
800                {
801                  PR_SGR_START(mlines_color);
802                  if (mid)
803                    {
804                      fwrite (mid, sizeof (char), (beg - mid) + match_offset, stdout);
805                      mid = NULL;
806                    }
807                  else
808                    fwrite (beg, sizeof (char), match_offset, stdout);
809                }
810    
811              PR_SGR_START_IF(grep_color);
812              fwrite (b, sizeof (char), match_size, stdout);
813              PR_SGR_END_IF(grep_color);
814              if (only_matching)
815                fputs("\n", stdout);
816          }          }
   
       PR_SGR_START_IF(grep_color);  
       fwrite (b, sizeof (char), match_size, stdout);  
       PR_SGR_END_IF(grep_color);  
       if (only_matching)  
         fputs("\n", stdout);  
817        beg = b + match_size;        beg = b + match_size;
818        ibeg += match_offset + match_size;        /* XXX */        ibeg += match_offset + match_size;        /* XXX */
819      }      }
# Line 808  print_line_middle (const char *beg, cons Line 823  print_line_middle (const char *beg, cons
823    
824    if (only_matching)    if (only_matching)
825      beg = lim;      beg = lim;
826      else if (mid)
827        beg = mid;
828    
829    return beg;    return beg;
830  }  }

Legend:
Removed from v.1.112  
changed lines
  Added in v.1.113

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26