Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The last MSG_DONE from the receiver to the generator is now followed
[rsync/rsync.git]
/
rsync.h
diff --git
a/rsync.h
b/rsync.h
index
3245565
..
ac23b09
100644
(file)
--- a/
rsync.h
+++ b/
rsync.h
@@
-55,11
+55,14
@@
#define XMIT_SAME_DEV_pre30 (1<<10) /* protocols < 30 */
#define XMIT_HLINK_FIRST (1<<10) /* protocols >= 30 */
#define XMIT_RDEV_MINOR_IS_SMALL (1<<11)
#define XMIT_SAME_DEV_pre30 (1<<10) /* protocols < 30 */
#define XMIT_HLINK_FIRST (1<<10) /* protocols >= 30 */
#define XMIT_RDEV_MINOR_IS_SMALL (1<<11)
+#define XMIT_USER_NAME_FOLLOWS (1<<12) /* protocols >= 30 */
+#define XMIT_GROUP_NAME_FOLLOWS (1<<13) /* protocols >= 30 */
/* These flags are used in the live flist data. */
#define FLAG_TOP_DIR (1<<0) /* sender/receiver/generator */
/* These flags are used in the live flist data. */
#define FLAG_TOP_DIR (1<<0) /* sender/receiver/generator */
-#define FLAG_SENT (1<<1) /* sender/generator */
+#define FLAG_FILE_SENT (1<<1) /* sender/receiver/generator */
+#define FLAG_DIR_CHANGED (1<<1) /* generator */
#define FLAG_XFER_DIR (1<<2) /* sender/receiver/generator */
#define FLAG_MOUNT_DIR (1<<3) /* sender/generator */
#define FLAG_MISSING_DIR (1<<4) /* generator */
#define FLAG_XFER_DIR (1<<2) /* sender/receiver/generator */
#define FLAG_MOUNT_DIR (1<<3) /* sender/generator */
#define FLAG_MISSING_DIR (1<<4) /* generator */
@@
-69,6
+72,10
@@
#define FLAG_HLINK_DONE (1<<8) /* receiver/generator */
#define FLAG_LENGTH64 (1<<9) /* sender/receiver/generator */
#define FLAG_HLINK_DONE (1<<8) /* receiver/generator */
#define FLAG_LENGTH64 (1<<9) /* sender/receiver/generator */
+/* These flags are passed to functions but not stored. */
+
+#define FLAG_DIVERT_DIRS (1<<16)/* sender */
+
#define BITS_SET(val,bits) (((val) & (bits)) == (bits))
#define BITS_SETnUNSET(val,onbits,offbits) (((val) & ((onbits)|(offbits))) == (onbits))
#define BITS_EQUAL(b1,b2,mask) (((unsigned)(b1) & (unsigned)(mask)) \
#define BITS_SET(val,bits) (((val) & (bits)) == (bits))
#define BITS_SETnUNSET(val,onbits,offbits) (((val) & ((onbits)|(offbits))) == (onbits))
#define BITS_EQUAL(b1,b2,mask) (((unsigned)(b1) & (unsigned)(mask)) \
@@
-179,12
+186,19
@@
enum msgcode {
MSG_ERROR=FERROR, MSG_INFO=FINFO, /* remote logging */
MSG_LOG=FLOG, MSG_CLIENT=FCLIENT, MSG_SOCKERR=FSOCKERR, /* sibling logging */
MSG_REDO=9, /* reprocess indicated flist index */
MSG_ERROR=FERROR, MSG_INFO=FINFO, /* remote logging */
MSG_LOG=FLOG, MSG_CLIENT=FCLIENT, MSG_SOCKERR=FSOCKERR, /* sibling logging */
MSG_REDO=9, /* reprocess indicated flist index */
+ MSG_FLIST=20, /* extra file list over sibling socket */
+ MSG_FLIST_EOF=21,/* we've transmitted all the file lists */
+ MSG_IO_ERROR=22,/* the sending side had an I/O error */
+ MSG_NOOP=42, /* a do-nothing message */
MSG_SUCCESS=100,/* successfully updated indicated flist index */
MSG_DELETED=101,/* successfully deleted a file on receiving side */
MSG_SUCCESS=100,/* successfully updated indicated flist index */
MSG_DELETED=101,/* successfully deleted a file on receiving side */
+ MSG_NO_SEND=102,/* sender failed to open a file we wanted */
MSG_DONE=86 /* current phase is done */
};
#define NDX_DONE -1
MSG_DONE=86 /* current phase is done */
};
#define NDX_DONE -1
+#define NDX_FLIST_EOF -2
+#define NDX_FLIST_OFFSET -101
#include "errcode.h"
#include "errcode.h"
@@
-581,12
+595,14
@@
extern int preserve_gid;
#define F_DEPTH(f) REQ_EXTRA(f, 1)->num
/* When the associated option is on, all entries will have these present: */
#define F_DEPTH(f) REQ_EXTRA(f, 1)->num
/* When the associated option is on, all entries will have these present: */
-#define F_
UID
(f) REQ_EXTRA(f, preserve_uid)->unum
-#define F_G
ID
(f) REQ_EXTRA(f, preserve_gid)->unum
+#define F_
OWNER
(f) REQ_EXTRA(f, preserve_uid)->unum
+#define F_G
ROUP
(f) REQ_EXTRA(f, preserve_gid)->unum
/* These items are per-entry optional and mutally exclusive: */
#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
#define F_HL_PREV(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
/* These items are per-entry optional and mutally exclusive: */
#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
#define F_HL_PREV(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
+#define F_DIRDEV_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) + 2 - 1)->unum)
+#define F_DIRNODE_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) + 3 - 1)->num)
/* This optional item might follow an F_HL_*() item.
* (Note: a device doesn't need to check LEN64_BUMP(f).) */
/* This optional item might follow an F_HL_*() item.
* (Note: a device doesn't need to check LEN64_BUMP(f).) */
@@
-599,12
+615,20
@@
extern int preserve_gid;
/* Some utility defines: */
#define F_IS_ACTIVE(f) (f)->basename[0]
#define F_IS_HLINKED(f) ((f)->flags & FLAG_HLINKED)
/* Some utility defines: */
#define F_IS_ACTIVE(f) (f)->basename[0]
#define F_IS_HLINKED(f) ((f)->flags & FLAG_HLINKED)
+
#define F_HLINK_NOT_FIRST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_FIRST)
#define F_HLINK_NOT_LAST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_LAST)
#define F_HLINK_NOT_FIRST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_FIRST)
#define F_HLINK_NOT_LAST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_LAST)
+#define F_UID(f) ((uid_t)F_OWNER(f))
+#define F_GID(f) ((gid_t)F_GROUP(f))
+
#define DEV_MAJOR(a) (a)[0]
#define DEV_MINOR(a) (a)[1]
#define DEV_MAJOR(a) (a)[0]
#define DEV_MINOR(a) (a)[1]
+#define DIR_PARENT(a) (a)[0]
+#define DIR_FIRST_CHILD(a) (a)[1]
+#define DIR_NEXT_SIBLING(a) (a)[2]
+
/*
* Start the flist array at FLIST_START entries and grow it
* by doubling until FLIST_LINEAR then grow by FLIST_LINEAR
/*
* Start the flist array at FLIST_START entries and grow it
* by doubling until FLIST_LINEAR then grow by FLIST_LINEAR
@@
-624,11
+648,17
@@
extern int preserve_gid;
#define FILE_EXTENT (256 * 1024)
#define HLINK_EXTENT (128 * 1024)
#define FILE_EXTENT (256 * 1024)
#define HLINK_EXTENT (128 * 1024)
+#define FLIST_TEMP (1<<1)
+
struct file_list {
struct file_list {
+ struct file_list *next, *prev;
struct file_struct **files;
alloc_pool_t file_pool;
int count, malloced;
int low, high; /* 0-relative index values excluding empties */
struct file_struct **files;
alloc_pool_t file_pool;
int count, malloced;
int low, high; /* 0-relative index values excluding empties */
+ int ndx_start; /* the start offset when incremental */
+ int parent_ndx; /* dir_flist index of parent directory */
+ int in_progress, to_redo;
};
#define SUMFLG_SAME_OFFSET (1<<0)
};
#define SUMFLG_SAME_OFFSET (1<<0)