diff options
Diffstat (limited to 'options.c')
-rw-r--r-- | options.c | 61 |
1 files changed, 37 insertions, 24 deletions
@@ -19,8 +19,11 @@ #include "nsxiv.h" #include "version.h" +#define INCLUDE_OPTIONS_CONFIG +#include "config.h" #include <assert.h> +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -63,31 +66,35 @@ static void print_version(void) void parse_options(int argc, char **argv) { + enum { /* ensure these can't be represented in a single byte */ + OPT_AA = UCHAR_MAX + 1 + }; static const struct optparse_long longopts[] = { - { "framerate", 'A', OPTPARSE_REQUIRED }, - { "animate", 'a', OPTPARSE_NONE }, - { "no-bar", 'b', OPTPARSE_NONE }, - { "clean-cache", 'c', OPTPARSE_NONE }, - { "embed", 'e', OPTPARSE_REQUIRED }, - { "fullscreen", 'f', OPTPARSE_NONE }, - { "gamma", 'G', OPTPARSE_REQUIRED }, - { "geometry", 'g', OPTPARSE_REQUIRED }, - { "help", 'h', OPTPARSE_NONE }, - { "stdin", 'i', OPTPARSE_NONE }, - { "class", 'N', OPTPARSE_REQUIRED }, - { "start-at", 'n', OPTPARSE_REQUIRED }, - { "stdout", 'o', OPTPARSE_NONE }, - { "private", 'p', OPTPARSE_NONE }, - { "quiet", 'q', OPTPARSE_NONE }, - { "recursive", 'r', OPTPARSE_NONE }, - { "ss-delay", 'S', OPTPARSE_REQUIRED }, - { "scale-mode", 's', OPTPARSE_REQUIRED }, - { NULL, 'T', OPTPARSE_REQUIRED }, - { "thumbnail", 't', OPTPARSE_NONE }, - { "version", 'v', OPTPARSE_NONE }, - { "zoom-100", 'Z', OPTPARSE_NONE }, - { "zoom", 'z', OPTPARSE_REQUIRED }, - { "null", '0', OPTPARSE_NONE }, + { "framerate", 'A', OPTPARSE_REQUIRED }, + { "animate", 'a', OPTPARSE_NONE }, + { "no-bar", 'b', OPTPARSE_NONE }, + { "clean-cache", 'c', OPTPARSE_NONE }, + { "embed", 'e', OPTPARSE_REQUIRED }, + { "fullscreen", 'f', OPTPARSE_NONE }, + { "gamma", 'G', OPTPARSE_REQUIRED }, + { "geometry", 'g', OPTPARSE_REQUIRED }, + { "help", 'h', OPTPARSE_NONE }, + { "stdin", 'i', OPTPARSE_NONE }, + { "class", 'N', OPTPARSE_REQUIRED }, + { "start-at", 'n', OPTPARSE_REQUIRED }, + { "stdout", 'o', OPTPARSE_NONE }, + { "private", 'p', OPTPARSE_NONE }, + { "quiet", 'q', OPTPARSE_NONE }, + { "recursive", 'r', OPTPARSE_NONE }, + { "ss-delay", 'S', OPTPARSE_REQUIRED }, + { "scale-mode", 's', OPTPARSE_REQUIRED }, + { NULL, 'T', OPTPARSE_REQUIRED }, + { "thumbnail", 't', OPTPARSE_NONE }, + { "version", 'v', OPTPARSE_NONE }, + { "zoom-100", 'Z', OPTPARSE_NONE }, + { "zoom", 'z', OPTPARSE_REQUIRED }, + { "null", '0', OPTPARSE_NONE }, + { "anti-alias", OPT_AA, OPTPARSE_OPTIONAL }, { 0 }, /* end */ }; @@ -106,6 +113,7 @@ void parse_options(int argc, char **argv) _options.scalemode = SCALE_DOWN; _options.zoom = 1.0; + _options.aa = ANTI_ALIAS; _options.animate = false; _options.gamma = 0; _options.slideshow = 0; @@ -233,6 +241,11 @@ void parse_options(int argc, char **argv) case '0': _options.using_null = true; break; + case OPT_AA: + if (op.optarg != NULL && !STREQ(op.optarg, "no")) + error(EXIT_FAILURE, 0, "Invalid argument for option --anti-alias: %s", op.optarg); + _options.aa = op.optarg == NULL; + break; } } |