From 300483ff8651af328adeb83834dac0dc3442407d Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 4 Nov 2009 04:13:13 +0000 Subject: added parser for switchctl config file diff --git a/options.c b/options.c index 3f907e9..66f716e 100644 --- a/options.c +++ b/options.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "log.h" @@ -187,6 +188,32 @@ int options_parse_post(options_t* opt) return -1; // nothing to do + FILE* conf_file = fopen(opt->conf_file_, "r"); + if(conf_file) { + char buf[100]; + while(fgets(buf, 100, conf_file) != NULL) { + char* tmp, *key, *value; + for(tmp = buf;*tmp == ' '; ++tmp); + if(*(key = tmp) == 0) continue; + for(;*tmp != ' ' && *tmp != 0;++tmp); + if(*tmp == 0) continue; + *tmp=0; + ++tmp; + for(;*tmp == ' ';++tmp); + if(*(value = tmp) == 0) continue; + for(;*tmp != ' ' && *tmp != 0 && *tmp != '\n';++tmp); + *tmp = 0; + + if(key_value_storage_add(&opt->alias_table_, key, value)) + return -2; + } + fclose(conf_file); + } + else { + log_printf(ERROR,"unable to open conf file (%s): %s", opt->conf_file_, strerror(errno)); + return -1; + } + return 0; } @@ -206,6 +233,7 @@ void options_default(options_t* opt) opt->conf_file_ = strdup("/etc/rhctl/switchctl.conf"); opt->command_sock_ = strdup("/var/run/rhctl/switchctl.sock"); opt->switch_dev_ = strdup("/dev/audioswitch"); + key_value_storage_init(&opt->alias_table_); } void options_clear(options_t* opt) @@ -231,6 +259,7 @@ void options_clear(options_t* opt) free(opt->command_sock_); if(opt->switch_dev_) free(opt->switch_dev_); + key_value_storage_clear(&opt->alias_table_); } void options_print_usage() @@ -266,4 +295,5 @@ void options_print(options_t* opt) printf("conf_file: '%s'\n", opt->conf_file_); printf("command_sock: '%s'\n", opt->command_sock_); printf("switch_dev: '%s'\n", opt->switch_dev_); + key_value_storage_print(&opt->alias_table_); } diff --git a/options.h b/options.h index 5283258..1c17809 100644 --- a/options.h +++ b/options.h @@ -23,6 +23,7 @@ #define _OPTIONS_H_ #include "string_list.h" +#include "key_value_storage.h" struct options_struct { char* progname_; @@ -36,6 +37,7 @@ struct options_struct { char* conf_file_; char* command_sock_; char* switch_dev_; + key_value_storage_t alias_table_; }; typedef struct options_struct options_t; -- cgit v0.10.2