Always use lutimes() if it is available.
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index baf2f02..cf2a2dd 100644 (file)
--- a/rsync.h
+++ b/rsync.h
 #define OLD_PROTOCOL_VERSION 25
 #define MAX_PROTOCOL_VERSION 40
 
-#define FILECNT_LOOKAHEAD 1000
+#define MIN_FILECNT_LOOKAHEAD 1000
+#define MAX_FILECNT_LOOKAHEAD 10000
 
 #define RSYNC_PORT 873
 
@@ -358,6 +359,10 @@ enum delret {
 #include <utime.h>
 #endif
 
+#ifdef HAVE_LUTIMES
+#define CAN_SET_SYMLINK_TIMES 1
+#endif
+
 #ifdef HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
@@ -819,12 +824,9 @@ struct map_struct {
 #define FILTRULE_CLEAR_LIST    (1<<18)/* this item is the "!" token */
 #define FILTRULE_PERISHABLE    (1<<19)/* perishable if parent dir goes away */
 
-#define FILTRULES_FROM_CONTAINER (FILTRULE_ABS_PATH | FILTRULE_INCLUDE \
-                               | FILTRULE_DIRECTORY | FILTRULE_SENDER_SIDE \
-                               | FILTRULE_NEGATE | FILTRULE_RECEIVER_SIDE \
-                               | FILTRULE_PERISHABLE)
+#define FILTRULES_SIDES (FILTRULE_SENDER_SIDE | FILTRULE_RECEIVER_SIDE)
 
-struct filter_struct {
+typedef struct filter_struct {
        struct filter_struct *next;
        char *pattern;
        uint32 rflags;
@@ -832,14 +834,14 @@ struct filter_struct {
                int slash_cnt;
                struct filter_list_struct *mergelist;
        } u;
-};
+} filter_rule;
 
-struct filter_list_struct {
-       struct filter_struct *head;
-       struct filter_struct *tail;
-       struct filter_struct *parent_dirscan_head;
+typedef struct filter_list_struct {
+       filter_rule *head;
+       filter_rule *tail;
+       filter_rule *parent_dirscan_head;
        char *debug_type;
-};
+} filter_rule_list;
 
 struct stats {
        int64 total_size;
@@ -983,6 +985,9 @@ extern int errno;
 
 #ifdef HAVE_READLINK
 #define SUPPORT_LINKS 1
+#ifndef NO_SYMLINK_XATTRS
+#define do_readlink(path, buf, bufsiz) readlink(path, buf, bufsiz)
+#endif
 #endif
 #ifdef HAVE_LINK
 #define SUPPORT_HARD_LINKS 1