| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 |
#ifndef SEEN_JOB_H |
|---|
| 19 |
#define SEEN_JOB_H |
|---|
| 20 |
|
|---|
| 21 |
#ifdef HAVE_FCNTL_H |
|---|
| 22 |
# include <fcntl.h> |
|---|
| 23 |
#else |
|---|
| 24 |
# include <sys/file.h> |
|---|
| 25 |
#endif |
|---|
| 26 |
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 |
#if !defined F_SETFD |
|---|
| 30 |
# define CLOSE_ON_EXEC(_d) |
|---|
| 31 |
#else |
|---|
| 32 |
# ifndef FD_CLOEXEC |
|---|
| 33 |
# define FD_CLOEXEC 1 |
|---|
| 34 |
# endif |
|---|
| 35 |
# define CLOSE_ON_EXEC(_d) (void) fcntl ((_d), F_SETFD, FD_CLOEXEC) |
|---|
| 36 |
#endif |
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 |
struct child |
|---|
| 41 |
{ |
|---|
| 42 |
struct child *next; |
|---|
| 43 |
|
|---|
| 44 |
struct file *file; |
|---|
| 45 |
|
|---|
| 46 |
char **environment; |
|---|
| 47 |
|
|---|
| 48 |
char **command_lines; |
|---|
| 49 |
unsigned int command_line; |
|---|
| 50 |
char *command_ptr; |
|---|
| 51 |
|
|---|
| 52 |
pid_t pid; |
|---|
| 53 |
#ifdef VMS |
|---|
| 54 |
int efn; |
|---|
| 55 |
int cstatus; |
|---|
| 56 |
#endif |
|---|
| 57 |
char *sh_batch_file; |
|---|
| 58 |
unsigned int remote:1; |
|---|
| 59 |
|
|---|
| 60 |
unsigned int noerror:1; |
|---|
| 61 |
|
|---|
| 62 |
unsigned int good_stdin:1; |
|---|
| 63 |
unsigned int deleted:1; |
|---|
| 64 |
unsigned int dontcare:1; |
|---|
| 65 |
}; |
|---|
| 66 |
|
|---|
| 67 |
extern struct child *children; |
|---|
| 68 |
|
|---|
| 69 |
extern void new_job PARAMS ((struct file *file)); |
|---|
| 70 |
extern void reap_children PARAMS ((int block, int err)); |
|---|
| 71 |
extern void start_waiting_jobs PARAMS ((void)); |
|---|
| 72 |
|
|---|
| 73 |
extern char **construct_command_argv PARAMS ((char *line, char **restp, struct file *file, char** batch_file)); |
|---|
| 74 |
#ifdef VMS |
|---|
| 75 |
extern int child_execute_job PARAMS ((char *argv, struct child *child)); |
|---|
| 76 |
#elif defined(__EMX__) |
|---|
| 77 |
extern int child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp)); |
|---|
| 78 |
#else |
|---|
| 79 |
extern void child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp)); |
|---|
| 80 |
#endif |
|---|
| 81 |
#ifdef _AMIGA |
|---|
| 82 |
extern void exec_command PARAMS ((char **argv)); |
|---|
| 83 |
#elif defined(__EMX__) |
|---|
| 84 |
extern int exec_command PARAMS ((char **argv, char **envp)); |
|---|
| 85 |
#else |
|---|
| 86 |
extern void exec_command PARAMS ((char **argv, char **envp)); |
|---|
| 87 |
#endif |
|---|
| 88 |
|
|---|
| 89 |
extern unsigned int job_slots_used; |
|---|
| 90 |
|
|---|
| 91 |
extern void block_sigs PARAMS ((void)); |
|---|
| 92 |
#ifdef POSIX |
|---|
| 93 |
extern void unblock_sigs PARAMS ((void)); |
|---|
| 94 |
#else |
|---|
| 95 |
#ifdef HAVE_SIGSETMASK |
|---|
| 96 |
extern int fatal_signal_mask; |
|---|
| 97 |
#define unblock_sigs() sigsetmask (0) |
|---|
| 98 |
#else |
|---|
| 99 |
#define unblock_sigs() |
|---|
| 100 |
#endif |
|---|
| 101 |
#endif |
|---|
| 102 |
|
|---|
| 103 |
extern unsigned int jobserver_tokens; |
|---|
| 104 |
|
|---|
| 105 |
#endif |
|---|