Author: marten Date: Mon Oct 19 21:51:52 2009 New Revision: 1239 Log: Moved initialization to own method Modified: trunk/community-operator/co_client.c Modified: trunk/community-operator/co_client.c ============================================================================== --- trunk/community-operator/co_client.c Mon Oct 19 21:16:39 2009 (r1238) +++ trunk/community-operator/co_client.c Mon Oct 19 21:51:52 2009 (r1239) @@ -17,12 +17,23 @@ #include <string.h> #include <unistd.h> +#define PATH_BUFFER 1000 + +static void co_client_init(void); static int create_client_socket(struct sockaddr_in6 *srv_addr); static void print_deny_reason(int reason); static int receive_certificate(char **cert); static int request_cert(void); static int write_cert_file(char *cert, const char *filename); +typedef struct co_client_conf { + int retries; + char srv_hit[INET6_ADDRSTRLEN]; + int port; + char cert_filename[PATH_BUFFER]; +} co_client_conf; + +co_client_conf co_client_config; static int sock; /** @@ -179,30 +190,41 @@ return result; } -int main(int argc, char **argv) +/** + * Reads the settings from the config file. + */ +static void co_client_init(void) { - struct sockaddr_in6 srv_addr = { 0 }; - char *cert = NULL; - char srv_hit[1000]; /* @todo */ - int count, port, retries = 3; - pisa_cfg_setup_file("co_client.cfg"); - pisa_cfg_get_string_value("hit", srv_hit, 1000); - pisa_cfg_get_int_value("port", &port); - pisa_cfg_get_int_value("retry", &retries); + + pisa_cfg_get_string_value("hit", co_client_config.srv_hit, INET6_ADDRSTRLEN); + pisa_cfg_get_int_value("port", &co_client_config.port); + pisa_cfg_get_int_value("retry", &co_client_config.retries); + pisa_cfg_get_string_value("filename", co_client_config.cert_filename, + PATH_BUFFER); /* sanity check configuration values */ - if (retries < 1) - retries = 1; - if (retries > 100) /* @todo find reasonable maximum */ - retries = 100; + if (co_client_config.retries < 1) + co_client_config.retries = 1; + if (co_client_config.retries > 100) /* @todo find reasonable maximum */ + co_client_config.retries = 100; + +} + +int main(int argc, char **argv) +{ + co_client_init(); + + struct sockaddr_in6 srv_addr = { 0 }; + char *cert = NULL; + int count; srv_addr.sin6_family = AF_INET6; - inet_pton(PF_INET6, srv_hit, &(srv_addr.sin6_addr)); - srv_addr.sin6_port = htons(port); + inet_pton(PF_INET6, co_client_config.srv_hit, &(srv_addr.sin6_addr)); + srv_addr.sin6_port = htons(co_client_config.port); sock = create_client_socket(&srv_addr); - for (count = 0; count < retries; count++) { + for (count = 0; count < co_client_config.retries; count++) { if (request_cert() < 0) break; if (receive_certificate(&cert) != -2)