qemacs-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemacs-commit] qemacs dired.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs dired.c
Date: Wed, 12 Feb 2014 07:25:37 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/02/12 07:25:37

Modified files:
        .              : dired.c 

Log message:
        Show mode information in dired
        
        * compute and display number of directories, files and total bytes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/dired.c?cvsroot=qemacs&r1=1.37&r2=1.38

Patches:
Index: dired.c
===================================================================
RCS file: /sources/qemacs/qemacs/dired.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- dired.c     10 Feb 2014 21:21:39 -0000      1.37
+++ dired.c     12 Feb 2014 07:25:35 -0000      1.38
@@ -21,7 +21,7 @@
 
 #include "qe.h"
 
-enum { DIRED_HEADER = 1 };
+enum { DIRED_HEADER = 2 };
 
 enum {
     DIRED_SORT_NAME = 1,
@@ -195,10 +195,31 @@
     /* construct list buffer */
     b = s->b;
     b->flags &= ~BF_READONLY;
+    /* deleting buffer contents resets s->offset and s->offset_top */
     eb_delete(b, 0, b->total_size);
 
     if (DIRED_HEADER) {
+        long long total_bytes;
+        int ndirs, nfiles;
+
         eb_printf(b, "  Directory of %s:\n", ds->path);
+
+        ndirs = nfiles = 0;
+        total_bytes = 0;
+        for (i = 0; i < ds->items.nb_items; i++) {
+            item = ds->items.items[i];
+            dip = item->opaque;
+            if (S_ISDIR(dip->st_mode)) {
+                ndirs++;
+            } else {
+                nfiles++;
+                total_bytes += dip->size;
+            }
+        }
+        eb_printf(b, "    %d director%s, %d file%s, %lld byte%s\n",
+                  ndirs, ndirs == 1 ? "y" : "ies",
+                  nfiles, &"s"[nfiles == 1],
+                  (long long)total_bytes, &"s"[total_bytes == 1]);
     }
 
     for (i = 0; i < ds->items.nb_items; i++) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]