Cleaner way to handle -NUM and +NUM, reduces the mem usage as well.
-Erik
This commit is contained in:
parent
0c8e2a6580
commit
46ade97983
@ -156,39 +156,38 @@ 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;
|
||||||
int test;
|
int test;
|
||||||
int opt;
|
int opt;
|
||||||
int optc=0;
|
|
||||||
char **optv=NULL;
|
|
||||||
char follow=0;
|
char follow=0;
|
||||||
int sleep_int=1;
|
int sleep_int=1;
|
||||||
int *fd;
|
int *fd;
|
||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
|
||||||
for(opt=0;opt<argc;opt++){
|
while ((opt=getopt(argc,argv,"c:fhn:s:q:v123456789+")) >0) {
|
||||||
test=atoi(argv[opt]);
|
|
||||||
if(test){
|
|
||||||
units=test;
|
|
||||||
if(units<0)
|
|
||||||
units=units-1;
|
|
||||||
}else{
|
|
||||||
optc++;
|
|
||||||
optv = realloc(optv, optc);
|
|
||||||
optv[optc - 1] = (char *) malloc(strlen(argv[opt]) + 1);
|
|
||||||
strcpy(optv[optc - 1], argv[opt]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while ((opt=getopt(optc,optv,"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;
|
||||||
test = atoi(optarg);
|
test = atoi(optarg);
|
||||||
@ -248,17 +247,21 @@ int tail_main(int argc, char **argv)
|
|||||||
usage(tail_usage);
|
usage(tail_usage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (optind <= optc) {
|
while (optind <= argc) {
|
||||||
if(optind==optc) {
|
if(optind==argc) {
|
||||||
if (n_files==0)
|
if (n_files==0)
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}else {
|
}else {
|
||||||
if (!strcmp(optv[optind], "-"))
|
if (*argv[optind] == '+') {
|
||||||
|
checknumbers(argv[optind]);
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[optind], "-")) {
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
else
|
} else {
|
||||||
add_file(optv[optind]);
|
add_file(argv[optind]);
|
||||||
|
}
|
||||||
optind++;
|
optind++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -325,8 +328,6 @@ int tail_main(int argc, char **argv)
|
|||||||
free(buffer);
|
free(buffer);
|
||||||
if(files)
|
if(files)
|
||||||
free(files);
|
free(files);
|
||||||
if(optv)
|
|
||||||
free(optv);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
49
tail.c
49
tail.c
@ -156,39 +156,38 @@ 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;
|
||||||
int test;
|
int test;
|
||||||
int opt;
|
int opt;
|
||||||
int optc=0;
|
|
||||||
char **optv=NULL;
|
|
||||||
char follow=0;
|
char follow=0;
|
||||||
int sleep_int=1;
|
int sleep_int=1;
|
||||||
int *fd;
|
int *fd;
|
||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
|
||||||
for(opt=0;opt<argc;opt++){
|
while ((opt=getopt(argc,argv,"c:fhn:s:q:v123456789+")) >0) {
|
||||||
test=atoi(argv[opt]);
|
|
||||||
if(test){
|
|
||||||
units=test;
|
|
||||||
if(units<0)
|
|
||||||
units=units-1;
|
|
||||||
}else{
|
|
||||||
optc++;
|
|
||||||
optv = realloc(optv, optc);
|
|
||||||
optv[optc - 1] = (char *) malloc(strlen(argv[opt]) + 1);
|
|
||||||
strcpy(optv[optc - 1], argv[opt]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while ((opt=getopt(optc,optv,"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;
|
||||||
test = atoi(optarg);
|
test = atoi(optarg);
|
||||||
@ -248,17 +247,21 @@ int tail_main(int argc, char **argv)
|
|||||||
usage(tail_usage);
|
usage(tail_usage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (optind <= optc) {
|
while (optind <= argc) {
|
||||||
if(optind==optc) {
|
if(optind==argc) {
|
||||||
if (n_files==0)
|
if (n_files==0)
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}else {
|
}else {
|
||||||
if (!strcmp(optv[optind], "-"))
|
if (*argv[optind] == '+') {
|
||||||
|
checknumbers(argv[optind]);
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[optind], "-")) {
|
||||||
add_file(STDIN);
|
add_file(STDIN);
|
||||||
else
|
} else {
|
||||||
add_file(optv[optind]);
|
add_file(argv[optind]);
|
||||||
|
}
|
||||||
optind++;
|
optind++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -325,8 +328,6 @@ int tail_main(int argc, char **argv)
|
|||||||
free(buffer);
|
free(buffer);
|
||||||
if(files)
|
if(files)
|
||||||
free(files);
|
free(files);
|
||||||
if(optv)
|
|
||||||
free(optv);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user