- ret = local_child(argc, args, f_in, f_out, child_main);
- } else
- ret = piped_child(args,f_in,f_out);
+ ret = local_child(argc, args, f_in_p, f_out_p, child_main);
+ } else {
+ if (protect_args) {
+ char *save_opts1, *save_opts2;
+ for (i = 0; strcmp(args[i], "--server") != 0; i++) {}
+ save_opts1 = args[i+1];
+ save_opts2 = args[i+2];
+ args[i+1] = "-s";
+ args[i+2] = NULL;
+ ret = piped_child(args, f_in_p, f_out_p);
+ args[i] = args[i-1]; /* move command name over --server */
+ args[i+1] = save_opts1;
+ args[i+2] = save_opts2;
+ while (args[i]) {
+ write_sbuf(*f_out_p, args[i++]);
+ write_byte(*f_out_p, 0);
+ }
+ write_byte(*f_out_p, 0);
+ } else
+ ret = piped_child(args, f_in_p, f_out_p);
+ }