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;
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);
}
}
}
-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;
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",
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 <lines> 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 <cols> 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 <lines> same as -c for number of lines.\n");
+ printf(" -h show this help.\n");
printf("\n");
printf("Report bugs and comments to <francois@fleuret.org>\n");
exit(EXIT_SUCCESS);
}
}
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);