1
2struct globals {
3	pid_t helper_pid;
4	unsigned timeout;
5	unsigned opts;
6	char *user;
7	char *pass;
8	FILE *fp0; // initial stdin
9	char *opt_charset;
10	char *content_type;
11};
12
13#define G (*ptr_to_globals)
14#define timeout         (G.timeout  )
15#define opts            (G.opts     )
16//#define user            (G.user     )
17//#define pass            (G.pass     )
18//#define fp0             (G.fp0      )
19//#define opt_charset     (G.opt_charset)
20//#define content_type    (G.content_type)
21#define INIT_G() do { \
22	SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
23	G.opt_charset = (char *)CONFIG_FEATURE_MIME_CHARSET; \
24	G.content_type = (char *)"text/plain"; \
25} while (0)
26
27//char FAST_FUNC *parse_url(char *url, char **user, char **pass);
28
29void FAST_FUNC launch_helper(const char **argv);
30void FAST_FUNC get_cred_or_die(int fd);
31
32const FAST_FUNC char *command(const char *fmt, const char *param);
33
34void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol);
35void FAST_FUNC decode_base64(FILE *src_stream, FILE *dst_stream);
36