Skip to content

Commit a27e07d

Browse files
committed
mirror: prepend ./ to rm and chmod arguments to avoid URL recognition (fix #452)
1 parent 36d848b commit a27e07d

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

Diff for: src/MirrorJob.cc

+9-15
Original file line numberDiff line numberDiff line change
@@ -1164,35 +1164,29 @@ int MirrorJob::Do()
11641164
}
11651165
continue;
11661166
}
1167+
bool use_rmdir = (file->TypeIs(file->DIRECTORY)
1168+
&& recursion_mode==RECURSION_NEVER);
11671169
if(script)
11681170
{
1169-
ArgV args("rm");
1170-
if(file->TypeIs(file->DIRECTORY))
1171-
{
1172-
if(recursion_mode==RECURSION_NEVER)
1173-
args.setarg(0,"rmdir");
1174-
else
1175-
args.Append("-r");
1176-
}
1171+
ArgV args(use_rmdir?"rmdir":"rm");
1172+
if(file->TypeIs(file->DIRECTORY) && !use_rmdir)
1173+
args.Append("-r");
11771174
args.Append(target_session->GetFileURL(file->name));
11781175
xstring_ca cmd(args.CombineQuoted());
11791176
fprintf(script,"%s\n",cmd.get());
11801177
}
11811178
if(!script_only)
11821179
{
1183-
ArgV *args=new ArgV("rm");
1184-
args->Append(file->name);
1180+
ArgV *args=new ArgV(use_rmdir?"rmdir":"rm");
1181+
args->Append(dir_file(".",file->name));
11851182
args->seek(1);
11861183
rmJob *j=new rmJob(target_session->Clone(),args);
11871184
args->CombineTo(j->cmdline);
11881185
JobStarted(j);
11891186
if(file->TypeIs(file->DIRECTORY))
11901187
{
11911188
if(recursion_mode==RECURSION_NEVER)
1192-
{
1193-
args->setarg(0,"rmdir");
11941189
j->Rmdir();
1195-
}
11961190
else
11971191
j->Recurse();
11981192
}
@@ -1258,7 +1252,7 @@ int MirrorJob::Do()
12581252
if(!script_only)
12591253
{
12601254
ArgV *a=new ArgV("chmod");
1261-
a->Append(file->name);
1255+
a->Append(dir_file(".",file->name));
12621256
a->seek(1);
12631257
ChmodJob *cj=new ChmodJob(target_session->Clone(),
12641258
file->mode&~mode_mask,a);
@@ -1380,7 +1374,7 @@ int MirrorJob::Do()
13801374
if(!script_only)
13811375
{
13821376
ArgV *args=new ArgV("rm");
1383-
args->Append(file->name);
1377+
args->Append(dir_file(".",file->name));
13841378
args->seek(1);
13851379
rmJob *j=new rmJob(source_session->Clone(),args);
13861380
args->CombineTo(j->cmdline);

0 commit comments

Comments
 (0)