199 |
199 |
200 /* Scan subdirectories */ |
200 /* Scan subdirectories */ |
201 if (!S_ISREG(filelist->st_mode)) { |
201 if (!S_ISREG(filelist->st_mode)) { |
202 if (S_ISDIR(filelist->st_mode)) { |
202 if (S_ISDIR(filelist->st_mode)) { |
203 if (settings->recursive) { |
203 if (settings->recursive) { |
204 string_list_t *recoutput = new_string_list_t(); |
204 string_list_t *recoutput = settings->verbose ? new_string_list_t() : NULL; |
205 scanresult_t recresult; |
205 scanresult_t recresult; |
206 recresult.ext = result->ext; |
206 recresult.ext = result->ext; |
207 scanDirectory( |
207 scanDirectory( |
208 (scanner_t) {filelist->filename, scanner.spaces+1}, |
208 (scanner_t) {filelist->filename, scanner.spaces+1}, |
209 settings, recoutput, &recresult); |
209 settings, recoutput, &recresult); |
210 result->result += recresult.result; |
210 result->result += recresult.result; |
211 if (!settings->matchesOnly || recresult.result > 0) { |
211 if (settings->verbose && (!settings->matchesOnly || recresult.result > 0)) { |
212 outbuf = (char*) malloc(81); |
212 outbuf = (char*) malloc(81); |
213 snprintf(outbuf, 81, "%*s/%*s%13u %s\n", |
213 snprintf(outbuf, 81, "%*s/%*s%13u %s\n", |
214 filelist->displayname_len+scanner.spaces, filelist->displayname, |
214 filelist->displayname_len+scanner.spaces, filelist->displayname, |
215 60-filelist->displayname_len-scanner.spaces-1, "", |
215 60-filelist->displayname_len-scanner.spaces-1, "", |
216 recresult.result, result_type); |
216 recresult.result, result_type); |
219 add_string(output, recoutput->items[i]); |
219 add_string(output, recoutput->items[i]); |
220 } |
220 } |
221 } |
221 } |
222 destroy_string_list_t(recoutput); |
222 destroy_string_list_t(recoutput); |
223 } |
223 } |
224 } else if (!settings->matchesOnly) { |
224 } else if (!settings->matchesOnly && settings->verbose) { |
225 outbuf = (char*) malloc(81); |
225 outbuf = (char*) malloc(81); |
226 snprintf(outbuf, 81, "%*s\n", |
226 snprintf(outbuf, 81, "%*s\n", |
227 filelist->displayname_len+scanner.spaces, |
227 filelist->displayname_len+scanner.spaces, |
228 filelist->displayname); |
228 filelist->displayname); |
229 add_string(output, outbuf); |
229 add_string(output, outbuf); |
241 char line_buffer[MAX_LINELENGTH + 1]; |
241 char line_buffer[MAX_LINELENGTH + 1]; |
242 unsigned line_buffer_pos = 0; |
242 unsigned line_buffer_pos = 0; |
243 |
243 |
244 FILE *file = fopen(filelist->filename, "r"); |
244 FILE *file = fopen(filelist->filename, "r"); |
245 if (file == NULL) { |
245 if (file == NULL) { |
246 outbuf = (char*) malloc(81); |
246 fprintf(stderr, "Error: %s", filelist->displayname); |
247 snprintf(outbuf, 81, "%*s", |
|
248 filelist->displayname_len+scanner.spaces, |
|
249 filelist->displayname); |
|
250 add_string(output, outbuf); |
|
251 perror(" File acces failed"); |
247 perror(" File acces failed"); |
252 } else { |
248 } else { |
253 int a; |
249 int a; |
254 do { |
250 do { |
255 a = fgetc(file); |
251 a = fgetc(file); |
288 } while (!bfile && a != EOF); |
284 } while (!bfile && a != EOF); |
289 fclose(file); |
285 fclose(file); |
290 |
286 |
291 /* Print and sum line count */ |
287 /* Print and sum line count */ |
292 if (bfile) { |
288 if (bfile) { |
293 if (!settings->matchesOnly && !settings->dirsOnly) { |
289 if (!settings->matchesOnly && !settings->dirsOnly && settings->verbose) { |
294 outbuf = (char*) malloc(81); |
290 outbuf = (char*) malloc(81); |
295 snprintf(outbuf, 81, |
291 snprintf(outbuf, 81, |
296 "%*s%*s%19s\n", filelist->displayname_len+scanner.spaces, |
292 "%*s%*s%19s\n", filelist->displayname_len+scanner.spaces, |
297 filelist->displayname, |
293 filelist->displayname, |
298 60-filelist->displayname_len-scanner.spaces, "", "binary"); |
294 60-filelist->displayname_len-scanner.spaces, "", "binary"); |
299 add_string(output, outbuf); |
295 add_string(output, outbuf); |
300 } |
296 } |
301 } else { |
297 } else { |
302 addResultPerExtension(result->ext, filelist->ext, res_value); |
298 addResultPerExtension(result->ext, filelist->ext, res_value); |
303 result->result += res_value; |
299 result->result += res_value; |
304 if (!settings->dirsOnly) { |
300 if (!settings->dirsOnly && settings->verbose) { |
305 outbuf = (char*) malloc(81); |
301 outbuf = (char*) malloc(81); |
306 snprintf(outbuf, 81, "%*s%*s%13u %s\n", |
302 snprintf(outbuf, 81, "%*s%*s%13u %s\n", |
307 filelist->displayname_len+scanner.spaces, |
303 filelist->displayname_len+scanner.spaces, |
308 filelist->displayname, |
304 filelist->displayname, |
309 60-filelist->displayname_len-scanner.spaces, |
305 60-filelist->displayname_len-scanner.spaces, |
314 add_string(output, outbuf); |
310 add_string(output, outbuf); |
315 } |
311 } |
316 } |
312 } |
317 } |
313 } |
318 } else { |
314 } else { |
319 if (!settings->matchesOnly && !settings->dirsOnly) { |
315 if (!settings->matchesOnly && !settings->dirsOnly && settings->verbose) { |
320 /* Print hint */ |
316 /* Print hint */ |
321 outbuf = (char*) malloc(81); |
317 outbuf = (char*) malloc(81); |
322 snprintf(outbuf, 81, "%*s%*s%19s\n", |
318 snprintf(outbuf, 81, "%*s%*s%19s\n", |
323 filelist->displayname_len+scanner.spaces, filelist->displayname, |
319 filelist->displayname_len+scanner.spaces, filelist->displayname, |
324 60-filelist->displayname_len-scanner.spaces, "", "no match"); |
320 60-filelist->displayname_len-scanner.spaces, "", "no match"); |