Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
82f0c63e
Commit
82f0c63e
authored
Dec 14, 2005
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Parse single- and double-quotes in the --rsh/-e option (and RSYNC_RSH).
parent
5d9530fe
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
6 deletions
+32
-6
main.c
main.c
+32
-6
No files found.
main.c
View file @
82f0c63e
...
...
@@ -293,10 +293,11 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char *path,
int
i
,
argc
=
0
;
char
*
args
[
MAX_ARGS
];
pid_t
ret
;
char
*
tok
,
*
dir
=
NULL
;
char
*
dir
=
NULL
;
int
dash_l_set
=
0
;
if
(
!
read_batch
&&
!
local_server
)
{
char
*
t
,
*
f
,
in_quote
=
'\0'
;
char
*
rsh_env
=
getenv
(
RSYNC_RSH_ENV
);
if
(
!
cmd
)
cmd
=
rsh_env
;
...
...
@@ -306,13 +307,39 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char *path,
if
(
!
cmd
)
goto
oom
;
for
(
tok
=
strtok
(
cmd
,
" "
);
tok
;
tok
=
strtok
(
NULL
,
" "
))
{
for
(
t
=
f
=
cmd
;
*
f
;
f
++
)
{
if
(
*
f
==
' '
)
continue
;
/* Comparison leaves rooms for server_options(). */
if
(
argc
>=
MAX_ARGS
-
MAX_SERVER_ARGS
)
{
rprintf
(
FERROR
,
"internal: args[] overflowed in do_cmd()
\n
"
);
exit_cleanup
(
RERR_SYNTAX
);
}
args
[
argc
++
]
=
tok
;
args
[
argc
++
]
=
t
;
while
(
*
f
!=
' '
||
in_quote
)
{
if
(
!*
f
)
{
if
(
in_quote
)
{
rprintf
(
FERROR
,
"Missing trailing-%c in remote-shell command.
\n
"
,
in_quote
);
exit_cleanup
(
RERR_SYNTAX
);
}
f
--
;
break
;
}
if
(
*
f
==
'\''
||
*
f
==
'"'
)
{
if
(
!
in_quote
)
{
in_quote
=
*
f
++
;
continue
;
}
if
(
*
f
==
in_quote
&&
*++
f
!=
in_quote
)
{
in_quote
=
'\0'
;
continue
;
}
}
*
t
++
=
*
f
++
;
}
*
t
++
=
'\0'
;
}
/* check to see if we've already been given '-l user' in
...
...
@@ -365,10 +392,9 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char *path,
args
[
argc
]
=
NULL
;
if
(
verbose
>
3
)
{
rprintf
(
FINFO
,
"cmd="
);
for
(
i
=
0
;
i
<
argc
;
i
++
)
rprintf
(
FINFO
,
"
%s "
,
safe_fname
(
args
[
i
]));
rprintf
(
FINFO
,
"
\n
"
);
rprintf
(
FINFO
,
"
cmd[%d]=%s "
,
i
,
safe_fname
(
args
[
i
]));
rprintf
(
FINFO
,
"
\n
"
);
}
if
(
read_batch
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment