popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
--- old/acls.c
+++ new/acls.c
-@@ -0,0 +1,1310 @@
+@@ -0,0 +1,1308 @@
+/*
+ * Handle passing Access Control Lists between systems.
+ *
+void receive_acl(struct file_struct *file, int f)
+{
+ SMB_ACL_TYPE_T type;
-+ char *fname;
+
+ if (S_ISLNK(file->mode))
+ return;
+
-+ fname = f_name(file, NULL);
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ char tag;
+ if (tag == 'A' || tag == 'a') {
+ if (type != SMB_ACL_TYPE_ACCESS) {
+ rprintf(FERROR, "receive_acl %s: duplicate access ACL\n",
-+ fname);
++ f_name(file, NULL));
+ exit_cleanup(RERR_STREAMIO);
+ }
+ } else if (tag == 'D' || tag == 'd') {
+ if (type == SMB_ACL_TYPE_ACCESS) {
+ rprintf(FERROR, "receive_acl %s: expecting access ACL; got default\n",
-+ fname);
++ f_name(file, NULL));
+ exit_cleanup(RERR_STREAMIO);
+ }
+ } else {
+ rprintf(FERROR, "receive_acl %s: unknown ACL type tag: %c\n",
-+ fname, tag);
++ f_name(file, NULL), tag);
+ exit_cleanup(RERR_STREAMIO);
+ }
+ if (tag == 'A' || tag == 'D') {
+ rsync_acl_list *racl_list = rsync_acl_lists(type);
+ if ((size_t) index >= racl_list->count) {
+ rprintf(FERROR, "receive_acl %s: %s ACL index %d out of range\n",
-+ fname,
++ f_name(file, NULL),
+ str_acl_type(type),
+ index);
+ exit_cleanup(RERR_STREAMIO);
{"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 },
{"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
{"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
-@@ -1068,6 +1080,24 @@ int parse_arguments(int *argc, const cha
+@@ -1070,6 +1082,24 @@ int parse_arguments(int *argc, const cha
usage(FINFO);
exit_cleanup(0);
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -1510,6 +1540,10 @@ void server_options(char **args,int *arg
+@@ -1504,6 +1534,10 @@ void server_options(char **args,int *arg
if (preserve_hard_links)
argstr[x++] = 'H';