I noticed there is an issue in openrsync when a port is specified in the
rsync:// URL, the port number ends up becoming part of the path:
$ openrsync -r rsync://rsync.roa.tohunet.com:3873/repo/ /tmp/r
rsync: [sender] change_dir "/3873/repo" (in repo) failed: No such file or
directory (2)
The below changeset seems to improve the situation, but might not be the
best way to fix it. I found fargs_parse() a bit hard to understand.
OK? Suggestions?
Kind regards,
Job
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/rsync/main.c,v
retrieving revision 1.65
diff -u -p -r1.65 main.c
--- main.c 2 Aug 2022 20:01:12 -0000 1.65
+++ main.c 12 Feb 2023 21:06:00 -0000
@@ -233,8 +233,12 @@ fargs_parse(size_t argc, char *argv[], s
strncasecmp(cp, "rsync://", 8) == 0) {
/* rsync://path */
cp += 8;
- if ((ccp = strchr(cp, ':'))) /* skip :port */
+ /* skip :port */
+ if ((ccp = strchr(cp, ':')) != NULL) {
*ccp = '\0';
+ while (cp[len] != '/' && len < j)
+ len++;
+ }
if (strncmp(cp, f->host, len) ||
(cp[len] != '/' && cp[len] != '\0'))
errx(ERR_SYNTAX, "different remote host: %s",