/* These flags are only used during the flist transfer. */
-#define XMIT_TOP_DIR (1<<0)
+#define XMIT_DEL_START (1<<0)
#define XMIT_SAME_MODE (1<<1)
#define XMIT_EXTENDED_FLAGS (1<<2)
#define XMIT_SAME_RDEV_pre28 XMIT_EXTENDED_FLAGS /* Only in protocols < 28 */
/* These flags are used in the live flist data. */
-#define FLAG_TOP_DIR (1<<0)
+#define FLAG_DEL_START (1<<0)
#define FLAG_HLINK_EOL (1<<1) /* generator only */
#define FLAG_MOUNT_POINT (1<<2) /* sender only */
#define MPLEX_BASE 7
-#define NO_EXCLUDES 0
-#define SERVER_EXCLUDES 1
-#define ALL_EXCLUDES 2
+#define NO_FILTERS 0
+#define SERVER_FILTERS 1
+#define ALL_FILTERS 2
#define XFLG_FATAL_ERRORS (1<<0)
#define XFLG_DEF_INCLUDE (1<<1)
-#define XFLG_WORDS_ONLY (1<<2)
+#define XFLG_DEF_EXCLUDE (1<<2)
#define XFLG_WORD_SPLIT (1<<3)
#define XFLG_DIRECTORY (1<<4)
+#define XFLG_NO_PREFIXES (1<<5)
+#define XFLG_ABS_PATH (1<<6)
#define PERMS_REPORT (1<<0)
#define PERMS_SKIP_MTIME (1<<1)
#define FNAMECMP_PARTIAL_DIR 0x81
#define FNAMECMP_BACKUP 0x82
+/* For calling delete_file() */
+#define DEL_DIR (1<<0)
+#define DEL_NO_RECURSE (1<<1)
+#define DEL_FORCE_RECURSE (1<<2) /* recurse even w/o --force */
+#define DEL_TERSE (1<<3)
+
/* Log-message categories. FLOG is only used on the daemon side to
* output messages to the log file. */
#define INT64_IS_OFF_T
#endif
-#if (SIZEOF_LONG == 8)
-#define uint64 unsigned long
-#elif (SIZEOF_INT == 8)
-#define uint64 unsigned int
-#elif HAVE_LONGLONG
-#define uint64 unsigned long long
-#else
-/* As long as it gets... */
-#define uint64 unsigned off_t
-#endif
-
/* Starting from protocol version 26, we always use 64-bit
* ino_t and dev_t internally, even if this platform does not
* allow files to have 64-bit inums. That's because the
*/
struct idev {
- uint64 inode;
- uint64 dev;
+ int64 inode;
+ int64 dev;
};
#ifndef MIN
#define MATCHFLG_INCLUDE (1<<4) /* this is an include, not an exclude */
#define MATCHFLG_DIRECTORY (1<<5) /* this matches only directories */
#define MATCHFLG_CLEAR_LIST (1<<6) /* this item is the "!" token */
-struct exclude_struct {
- struct exclude_struct *next;
+#define MATCHFLG_WORD_SPLIT (1<<7) /* split rules on whitespace */
+#define MATCHFLG_NO_INHERIT (1<<8) /* don't inherit these rules */
+#define MATCHFLG_NO_PREFIXES (1<<9) /* parse no prefixes from patterns */
+#define MATCHFLG_MERGE_FILE (1<<10)/* specifies a file to merge */
+#define MATCHFLG_PERDIR_MERGE (1<<11)/* merge-file is searched per-dir */
+#define MATCHFLG_EXCLUDE_SELF (1<<12)/* merge-file name should be excluded */
+#define MATCHFLG_FINISH_SETUP (1<<13)/* per-dir merge file needs setup */
+struct filter_struct {
+ struct filter_struct *next;
char *pattern;
unsigned int match_flags;
- int slash_cnt;
+ union {
+ int slash_cnt;
+ struct filter_list_struct *mergelist;
+ } u;
};
-struct exclude_list_struct {
- struct exclude_struct *head;
- struct exclude_struct *tail;
+struct filter_list_struct {
+ struct filter_struct *head;
+ struct filter_struct *tail;
char *debug_type;
};