2 * ion/libmainloop/exec.h
4 * Copyright (c) Tuomo Valkonen 1999-2007.
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.
12 #ifndef ION_LIBMAINLOOP_EXEC_H
13 #define ION_LIBMAINLOOP_EXEC_H
15 #include <sys/types.h>
18 #include <libextl/extl.h>
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);
28 extern pid_t mainloop_popen_bgread(const char *cmd,
29 void (*initenv)(void *p), void *p,
30 ExtlFn handler, ExtlFn errhandler);
32 extern bool mainloop_register_input_fd_extlfn(int fd, ExtlFn fn);
33 extern bool mainloop_process_pipe_extlfn(int fd, ExtlFn fn);
35 extern void cloexec_braindamage_fix(int fd);
37 #endif /* ION_LIBMAINLOOP_EXEC_H */