diff -r 99a34860c105 -r d938228c382e src/server/config/mimeconf.h --- a/src/server/config/mimeconf.h Wed Nov 02 19:19:01 2022 +0100 +++ b/src/server/config/mimeconf.h Sun Nov 06 15:53:32 2022 +0100 @@ -35,22 +35,32 @@ extern "C" { #endif +#define CFG_MIME_ADD(list_begin, list_end, directive) \ + cx_linked_list_add((void**)list_begin, (void**)list_end, -1, offsetof(MimeDirective, next), directive) + +typedef struct _mime_dir MimeDirective; + typedef struct _mime_conf { - ConfigParser parser; - UcxList *directives; // MimeDirective list - int ntypes; + ConfigParser parser; + MimeDirective *directives_begin; + MimeDirective *directives_end; + int ntypes; } MimeConfig; -typedef struct _mime_dir { - sstr_t type; - UcxList *exts; // char* -} MimeDirective; +struct _mime_dir { + cxmutstr type; + //UcxList *exts; // char* + ssize_t nextensions; + cxstring *extensions; + + MimeDirective *next; +}; MimeConfig *load_mime_config(const char *file); void free_mime_config(MimeConfig *conf); -int mimeconf_parse(void *p, ConfigLine *begin, ConfigLine *end, sstr_t line); +int mimeconf_parse(void *p, ConfigLine *begin, ConfigLine *end, cxmutstr line); #ifdef __cplusplus }