Changeset 39 in Main for trunk/Server


Ignore:
Timestamp:
Sep 17, 2024, 9:20:48 PM (2 months ago)
Author:
Nishi
Message:

custom config

Location:
trunk/Server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/config.c

    r33 r39  
    296296                                                }
    297297                                        } else {
     298                                                stop = 1;
    298299                                                if(r[0] != NULL) {
    299                                                         cm_log("Config", "Unknown directive `%s' at line %d", r[0], ln);
    300                                                 }
    301                                                 stop = 1;
     300                                                        int argc;
     301                                                        for(argc = 0; r[argc] != NULL; argc++)
     302                                                                ;
     303                                                        stop = 0;
     304                                                        int i;
     305                                                        bool called = false;
     306                                                        struct tw_tool tools;
     307                                                        tw_init_tools(&tools);
     308                                                        for(i = 0; i < config.module_count; i++) {
     309                                                                tw_mod_config_t mod_config = (tw_mod_config_t)tw_module_symbol(config.modules[i], "mod_config");
     310                                                                int resp;
     311                                                                if(mod_config != NULL && (resp = mod_config(&tools, r, argc)) == TW_CONFIG_PARSED) {
     312                                                                        called = true;
     313                                                                        break;
     314                                                                }
     315                                                                if(resp == TW_CONFIG_ERROR) {
     316                                                                        stop = 1;
     317                                                                        called = true;
     318                                                                        break;
     319                                                                }
     320                                                        }
     321                                                        if(!called) {
     322                                                                cm_log("Config", "Unknown directive `%s' at line %d", r[0], ln);
     323                                                                stop = 1;
     324                                                        }
     325                                                }
    302326                                        }
    303327                                        for(i = 0; r[i] != NULL; i++) free(r[i]);
  • trunk/Server/tw_module.h

    r20 r39  
    1515        _TW_MODULE_PASS = 0, /* Pass to the next module. */
    1616        _TW_MODULE_STOP,     /* Do not pass to the next module. */
    17         _TW_MODULE_ERROR     /* Error, and do not pass to the next module. */
     17        _TW_MODULE_ERROR,    /* Error, and do not pass to the next module. */
     18
     19        _TW_CONFIG_PARSED, /* Got parsed */
     20        _TW_CONFIG_NOTME,  /* Did not parse */
     21        _TW_CONFIG_ERROR   /* Error */
    1822};
    1923
     
    2226#define TW_MODULE_ERROR(x) (_TW_MODULE_ERROR | ((x) << 8))
    2327
     28#define TW_CONFIG_PARSED _TW_CONFIG_PARSED
     29#define TW_CONFIG_NOTME _TW_CONFIG_NOTME
     30#define TW_CONFIG_ERROR _TW_CONFIG_ERROR
     31
    2432typedef int (*tw_mod_init_t)(struct tw_config* config, struct tw_tool* tools);
    2533typedef int (*tw_mod_request_t)(struct tw_tool* tools, struct tw_http_request* req, struct tw_http_response* res);
     34typedef int (*tw_mod_config_t)(struct tw_tool* tools, char** argv, int argc);
    2635
    2736void* tw_module_load(const char* path);
Note: See TracChangeset for help on using the changeset viewer.