From: Laurent MAZET Date: Mon, 6 Jan 2025 17:02:06 +0000 (+0100) Subject: port on Windows X-Git-Tag: v1.0~65 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=eb76895122ce83c597a9e138b2966605fad8977a;p=fm.git port on Windows --- diff --git a/function.c b/function.c index fcee89f..daf59db 100644 --- a/function.c +++ b/function.c @@ -1,11 +1,14 @@ #include -#include -#include #include #include #include #include + +#ifndef WIN32 +#include +#include #include +#endif #include "debug.h" #include "type.h" @@ -53,7 +56,11 @@ list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type) char *name = newfilename (dirname, filename); struct stat sb; +#ifdef WIN32 + if (stat (name, &sb) == -1) { +#else /* Linux*/ if (lstat (name, &sb) == -1) { +#endif VERBOSE (ERROR, fprintf (stderr, "can't stat on file '%s'\n", name)); exit (1); } @@ -71,15 +78,19 @@ list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type) 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) { @@ -131,6 +142,7 @@ list_t *exploredir (char *dirname) continue; } type_t type = type_unkn_e; +#ifndef WIN32 switch (dp->d_type) { case DT_BLK: type = type_block_e; @@ -154,6 +166,7 @@ list_t *exploredir (char *dirname) type = type_socket_e; break; } +#endif _addelement (list, dirname, dp->d_name, type); } closedir(dir); @@ -178,13 +191,20 @@ void getinfo (char *dirname, elem_t *elem) char *name = newfilename (dirname, elem->name); struct stat sb; +#ifdef WIN32 + if (stat (name, &sb) == -1) { +#else /* Linux*/ if (lstat (name, &sb) == -1) { +#endif VERBOSE (ERROR, fprintf (stderr, "can't stat on file '%s%s%s'\n", dirname, SEPARATOR, elem->name)); exit (1); } elem->mode = 0777 & sb.st_mode; +#ifdef WIN32 + elem->uid = strdup (""); +#else /* Linux*/ struct passwd *pwd = getpwuid (sb.st_uid); if (pwd) { elem->uid = strdup (pwd->pw_name); @@ -192,7 +212,11 @@ void getinfo (char *dirname, elem_t *elem) elem->uid = (char *) calloc (_log10 (sb.st_uid) + 1, 1); sprintf (elem->uid, "%d", sb.st_uid); } +#endif +#ifdef WIN32 + elem->gid = strdup (""); +#else /* Linux*/ struct group *grp = getgrgid (sb.st_gid); if (grp) { elem->gid = strdup (grp->gr_name); @@ -200,6 +224,7 @@ void getinfo (char *dirname, elem_t *elem) elem->gid = (char *) calloc (_log10 (sb.st_gid) + 1, 1); sprintf (elem->gid, "%d", sb.st_gid); } +#endif elem->nlk = sb.st_nlink; } @@ -221,16 +246,15 @@ void createstatus (char *status, elem_t *elem) sprintf (status + strlen (status), " (%d)", (int)(elem->nlk)); strcat (status, " "); - if (elem->size < 10000l) { + if (elem->size < (size_t)10000) { sprintf (status + strlen (status), "%dB", (int)(elem->size)); - } else if (elem->size < 10000l * 1024) { + } else if (elem->size < (size_t)10000 * 1024) { sprintf (status + strlen (status), "%dkB", (int)(elem->size / 1024)); - } else if (elem->size < 10000l * 1024 * 1024) { + } else if (elem->size < (size_t)10000 * 1024 * 1024) { sprintf (status + strlen (status), "%dMB", (int)(elem->size / 1024 / 1024)); - } else if (elem->size < 10000l * 1024 * 1024 * 1024) { - sprintf (status + strlen (status), "%dGB", (int)(elem->size / 1024 / 1024 / 1024)); + //} else if (elem->size < (size_t)10000 * 1024 * 1024 *1024) { } else { - sprintf (status + strlen (status), "%dTB", (int)(elem->size / 1024 / 1024 / 1024 / 1024)); + sprintf (status + strlen (status), "%dGB", (int)(elem->size / 1024 / 1024 / 1024)); } strcat (status, " "); @@ -261,10 +285,12 @@ void createstatus (char *status, elem_t *elem) break; } - strcat (status, " "); - strcat (status, elem->uid); - strcat (status, "/"); - strcat (status, elem->gid); + if (elem->uid && *elem->uid) { + strcat (status, " "); + strcat (status, elem->uid); + strcat (status, "/"); + strcat (status, elem->gid); + } } void freelist (list_t *list) diff --git a/makefile b/makefile index 042962e..0e016a0 100644 --- a/makefile +++ b/makefile @@ -21,9 +21,11 @@ ifneq (, $(findstring linux, $(MAKE_HOST))) # Linux else ifneq (, $(findstring mingw, $(MAKE_HOST))) # Windows MinGw +CFLAGS += -DWIN32 #LDLIBS += -lws2_32 LDOPT = winlnk else ifneq (, $(findstring cygwin, $(MAKE_HOST))) +CFLAGS += -DWIN32 # Windows CygWin LDOPT = winlnk else ifneq (, $(findstring msdos, $(MAKE_HOST)))