struct globals { pid_t helper_pid; unsigned timeout; unsigned opts; char *user; char *pass; FILE *fp0; // initial stdin char *opt_charset; char *content_type; }; #define G (*ptr_to_globals) #define timeout (G.timeout ) #define opts (G.opts ) //#define user (G.user ) //#define pass (G.pass ) //#define fp0 (G.fp0 ) //#define opt_charset (G.opt_charset) //#define content_type (G.content_type) #define INIT_G() do { \ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ G.opt_charset = (char *)CONFIG_FEATURE_MIME_CHARSET; \ G.content_type = (char *)"text/plain"; \ } while (0) //char FAST_FUNC *parse_url(char *url, char **user, char **pass); void FAST_FUNC launch_helper(const char **argv); void FAST_FUNC get_cred_or_die(int fd); const FAST_FUNC char *command(const char *fmt, const char *param); void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol);