🌐 AI搜索 & 代理 主页
blob: 7958eb1e0b7a927019460e06d7a01622eddf81df [file] [log] [blame]
Josef Weidendorferb1bf95b2005-07-31 19:17:431#ifndef RUN_COMMAND_H
2#define RUN_COMMAND_H
3
Josef Weidendorferb1bf95b2005-07-31 19:17:434enum {
5 ERR_RUN_COMMAND_FORK = 10000,
6 ERR_RUN_COMMAND_EXEC,
Shawn O. Pearce4919bf02007-03-10 08:28:087 ERR_RUN_COMMAND_PIPE,
Josef Weidendorferb1bf95b2005-07-31 19:17:438 ERR_RUN_COMMAND_WAITPID,
9 ERR_RUN_COMMAND_WAITPID_WRONG_PID,
10 ERR_RUN_COMMAND_WAITPID_SIGNAL,
11 ERR_RUN_COMMAND_WAITPID_NOEXIT,
12};
13
Shawn O. Pearcef1000892007-03-10 08:28:0014struct child_process {
15 const char **argv;
Shawn O. Pearceebcb5d12007-03-10 08:28:0516 pid_t pid;
Shawn O. Pearce4919bf02007-03-10 08:28:0817 int in;
Shawn O. Pearcef4bba252007-03-12 18:37:4518 int out;
Alex Riesen1568fea2007-05-22 21:48:2319 const char *dir;
Alex Riesenee493142007-05-22 21:48:4720 const char *const *env;
Shawn O. Pearce4919bf02007-03-10 08:28:0821 unsigned close_in:1;
Shawn O. Pearcef4bba252007-03-12 18:37:4522 unsigned close_out:1;
Shawn O. Pearcef1000892007-03-10 08:28:0023 unsigned no_stdin:1;
Shawn O. Pearcee4507ae2007-03-12 18:37:5524 unsigned no_stdout:1;
Shawn O. Pearcef1000892007-03-10 08:28:0025 unsigned git_cmd:1; /* if this is to be git sub-command */
26 unsigned stdout_to_stderr:1;
27};
28
Shawn O. Pearceebcb5d12007-03-10 08:28:0529int start_command(struct child_process *);
30int finish_command(struct child_process *);
Shawn O. Pearcef1000892007-03-10 08:28:0031int run_command(struct child_process *);
32
Shawn O. Pearce95d3c4f2006-12-31 02:55:2233#define RUN_COMMAND_NO_STDIN 1
Michal Ostrowski77cb17e2006-01-11 02:12:1734#define RUN_GIT_CMD 2 /*If this is to be git sub-command */
Shawn O. Pearcecd83c742006-12-31 02:55:1935#define RUN_COMMAND_STDOUT_TO_STDERR 4
Shawn O. Pearce9b0b5092006-12-31 02:55:1536int run_command_v_opt(const char **argv, int opt);
Alex Riesen1568fea2007-05-22 21:48:2337int run_command_v_opt_cd(const char **argv, int opt, const char *dir);
Alex Riesen3427b372007-05-23 20:21:3938
39/*
40 * env (the environment) is to be formatted like environ: "VAR=VALUE".
41 * To unset an environment variable use just "VAR".
42 */
Alex Riesenee493142007-05-22 21:48:4743int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const char *const *env);
Josef Weidendorferb1bf95b2005-07-31 19:17:4344
45#endif