Commit Graph

54 Commits

Author SHA1 Message Date
David Greenman
7b51f66476 Removed check of st_rdev changing in the -F support. st_rdev for regular
files is usually the first direct block pointer. Since FreeBSD does
automatic block reallocation to reduce filesystem fragmentation, the
file being tailed can be relocated to different blocks 'on-the-fly',
making the check for st_rdev unreliable. The result of this bug is
tail -F pseudo-randomnly thinking the file was rotated when it wasn't,
and as a result, spews out the entire file trying to catch up.

MFC after:	3 days
2003-08-14 11:02:03 +00:00
Mark Murray
96b5910f32 Revert part of the last commit. This fixes tail for pipes.
Submitted by:	joerg
2003-06-10 16:49:14 +00:00
Tim J. Robbins
f33ae51c77 When doing tail -F, return if the freopen() of the file fails instead of
trying to use a null file pointer.
2002-12-15 11:26:57 +00:00
Alfred Perlstein
e3d463662c revert WARNS=4, it makes the alpha compile sad. 2002-07-15 09:53:34 +00:00
Alfred Perlstein
d183dcb670 WARNS=4, add 2002-07-14 18:21:07 +00:00
Juli Mallett
6fc8ba94c6 Note that this appeared at least as early as PWB UNIX.
Use the literal string 'PWB UNIX', as we still have no .At macro for it.
2002-06-10 22:59:59 +00:00
David Malone
13685eeec2 Fix up vendor IDs.
Put a sequence point between writing to a variable and using it.
2002-04-13 20:59:48 +00:00
Murray Stokely
b77b9b9a90 GCC 3.1 cleanup - add a break after default: at the end of a switch
statement.
2002-04-08 08:34:00 +00:00
Warner Losh
3f330d7d1a remove __P 2002-03-22 01:42:45 +00:00
Mark Murray
814e3a92a9 WARNS=2 fixes, use __FBSDID(). 2001-12-12 00:01:16 +00:00
Ian Dowse
aee1bac713 Since kqueue support was added to tail, the "-F" option (check for
renames/rotations) only detected cases where the file itself was
moved or deleted. If part of the path to the file (or a symlink
in the path) was changed instead, tail would not notice.

Fix this by ensuring that we stat the path at least once every
second in the -F case to check for changes. We still use kqueue
when possible to inform us quickly when the file has changed.

PR:		bin/24955
Submitted by:	Maxim Konovalov <maxim@macomnet.ru>
MFC after:	1 week
2001-11-25 18:03:28 +00:00
Bill Fenner
8cd6778484 Allow "obsolete" (but commonly-used) command line style to be used
with -F, e.g. tail -1 -F /var/log/messages.

Submitted by:	Maxim Konovalov <maxim@macomnet.ru>
2001-10-02 06:22:01 +00:00
Andrey A. Chernov
bd9dc97512 File positions are off_t nowdays, not long, so:
long -> off_t
strtol -> strtoll
fseek -> fseeko

NOTE: that fseek not works for >long offsets files per POSIX:

[EOVERFLOW] For fseek( ), the resulting file offset would be a value which
cannot be represented correctly in an object of type long.
2001-09-01 22:22:45 +00:00
Ruslan Ermilov
d628d776c4 mdoc(7) police: utilize the new .Ex macro. 2001-08-15 09:09:47 +00:00
Ruslan Ermilov
625003720a mdoc(7) police: removed HISTORY info from the .Os call. 2001-07-10 14:16:33 +00:00
Jonathan Lemon
a8fb4e2810 o If the file being tailed is moved back to the original location,
resume using kqueue to monitor it, if possible.
  o auto-clear the read filter on EOF; this is needed when tailing a FIFO.
2001-06-06 17:47:13 +00:00
Andrey A. Chernov
a74da62e70 Back out my fseeko -> fseek(END) change - we need to position on what we
displayed last, not to the end of file
2001-03-28 13:10:17 +00:00
Andrey A. Chernov
462da59fb1 Restore part of my fix spammed in v1.23:
fseeko(file_size, SEEK_SET) -> fseek(0L, SEEK_END)
1) File may grows between operations, so fseeko to file_size may miss
2) 0L, SEEK_END is the same code using in tail in all other places
2001-03-27 23:24:25 +00:00
David Malone
726098d35e Fix tail to work on files bigger than 2GB.
PR:		14786
Reviewed by:	iedowse
2001-03-27 20:37:34 +00:00
Andrey A. Chernov
6bea9ab43b Add comment explaining why size not passed directly to mmap, i.e. not relay
on its check.
KNF multi-line comments
(inspired by bde)
2001-03-27 15:53:48 +00:00
Andrey A. Chernov
1410c7cc9a Use SSIZE_MAX instead of INT_MAX, as kernel does ssize_t check
Better explanation comment of FIXME section
2001-03-27 01:16:44 +00:00
Andrey A. Chernov
ad859a471d Treat mmap() error as fatal too, i.e. do exit(1) instead of return 2001-03-26 19:36:27 +00:00
Andrey A. Chernov
4f2554b7b7 rlines() checks:
1) really check for size overflow by checking negative value.
2) since mmap() not support files over INT_MAX size, add check for it
until either mmap() will be fixed or tail will be rewritted to handle
large files alternatively.
3) replace fseek(... file_size, SEEK_SET) with fseek(... 0L, SEEK_END)
to avoid off_t -> long cast
4) Use exit() if file is too big instead of warning and wrong logic
afterwards.
2001-03-26 19:29:49 +00:00
Jonathan Lemon
6029e6933c Use EV_SET() macro to initialize kevent structure. 2001-02-28 16:16:31 +00:00
Ruslan Ermilov
1715c485d4 Mention the -F in the usage().
PR:		24586
Submitted by:	Cyrille Lefevre <clefevre@citeweb.net>
2001-01-24 08:27:59 +00:00
Jeroen Ruigrok van der Werven
48a1ef2284 Remove register keyword usage with prejudice.
Modern compilers are smarter when it comes to allocating register
usage.
2000-12-03 17:05:45 +00:00
Jeroen Ruigrok van der Werven
beed3992fc Use a size_t instead of an int. 2000-12-02 20:21:13 +00:00
Jeroen Ruigrok van der Werven
247e7cb1d3 Properly constify some static arrays.
Also #if out some sccsid's and add rcsid's.
2000-12-02 19:10:12 +00:00
Ruslan Ermilov
8fe908ef0c mdoc(7) police: use the new features of the Nm macro. 2000-11-20 19:21:22 +00:00
Jonathan Lemon
727a4ed619 Convert calls to match new kqueue API. 2000-07-18 19:38:38 +00:00
Jonathan Lemon
ea9bd2df1d If the kevent() registration fails (probably due to the underlying
filesystem not being kq-aware), then fall back to using sleep.  This
allows tail to work with NFS filesystems again without chewing up CPU time.

When given the -F flag, resort to sleep/stat after the file was moved
or deleted.  This allows a window where the file being tailed does not
exist at all, which is typically the case during log rotation.  Switch
back to using kq (if possible) after the file is reopened.
2000-06-22 18:46:03 +00:00
Jonathan Lemon
32462e82fb Change <event.h> --> <sys/event.h> 2000-04-18 16:56:55 +00:00
Jonathan Lemon
b446630f2f Change tail to use kqueue/kevent to obtain a notification when
the file changes (when doing tail -{f|F}).
2000-04-16 19:04:49 +00:00
Philippe Charnier
dbb9d8f826 Add DIAGNOSTICS section name 2000-03-26 15:06:46 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
Nik Clayton
3be5f1f5ce Add $Id$, to make it simpler for members of the translation teams to
track.

The $Id$ line is normally at the bottom of the main comment block in the
man page, separated from the rest of the manpage by an empty comment,
like so;

     .\"    $Id$
     .\"

If the immediately preceding comment is a @(#) format ID marker than the
the $Id$ will line up underneath it with no intervening blank lines.
Otherwise, an additional blank line is inserted.

Approved by:            bde
1999-07-12 20:24:20 +00:00
Bill Fumerola
9ef5c48bef Clean up some ambiguous nested if/elses. 1999-07-04 17:26:16 +00:00
Bruce Evans
22694ebad5 Fixed printf format errors. 1998-07-06 21:01:54 +00:00
Peter Wemm
eb1c943900 Add a new -F flag which is a superset of -f. It will cause tail to
stat() the file being followed and do a close/reopen if the file has been
renamed and/or rotated.  This is damn useful for leaving running on files
in /var/log when newsyslog(8) rotates them.
1998-04-06 16:13:49 +00:00
Andrey A. Chernov
156b574b56 Change select(0, NULL, ...) to usleep() 1997-12-12 11:47:28 +00:00
Poul-Henning Kamp
ee7b3b0639 Fix a misleading comment. Rename a variable to make more sense.
Pointed out by by:	 bde
1997-10-11 07:32:43 +00:00
Poul-Henning Kamp
97bc6e857c Fix a comment.
Submitted by:		Mikael Karpberg <karpen@ocean.campus.luth.se>
1997-09-15 08:20:27 +00:00
Poul-Henning Kamp
a3dd501081 In these days, waiting one full second for more to appear is far too long.
Let's try 250ms.
1997-09-14 19:02:13 +00:00
Philippe Charnier
ea7cc4954d Remove trailing \n in warn() string. 1997-08-13 06:46:57 +00:00
Warner Losh
1c8af87873 compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-29 04:34:07 +00:00
Alexander Langer
8abdc2eb40 Sweep through the tree fixing mmap() usage:
- Use MAP_FAILED instead of the constant -1 to indicate
    failure (required by POSIX).
  - Removed flag arguments of '0' (required by POSIX).
  - Fixed code which expected an error return of 0.
  - Fixed code which thought any address with the high bit set
    was an error.
  - Check for failure where no checks were present.

Discussed with:	bde
1997-01-16 21:58:40 +00:00
Adam David
44cf272f78 complete err() changes, actually use warn() in most instances 1996-08-26 20:37:48 +00:00
Peter Wemm
c3fd5728c2 Dont forget to #include <err.h> 1996-08-25 21:14:19 +00:00
Peter Wemm
ac5512704d Argh! caught! *blush*.. This program was supplying it's own 'err' routine
which was slightly different to the libc one.  To save any more cunfusion,
use the libc one.
1996-08-25 21:12:01 +00:00
Peter Wemm
0a6f6077af Fix some bogons:
- timeval in select loop was depending on not having the remaining time
  returned from select(), causing a busy spin on an implementation that
  does implement it.
- the err() usage was pretty bogus, some of the error messages had
  strerror attached manually and then reattached by err().
1996-08-25 21:03:50 +00:00