]> git.decadent.org.uk Git - ion3.git/blob - libmainloop/exec.h
[svn-inject] Installing original source of ion3
[ion3.git] / libmainloop / exec.h
1 /*
2  * ion/libmainloop/exec.h
3  *
4  * Copyright (c) Tuomo Valkonen 1999-2006. 
5  *
6  * Ion is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or
9  * (at your option) any later version.
10  */
11
12 #ifndef ION_LIBMAINLOOP_EXEC_H
13 #define ION_LIBMAINLOOP_EXEC_H
14
15 #include <sys/types.h>
16 #include <unistd.h>
17
18 #include <libextl/extl.h>
19
20 extern void mainloop_do_exec(const char *cmd);
21 extern pid_t mainloop_fork(void (*fn)(void *p), void *p,
22                            int *infd, int *outfd, int *errfd);
23 extern pid_t mainloop_do_spawn(const char *cmd, 
24                               void (*initenv)(void *p), void *p,
25                               int *infd, int *outfd, int *errfd);
26 extern pid_t mainloop_spawn(const char *cmd);
27
28 extern pid_t mainloop_popen_bgread(const char *cmd, 
29                                    void (*initenv)(void *p), void *p,
30                                    ExtlFn handler, ExtlFn errhandler);
31
32 extern bool mainloop_register_input_fd_extlfn(int fd, ExtlFn fn);
33 extern bool mainloop_process_pipe_extlfn(int fd, ExtlFn fn);
34
35 extern void cloexec_braindamage_fix(int fd);
36
37 #endif /* ION_LIBMAINLOOP_EXEC_H */