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 ACL support has arrived! This version has a brand new protocol
[rsync/rsync.git]
/
rsync.h
diff --git
a/rsync.h
b/rsync.h
index
4f33532
..
1d2441a
100644
(file)
--- a/
rsync.h
+++ b/
rsync.h
@@
-2,12
+2,11
@@
* Copyright (C) 1996, 2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
* Copyright (C) 1996, 2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003
, 2004, 2005, 2006
Wayne Davison
+ * Copyright (C) 2003
-2007
Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-105,6
+104,8
@@
#define OLD_PROTOCOL_VERSION 25
#define MAX_PROTOCOL_VERSION 40
#define OLD_PROTOCOL_VERSION 25
#define MAX_PROTOCOL_VERSION 40
+#define FILECNT_LOOKAHEAD 1000
+
#define RSYNC_PORT 873
#define SPARSE_WRITE_SIZE (1024)
#define RSYNC_PORT 873
#define SPARSE_WRITE_SIZE (1024)
@@
-546,6
+547,10
@@
struct idev_node {
#define IN_LOOPBACKNET 127
#endif
#define IN_LOOPBACKNET 127
#endif
+#if HAVE_UNIXWARE_ACLS|HAVE_SOLARIS_ACLS|HAVE_HPUX_ACLS
+#define ACLS_NEED_MASK 1
+#endif
+
#define GID_NONE ((gid_t)-1)
union file_extras {
#define GID_NONE ((gid_t)-1)
union file_extras {
@@
-565,6
+570,7
@@
struct file_struct {
extern int file_extra_cnt;
extern int preserve_uid;
extern int preserve_gid;
extern int file_extra_cnt;
extern int preserve_uid;
extern int preserve_gid;
+extern int preserve_acls;
#define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
#define EXTRA_LEN (sizeof (union file_extras))
#define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
#define EXTRA_LEN (sizeof (union file_extras))
@@
-595,12
+601,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_GID(f) REQ_EXTRA(f, preserve_gid)->unum
+#define F_OWNER(f) REQ_EXTRA(f, preserve_uid)->unum
+#define F_GROUP(f) REQ_EXTRA(f, preserve_gid)->unum
+#define F_ACL(f) REQ_EXTRA(f, preserve_acls)->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_DEF_ACL(f) OPT_EXTRA(f, LEN64_BUMP(f))->unum
#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)
#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)
@@
-615,9
+623,13
@@
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]
@@
-652,7
+664,7
@@
struct file_list {
alloc_pool_t file_pool;
int count, malloced;
int low, high; /* 0-relative index values excluding empties */
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 ndx_start; /* the start offset
for inc_recurse mode
*/
int parent_ndx; /* dir_flist index of parent directory */
int in_progress, to_redo;
};
int parent_ndx; /* dir_flist index of parent directory */
int in_progress, to_redo;
};
@@
-748,6
+760,17
@@
struct stats {
struct chmod_mode_struct;
struct chmod_mode_struct;
+#define EMPTY_ITEM_LIST {NULL, 0, 0}
+
+typedef struct {
+ void *items;
+ size_t count;
+ size_t malloced;
+} item_list;
+
+#define EXPAND_ITEM_LIST(lp, type, incr) \
+ (type*)expand_item_list(lp, sizeof (type), #type, incr)
+
#include "byteorder.h"
#include "lib/mdfour.h"
#include "lib/wildmatch.h"
#include "byteorder.h"
#include "lib/mdfour.h"
#include "lib/wildmatch.h"
@@
-766,6
+789,16
@@
struct chmod_mode_struct;
#define NORETURN __attribute__((__noreturn__))
#endif
#define NORETURN __attribute__((__noreturn__))
#endif
+typedef struct {
+ STRUCT_STAT st;
+#ifdef SUPPORT_ACLS
+ struct rsync_acl *acc_acl; /* access ACL */
+ struct rsync_acl *def_acl; /* default ACL */
+#endif
+} statx;
+
+#define ACL_READY(sx) ((sx).acc_acl != NULL)
+
#include "proto.h"
/* We have replacement versions of these if they're missing. */
#include "proto.h"
/* We have replacement versions of these if they're missing. */
@@
-972,7
+1005,7
@@
size_t strlcat(char *d, const char *s, size_t bufsize);
#define MY_GID() getgid()
#endif
#define MY_GID() getgid()
#endif
-extern int verbose;
+extern int verbose
, protocol_version
;
#ifndef HAVE_INET_NTOP
const char *inet_ntop(int af, const void *src, char *dst, size_t size);
#ifndef HAVE_INET_NTOP
const char *inet_ntop(int af, const void *src, char *dst, size_t size);
@@
-986,6
+1019,23
@@
int inet_pton(int af, const char *src, void *dst);
const char *get_panic_action(void);
#endif
const char *get_panic_action(void);
#endif
+static inline int32
+read_abbrevint30(int f)
+{
+ if (protocol_version < 30)
+ return read_int(f);
+ return read_abbrevint(f);
+}
+
+static inline void
+write_abbrevint30(int f, int32 x)
+{
+ if (protocol_version < 30)
+ write_int(f, x);
+ else
+ write_abbrevint(f, x);
+}
+
static inline int
isDigit(const char *ptr)
{
static inline int
isDigit(const char *ptr)
{