X-Git-Url: http://dolda2000.com/gitweb/?p=utils.git;a=blobdiff_plain;f=bkselect.c;h=96f3ad9ea1e58588019fbf27ed20d9322a7fff17;hp=791289821c11b8fadcdb62130b76c5dc49093870;hb=HEAD;hpb=0b76820079b17c6e3879a1979687258039bb159f diff --git a/bkselect.c b/bkselect.c index 7912898..96f3ad9 100644 --- a/bkselect.c +++ b/bkselect.c @@ -5,8 +5,7 @@ #include #include #include -#include -#include +#include int printsize = 0; int printnames = 1; @@ -23,8 +22,8 @@ int bkselect(char *path, int s) int pbl, pl, al; al = sizeof(ab) - 1; - if(attr_get(path, "bkselect", ab, &al, 0)) { - if(errno == ENOATTR) { + if((al = getxattr(path, "user.bkselect", ab, sizeof(ab))) < 0) { + if(errno == ENODATA) { } else if(errno == EPERM) { /* Ignore for now because of weird effects... */ } else if(errno == E2BIG) { @@ -70,9 +69,11 @@ 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 && printnames) - printf("%s\n", pb); - tsize += sb.st_size; + if(s) { + if(printnames) + printf("%s\n", pb); + tsize += sb.st_size; + } } } @@ -82,14 +83,15 @@ int bkselect(char *path, int s) void usage(void) { - fprintf(stderr, "usage: bkselect [-hsq] path...\n"); + fprintf(stderr, "usage: bkselect [-hsqo] [path...]\n"); } int main(int argc, char **argv) { - int c, i, r; + int c, i, r, s; - while((c = getopt(argc, argv, "hsq")) >= 0) { + s = 1; + while((c = getopt(argc, argv, "hsqo")) >= 0) { switch(c) { case 's': printsize = 1; @@ -97,6 +99,9 @@ int main(int argc, char **argv) case 'q': printnames = 0; break; + case 'o': + s = 0; + break; case 'h': default: usage(); @@ -104,13 +109,13 @@ int main(int argc, char **argv) } } if(argc - optind < 1) { - usage(); - exit(1); - } - r = 0; - for(i = optind; i < argc; i++) { - if(bkselect(argv[i], 0)) - r = 1; + r = bkselect(".", s); + } else { + r = 0; + for(i = optind; i < argc; i++) { + if(bkselect(argv[i], s)) + r = 1; + } } if(printsize) printf("%lli\n", tsize);