X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=dus.c;h=04147a1e1c10ae12630100da9bb67dd250ca7332;hb=d25ae1d10c252e21bd61a0ec7d6b4c677878a8e3;hp=6ca0067f52500a42d8f77cd19447d1538a1fef86;hpb=1047d40d8422a70581e9a526d8f3cc84e6565e9f;p=dus.git diff --git a/dus.c b/dus.c index 6ca0067..04147a1 100644 --- a/dus.c +++ b/dus.c @@ -66,7 +66,7 @@ int show_top = 0; /* 1 means to show the top of the sorted list void *safe_malloc(size_t n) { void *p = malloc(n); if (!p && n != 0) { - printf("Can not allocate memory: %s\n", strerror(errno)); + fprintf(stderr, "Can not allocate memory: %s\n", strerror(errno)); exit(EXIT_FAILURE); } return p; @@ -106,7 +106,7 @@ size_sum_t file_or_dir_size(const char *name) { result = 0; if(lstat(name, &dummy) != 0) { - printf("Can not stat %s: %s\n", name, strerror(errno)); + fprintf(stderr, "Can not stat %s: %s\n", name, strerror(errno)); exit(EXIT_FAILURE); } @@ -187,7 +187,7 @@ int compare_files(const void *x1, const void *x2) { } } -void raw_print(char *buffer, char *filename, size_t size) { +void raw_print(char *buffer, char *filename, size_sum_t size) { char *a, *b, *c, u; b = buffer; @@ -213,7 +213,7 @@ void raw_print(char *buffer, char *filename, size_t size) { sprintf(b, " %s\n", filename); } -void fancy_print(char *buffer, char *filename, size_t size) { +void fancy_print(char *buffer, char *filename, size_sum_t size) { if(size < 1024) { sprintf(buffer, "% 7d %s\n", @@ -332,17 +332,18 @@ int main(int argc, char **argv) { case 'h': printf("Usage: dus [OPTION]... [FILE]...\n"); - printf("List files and directories sorted according to their size or content size (the content of the current directory by default).\n"); + printf("List files and directories sorted according to their size or content size. Take the content of the current directory as argument if none is provided.\n"); printf("\n"); - printf(" -d ignore files and directories starting with a '.'\n"); - printf(" -f display size with float values and K, M and G units.\n"); - printf(" -r reverse the sorting order.\n"); - printf(" -t show the top of the list.\n"); - printf(" -l specificy the number of lines to display. The value -1\n"); - printf(" corresponds to all the lines. By default the command\n"); - printf(" shows one line less than the height the tty, or all the\n"); - printf(" lines if the standard output is not a tty.\n"); - printf(" -h show this help.\n"); + printf(" -d ignore files and directories starting with a '.'\n"); + printf(" -f display size with float values and K, M and G units.\n"); + printf(" -r reverse the sorting order.\n"); + printf(" -t show the top of the list.\n"); + printf(" -c specificy the number of columns to display. The value -1\n"); + printf(" corresponds to no constraint. By default the command\n"); + printf(" uses the tty width, or no constraint if the stdout is\n"); + printf(" not a tty.\n"); + printf(" -l same as -c for number of lines.\n"); + printf(" -h show this help.\n"); printf("\n"); printf("Report bugs and comments to \n"); exit(EXIT_SUCCESS); @@ -369,13 +370,16 @@ int main(int argc, char **argv) { } } closedir(dir); + } else { + fprintf(stderr, "Can not open ./: %s\n", strerror(errno)); + exit (EXIT_FAILURE); } } if(isatty(STDOUT_FILENO)) { struct winsize win; if(ioctl (STDOUT_FILENO, TIOCGWINSZ, (char *) &win)) { - printf("Can not get the tty size: %s\n", strerror(errno)); + fprintf(stderr, "Can not get the tty size: %s\n", strerror(errno)); exit (EXIT_FAILURE); } print_sorted(root, win.ws_col, win.ws_row - 2);