From 660be3cb4aaf2f895f00cc1de2d6da9fc2d8b923 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sat, 4 Jan 2025 23:06:57 +0100 Subject: [PATCH] element window --- display.c | 73 ++++++++++++++++++++++++++++++++++++------------------ function.c | 1 + 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/display.c b/display.c index 3fcfbe8..3edaea7 100644 --- 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) diff --git a/function.c b/function.c index 0b70645..bcdf33a 100644 --- a/function.c +++ b/function.c @@ -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) { -- 2.30.2