Piss people off by removing [+-][0-9]+ options from tail.
This commit is contained in:
parent
4f94e826cf
commit
69229a6c92
@ -1164,7 +1164,6 @@ const char tail_usage[] =
|
|||||||
"\t-c=N[kbm]\toutput the last N bytes\n"
|
"\t-c=N[kbm]\toutput the last N bytes\n"
|
||||||
#endif
|
#endif
|
||||||
"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
|
"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
|
||||||
"\t\t\tAlso can be -NUM or +NUM.\n"
|
|
||||||
"\t-f\t\tOutput data as the file grows.\n"
|
"\t-f\t\tOutput data as the file grows.\n"
|
||||||
#ifndef BB_FEATURE_SIMPLE_TAIL
|
#ifndef BB_FEATURE_SIMPLE_TAIL
|
||||||
"\t-q\t\tnever output headers giving file names\n"
|
"\t-q\t\tnever output headers giving file names\n"
|
||||||
|
@ -61,7 +61,7 @@ static char verbose = 0;
|
|||||||
|
|
||||||
static off_t units=0;
|
static off_t units=0;
|
||||||
|
|
||||||
int tail_stream(int fd)
|
static int tail_stream(int fd)
|
||||||
{
|
{
|
||||||
ssize_t startpoint;
|
ssize_t startpoint;
|
||||||
ssize_t endpoint=0;
|
ssize_t endpoint=0;
|
||||||
@ -155,18 +155,6 @@ void add_file(char *name)
|
|||||||
strcpy(files[n_files - 1], name);
|
strcpy(files[n_files - 1], name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void checknumbers(const char* name)
|
|
||||||
{
|
|
||||||
int test=atoi(name);
|
|
||||||
if(test){
|
|
||||||
units=test;
|
|
||||||
if(units<0)
|
|
||||||
units=units-1;
|
|
||||||
} else {
|
|
||||||
fatalError("Unrecognised number '%s'\n", name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int tail_main(int argc, char **argv)
|
int tail_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int show_headers = 1;
|
int show_headers = 1;
|
||||||
@ -178,14 +166,9 @@ int tail_main(int argc, char **argv)
|
|||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
|
||||||
while ((opt=getopt(argc,argv,"c:fhn:s:q:v123456789+")) >0) {
|
while ((opt=getopt(argc,argv,"c:fhn:s:q:v")) >0) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case '1':case '2':case '3':case '4':case '5':
|
|
||||||
case '6':case '7':case '8':case '9':case '0':
|
|
||||||
checknumbers(argv[optind-1]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifndef BB_FEATURE_SIMPLE_TAIL
|
#ifndef BB_FEATURE_SIMPLE_TAIL
|
||||||
case 'c':
|
case 'c':
|
||||||
unit_type = BYTES;
|
unit_type = BYTES;
|
||||||
@ -253,10 +236,7 @@ int tail_main(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}else {
|
}else {
|
||||||
if (*argv[optind] == '+') {
|
if (!strcmp(argv[optind], "-")) {
|
||||||
checknumbers(argv[optind]);
|
|
||||||
}
|
|
||||||
else if (!strcmp(argv[optind], "-")) {
|
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
} else {
|
} else {
|
||||||
add_file(argv[optind]);
|
add_file(argv[optind]);
|
||||||
|
26
tail.c
26
tail.c
@ -61,7 +61,7 @@ static char verbose = 0;
|
|||||||
|
|
||||||
static off_t units=0;
|
static off_t units=0;
|
||||||
|
|
||||||
int tail_stream(int fd)
|
static int tail_stream(int fd)
|
||||||
{
|
{
|
||||||
ssize_t startpoint;
|
ssize_t startpoint;
|
||||||
ssize_t endpoint=0;
|
ssize_t endpoint=0;
|
||||||
@ -155,18 +155,6 @@ void add_file(char *name)
|
|||||||
strcpy(files[n_files - 1], name);
|
strcpy(files[n_files - 1], name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void checknumbers(const char* name)
|
|
||||||
{
|
|
||||||
int test=atoi(name);
|
|
||||||
if(test){
|
|
||||||
units=test;
|
|
||||||
if(units<0)
|
|
||||||
units=units-1;
|
|
||||||
} else {
|
|
||||||
fatalError("Unrecognised number '%s'\n", name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int tail_main(int argc, char **argv)
|
int tail_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int show_headers = 1;
|
int show_headers = 1;
|
||||||
@ -178,14 +166,9 @@ int tail_main(int argc, char **argv)
|
|||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
|
||||||
while ((opt=getopt(argc,argv,"c:fhn:s:q:v123456789+")) >0) {
|
while ((opt=getopt(argc,argv,"c:fhn:s:q:v")) >0) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case '1':case '2':case '3':case '4':case '5':
|
|
||||||
case '6':case '7':case '8':case '9':case '0':
|
|
||||||
checknumbers(argv[optind-1]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifndef BB_FEATURE_SIMPLE_TAIL
|
#ifndef BB_FEATURE_SIMPLE_TAIL
|
||||||
case 'c':
|
case 'c':
|
||||||
unit_type = BYTES;
|
unit_type = BYTES;
|
||||||
@ -253,10 +236,7 @@ int tail_main(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}else {
|
}else {
|
||||||
if (*argv[optind] == '+') {
|
if (!strcmp(argv[optind], "-")) {
|
||||||
checknumbers(argv[optind]);
|
|
||||||
}
|
|
||||||
else if (!strcmp(argv[optind], "-")) {
|
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
} else {
|
} else {
|
||||||
add_file(argv[optind]);
|
add_file(argv[optind]);
|
||||||
|
1
usage.c
1
usage.c
@ -1164,7 +1164,6 @@ const char tail_usage[] =
|
|||||||
"\t-c=N[kbm]\toutput the last N bytes\n"
|
"\t-c=N[kbm]\toutput the last N bytes\n"
|
||||||
#endif
|
#endif
|
||||||
"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
|
"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
|
||||||
"\t\t\tAlso can be -NUM or +NUM.\n"
|
|
||||||
"\t-f\t\tOutput data as the file grows.\n"
|
"\t-f\t\tOutput data as the file grows.\n"
|
||||||
#ifndef BB_FEATURE_SIMPLE_TAIL
|
#ifndef BB_FEATURE_SIMPLE_TAIL
|
||||||
"\t-q\t\tnever output headers giving file names\n"
|
"\t-q\t\tnever output headers giving file names\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user