2012-01-11 15:17:54 +00:00
|
|
|
/* sub */
|
|
|
|
void* emalloc(int n);
|
|
|
|
char* estrdup(char *s);
|
|
|
|
|
2012-05-18 18:25:50 +00:00
|
|
|
void nstrcpy(char *to, char *from, int n);
|
|
|
|
|
2012-01-11 15:17:54 +00:00
|
|
|
Key* addkey(Key *h, char *key, char *val);
|
|
|
|
Key* delkey(Key *h, char *key);
|
2013-01-17 11:28:19 +00:00
|
|
|
Key* getkey(Key *h, char *key);
|
2012-01-11 15:17:54 +00:00
|
|
|
char* lookkey(Key *k, char *key);
|
|
|
|
Key* parsehdr(char *s);
|
|
|
|
char* unquote(char *s, char **ps);
|
|
|
|
|
|
|
|
/* url */
|
|
|
|
#pragma varargck type "U" Url*
|
|
|
|
#pragma varargck type "E" Str2
|
2016-04-15 21:54:00 +00:00
|
|
|
#pragma varargck type "N" char*
|
2019-03-22 23:49:07 +00:00
|
|
|
#pragma varargck type "]" char*
|
2012-01-11 15:17:54 +00:00
|
|
|
|
|
|
|
int Efmt(Fmt*);
|
2016-04-15 21:54:00 +00:00
|
|
|
int Nfmt(Fmt*);
|
2012-01-11 15:17:54 +00:00
|
|
|
int Ufmt(Fmt*);
|
2019-03-22 23:49:07 +00:00
|
|
|
int Mfmt(Fmt*);
|
2012-01-11 15:17:54 +00:00
|
|
|
char* Upath(Url *);
|
|
|
|
Url* url(char *s, Url *b);
|
|
|
|
Url* saneurl(Url *u);
|
|
|
|
int matchurl(Url *u, Url *s);
|
|
|
|
void freeurl(Url *u);
|
|
|
|
|
|
|
|
/* buq */
|
|
|
|
int buread(Buq *q, void *v, int l);
|
|
|
|
int buwrite(Buq *q, void *v, int l);
|
|
|
|
void buclose(Buq *q, char *error);
|
|
|
|
Buq* bualloc(int limit);
|
|
|
|
void bufree(Buq *q);
|
|
|
|
|
|
|
|
void bureq(Buq *q, Req *r);
|
|
|
|
void buflushreq(Buq *q, Req *r);
|
|
|
|
|
|
|
|
/* http */
|
2013-01-11 23:16:07 +00:00
|
|
|
int authenticate(Url *u, Url *ru, char *method, char *s);
|
2012-01-11 15:17:54 +00:00
|
|
|
void flushauth(Url *u, char *t);
|
|
|
|
void http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost);
|