cvsdist 732ac9
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=72641 (sent upstream)
cvsdist 732ac9
cvsdist 732ac9
--- grep-2.5.1/src/grep.c.oi	2002-10-13 20:58:55.000000000 +0100
cvsdist 732ac9
+++ grep-2.5.1/src/grep.c	2002-10-13 21:02:43.000000000 +0100
cvsdist 732ac9
@@ -533,6 +533,37 @@
cvsdist 732ac9
     {
cvsdist 732ac9
       size_t match_size;
cvsdist 732ac9
       size_t match_offset;
cvsdist 732ac9
+      if(match_icase)
cvsdist 732ac9
+        {
cvsdist 732ac9
+          char *buf = (char*) xmalloc (lim - beg);
cvsdist 732ac9
+	  char *ibeg = buf;
cvsdist 732ac9
+	  char *ilim = ibeg + (lim - beg);
cvsdist 732ac9
+	  int i;
cvsdist 732ac9
+	  for (i = 0; i < lim - beg; i++)
cvsdist 732ac9
+	    ibeg[i] = tolower (beg[i]);
cvsdist 732ac9
+
cvsdist 732ac9
+	  while ((match_offset = (*execute) (ibeg, lim - beg, &match_size, 1))
cvsdist 732ac9
+		 != (size_t) -1)
cvsdist 732ac9
+	    {
cvsdist 732ac9
+	      char const *b = ibeg + match_offset;
cvsdist 732ac9
+	      if (b == lim)
cvsdist 732ac9
+		break;
cvsdist 732ac9
+	      if (match_size == 0)
cvsdist 732ac9
+		break;
cvsdist 732ac9
+	      if(color_option)
cvsdist 732ac9
+		printf("\33[%sm", grep_color);
cvsdist 732ac9
+	      fwrite(b, sizeof (char), match_size, stdout);
cvsdist 732ac9
+	      if(color_option)
cvsdist 732ac9
+		fputs("\33[00m", stdout);
cvsdist 732ac9
+	      fputs("\n", stdout);
cvsdist 732ac9
+	      ibeg = b + match_size;
cvsdist 732ac9
+	    }
cvsdist 732ac9
+	  free (buf);
cvsdist 732ac9
+	  lastout = lim;
cvsdist 732ac9
+	  if(line_buffered)
cvsdist 732ac9
+	    fflush(stdout);
cvsdist 732ac9
+	  return;
cvsdist 732ac9
+	}
cvsdist 732ac9
       while ((match_offset = (*execute) (beg, lim - beg, &match_size, 1))
cvsdist 732ac9
 	  != (size_t) -1)
cvsdist 732ac9
         {