color in green executable files
authorLaurent Mazet <mazet@softndesign.org>
Sat, 18 Jan 2025 21:29:06 +0000 (22:29 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 18 Jan 2025 21:29:06 +0000 (22:29 +0100)
display.c
function.c

index f67b12e647dac0aa731c9f50b66eefda1a5fbf6b..88ef5dd190f1d660aa408d16dd8233727b83956c 100644 (file)
--- a/display.c
+++ b/display.c
@@ -233,29 +233,33 @@ void displaywindow (window_t *win, list_t *list, int page, int *index_x, int *in
             elem_t *elem = list->tab + i;
             switch (elem->type) {
             case type_unkn_e:
-               set_color ((j == index) ? white : black);
-               break;
+                set_color ((j == index) ? white : black);
+                break;
             case type_block_e:
-               set_color ((j == index) ? byellow : yellow);
-               break;
+                set_color ((j == index) ? byellow : yellow);
+                break;
             case type_char_e:
-               set_color ((j == index) ? bmagenta : magenta);
-               break;
+                set_color ((j == index) ? bmagenta : magenta);
+                break;
             case type_dir_e:
-               set_color ((j == index) ? bblue : blue);
-               break;
+                set_color ((j == index) ? bblue : blue);
+                break;
             case type_pipe_e:
-               set_color ((j == index) ? bred : red);
-               break;
+                set_color ((j == index) ? bred : red);
+                break;
             case type_symb_e:
-               set_color ((j == index) ? bcyan : cyan);
-               break;
+                set_color ((j == index) ? bcyan : cyan);
+                break;
             case type_reg_e:
-               set_color ((j == index) ? black : white);
-               break;
+                if ((elem->mode & 0111) == 0) {
+                    set_color ((j == index) ? black : white);
+                } else {
+                    set_color ((j == index) ? bgreen : green);
+                }
+                break;
             case type_socket_e:
-               set_color ((j == index) ? bred : red);
-               break;
+                set_color ((j == index) ? bred : red);
+                break;
             }
             if (elem->selected) {
                 attron (A_BOLD);
index 9592d95f3e8978dcfc7f191e1135355591baeac1..e1723f73a746c7377a3a7e76d30d225c9f1eb4ca 100644 (file)
@@ -100,18 +100,17 @@ list_t *alloclist (void)
 
 list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type)
 {
-    int i;
-    size_t size = 0;
+    char *name = newfilename (dirname, filename);
+    struct stat sb;
+    if (STAT (name, &sb) == -1) {
+        VERBOSE (ERROR, fprintf (stderr, "can't stat file '%s'\n", name));
+        exit (1);
+    }
+    free (name);
 
+    size_t size = 0;
     if (type == type_reg_e) {
-        char *name = newfilename (dirname, filename);
-        struct stat sb;
-        if (STAT (name, &sb) == -1) {
-            VERBOSE (ERROR, fprintf (stderr, "can't stat file '%s'\n", name));
-            exit (1);
-        }
         size = sb.st_size;
-        free (name);
     }
 
     list->nb++;
@@ -119,16 +118,19 @@ list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type)
     CHECKALLOC (list->tab);
     memset (list->tab + list->nb - 1, 0, sizeof (elem_t));
     elem_t * elem = list->tab;
+    int i;
     for (i = list->nb - 1; i > 0; i--) {
         if (strcmp ((list->tab + i - 1)->name, filename) < 0) {
             elem = list->tab + i;
             break;
         } else {
+            (list->tab + i)->mode = (list->tab + i - 1)->mode;
             (list->tab + i)->name = (list->tab + i - 1)->name;
             (list->tab + i)->size = (list->tab + i - 1)->size;
             (list->tab + i)->type = (list->tab + i - 1)->type;
         }
     }
+    elem->mode = 0777 & sb.st_mode;
     elem->name = strdup (filename);
     elem->size = size;
     elem->type = type;
@@ -211,8 +213,6 @@ void getinfo (char *dirname, elem_t *elem)
     }
     free (name);
 
-    elem->mode = 0777 & sb.st_mode;
-
 #ifdef WIN32
     elem->uid = strdup ("");
 #else /* Linux*/