X-Git-Url: http://dolda2000.com/gitweb/?p=utils.git;a=blobdiff_plain;f=bkselect.c;fp=bkselect.c;h=791289821c11b8fadcdb62130b76c5dc49093870;hp=6227a5b8ea1c88626c1c64215d264ba4856f9ce6;hb=0b76820079b17c6e3879a1979687258039bb159f;hpb=b7ae13c0aa3596e8c897b84e958649cb969bd7c9 diff --git a/bkselect.c b/bkselect.c index 6227a5b..7912898 100644 --- a/bkselect.c +++ b/bkselect.c @@ -8,6 +8,10 @@ #include #include +int printsize = 0; +int printnames = 1; +long long tsize = 0; + int bkselect(char *path, int s) { DIR *d; @@ -66,8 +70,9 @@ int bkselect(char *path, int s) if(bkselect(pb, s)) r = 1; } else if(S_ISREG(sb.st_mode) || S_ISLNK(sb.st_mode)) { - if(s) + if(s && printnames) printf("%s\n", pb); + tsize += sb.st_size; } } @@ -75,18 +80,39 @@ int bkselect(char *path, int s) return(r); } +void usage(void) +{ + fprintf(stderr, "usage: bkselect [-hsq] path...\n"); +} + int main(int argc, char **argv) { - int i, r; + int c, i, r; - if(argc < 1) { - fprintf(stderr, "usage: bkselect path...\n"); + while((c = getopt(argc, argv, "hsq")) >= 0) { + switch(c) { + case 's': + printsize = 1; + break; + case 'q': + printnames = 0; + break; + case 'h': + default: + usage(); + exit((c == 'h')?0:1); + } + } + if(argc - optind < 1) { + usage(); exit(1); } r = 0; - for(i = 1; i < argc; i++) { + for(i = optind; i < argc; i++) { if(bkselect(argv[i], 0)) r = 1; } + if(printsize) + printf("%lli\n", tsize); return(r); }