X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fflist.c;h=b4aff9cd3882a980003487950ae1562513d8ccb8;hb=7428828caf071831ea3caf1efb856c418929acc2;hp=758d308162fc5ecc229eabf2c9dbc099eb03ecac;hpb=008837e090c008e3afe7a9c8667070bafa091e62;p=mmh diff --git a/uip/flist.c b/uip/flist.c index 758d308..b4aff9c 100644 --- a/uip/flist.c +++ b/uip/flist.c @@ -12,8 +12,6 @@ * control laws. This software is made available AS IS, and Xerox Corporation * makes no warranty about the software, its performance or its conformity to * any specification. - * - * $Id$ */ #include @@ -76,7 +74,7 @@ static struct Folder *orders = NULL; static int nOrders = 0; static int nOrdersAlloced = 0; static struct Folder *folders = NULL; -static int nFolders = 0; +static unsigned int nFolders = 0; static int nFoldersAlloced = 0; /* info on folders to search */ @@ -86,7 +84,7 @@ static int maxfolders; /* info on sequences to search for */ static char *sequencesToDo[NUMATTRS]; -static int numsequences; +static unsigned int numsequences; static int all = FALSE; /* scan all folders in top level? */ static int alphaOrder = FALSE; /* want alphabetical order only */ @@ -114,7 +112,6 @@ int AddFolder(char *, int); void BuildFolderList(char *, int); void BuildFolderListRecurse(char *, struct stat *, int); void PrintFolders(void); -static int num_digits (int); void AllocFolders(struct Folder **, int *, int); int AssignPriority(char *); static void do_readonly_folders(void); @@ -168,10 +165,10 @@ main(int argc, char **argv) snprintf(buf, sizeof(buf), "%s [+folder1 [+folder2 ...]][switches]", invo_name); print_help(buf, switches, 1); - done(1); + done(0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case SEQSW: if (!(cp = *argp++) || *cp == '-') @@ -233,7 +230,7 @@ main(int argc, char **argv) } if (*cp == '+' || *cp == '@') { foldersToDo[numfolders++] = - path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF); + pluspath (cp); } else foldersToDo[numfolders++] = cp; } @@ -277,7 +274,8 @@ main(int argc, char **argv) ScanFolders(); qsort(folders, nFolders, sizeof(struct Folder), (qsort_comp) CompareFolders); PrintFolders(); - return done (0); + done (0); + return 1; } /* @@ -288,7 +286,7 @@ main(int argc, char **argv) void GetFolderOrder(void) { - char *p, *s; + unsigned char *p, *s; int priority = 1; struct Folder *o; @@ -400,7 +398,8 @@ BuildFolderList(char *dirName, int searchdepth) void BuildFolderListRecurse(char *dirName, struct stat *s, int searchdepth) { - char *base, *n, name[PATH_MAX]; + char *base, name[PATH_MAX]; + unsigned char *n; int nlinks; DIR *dir; struct dirent *dp; @@ -414,6 +413,12 @@ BuildFolderListRecurse(char *dirName, struct stat *s, int searchdepth) * stat them. But that shouldn't generally be a problem. */ nlinks = s->st_nlink; + if (nlinks == 1) { + /* Disable the optimization under conditions where st_nlink + is set to 1. That happens on Cygwin, for example: + http://cygwin.com/ml/cygwin-apps/2008-08/msg00264.html */ + nlinks = INT_MAX; + } if (!(dir = opendir(dirName))) adios(dirName, "can't open directory"); @@ -465,7 +470,8 @@ BuildFolderListRecurse(char *dirName, struct stat *s, int searchdepth) int AddFolder(char *name, int force) { - int i, msgnum, nonzero; + unsigned int i; + int msgnum, nonzero; int seqnum[NUMATTRS], nSeq[NUMATTRS]; struct Folder *f; struct msgs *mp; @@ -535,8 +541,8 @@ void PrintFolders(void) { char tmpname[BUFSIZ]; - int i, j, len, has_private = 0; - int maxfolderlen = 0, maxseqlen = 0; + unsigned int i, j, len, has_private = 0; + unsigned int maxfolderlen = 0, maxseqlen = 0; int maxnum = 0, maxseq = 0; if (!Total) { @@ -605,29 +611,6 @@ PrintFolders(void) } /* - * Calculate the number of digits in a nonnegative integer - */ -static int -num_digits (int n) -{ - int ndigits = 0; - - /* Sanity check */ - if (n < 0) - adios (NULL, "oops, num_digits called with negative value"); - - if (n == 0) - return 1; - - while (n) { - n /= 10; - ndigits++; - } - - return ndigits; -} - -/* * Put them in priority order. */