diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 19:14:55 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 19:14:55 +0000 |
| commit | 725a11bce75ffff56ed081c26240510d3bfacd78 (patch) | |
| tree | b4003cedb1bf859b98b250ea335305b2fb06e4ad /src/numericsort.c | |
| parent | e7d805a88ca71a0e6499fe72830e58fe594ef05b (diff) | |
Applied patches from Bill Spitzak.
Fixed all source files with MS-DOS/Windows line termination (CR+LF) instead
of standard line termination (LF only).
git-svn-id: file:///fltk/svn/fltk/trunk@8 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/numericsort.c')
| -rw-r--r-- | src/numericsort.c | 112 |
1 files changed, 56 insertions, 56 deletions
diff --git a/src/numericsort.c b/src/numericsort.c index b0729c326..0df0815d6 100644 --- a/src/numericsort.c +++ b/src/numericsort.c @@ -1,56 +1,56 @@ -/* My own scandir sorting function, useful for the film industry where
- we have many files with numbers in their names: */
-
-#include <config.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <sys/types.h>
-
-#ifdef WIN32
-#include <FL/filename.H>
-#else
-#if HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C"
-#endif
-int numericsort(const struct dirent **A, const struct dirent **B) {
- const char* a = (*A)->d_name;
- const char* b = (*B)->d_name;
- int ret = 0;
- for (;;) {
- if (isdigit(*a) && isdigit(*b)) {
- int zdiff,diff,magdiff;
- zdiff = 0;
- while (*a == '0') {a++; zdiff++;}
- while (*b == '0') {b++; zdiff--;}
- while (isdigit(*a) && *a == *b) {a++; b++;}
- diff = (isdigit(*a) && isdigit(*b)) ? *a - *b : 0;
- magdiff = 0;
- while (isdigit(*a)) {magdiff++; a++;}
- while (isdigit(*b)) {magdiff--; b++;}
- if (ret);
- else if (magdiff) ret = magdiff;
- else if (diff) ret = diff;
- else if (zdiff) ret = zdiff;
- } else if (*a == *b) {
- if (!*a) return ret;
- a++; b++;
- } else
- return (*a-*b);
- }
-}
+/* My own scandir sorting function, useful for the film industry where + we have many files with numbers in their names: */ + +#include <config.h> +#include <ctype.h> +#include <stdlib.h> +#include <sys/types.h> + +#ifdef WIN32 +#include <FL/filename.H> +#else +#if HAVE_DIRENT_H +# include <dirent.h> +#else +# define dirent direct +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif +#endif + +#ifdef __cplusplus +extern "C" +#endif +int numericsort(const struct dirent **A, const struct dirent **B) { + const char* a = (*A)->d_name; + const char* b = (*B)->d_name; + int ret = 0; + for (;;) { + if (isdigit(*a) && isdigit(*b)) { + int zdiff,diff,magdiff; + zdiff = 0; + while (*a == '0') {a++; zdiff++;} + while (*b == '0') {b++; zdiff--;} + while (isdigit(*a) && *a == *b) {a++; b++;} + diff = (isdigit(*a) && isdigit(*b)) ? *a - *b : 0; + magdiff = 0; + while (isdigit(*a)) {magdiff++; a++;} + while (isdigit(*b)) {magdiff--; b++;} + if (ret); + else if (magdiff) ret = magdiff; + else if (diff) ret = diff; + else if (zdiff) ret = zdiff; + } else if (*a == *b) { + if (!*a) return ret; + a++; b++; + } else + return (*a-*b); + } +} |
