diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2011-01-23 22:13:19 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2011-01-23 22:13:19 +0100 | 
| commit | 69b1fd25f1ad2f745245146d36fec0ae82c3adee (patch) | |
| tree | 15375247b44ba9b35fcb261a99b026e723552716 /src | |
| parent | 718a2f4d66f355343c4c84abcaf306e3ae21a14f (diff) | |
Parse commandline options _after_ theme options (closes GH-23)
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.c | 30 | 
1 files changed, 26 insertions, 4 deletions
| diff --git a/src/options.c b/src/options.c index 2ca04b5..3e2e343 100644 --- a/src/options.c +++ b/src/options.c @@ -29,6 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  #include "options.h"  static void check_options(void); +static void feh_getopt_theme(int argc, char **argv);  static void feh_parse_option_array(int argc, char **argv);  static void feh_parse_environment_options(void);  static void feh_check_theme_options(int arg, char **argv); @@ -93,13 +94,15 @@ void init_parse_options(int argc, char **argv)  	/* Check for and parse any options in FEH_OPTIONS */  	feh_parse_environment_options(); -	D(("About to parse commandline options\n")); -	/* Parse the cmdline args */ -	feh_parse_option_array(argc, argv); +	feh_getopt_theme(argc, argv);  	D(("About to check for theme configuration\n"));  	feh_check_theme_options(argc, argv); +	D(("About to parse commandline options\n")); +	/* Parse the cmdline args */ +	feh_parse_option_array(argc, argv); +  	/* If we have a filelist to read, do it now */  	if (opt.filelistfile) {  		/* joining two reverse-sorted lists in this manner works nicely for us @@ -318,8 +321,27 @@ char *feh_string_normalize(char *str)  	return(estrdup(ret));  } -static void feh_parse_option_array(int argc, char **argv) +static void feh_getopt_theme(int argc, char **argv) +{ +	static char stropts[] = "-T:"; +	static struct option lopts[] = { +		{"theme", 1, 0, 'T'}, +		{0, 0, 0, 0} +	}; +	int optch = 0, cmdx = 0; + +	opterr = 0; + +	while ((optch = getopt_long(argc, argv, stropts, lopts, &cmdx)) != EOF) { +		if (optch == 'T') +			theme = estrdup(optarg); +	} +	opterr = 1; +	optind = 0; +} + +static void feh_parse_option_array(int argc, char **argv)  {  	static char stropts[] =  		"a:A:b:B:cC:dD:e:E:f:Fg:GhH:iIj:J:kK:lL:mM:nNo:O:pPqQrR:sS:tT:uUvVwW:xXy:YzZ" | 
