1 | #ifndef SH_EXTERN_H
|
---|
2 | #define SH_EXTERN_H
|
---|
3 |
|
---|
4 | #include <stdarg.h>
|
---|
5 |
|
---|
6 | typedef struct
|
---|
7 | {
|
---|
8 | char * command;
|
---|
9 | int argc;
|
---|
10 | char * argv[32];
|
---|
11 | int envc;
|
---|
12 | char * envv[32];
|
---|
13 | char checksum[KEY_LEN + 1];
|
---|
14 | #if 0
|
---|
15 | uid_t trusted_users[32];
|
---|
16 | #endif
|
---|
17 | uid_t run_user_uid;
|
---|
18 | gid_t run_user_gid;
|
---|
19 | int privileged;
|
---|
20 |
|
---|
21 | int pipeFD;
|
---|
22 | SL_TICKET pipeTI;
|
---|
23 | pid_t pid;
|
---|
24 | FILE * pipe;
|
---|
25 | char rw;
|
---|
26 | int exit_status;
|
---|
27 | int fork_twice;
|
---|
28 |
|
---|
29 | int com_fd;
|
---|
30 | SL_TICKET com_ti;
|
---|
31 |
|
---|
32 | } sh_tas_t;
|
---|
33 |
|
---|
34 |
|
---|
35 | /*
|
---|
36 | * -- generic safe popen; returns 0 on success, -1 otherwise
|
---|
37 | */
|
---|
38 | int sh_ext_popen (sh_tas_t * task);
|
---|
39 |
|
---|
40 | /*
|
---|
41 | * -- generic simple safe popen; returns 0 on success, -1 otherwise,
|
---|
42 | * executes shell command
|
---|
43 | */
|
---|
44 | int sh_ext_popen_init (sh_tas_t * task, char * command, char * argv0, ...) SH_GNUC_SENTINEL;
|
---|
45 |
|
---|
46 | /*
|
---|
47 | * -- Execute command, return first line of output
|
---|
48 | */
|
---|
49 | int sh_ext_system (char * command, char * argv0, ...) SH_GNUC_SENTINEL;
|
---|
50 |
|
---|
51 | /*
|
---|
52 | * -- Execute command, return first line of output
|
---|
53 | */
|
---|
54 | char * sh_ext_popen_str (char * command);
|
---|
55 |
|
---|
56 | /*
|
---|
57 | * -- close the pipe, clear and return task->exit_status
|
---|
58 | */
|
---|
59 | int sh_ext_pclose (sh_tas_t * task);
|
---|
60 |
|
---|
61 | /*
|
---|
62 | * -- add CL argument, return # of arguments
|
---|
63 | */
|
---|
64 | int sh_ext_tas_add_argv(sh_tas_t * tas, const char * val);
|
---|
65 | /*
|
---|
66 | * -- remove last CL argument
|
---|
67 | */
|
---|
68 | int sh_ext_tas_rm_argv(sh_tas_t * tas);
|
---|
69 | /*
|
---|
70 | * -- add environment variable, return # of variables
|
---|
71 | */
|
---|
72 | int sh_ext_tas_add_envv(sh_tas_t * tas, const char * key, const char * val);
|
---|
73 | /*
|
---|
74 | * -- set command
|
---|
75 | */
|
---|
76 | void sh_ext_tas_command(sh_tas_t * tas, const char * command);
|
---|
77 | /*
|
---|
78 | * -- initialize task structure
|
---|
79 | */
|
---|
80 | void sh_ext_tas_init (sh_tas_t * tas);
|
---|
81 | /*
|
---|
82 | * -- free task structure
|
---|
83 | */
|
---|
84 | void sh_ext_tas_free(sh_tas_t * tas);
|
---|
85 |
|
---|
86 |
|
---|
87 | #if defined(WITH_EXTERNAL)
|
---|
88 |
|
---|
89 | /*
|
---|
90 | * -- start a new external command, and add it to the list
|
---|
91 | */
|
---|
92 | int sh_ext_setcommand(const char * cmd);
|
---|
93 |
|
---|
94 | /*
|
---|
95 | * -- explicitely close a command
|
---|
96 | */
|
---|
97 | int sh_ext_close_command (const char * str);
|
---|
98 |
|
---|
99 | /*
|
---|
100 | * -- clean up the command list
|
---|
101 | */
|
---|
102 | int sh_ext_cleanup(void);
|
---|
103 |
|
---|
104 | /*
|
---|
105 | * -- set deadtime
|
---|
106 | */
|
---|
107 | int sh_ext_deadtime (const char * str);
|
---|
108 |
|
---|
109 | /*
|
---|
110 | * -- add keywords to the OR filter
|
---|
111 | */
|
---|
112 | int sh_ext_add_or (const char * str);
|
---|
113 |
|
---|
114 | /*
|
---|
115 | * -- add keywords to the AND filter
|
---|
116 | */
|
---|
117 | int sh_ext_add_and (const char * str);
|
---|
118 |
|
---|
119 | /*
|
---|
120 | * -- add keywords to the NOT filter
|
---|
121 | */
|
---|
122 | int sh_ext_add_not (const char * str);
|
---|
123 |
|
---|
124 | /*
|
---|
125 | * -- add keywords to the CL argument list
|
---|
126 | */
|
---|
127 | int sh_ext_add_argv (const char * str);
|
---|
128 |
|
---|
129 | /*
|
---|
130 | * -- add a path to the environment
|
---|
131 | */
|
---|
132 | int sh_ext_add_default (const char * str);
|
---|
133 |
|
---|
134 | /*
|
---|
135 | * -- add an environment variable
|
---|
136 | */
|
---|
137 | int sh_ext_add_environ (const char * str);
|
---|
138 |
|
---|
139 | /*
|
---|
140 | * -- define type
|
---|
141 | */
|
---|
142 | int sh_ext_type (const char * str);
|
---|
143 |
|
---|
144 | /*
|
---|
145 | * -- define checksum
|
---|
146 | */
|
---|
147 | int sh_ext_checksum (const char * str);
|
---|
148 |
|
---|
149 | /*
|
---|
150 | * -- choose privileges
|
---|
151 | */
|
---|
152 | int sh_ext_priv (const char * c);
|
---|
153 |
|
---|
154 | /*
|
---|
155 | * -- execute external script/program
|
---|
156 | */
|
---|
157 | int sh_ext_execute (char t1, char t2, char t3, /*@null@*/char * message,
|
---|
158 | size_t msg_siz);
|
---|
159 |
|
---|
160 | #endif
|
---|
161 |
|
---|
162 | #endif
|
---|