diff options
Diffstat (limited to 'argparse.c')
-rw-r--r-- | argparse.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -4,6 +4,7 @@ #include <string.h> #include "cputemp2maxfreq.h" #include "debug.h" +#include "logger.h" extern struct s_config config; @@ -20,14 +21,16 @@ void printhelp() "-h Display this help text\n" "-i <file> Input for temperature readout, usually somewhere in sysfs\n" " Default: %s\n" + "-l <logger> Logger to use, valid values: none, kmsg, stdout, syslog\n" + " Default: %s\n" "-p <time> Poll interval in seconds\n" " Default: %d\n" "-s <step> Step size in Khz when increasing/decreasing CPU speed\n" " Default: %ld\n" "-t <number> Temperature limit\n" " Default: %ld\n", - config.fallback_freq,config.governor,config.temp_input,config.interval, - config.freq_step,config.max_temp/1000 + config.fallback_freq,config.governor,config.temp_input,config.logger_name, + config.interval,config.freq_step,config.max_temp/1000 ); } @@ -42,7 +45,7 @@ void argparse(int argc, char **argv) memcpy(&userconfig,&config,sizeof(struct s_config)); // Parse options - while((opt=getopt(argc,argv,"f:g:hi:p:s:t:"))!=-1) + while((opt=getopt(argc,argv,"f:g:hi:l:p:s:t:"))!=-1) { DEBUG1_ARGPARSE("Argument: %c Value: %s\n",opt,optarg); switch(opt) @@ -59,6 +62,9 @@ void argparse(int argc, char **argv) case 'i': strncpy(userconfig.temp_input,optarg,sizeof(userconfig.temp_input)); break; + case 'l': + strncpy(userconfig.logger_name,optarg,sizeof(userconfig.logger_name)); + break; case 'p': userconfig.interval=strtoll(optarg,NULL,10); break; @@ -74,6 +80,16 @@ void argparse(int argc, char **argv) } } +// Change the logger function pointer + if (strcmp(userconfig.logger_name,"none")==0) userconfig.logger=&logger_none; + else if (strcmp(userconfig.logger_name,"stdout")==0) userconfig.logger=&logger_stdout; + else if (strcmp(userconfig.logger_name,"syslog")==0) userconfig.logger=&logger_syslog; + else if (strcmp(userconfig.logger_name,"kmsg")==0) userconfig.logger=&logger_kmsg; + else { + printf("Invalid value for logger, exiting.\n"); + exit(1); + } + // Copy modified config to global config memcpy(&config,&userconfig,sizeof(struct s_config)); } |