Added support for the -c (count matches) option. Made it so it works just like
GNU grep.
diff --git a/grep.c b/grep.c
index a2c07c5..10ad76c 100644
--- a/grep.c
+++ b/grep.c
@@ -35,6 +35,7 @@
 static int ignore_case       = 0;
 static int print_filename    = 0;
 static int print_line_num    = 0;
+static int print_count_only  = 0;
 static int be_quiet          = 0;
 static int invert_search     = 0;
 static int suppress_err_msgs = 0;
@@ -75,14 +76,29 @@
 
 			nmatches++;
 
-			print_matched_line(line, linenum);
+			if (!print_count_only)
+				print_matched_line(line, linenum);
 
 		} else if (ret == REG_NOMATCH && invert_search) {
-			print_matched_line(line, linenum);
+
+			nmatches++;
+			
+			if (!print_count_only)
+				print_matched_line(line, linenum);
 		}
 
 		free(line);
 	}
+
+	/* special-case post processing */
+	if (print_count_only) {
+		if (print_filename)
+			printf("%s:", cur_file);
+		printf("%i\n", nmatches);
+	}
+
+	/* reset number of matches found to zero */
+	nmatches = 0;
 }
 
 extern int grep_main(int argc, char **argv)
@@ -95,7 +111,7 @@
 		usage(grep_usage);
 
 	/* do normal option parsing */
-	while ((opt = getopt(argc, argv, "iHhnqvs")) > 0) {
+	while ((opt = getopt(argc, argv, "iHhnqvsc")) > 0) {
 		switch (opt) {
 			case 'i':
 				ignore_case++;
@@ -118,6 +134,9 @@
 			case 's':
 				suppress_err_msgs++;
 				break;
+			case 'c':
+				print_count_only++;
+				break;
 		}
 	}