X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9ec3828b031df2ca472efe61e950673949bec3ce..6d4e718f5fecd4e02e5958f477922e9bec8a4559:/rsync.h diff --git a/rsync.h b/rsync.h index 4f33532e..b0b4bef5 100644 --- 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 - * 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 - * 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 @@ -105,6 +104,8 @@ #define OLD_PROTOCOL_VERSION 25 #define MAX_PROTOCOL_VERSION 40 +#define FILECNT_LOOKAHEAD 1000 + #define RSYNC_PORT 873 #define SPARSE_WRITE_SIZE (1024) @@ -546,6 +547,10 @@ struct idev_node { #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 { @@ -565,6 +570,7 @@ struct file_struct { 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)) @@ -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_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 +#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) @@ -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) + #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] @@ -652,7 +664,7 @@ struct file_list { 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; }; @@ -748,6 +760,17 @@ struct stats { 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" @@ -766,6 +789,16 @@ struct chmod_mode_struct; #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. */