1 /* common stuff for cgi-fcgi-interp and prefork-interp */
16 #include <sys/types.h>
18 #include <sys/utsname.h>
19 #include <sys/socket.h>
30 #include <nettle/sha.h>
33 #include "timespeccmp.h"
36 #define STAGE2_VAR "CHIARKUTILS_CGIFCGIINTERP_STAGE2"
38 extern const char *interp, *ident;
39 extern int numservers, debugmode;
40 extern int check_interval;
42 extern struct sha256_ctx identsc;
45 extern const char *run_base, *script, *socket_path;
46 extern const char *run_base_mkdir_p;
49 bool find_run_base_var_run(void);
50 void find_socket_path(void);
52 bool stab_isnewer(const struct stat *a, const struct stat *b);
53 void stab_mtimenow(struct stat *out);
54 bool check_garbage_vs(const struct stat *started);
55 bool check_garbage(void);
56 void tidy_garbage(void);
58 extern const struct cmdinfo cmdinfos[];
60 // returns script pathname
61 const char *process_opts(int argc, const char *const *argv);
63 void vmsgcore(int estatus, int errnoval, const char *fmt, va_list al);
65 #define DEF_MSG(func, attrs, estatus, errnoval, after) \
66 static void func(const char *fmt, ...) \
67 __attribute__((unused, format(printf,1,2))) attrs; \
68 static void func(const char *fmt, ...) { \
71 vmsgcore(estatus,errnoval,fmt,al); \
75 DEF_MSG(warninge, /*empty*/, 0, errno, { });
76 DEF_MSG(warning , /*empty*/, 0, 0, { });
78 #define DEF_DIE(func, errnoval) \
79 DEF_MSG(func, __attribute__((noreturn)), 127, errnoval, { abort(); })
86 void fusagemessage(FILE *f);
87 void usagemessage(void);
88 void of_help(const struct cmdinfo *ci, const char *val);
89 void of_iassign(const struct cmdinfo *ci, const char *val);
90 void ident_addstring(const struct cmdinfo *ci, const char *string);
91 void off_ident_addenv(const struct cmdinfo *ci, const char *name);