@@ -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