View | Details | Raw Unified | Return to bug 267221 | Differences between
and this patch

Collapse All | Expand All

(-)contrib/file/ChangeLog (+4 lines)
Lines 1-3 Link Here
1
2022-10-23  10:21  Christos Zoulas <christos@zoulas.com>
2
3
	* PR/397: Restore the ability to process files from stdin immediately.
4
1
2022-09-13  14:55  Christos Zoulas <christos@zoulas.com>
5
2022-09-13  14:55  Christos Zoulas <christos@zoulas.com>
2
6
3
	* release 5.43
7
	* release 5.43
(-)contrib/file/doc/file.man (-2 / +2 lines)
Lines 1-5 Link Here
1
.\" $File: file.man,v 1.144 2021/02/05 22:08:31 christos Exp $
1
.\" $File: file.man,v 1.146 2022/10/26 16:56:14 christos Exp $
2
.Dd February 5, 2021
2
.Dd October 26, 2022
3
.Dt FILE __CSECTION__
3
.Dt FILE __CSECTION__
4
.Os
4
.Os
5
.Sh NAME
5
.Sh NAME
(-)contrib/file/src/file.c (-14 / +22 lines)
Lines 512-522 unwrap(struct magic_set *ms, const char *fn) Link Here
512
	size_t llen = 0;
512
	size_t llen = 0;
513
	int wid = 0, cwid;
513
	int wid = 0, cwid;
514
	int e = 0;
514
	int e = 0;
515
	size_t fi = 0, fimax = 100;
515
	size_t fi = 0, fimax = 0;
516
	char **flist = CAST(char **, malloc(sizeof(*flist) * fimax));
516
	char **flist = NULL;
517
518
	if (flist == NULL)
519
out:		file_err(EXIT_FAILURE, "Cannot allocate memory for file list");
520
517
521
	if (strcmp("-", fn) == 0)
518
	if (strcmp("-", fn) == 0)
522
		f = stdin;
519
		f = stdin;
Lines 530-555 out: file_err(EXIT_FAILURE, "Cannot allocate memory for file list"); Link Here
530
	while ((len = getline(&line, &llen, f)) > 0) {
527
	while ((len = getline(&line, &llen, f)) > 0) {
531
		if (line[len - 1] == '\n')
528
		if (line[len - 1] == '\n')
532
			line[len - 1] = '\0';
529
			line[len - 1] = '\0';
530
		cwid = file_mbswidth(ms, line);
531
		if (nobuffer) {
532
			e |= process(ms, line, cwid);
533
			free(line);
534
			line = NULL;
535
			llen = 0;
536
			continue;
537
		}
538
		if (cwid > wid)
539
			wid = cwid;
533
		if (fi >= fimax) {
540
		if (fi >= fimax) {
534
			fimax += 100;
541
			fimax += 100;
535
			char **nf = CAST(char **,
542
			char **nf = CAST(char **,
536
			    realloc(flist, fimax * sizeof(*flist)));
543
			    realloc(flist, fimax * sizeof(*flist)));
537
			if (nf == NULL)
544
			if (nf == NULL) {
538
				goto out;
545
				file_err(EXIT_FAILURE,
546
				    "Cannot allocate memory for file list");
547
			}
539
			flist = nf;
548
			flist = nf;
540
		}
549
		}
541
		flist[fi++] = line;
550
		flist[fi++] = line;
542
		cwid = file_mbswidth(ms, line);
543
		if (cwid > wid)
544
			wid = cwid;
545
		line = NULL;
551
		line = NULL;
546
		llen = 0;
552
		llen = 0;
547
	}
553
	}
548
554
549
	fimax = fi;
555
	if (!nobuffer) {
550
	for (fi = 0; fi < fimax; fi++) {
556
		fimax = fi;
551
		e |= process(ms, flist[fi], wid);
557
		for (fi = 0; fi < fimax; fi++) {
552
		free(flist[fi]);
558
			e |= process(ms, flist[fi], wid);
559
			free(flist[fi]);
560
		}
553
	}
561
	}
554
	free(flist);
562
	free(flist);
555
563
(-)contrib/file/src/file_opts.h (-1 / +1 lines)
Lines 37-43 OPT('e', "exclude", 1, 0, Link Here
37
    "                               performed for file. Valid tests are:\n"
37
    "                               performed for file. Valid tests are:\n"
38
    "                               %e\n")
38
    "                               %e\n")
39
OPT_LONGONLY("exclude-quiet", 1, 0,
39
OPT_LONGONLY("exclude-quiet", 1, 0,
40
    " TEST         like exclude, but ignore unknown tests\n", OPT_EXCLUDE_QUIET)
40
    " TEST   like exclude, but ignore unknown tests\n", OPT_EXCLUDE_QUIET)
41
OPT('f', "files-from", 1, 0,
41
OPT('f', "files-from", 1, 0,
42
    " FILE      read the filenames to be examined from FILE\n")
42
    " FILE      read the filenames to be examined from FILE\n")
43
OPT('F', "separator", 1, 0,
43
OPT('F', "separator", 1, 0,

Return to bug 267221