diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-07-17 14:05:57 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-07-17 14:05:57 +0000 |
commit | ca6c93f817b453bcd8622cf66465851c15142a30 (patch) | |
tree | 74d15f75e6640203bc27bcf0253f8147dc1dc1ae /main.c | |
parent | 72914a606ec66f61678c6d077e515f08908e76a3 (diff) | |
download | rsync-ca6c93f817b453bcd8622cf66465851c15142a30.tar.gz |
check whether there is a / before a : in the rsync command line. If
there is then assume that the : is from a filename, not a host:dir
separator. This allows you to copy files with a : in them. (suggestion
from pfeifer@wait.de)
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -432,6 +432,20 @@ int client_run(int f_in, int f_out, int pid, int argc, char *argv[]) return status | status2; } +static char *find_colon(char *s) +{ + char *p, *p2; + + p = strchr(s,':'); + if (!p) return NULL; + + /* now check to see if there is a / in the string before the : - if there is then + discard the colon on the assumption that the : is part of a filename */ + p2 = strchr(s,'/'); + if (p2 && p2 < p) return NULL; + + return p; +} static int start_client(int argc, char *argv[]) { @@ -445,7 +459,7 @@ static int start_client(int argc, char *argv[]) extern int am_sender; extern char *shell_cmd; - p = strchr(argv[0],':'); + p = find_colon(argv[0]); if (p) { if (p[1] == ':') { @@ -467,7 +481,7 @@ static int start_client(int argc, char *argv[]) } else { am_sender = 1; - p = strchr(argv[argc-1],':'); + p = find_colon(argv[argc-1]); if (!p) { local_server = 1; } else if (p[1] == ':') { |