blob: ff090679a6fecd66bda4fba804a8ab6555571aa9 [file] [log] [blame]
Josef Weidendorferb1bf95b2005-07-31 21:17:43 +02001#ifndef RUN_COMMAND_H
2#define RUN_COMMAND_H
3
Josef Weidendorferb1bf95b2005-07-31 21:17:43 +02004enum {
5 ERR_RUN_COMMAND_FORK = 10000,
6 ERR_RUN_COMMAND_EXEC,
Shawn O. Pearce4919bf02007-03-10 03:28:08 -05007 ERR_RUN_COMMAND_PIPE,
Josef Weidendorferb1bf95b2005-07-31 21:17:43 +02008 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 03:28:00 -050014struct child_process {
15 const char **argv;
Shawn O. Pearceebcb5d12007-03-10 03:28:05 -050016 pid_t pid;
Shawn O. Pearce4919bf02007-03-10 03:28:08 -050017 int in;
18 unsigned close_in:1;
Shawn O. Pearcef1000892007-03-10 03:28:00 -050019 unsigned no_stdin:1;
20 unsigned git_cmd:1; /* if this is to be git sub-command */
21 unsigned stdout_to_stderr:1;
22};
23
Shawn O. Pearceebcb5d12007-03-10 03:28:05 -050024int start_command(struct child_process *);
25int finish_command(struct child_process *);
Shawn O. Pearcef1000892007-03-10 03:28:00 -050026int run_command(struct child_process *);
27
Shawn O. Pearce95d3c4f2006-12-30 21:55:22 -050028#define RUN_COMMAND_NO_STDIN 1
Michal Ostrowski77cb17e2006-01-10 21:12:17 -050029#define RUN_GIT_CMD 2 /*If this is to be git sub-command */
Shawn O. Pearcecd83c742006-12-30 21:55:19 -050030#define RUN_COMMAND_STDOUT_TO_STDERR 4
Shawn O. Pearce9b0b5092006-12-30 21:55:15 -050031int run_command_v_opt(const char **argv, int opt);
Josef Weidendorferb1bf95b2005-07-31 21:17:43 +020032
33#endif