X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e95538ca2c8fdecd66a112635aa30077419af685..f8057304930f9c6dcb7fca57f3c25cc2c09b3c1d:/rsync.h diff --git a/rsync.h b/rsync.h index 0327f2de..6dc5a9c5 100644 --- a/rsync.h +++ b/rsync.h @@ -113,7 +113,7 @@ #define XFLG_WORD_SPLIT (1<<3) #define XFLG_DIRECTORY (1<<4) #define XFLG_NO_PREFIXES (1<<5) -#define XFLG_ABS_PATH (1<<6) +#define XFLG_ANCHORED2ABS (1<<6) #define PERMS_REPORT (1<<0) #define PERMS_SKIP_MTIME (1<<1) @@ -181,13 +181,6 @@ enum msgcode { #if HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif #if HAVE_UNISTD_H # include #endif @@ -317,30 +310,43 @@ enum msgcode { #define schar char #endif +/* Find a variable that is either exactly 32-bits or longer. + * If some code depends on 32-bit truncation, it will need to + * take special action in a "#if SIZEOF_INT32 > 4" section. */ #ifndef int32 -#if (SIZEOF_INT == 4) -#define int32 int -#elif (SIZEOF_LONG == 4) -#define int32 long -#elif (SIZEOF_SHORT == 4) -#define int32 short +#if SIZEOF_INT == 4 +# define int32 int +# define SIZEOF_INT32 4 +#elif SIZEOF_LONG == 4 +# define int32 long +# define SIZEOF_INT32 4 +#elif SIZEOF_SHORT == 4 +# define int32 short +# define SIZEOF_INT32 4 +#elif SIZEOF_INT > 4 +# define int32 int +# define SIZEOF_INT32 SIZEOF_INT +#elif SIZEOF_LONG > 4 +# define int32 long +# define SIZEOF_INT32 SIZEOF_LONG #else -/* I hope this works */ -#define int32 int -#define LARGE_INT32 +# error Could not find a 32-bit integer variable #endif +#else +# define SIZEOF_INT32 4 #endif #ifndef uint32 #define uint32 unsigned int32 #endif -#if SIZEOF_OFF64_T -#define OFF_T off64_t -#define STRUCT_STAT struct stat64 -#else +#if SIZEOF_OFF_T == 8 || !SIZEOF_OFF64_T || !HAVE_STRUCT_STAT64 #define OFF_T off_t #define STRUCT_STAT struct stat +#else +#define OFF_T off64_t +#define STRUCT_STAT struct stat64 +#define USE_STAT64_FUNCS 1 #endif /* CAVEAT: on some systems, int64 will really be a 32-bit integer IFF @@ -467,9 +473,12 @@ struct file_struct { char *link; /* Points to symlink string, if a symlink */ } u; OFF_T length; - char *basename; - char *dirname; - char *basedir; + char *basename; /* The current item's name (AKA filename) */ + char *dirname; /* The directory info inside the transfer */ + union { + char *root; /* Sender-side dir info outside transfer */ + int depth; /* Receiver-side directory depth info */ + } dir; union { struct idev *idev; struct hlink *links; @@ -509,6 +518,7 @@ struct file_list { alloc_pool_t hlink_pool; int count; int malloced; + int low, high; }; #define SUMFLG_SAME_OFFSET (1<<0) @@ -588,15 +598,6 @@ struct stats { }; -/* we need this function because of the silly way in which duplicate - entries are handled in the file lists - we can't change this - without breaking existing versions */ -static inline int flist_up(struct file_list *flist, int i) -{ - while (!flist->files[i]->basename) i++; - return i; -} - #include "byteorder.h" #include "lib/mdfour.h" #include "lib/wildmatch.h"