From: Francois Fleuret Date: Wed, 17 Mar 2010 07:13:23 +0000 (+0100) Subject: Cosmetics. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;h=6ea55a080b700e73fa9194972a6349233ea4384f;p=dus.git Cosmetics. --- diff --git a/dus.c b/dus.c index 083f96e..620df1e 100644 --- a/dus.c +++ b/dus.c @@ -89,7 +89,7 @@ int ignore_entry(const char *name) { } void print_size_sum(size_sum_t s) { - char tmp[100]; + char tmp[128]; char *a = tmp + sizeof(tmp)/sizeof(char); *(--a) = '\0'; if(s) { @@ -103,7 +103,7 @@ void print_size_sum(size_sum_t s) { printf("%s", a); } -size_sum_t file_or_dir_size(const char *name) { +size_sum_t entry_size(const char *name) { DIR *dir; struct dirent *dir_e; struct stat dummy; @@ -127,7 +127,7 @@ size_sum_t file_or_dir_size(const char *name) { while((dir_e = readdir(dir))) { if(!ignore_entry(dir_e->d_name)) { snprintf(subname, PATH_MAX, "%s/%s", name, dir_e->d_name); - result += file_or_dir_size(subname); + result += entry_size(subname); } } closedir(dir); @@ -167,26 +167,26 @@ size_sum_t atoss(const char *string) { /**********************************************************************/ -struct file_with_size { - char *filename; +struct entry_node { + struct entry_node *next; + char *name; size_sum_t size; - struct file_with_size *next; }; -struct file_with_size *create(char *name, struct file_with_size *current) { - struct file_with_size *result; - result = safe_malloc(sizeof(struct file_with_size)); - result->filename = strdup(name); - result->size = file_or_dir_size(name); - result->next = current; +struct entry_node *push_entry(char *name, struct entry_node *head) { + struct entry_node *result; + result = safe_malloc(sizeof(struct entry_node)); + result->name = strdup(name); + result->size = entry_size(name); + result->next = head; return result; } -void destroy(struct file_with_size *node) { - struct file_with_size *next; +void destroy_entry_list(struct entry_node *node) { + struct entry_node *next; while(node) { next = node->next; - free(node->filename); + free(node->name); free(node); node = next; } @@ -195,10 +195,10 @@ void destroy(struct file_with_size *node) { /**********************************************************************/ int compare_files(const void *x1, const void *x2) { - const struct file_with_size **f1, **f2; + const struct entry_node **f1, **f2; - f1 = (const struct file_with_size **) x1; - f2 = (const struct file_with_size **) x2; + f1 = (const struct entry_node **) x1; + f2 = (const struct entry_node **) x2; if(reverse_sorting) { if((*f1)->size < (*f2)->size) { @@ -269,10 +269,10 @@ void fancy_print(char *buffer, char *filename, size_sum_t size) { } } -void print_sorted(struct file_with_size *root, int width, int height) { +void print_sorted(struct entry_node *root, int width, int height) { char line[BUFFER_SIZE]; - struct file_with_size *node; - struct file_with_size **nodes; + struct entry_node *node; + struct entry_node **nodes; int nb_nodes, n, first, last; nb_nodes = 0; @@ -282,7 +282,7 @@ void print_sorted(struct file_with_size *root, int width, int height) { } } - nodes = safe_malloc(nb_nodes * sizeof(struct file_with_size *)); + nodes = safe_malloc(nb_nodes * sizeof(struct entry_node *)); n = 0; for(node = root; node; node = node->next) { @@ -291,7 +291,7 @@ void print_sorted(struct file_with_size *root, int width, int height) { } } - qsort(nodes, nb_nodes, sizeof(struct file_with_size *), compare_files); + qsort(nodes, nb_nodes, sizeof(struct entry_node *), compare_files); first = 0; last = nb_nodes; @@ -316,9 +316,9 @@ void print_sorted(struct file_with_size *root, int width, int height) { for(n = first; n < last; n++) { if(fancy_size_display) { - fancy_print(line, nodes[n]->filename, nodes[n]->size); + fancy_print(line, nodes[n]->name, nodes[n]->size); } else { - raw_print(line, nodes[n]->filename, nodes[n]->size); + raw_print(line, nodes[n]->name, nodes[n]->size); } if(width >= 0 && width < BUFFER_SIZE) { line[width] = '\0'; @@ -335,7 +335,7 @@ void print_sorted(struct file_with_size *root, int width, int height) { /**********************************************************************/ -void print_help(FILE *out) { +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 size or content size. Take the content of the current directory as argument if none is provided.\n"); @@ -365,34 +365,29 @@ void print_help(FILE *out) { /**********************************************************************/ +static struct option long_options[] = { + { "ignore-dots", no_argument, 0, 'd' }, + { "reverse-order", no_argument, 0, 'r' }, + { "show-top", no_argument, 0, 't' }, + { "help", no_argument, 0, 'h' }, + { "fancy", no_argument, 0, 'f' }, + { "nb-columns", 1, 0, 'c' }, + { "nb-lines", 1, 0, 'l' }, + { "size-min", 1, 0, 'm' }, + { 0, 0, 0, 0 } +}; + int main(int argc, char **argv) { int c; - struct file_with_size *root; + struct entry_node *root; struct winsize win; root = 0; setlocale (LC_ALL, ""); - while (1) { - int option_index = 0; - static struct option long_options[] = { - { "ignore-dots", no_argument, 0, 'd' }, - { "reverse-order", no_argument, 0, 'r' }, - { "show-top", no_argument, 0, 't' }, - { "help", no_argument, 0, 'h' }, - { "fancy", no_argument, 0, 'f' }, - { "nb-columns", 1, 0, 'c' }, - { "nb-lines", 1, 0, 'l' }, - { "size-min", 1, 0, 'm' }, - { 0, 0, 0, 0 } - }; - - c = getopt_long(argc, argv, "dfrtl:c:m:hd", - long_options, &option_index); - if (c == -1) - break; - + while ((c = getopt_long(argc, argv, "dfrtl:c:m:hd", + long_options, NULL)) != -1) { switch (c) { case 'd': @@ -424,20 +419,20 @@ int main(int argc, char **argv) { break; case 'h': - print_help(stdout); + usage(stdout); exit(EXIT_SUCCESS); break; default: - print_help(stderr); + usage(stderr); exit(EXIT_FAILURE); } } if (optind < argc) { while (optind < argc) { - root = create(argv[optind++], root); + root = push_entry(argv[optind++], root); } } else { DIR *dir; @@ -446,7 +441,7 @@ int main(int argc, char **argv) { if(dir) { while((dir_e = readdir(dir))) { if(!ignore_entry(dir_e->d_name)) { - root = create(dir_e->d_name, root); + root = push_entry(dir_e->d_name, root); } } closedir(dir); @@ -463,7 +458,7 @@ int main(int argc, char **argv) { print_sorted(root, -1, -1); } - destroy(root); + destroy_entry_list(root); exit(EXIT_SUCCESS); }