X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=dus.c;h=d9ae828dda96677f23e1fd94a214c2dd9d338f8c;hb=d2bd3599ead9d04df480bfc8b23be69853d5ca99;hp=e00d3df9325222a459344b52d49e53594f44ae3f;hpb=b2a5aa36454c6b0d66eb0f1451ac0e07aad3b242;p=dus.git diff --git a/dus.c b/dus.c index e00d3df..d9ae828 100644 --- a/dus.c +++ b/dus.c @@ -85,7 +85,7 @@ int ignore_entry(const char *name) { return strcmp(name, ".") == 0 || strcmp(name, "..") == 0 || - (ignore_dotfiles && name[0] == '.' && name[1] != '/'); + (ignore_dotfiles && name[0] == '.' && name[1] != '/'); } size_sum_t entry_size(const char *name) { @@ -358,7 +358,7 @@ void print_sorted(struct entry_node *root, int width, int height) { void usage(FILE *out) { fprintf(out, "Usage: dus [OPTION]... [FILE]...\n"); fprintf(out, "Version %s (%s)\n", VERSION_NUMBER, UNAME); - fprintf(out, "List files and directories sorted according to their sizes. If no files or directories are provided as arguments, use the content of the current directory.\n"); + fprintf(out, "Lists files and directories according to their size. The sizes are computed by summing recursively exact file sizes through directories. If a given directory has its name appended with '/', it is not listed, but the elements it contains are. If no files or directories are provided as arguments, the current directory is used as default.\n"); fprintf(out, "\n"); /* 01234567890123456789012345678901234567890123456789012345678901234567890123456789*/ fprintf(out, " -d, --ignore-dots ignore files and directories starting with a '.'\n"); @@ -395,7 +395,7 @@ static struct option long_options[] = { }; int main(int argc, char **argv) { - int c; + int c, l; struct entry_node *root; struct winsize win; @@ -449,8 +449,9 @@ int main(int argc, char **argv) { if (optind < argc) { while (optind < argc) { - if(argv[optind][strlen(argv[optind]) - 1] == '/') { - argv[optind][strlen(argv[optind]) - 1] = '\0'; + l = strlen(argv[optind]); + if(l > 0 && argv[optind][l - 1] == '/') { + argv[optind][l - 1] = '\0'; root = push_dir_content(argv[optind++], root); } else { root = push_entry(argv[optind++], root);