void execbackend(const char *const *argv) { struct command cmd; char *arg; command_init(&cmd, cipaction->parg, NULL); command_add_arg(&cmd, cipaction->parg); /* * Special case: dpkg-query takes the --admindir option, and if dpkg itself * was given a different admin directory, we need to pass it along to it. */ if (strcmp(cipaction->parg, DPKGQUERY) == 0 && strcmp(admindir, ADMINDIR) != 0) { arg = m_malloc((strlen("--admindir=") + strlen(admindir) + 1)); sprintf(arg, "--admindir=%s", admindir); command_add_arg(&cmd, arg); } arg = m_malloc(2 + strlen(cipaction->olong) + 1); sprintf(arg, "--%s", cipaction->olong); command_add_arg(&cmd, arg); /* Exlicitely separate arguments from options as any user-supplied * separator got stripped by the option parser */ command_add_arg(&cmd, "--"); command_add_argl(&cmd, (const char **)argv); command_exec(&cmd); }
int execbackend(const char *const *argv) { struct command cmd; command_init(&cmd, cipaction->arg_ptr, NULL); command_add_arg(&cmd, cipaction->arg_ptr); command_add_arg(&cmd, str_fmt("--%s", cipaction->olong)); /* Exlicitely separate arguments from options as any user-supplied * separator got stripped by the option parser */ command_add_arg(&cmd, "--"); command_add_argl(&cmd, (const char **)argv); command_exec(&cmd); }