From 7063266012a2ab0998d1cc7da381f78e014151db Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Tue, 16 Mar 2010 18:53:31 +0100 Subject: [PATCH] Added "..." to tty display when the list is truncated. --- dus.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/dus.c b/dus.c index a0e1957..40d5a16 100644 --- a/dus.c +++ b/dus.c @@ -273,37 +273,41 @@ void print_sorted(struct file_with_size *root, int width, int height) { char line[BUFFER_SIZE]; struct file_with_size *node; struct file_with_size **nodes; - int nb, n, first, last; + int nb_nodes, n, first, last; - nb = 0; + nb_nodes = 0; for(node = root; node; node = node->next) { - nb++; + nb_nodes++; } - nodes = safe_malloc(nb * sizeof(struct file_with_size *)); + nodes = safe_malloc(nb_nodes * sizeof(struct file_with_size *)); n = 0; for(node = root; node; node = node->next) { nodes[n++] = node; } - qsort(nodes, nb, sizeof(struct file_with_size *), compare_files); + qsort(nodes, nb_nodes, sizeof(struct file_with_size *), compare_files); first = 0; - last = nb; + last = nb_nodes; if(forced_height) { height = forced_height; } - if(height > 0 && height < nb) { - first = nb - height; + if(height >= 0 && nb_nodes > height && !show_top && !forced_height) { + printf("...\n"); + } + + if(height > 0 && height < nb_nodes) { + first = nb_nodes - height; } if(show_top) { n = last; - last = nb - first; - first = nb - n; + last = nb_nodes - first; + first = nb_nodes - n; } for(n = first; n < last; n++) { @@ -320,9 +324,15 @@ void print_sorted(struct file_with_size *root, int width, int height) { } } + if(height >= 0 && nb_nodes > height && show_top && !forced_height) { + printf("...\n"); + } + free(nodes); } + /**********************************************************************/ + void print_help(FILE *out) { fprintf(out, "Usage: dus [OPTION]... [FILE]...\n"); fprintf(out, "Version %s (%s)\n", VERSION_NUMBER, UNAME); -- 2.20.1