From: Laurent Mazet Date: Sat, 18 Jan 2025 21:29:06 +0000 (+0100) Subject: color in green executable files X-Git-Tag: v1.0~25 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=dd6b3e51604794098b0d3c465ec4a074b49a3ad3;p=fm.git color in green executable files --- diff --git a/display.c b/display.c index f67b12e..88ef5dd 100644 --- 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); diff --git a/function.c b/function.c index 9592d95..e1723f7 100644 --- a/function.c +++ b/function.c @@ -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*/