X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fbackupfile.c;h=2ef0f0b48d154bcaf0933327d7af8a4237a1e808;hb=c48e3b6bc3bd5b075e45075c141f1b2b84b02b53;hp=c6d7914a672657d7aefcf4c3cdf63be08b709752;hpb=d87c39464604e74f580c7fae835be31a4c125c36;p=gnulib.git diff --git a/lib/backupfile.c b/lib/backupfile.c index c6d7914a6..2ef0f0b48 100644 --- a/lib/backupfile.c +++ b/lib/backupfile.c @@ -15,40 +15,52 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* David MacKenzie . +/* David MacKenzie . Some algorithms adapted from GNU Emacs. */ +#ifdef HAVE_CONFIG_H +#if defined (CONFIG_BROKETS) +/* We use instead of "config.h" so that a compilation + using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h + (which it would do because it found this file in $srcdir). */ +#include +#else +#include "config.h" +#endif +#endif + #include #include #include #include "backupfile.h" -#if defined(USG) || defined(STDC_HEADERS) +#if defined(STDC_HEADERS) || defined(HAVE_STRING_H) #include +#ifndef index #define index strchr +#endif +#ifndef rindex #define rindex strrchr +#endif #else #include #endif #ifdef DIRENT #include -#ifdef direct -#undef direct -#endif -#define direct dirent #define NLENGTH(direct) (strlen((direct)->d_name)) -#else /* !DIRENT */ +#else /* not DIRENT */ +#define dirent direct #define NLENGTH(direct) ((direct)->d_namlen) -#ifdef USG #ifdef SYSNDIR #include -#else /* !SYSNDIR */ -#include -#endif /* !SYSNDIR */ -#else /* !USG */ +#endif /* SYSNDIR */ +#ifdef SYSDIR #include -#endif /* !USG */ -#endif /* !DIRENT */ +#endif /* SYSDIR */ +#ifdef NDIR +#include +#endif /* NDIR */ +#endif /* DIRENT */ #ifdef VOID_CLOSEDIR /* Fake a return value. */ @@ -63,12 +75,14 @@ char *malloc (); #endif -#ifndef isascii -#define ISDIGIT(c) (isdigit ((unsigned char) (c))) -#else -#define ISDIGIT(c) (isascii (c) && isdigit (c)) +#if !defined (isascii) || defined (STDC_HEADERS) +#undef isascii +#define isascii(c) 1 #endif +#define ISDIGIT(c) (isascii ((unsigned char ) c) \ + && isdigit ((unsigned char) (c))) + #if defined (HAVE_UNISTD_H) #include #endif @@ -138,15 +152,15 @@ max_backup_version (file, dir) char *file, *dir; { DIR *dirp; - struct direct *dp; + struct dirent *dp; int highest_version; int this_version; int file_name_length; - + dirp = opendir (dir); if (!dirp) return 0; - + highest_version = 0; file_name_length = strlen (file); @@ -154,7 +168,7 @@ max_backup_version (file, dir) { if (!REAL_DIR_ENTRY (dp) || NLENGTH (dp) <= file_name_length) continue; - + this_version = version_number (file, dp->d_name, file_name_length); if (this_version > highest_version) highest_version = this_version; @@ -193,7 +207,7 @@ version_number (base, backup, base_length) { int version; char *p; - + version = 0; if (!strncmp (base, backup, base_length) && ISDIGIT (backup[base_length])) { @@ -213,7 +227,7 @@ concat (str1, str2) char *str1, *str2; { char *newstr; - char str1_length = strlen (str1); + int str1_length = strlen (str1); newstr = malloc (str1_length + strlen (str2) + 1); if (newstr == 0)