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
Mention how --list-only w/o -r now abandons an old kluge.
[rsync/rsync.git]
/
options.c
diff --git
a/options.c
b/options.c
index
5ed404d
..
61d2a90
100644
(file)
--- a/
options.c
+++ b/
options.c
@@
-20,6
+20,7
@@
*/
#include "rsync.h"
*/
#include "rsync.h"
+#include "ifuncs.h"
#include <popt.h>
#include "zlib/zlib.h"
#include <popt.h>
#include "zlib/zlib.h"
@@
-1002,15
+1003,17
@@
int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
if (sanitize_paths)
arg = sanitize_path(NULL, arg, NULL, 0, NULL);
if (server_filter_list.head) {
if (sanitize_paths)
arg = sanitize_path(NULL, arg, NULL, 0, NULL);
if (server_filter_list.head) {
+ int rej;
char *cp = strdup(arg);
if (!cp)
out_of_memory("parse_arguments");
if (!*cp)
goto options_rejected;
clean_fname(cp, 1);
char *cp = strdup(arg);
if (!cp)
out_of_memory("parse_arguments");
if (!*cp)
goto options_rejected;
clean_fname(cp, 1);
- if (check_filter(&server_filter_list, cp, 0) < 0)
- goto options_rejected;
+ rej = check_filter(&server_filter_list, cp, 0) < 0;
free(cp);
free(cp);
+ if (rej)
+ goto options_rejected;
}
parse_filter_file(&filter_list, arg,
opt == OPT_INCLUDE_FROM ? MATCHFLG_INCLUDE : 0,
}
parse_filter_file(&filter_list, arg,
opt == OPT_INCLUDE_FROM ? MATCHFLG_INCLUDE : 0,
@@
-1197,9
+1200,9
@@
int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
break;
#else
/* FIXME: this should probably be ignored with a
break;
#else
/* FIXME: this should probably be ignored with a
- * warning and then countermeasures taken to
- * restrict group and other access in the presence
- * of any more restrictive ACLs, but this is safe
+ * warning and then countermeasures taken to
+ * restrict group and other access in the presence
+ * of any more restrictive ACLs, but this is safe
* for now */
snprintf(err_buf,sizeof(err_buf),
"ACLs are not supported on this %s\n",
* for now */
snprintf(err_buf,sizeof(err_buf),
"ACLs are not supported on this %s\n",
@@
-1443,10
+1446,10
@@
int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
snprintf(err_buf, sizeof err_buf,
"--suffix cannot be a null string without --backup-dir\n");
return 0;
snprintf(err_buf, sizeof err_buf,
"--suffix cannot be a null string without --backup-dir\n");
return 0;
- } else if (make_backups && delete_mode && !delete_excluded && !am_server) {
- snprintf(backup_dir_buf, sizeof backup_dir_buf,
+ } else if (make_backups && delete_mode && !delete_excluded && !am_server) {
+ snprintf(backup_dir_buf, sizeof backup_dir_buf,
"P *%s", backup_suffix);
"P *%s", backup_suffix);
- parse_rule(&filter_list, backup_dir_buf, 0, 0);
+ parse_rule(&filter_list, backup_dir_buf, 0, 0);
}
if (make_backups && !backup_dir) {
}
if (make_backups && !backup_dir) {
@@
-1679,7
+1682,8
@@
void server_options(char **args, int *argc_p)
argstr[x++] = 'n';
if (preserve_links)
argstr[x++] = 'l';
argstr[x++] = 'n';
if (preserve_links)
argstr[x++] = 'l';
- if (xfer_dirs > (recurse || !delete_mode || !am_sender ? 1 : 0))
+ if ((list_only && !recurse) || xfer_dirs > 1
+ || (xfer_dirs && !recurse && delete_mode && am_sender))
argstr[x++] = 'd';
if (am_sender) {
if (keep_dirlinks)
argstr[x++] = 'd';
if (am_sender) {
if (keep_dirlinks)
@@
-1749,12
+1753,6
@@
void server_options(char **args, int *argc_p)
if (do_compression)
argstr[x++] = 'z';
if (do_compression)
argstr[x++] = 'z';
- /* This is a complete hack - blame Rusty. FIXME!
- * This hack is only needed for older rsync versions that
- * don't understand the --list-only option. */
- if (list_only == 1 && !recurse)
- argstr[x++] = 'r';
-
#if SUBPROTOCOL_VERSION != 0
/* If we're speaking a pre-release version of a protocol, we tell
* the server about this by (ab)using the -e option. */
#if SUBPROTOCOL_VERSION != 0
/* If we're speaking a pre-release version of a protocol, we tell
* the server about this by (ab)using the -e option. */
@@
-1977,7
+1975,8
@@
void server_options(char **args, int *argc_p)
if (!relative_paths)
args[ac++] = "--no-relative";
}
if (!relative_paths)
args[ac++] = "--no-relative";
}
- if (relative_paths && !implied_dirs && !am_sender)
+ /* It's OK that this checks the upper-bound of the protocol_version. */
+ if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
args[ac++] = "--no-implied-dirs";
if (fuzzy_basis && am_sender)
args[ac++] = "--no-implied-dirs";
if (fuzzy_basis && am_sender)