From: Laurent MAZET Date: Mon, 20 Jan 2025 16:41:31 +0000 (+0100) Subject: restore code for windows X-Git-Tag: v1.0~19 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=988ae745cfcb1d3458ba72a44e508b990e39562b;p=fm.git restore code for windows --- diff --git a/function.c b/function.c index 24b980e..c08c57c 100644 --- a/function.c +++ b/function.c @@ -100,13 +100,43 @@ list_t *alloclist (void) list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type) { + struct stat sb; char *name = newfilename (dirname, filename); - struct stat sb = {0}; - int error = (STAT (name, &sb) == -1); + STAT (name, &sb); size_t size = 0; - if (type == type_reg_e) { - size = sb.st_size; + if ((type == type_unkn_e) || (type == type_reg_e)) { + switch (sb.st_mode & S_IFMT) { + case S_IFBLK: + type = type_block_e; + break; + case S_IFCHR: + type = type_char_e; + break; + case S_IFDIR: + type = type_dir_e; + break; + case S_IFIFO: + type = type_pipe_e; + break; +#ifndef WIN32 + case S_IFLNK: + type = type_symb_e; + break; +#endif + case S_IFREG: + type = type_reg_e; + break; +#ifndef WIN32 + case S_IFSOCK: + type = type_socket_e; + break; +#endif + } + + if (type == type_reg_e) { + size = sb.st_size; + } } list->nb++;