#include <dirent.h>
-#include <grp.h>
-#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
+
+#ifndef WIN32
+#include <grp.h>
+#include <pwd.h>
#include <sys/sysmacros.h>
+#endif
#include "debug.h"
#include "type.h"
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);
}
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) {
continue;
}
type_t type = type_unkn_e;
+#ifndef WIN32
switch (dp->d_type) {
case DT_BLK:
type = type_block_e;
type = type_socket_e;
break;
}
+#endif
_addelement (list, dirname, dp->d_name, type);
}
closedir(dir);
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);
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);
elem->gid = (char *) calloc (_log10 (sb.st_gid) + 1, 1);
sprintf (elem->gid, "%d", sb.st_gid);
}
+#endif
elem->nlk = sb.st_nlink;
}
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, " ");
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)