30 #include <stdlib.h> |
30 #include <stdlib.h> |
31 #include <string.h> |
31 #include <string.h> |
32 |
32 |
33 #include <cx/mempool.h> |
33 #include <cx/mempool.h> |
34 #include "mimeconf.h" |
34 #include "mimeconf.h" |
|
35 #include "logging.h" |
35 |
36 |
36 #define MIMECONFIG_MAX_TOKENS 4096 |
37 #define MIMECONFIG_MAX_TOKENS 4096 |
37 |
38 |
38 MimeConfig *load_mime_config(const char *file) { |
39 MimeConfig *load_mime_config(const char *file) { |
39 FILE *in = fopen(file, "r"); |
40 FILE *in = fopen(file, "r"); |
40 if(in == NULL) { |
41 if(in == NULL) { |
41 log_ereport(LOG_FAILURE, "Cannot load mime config file %s: %s", file, strerror(errno)); |
42 ws_cfg_log(LOG_FAILURE, "Cannot load mime config file %s: %s", file, strerror(errno)); |
42 return NULL; |
43 return NULL; |
43 } |
44 } |
44 |
45 |
45 MimeConfig *conf = malloc(sizeof(MimeConfig)); |
46 MimeConfig *conf = malloc(sizeof(MimeConfig)); |
46 conf->parser.parse = mimeconf_parse; |
47 conf->parser.parse = mimeconf_parse; |
47 conf->directives_begin = NULL; |
48 conf->directives_begin = NULL; |
48 conf->directives_end = NULL; |
49 conf->directives_end = NULL; |
49 conf->ntypes = 0; |
50 conf->ntypes = 0; |
50 int r = cfg_parse_basic_file((ConfigParser*)conf, in); |
51 int r = cfg_parse_basic_file((ConfigParser*)conf, in); |
51 if(r != 0) { |
52 if(r != 0) { |
52 log_ereport(LOG_FAILURE, "Cannot parse mime config file %s", file); |
53 ws_cfg_log(LOG_FAILURE, "Cannot parse mime config file %s", file); |
53 fclose(in); |
54 fclose(in); |
54 free(conf); |
55 free(conf); |
55 // TODO: free |
56 // TODO: free |
56 return NULL; |
57 return NULL; |
57 } |
58 } |