summaryrefslogtreecommitdiffstats
path: root/usr.bin/tail
diff options
context:
space:
mode:
authorjh <jh@FreeBSD.org>2013-06-09 08:06:26 +0000
committerjh <jh@FreeBSD.org>2013-06-09 08:06:26 +0000
commit77616d7d41802393ac075a8818ae476762d53b99 (patch)
tree793203648eba2ba3ea149b3afd37dacdd419b94b /usr.bin/tail
parente70187851b78bea13c7b9e981523119a33636f90 (diff)
downloadFreeBSD-src-77616d7d41802393ac075a8818ae476762d53b99.zip
FreeBSD-src-77616d7d41802393ac075a8818ae476762d53b99.tar.gz
Print file names without stdio buffering to avoid mixing buffered and
unbuffered ouput. PR: bin/176886 Reviewed by: mjg
Diffstat (limited to 'usr.bin/tail')
-rw-r--r--usr.bin/tail/extern.h1
-rw-r--r--usr.bin/tail/forward.c4
-rw-r--r--usr.bin/tail/misc.c14
-rw-r--r--usr.bin/tail/tail.c4
4 files changed, 18 insertions, 5 deletions
diff --git a/usr.bin/tail/extern.h b/usr.bin/tail/extern.h
index 16a3e19..dfc63d0 100644
--- a/usr.bin/tail/extern.h
+++ b/usr.bin/tail/extern.h
@@ -67,5 +67,6 @@ void ierr(const char *);
void oerr(void);
int mapprint(struct mapinfo *, off_t, off_t);
int maparound(struct mapinfo *, off_t);
+void printfn(const char *, int);
extern int Fflag, fflag, qflag, rflag, rval, no_files;
diff --git a/usr.bin/tail/forward.c b/usr.bin/tail/forward.c
index 3c605bf..5eaae98 100644
--- a/usr.bin/tail/forward.c
+++ b/usr.bin/tail/forward.c
@@ -243,7 +243,7 @@ show(file_info_t *file)
while ((ch = getc(file->fp)) != EOF) {
if (last != file && no_files > 1) {
if (!qflag)
- (void)printf("\n==> %s <==\n", file->file_name);
+ printfn(file->file_name, 1);
last = file;
}
if (putchar(ch) == EOF)
@@ -320,7 +320,7 @@ follow(file_info_t *files, enum STYLE style, off_t off)
active = 1;
n++;
if (no_files > 1 && !qflag)
- (void)printf("\n==> %s <==\n", file->file_name);
+ printfn(file->file_name, 1);
forward(file->fp, file->file_name, style, off, &file->st);
if (Fflag && fileno(file->fp) != STDIN_FILENO)
n++;
diff --git a/usr.bin/tail/misc.c b/usr.bin/tail/misc.c
index 3b21e4e..6944325 100644
--- a/usr.bin/tail/misc.c
+++ b/usr.bin/tail/misc.c
@@ -113,3 +113,17 @@ maparound(struct mapinfo *mip, off_t offset)
return (0);
}
+
+/*
+ * Print the file name without stdio buffering.
+ */
+void
+printfn(const char *fn, int print_nl)
+{
+
+ if (print_nl)
+ WR("\n", 1);
+ WR("==> ", 4);
+ WR(fn, strlen(fn));
+ WR(" <==\n", 5);
+}
diff --git a/usr.bin/tail/tail.c b/usr.bin/tail/tail.c
index a53a568..e5566cb 100644
--- a/usr.bin/tail/tail.c
+++ b/usr.bin/tail/tail.c
@@ -203,10 +203,8 @@ main(int argc, char *argv[])
continue;
}
if (argc > 1 && !qflag) {
- (void)printf("%s==> %s <==\n",
- first ? "" : "\n", fn);
+ printfn(fn, !first);
first = 0;
- (void)fflush(stdout);
}
if (rflag)
OpenPOWER on IntegriCloud