@@ -44,13 +44,13 @@ int fgetLine(FILE *fp, char *line, int max)
44
44
int main (int argc , char * argv [])
45
45
{
46
46
char line [MAXLINE ];
47
- long lineno = 0 ;
47
+ long lineno ;
48
48
int c , except = 0 , number = 0 , found = 0 ;
49
49
char * prog = argv [0 ];
50
50
char * pattern ;
51
51
FILE * fp ;
52
52
53
- while (-- argc > 0 && (* ++ argv )[0 ] == '-' )
53
+ while (-- argc > 0 && (* ++ argv )[0 ] == '-' ) /* check for flags */
54
54
while ((c = * ++ argv [0 ]))
55
55
switch (c ) {
56
56
case 'x' :
@@ -68,35 +68,30 @@ int main(int argc, char *argv[])
68
68
69
69
if (argc < 1 )
70
70
printf ("Usage: find -x -n pattern\n" );
71
- else if (argc == 1 )
72
- while (getLine (line , MAXLINE ) > 0 ) {
73
- lineno ++ ;
71
+ else if (argc == 1 ) { /* input from stdin */
72
+ for (lineno = 1 ; getLine (line , MAXLINE ) > 0 ; lineno ++ )
74
73
if ((strstr (line , * argv ) != NULL ) != except ) {
75
74
if (number )
76
75
printf ("%ld:" , lineno );
77
76
printf ("%s" , line );
78
77
found ++ ;
79
78
}
80
- }
81
- else {
82
- pattern = * argv ; /* save a point to the pattern */
79
+ } else { /* input from file or set of files */
80
+ pattern = * argv ; /* save a pointer to the pattern */
83
81
while (argc -- > 1 ) {
84
82
if ((fp = fopen (* ++ argv , "r" )) == NULL ) {
85
83
fprintf (stderr , "%s: can't open %s\n" , prog , * argv );
86
84
exit (EXIT_FAILURE );
87
- }
88
- lineno = 0 ;
85
+ }
89
86
while (!feof (fp ))
90
- while (fgetLine (fp , line , MAXLINE ) > 0 ) {
91
- lineno ++ ;
87
+ for (lineno = 1 ; fgetLine (fp , line , MAXLINE ) > 0 ; lineno ++ )
92
88
if ((strstr (line , pattern ) != NULL ) != except ) {
93
89
printf ("%s:" , * argv ); /* print file name */
94
90
if (number )
95
91
printf ("%ld:" , lineno );
96
92
printf ("%s" , line );
97
93
found ++ ;
98
94
}
99
- }
100
95
fclose (fp );
101
96
}
102
97
}
0 commit comments