element window
authorLaurent Mazet <mazet@softndesign.org>
Sat, 4 Jan 2025 22:06:57 +0000 (23:06 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 4 Jan 2025 22:06:57 +0000 (23:06 +0100)
display.c
function.c

index 3fcfbe87027116ec5ac3304e50a6d0a094a1e191..3edaea75ae75a7aaa628290e15f150c76ceb3928 100644 (file)
--- a/display.c
+++ b/display.c
@@ -217,49 +217,74 @@ void displaywindow (window_t *win, list_t *list, int page, int *index_x, int *in
 void elementwindow (window_t *win, elem_t *elem)
 {
     char buf[64] = {0};
+
+    int i;
+    for (i = 0; i < win->xsize; i++) {
+        mvaddch (win->yoffset, win->xoffset + i, ' ');
+    }
+
     int pos = 0;
+
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0400) ? 'r' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0200) ? 'w' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0100) ? 'x' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0040) ? 'r' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0020) ? 'w' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0010) ? 'x' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0004) ? 'r' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0002) ? 'w' : '-');
+    mvaddch (win->yoffset, win->xoffset + pos++, (elem->mode & 0001) ? 'x' : '-');
+    pos += 1;
+
+    sprintf (buf, "(%d)", (int)(elem->nlk));
+    mvaddstr (win->yoffset, win->xoffset + pos, buf);
+    pos += strlen (buf) + 1;
+
+    if (elem->size < 10000l) {
+        sprintf (buf, "%dB", (int)(elem->size));
+    } else if (elem->size < 10000l * 1024) {
+        sprintf (buf, "%dkB", (int)(elem->size / 1024));
+    } else if (elem->size < 10000l * 1024 * 1024) {
+        sprintf (buf, "%dMB", (int)(elem->size / 1024 / 1024));
+    } else if (elem->size < 10000l * 1024 * 1024 * 1024) {
+        sprintf (buf, "%dGB", (int)(elem->size / 1024 / 1024 / 1024));
+    } else {
+        sprintf (buf, "%dTB", (int)(elem->size / 1024 / 1024 / 1024 / 1024));
+    }
+    mvaddstr (win->yoffset, win->xoffset + pos, buf);
+    pos += strlen (buf) + 1;
+
     switch (elem->type) {
     case type_unkn_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Unknown");
+        mvaddstr (win->yoffset, win->xoffset + pos, "unknown");
         pos += 7;
         break;
     case type_block_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Block dev");
+        mvaddstr (win->yoffset, win->xoffset + pos, "block.dev");
         pos += 9;
         break;
     case type_char_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Char dev");
+        mvaddstr (win->yoffset, win->xoffset + pos, "char.dev");
         pos += 8;
         break;
     case type_dir_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Directory");
+        mvaddstr (win->yoffset, win->xoffset + pos, "directory");
         pos += 9;
         break;
     case type_pipe_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Pipe");
-        pos += 4;
+        mvaddstr (win->yoffset, win->xoffset + pos, "fifo/pipe");
+        pos += 9;
         break;
     case type_symb_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Link");
-        pos += 4;
+        mvaddstr (win->yoffset, win->xoffset + pos, "symb.link");
+        pos += 9;
         break;
     case type_reg_e:
-        if (elem->size < 10000) {
-            sprintf (buf, "%d B", elem->size);
-        } else if (elem->size < 10000 * 1024) {
-            sprintf (buf, "%d kB", elem->size / 1024);
-        } else if (elem->size < 10000 * 1024 * 1024) {
-            sprintf (buf, "%d MB", elem->size / 1024 / 1024);
-        } else if (elem->size < 10000 * 1024 * 1024 * 1024) {
-            sprintf (buf, "%d GB", elem->size / 1024 / 1024 / 1024);
-        } else {
-            sprintf (buf, "%d TB", elem->size / 1024 / 1024 / 1024 / 1024);
-        }
-        mvaddstr (win->yoffset, win->xoffset + pos, buf);
-        pos += strlen (buf);
+        mvaddstr (win->yoffset, win->xoffset + pos, "file");
+        pos += 4;
         break;
     case type_socket_e:
-        mvaddstr (win->yoffset, win->xoffset + pos, "Socket");
+        mvaddstr (win->yoffset, win->xoffset + pos, "socket");
         pos += 6;
         break;
     }
@@ -270,8 +295,8 @@ void elementwindow (window_t *win, elem_t *elem)
     mvaddch (win->yoffset, win->xoffset + pos, '/');
     pos += 1;
     mvaddstr (win->yoffset, win->xoffset + pos, elem->gid);
-    pos += strlen (elem->gid);
-    pos += 1;
+    //pos += strlen (elem->gid);
+    //pos += 1;
 }
 
 char *getwindow (int length, int xoffset, int yoffset)
index 0b706458d895910093461078490d6d237de9ade2..bcdf33aae2695696ddafbf0b4bcec944b5a6600e 100644 (file)
@@ -92,6 +92,7 @@ list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type)
     list->nb++;
     list->tab = (elem_t *) realloc (list->tab, list->nb * sizeof (elem_t));
     CHECKALLOC (list->tab);
+    memset (list->tab + list->nb - 1, 0, sizeof (elem_t));
     elem_t * elem = list->tab;
     for (i = list->nb - 1; i > 0; i--) {
         if (strcmp ((list->tab + i - 1)->name, filename) < 0) {