Finalize vcard editing:
[citadel.git] / webcit / paramhandling.h
1 /*
2  * Copyright (c) 1996-2013 by the citadel.org team
3  *
4  * This program is open source software.  You can redistribute it and/or
5  * modify it under the terms of the GNU General Public License, version 3.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  */
12
13 /* URL / Mime Post parsing -> paramhandling.c */
14 void upload_handler(char *name, char *filename, char *partnum, char *disp,
15                     void *content, char *cbtype, char *cbcharset,
16                     size_t length, char *encoding, char *cbid, void *userdata);
17
18 void ParseURLParams(StrBuf *url);
19
20
21 /* These may return NULL if not foud */
22 #define sbstr(a) SBstr(a, sizeof(a) - 1)
23 const StrBuf *SBstr(const char *key, size_t keylen);
24
25 #define xbstr(a, b) (char*) XBstr(a, sizeof(a) - 1, b)
26 const char *XBstr(const char *key, size_t keylen, size_t *len);
27 const char *XBSTR(const char *key, size_t *len);
28
29 #define lbstr(a) LBstr(a, sizeof(a) - 1)
30 long LBstr(const char *key, size_t keylen);
31
32 #define ibstr(a) IBstr(a, sizeof(a) - 1)
33 #define ibcstr(a) IBstr(a.Key, a.len)
34 int IBstr(const char *key, size_t keylen);
35 int IBSTR(const char *key);
36
37 #define havebstr(a) HaveBstr(a, sizeof(a) - 1)
38 int HaveBstr(const char *key, size_t keylen);
39
40 #define yesbstr(a) YesBstr(a, sizeof(a) - 1)
41 int YesBstr(const char *key, size_t keylen);
42 int YESBSTR(const char *key);
43
44 HashList* getSubStruct(const char *key, size_t keylen);
45
46 /* These may return NULL if not foud */
47 #define ssubbstr(s, a) SSubBstr(s, a, sizeof(a) - 1)
48 const StrBuf *SSubBstr(HashList *sub, const char *key, size_t keylen);
49
50 #define xsubbstr(s, a, b) (char*) XSubBstr(s, a, sizeof(a) - 1, b)
51 const char *XSubBstr(HashList *sub, const char *key, size_t keylen, size_t *len);
52
53 #define lsubbstr(s, a) LSubBstr(s, a, sizeof(a) - 1)
54 long LSubBstr(HashList *sub, const char *key, size_t keylen);
55
56 #define isubbstr(s, a) ISubBstr(s, a, sizeof(a) - 1)
57 #define isubbcstr(s, a) ISubBstr(s, a.Key, a.len)
58 int ISubBstr(HashList *sub, const char *key, size_t keylen);
59
60 #define havesubbstr(s, a) HaveSubBstr(s, a, sizeof(a) - 1)
61 int HaveSubBstr(HashList *sub, const char *key, size_t keylen);
62
63 #define yessubbstr(s, a) YesSubBstr(s, a, sizeof(a) - 1)
64 int YesSubBstr(HashList *sub, const char *key, size_t keylen);
65
66
67
68
69 /* TODO: get rid of the non-const-typecast */
70 #define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
71 const char *BSTR(const char *key);
72 const char *Bstr(const char *key, size_t keylen);
73 /* if you want to ease some parts by just parametring yourself... */
74 #define putbstr(a, b) PutBstr(a, sizeof(a) - 1, b)
75 void PutBstr(const char *key, long keylen, StrBuf *Value);
76
77 #define putlbstr(a, b) PutlBstr(a, sizeof(a) - 1, b)
78 void PutlBstr(const char *key, long keylen, long Value);
79