#ifndef CONFIG_HPP_
#define CONFIG_HPP_
#include "common.hpp"
#include <vector>


typedef struct {
    const char* name;
    const char* dflt; // default value - optional if NULL, required if "", always set if set
    bool multi; // allows multiple occurrences
    const char* str; // strs[0], never an empty string
    std::vector<const char*> strs; // can be >1 entry if #multi is set
    const char* spn_start;
    const char* spn;
    const char* help;
} config_node_t;

typedef struct {
    config_node_t port;
    config_node_t server_name;
    config_node_t server_pw;
    config_node_t oper_pw;
    config_node_t channel;
    config_node_t oper_channels;
    config_node_t nickserv_dir;
    config_node_t chroot_user;
    config_node_t chroot_dir;
    config_node_t ssl;
#ifdef USE_OPENSSL
    config_node_t ssl_key;
    config_node_t ssl_cert;
#endif
} config_t;
extern config_t config;


bool parse_config(const char*);
void log_usage();
void free_config();


#endif