from files.
config CONFIG_FEATURE_FANCY_TAIL
- bool " Enable extra tail options (-c, -q, -s, and -v)"
+ bool " Enable extra tail options (-q, -s, and -v)"
default y
depends on CONFIG_TAIL
help
- Enable tail options (-c, -q, -s, and -v).
+ The options (-q, -s, and -v) are provided by GNU tail, but
+ are not specific in the SUSv3 standard.
config CONFIG_TEE
bool "tee"
}
static const char tail_opts[] =
- "fn:"
+ "fn:c:"
#ifdef CONFIG_FEATURE_FANCY_TAIL
- "c:qs:v"
+ "qs:v"
#endif
;
int from_top = 0;
int follow = 0;
int header_threshhold = 1;
-#ifdef CONFIG_FEATURE_FANCY_TAIL
int count_bytes = 0;
-#endif
char *tailbuf;
size_t tailbufsize;
case 'f':
follow = 1;
break;
-#ifdef CONFIG_FEATURE_FANCY_TAIL
case 'c':
count_bytes = 1;
/* FALLS THROUGH */
-#endif
case 'n':
GET_COUNT:
count = bb_xgetlarg10_sfx(optarg, tail_suffixes);
}
tailbufsize = BUFSIZ;
-#ifdef CONFIG_FEATURE_FANCY_TAIL
+
/* tail the files */
if (from_top < count_bytes) { /* Each is 0 or 1, so true iff 0 < 1. */
/* Hence, !from_top && count_bytes */
tailbufsize = count + BUFSIZ;
}
}
-#endif
+
buf = tailbuf = xmalloc(tailbufsize);
fmt = header_fmt + 1; /* Skip header leading newline on first output. */
if (from_top) {
nwrite = nread;
if (seen < count) {
-#ifdef CONFIG_FEATURE_FANCY_TAIL
if (count_bytes) {
nwrite -= (count - seen);
seen = count;
- } else
-#endif
- {
+ } else {
s = buf;
do {
--nwrite;
}
tail_xbb_full_write(buf + nread - nwrite, nwrite);
} else if (count) {
-#ifdef CONFIG_FEATURE_FANCY_TAIL
if (count_bytes) {
taillen += nread;
if (taillen > count) {
memmove(tailbuf, tailbuf + taillen - count, count);
taillen = count;
}
- } else
-#endif
- {
+ } else {
int k = nread;
int nbuf = 0;