33 |
33 |
34 #ifdef __cplusplus |
34 #ifdef __cplusplus |
35 extern "C" { |
35 extern "C" { |
36 #endif |
36 #endif |
37 |
37 |
|
38 #define CFG_MIME_ADD(list_begin, list_end, directive) \ |
|
39 cx_linked_list_add((void**)list_begin, (void**)list_end, -1, offsetof(MimeDirective, next), directive) |
|
40 |
|
41 typedef struct _mime_dir MimeDirective; |
|
42 |
38 typedef struct _mime_conf { |
43 typedef struct _mime_conf { |
39 ConfigParser parser; |
44 ConfigParser parser; |
40 UcxList *directives; // MimeDirective list |
45 MimeDirective *directives_begin; |
41 int ntypes; |
46 MimeDirective *directives_end; |
|
47 int ntypes; |
42 } MimeConfig; |
48 } MimeConfig; |
43 |
49 |
44 typedef struct _mime_dir { |
50 struct _mime_dir { |
45 sstr_t type; |
51 cxmutstr type; |
46 UcxList *exts; // char* |
52 //UcxList *exts; // char* |
47 } MimeDirective; |
53 ssize_t nextensions; |
|
54 cxstring *extensions; |
|
55 |
|
56 MimeDirective *next; |
|
57 }; |
48 |
58 |
49 MimeConfig *load_mime_config(const char *file); |
59 MimeConfig *load_mime_config(const char *file); |
50 |
60 |
51 void free_mime_config(MimeConfig *conf); |
61 void free_mime_config(MimeConfig *conf); |
52 |
62 |
53 int mimeconf_parse(void *p, ConfigLine *begin, ConfigLine *end, sstr_t line); |
63 int mimeconf_parse(void *p, ConfigLine *begin, ConfigLine *end, cxmutstr line); |
54 |
64 |
55 #ifdef __cplusplus |
65 #ifdef __cplusplus |
56 } |
66 } |
57 #endif |
67 #endif |
58 |
68 |