Unverified Commit b2ce6d8b authored by Alec C's avatar Alec C Committed by GitHub
Browse files

Option Refactor and addition of Zoom Rate (#589)



* fixed for simpler parenthesis matching

* absolute file path for .fehbg, moved script creation into helper function

* Removed unused variable.

* added early exit condition as per Ferada's suggestion

* Added enum for options to improve readability

* migrated options to enum.

* added support for zoom specification through options

* added man entry for zoom-rate

* added help entry for zoom-rate commands

* updated man to have warnings about strange values for zoom options

* fix memory leak (free exec_absolute_path)

* added detection for path vs env PATH launch for use in .fehbg script gen.

* Added enum for options to improve readability

* migrated options to enum.

* added support for zoom specification through options

* added man entry for zoom-rate

* added help entry for zoom-rate commands

* updated man to have warnings about strange values for zoom options

* Update help.raw

removed zoom-in/out

* removed zoom-in/out from options

* updated man/help entry to remove in/out zoom specification

* sanitize --zoom-rate in options parser; use a single variable for storing it

Co-authored-by: default avatarDaniel Friesel <derf@finalrewind.org>
parent c91c5ba3
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -980,8 +980,14 @@ zoom the image like the
.Cm --bg-fill
mode.
.
.El
.It Cm --zoom-rate Ar ratio
.
Zoom images in and out by
.Ar ratio
.Pq default: 1.25
when using the zoom keys and buttons.
.
.El
.
.Sh MONTAGE MODE OPTIONS
.
+2 −2
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ static void feh_event_handle_ButtonPress(XEvent * ev)
				- winwid->im_y) / winwid->old_zoom;

		/* copied from zoom_in, keyevents.c */
		winwid->zoom = winwid->zoom * 1.25;
		winwid->zoom = winwid->zoom * opt.zoom_rate;

		if (winwid->zoom > ZOOM_MAX)
			winwid->zoom = ZOOM_MAX;
@@ -283,7 +283,7 @@ static void feh_event_handle_ButtonPress(XEvent * ev)
				- winwid->im_y) / winwid->old_zoom;

		/* copied from zoom_out, keyevents.c */
		winwid->zoom = winwid->zoom * 0.80;
		winwid->zoom = winwid->zoom / opt.zoom_rate;

		if (winwid->zoom < ZOOM_MIN)
			winwid->zoom = ZOOM_MIN;
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ OPTIONS
                           mode or when window geometry is fixed. If combined
                           with --auto-zoom, zooming will be limited to the
                           the size. Also support \"max\" and \"fill\"
     --zoom-rate RATIO     Zoom images in and out by RATIO (default: 1.25)
                           when using the zoom keys / buttons
     --keep-zoom-vp        Keep viewport zoom and settings while changing images
 -w, --multiwindow         Open all files at once, one window per image
 -x, --borderless          Create borderless windows
+2 −2
Original line number Diff line number Diff line
@@ -603,7 +603,7 @@ void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysy
	}
	else if (feh_is_kp(EVENT_zoom_in, state, keysym, button)) {
		winwid->old_zoom = winwid->zoom;
		winwid->zoom = winwid->zoom * 1.25;
		winwid->zoom = winwid->zoom * opt.zoom_rate;

		if (winwid->zoom > ZOOM_MAX)
			winwid->zoom = ZOOM_MAX;
@@ -617,7 +617,7 @@ void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysy
	}
	else if (feh_is_kp(EVENT_zoom_out, state, keysym, button)) {
		winwid->old_zoom = winwid->zoom;
		winwid->zoom = winwid->zoom * 0.80;
		winwid->zoom = winwid->zoom / opt.zoom_rate;

		if (winwid->zoom < ZOOM_MIN)
			winwid->zoom = ZOOM_MIN;
+211 −199
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ void init_parse_options(int argc, char **argv)
	opt.font = NULL;
	opt.max_height = opt.max_width = UINT_MAX;

	opt.zoom_rate = 1.25;

	opt.start_list_at = NULL;
	opt.jump_on_resort = 1;

@@ -330,110 +332,111 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)

	/* (*name, has_arg, *flag, val) See: struct option in getopts.h */
	static struct option lopts[] = {
		{"debug"         , 0, 0, '+'},
		{"scale-down"    , 0, 0, '.'},
		{"max-dimension" , 1, 0, '<'},
		{"min-dimension" , 1, 0, '>'},
		{"title-font"    , 1, 0, '@'},
		{"action"        , 1, 0, 'A'},
		{"image-bg"      , 1, 0, 'B'},
		{"fontpath"      , 1, 0, 'C'},
		{"slideshow-delay",1, 0, 'D'},
		{"thumb-height"  , 1, 0, 'E'},
		{"full-screen"   , 0, 0, 'F'}, /* deprecated */
		{"fullscreen"    , 0, 0, 'F'},
		{"draw-actions"  , 0, 0, 'G'},
		{"limit-height"  , 1, 0, 'H'},
		{"fullindex"     , 0, 0, 'I'},
		{"thumb-redraw"  , 1, 0, 'J'},
		{"caption-path"  , 1, 0, 'K'},
		{"customlist"    , 1, 0, 'L'},
		{"menu-font"     , 1, 0, 'M'},
		{"no-menus"      , 0, 0, 'N'},
		{"output-only"   , 1, 0, 'O'},
		{"cache-thumbnails", 0, 0, 'P'},
		{"reload"        , 1, 0, 'R'},
		{"sort"          , 1, 0, 'S'},
		{"theme"         , 1, 0, 'T'},
		{"loadable"      , 0, 0, 'U'},
		{"verbose"       , 0, 0, 'V'},
		{"limit-width"   , 1, 0, 'W'},
		{"ignore-aspect" , 0, 0, 'X'},
		{"hide-pointer"  , 0, 0, 'Y'},
		{"auto-zoom"     , 0, 0, 'Z'},
		{"title"         , 1, 0, '^'},
		{"alpha"         , 1, 0, 'a'},
		{"bg"            , 1, 0, 'b'},
		{"draw-filename" , 0, 0, 'd'},
		{"font"          , 1, 0, 'e'},
		{"filelist"      , 1, 0, 'f'},
		{"geometry"      , 1, 0, 'g'},
		{"help"          , 0, 0, 'h'},
		{"index"         , 0, 0, 'i'},
		{"output-dir"    , 1, 0, 'j'},
		{"keep-http"     , 0, 0, 'k'},
		{"list"          , 0, 0, 'l'},
		{"montage"       , 0, 0, 'm'},
		{"reverse"       , 0, 0, 'n'},
		{"output"        , 1, 0, 'o'},
		{"preload"       , 0, 0, 'p'},
		{"quiet"         , 0, 0, 'q'},
		{"recursive"     , 0, 0, 'r'},
		{"stretch"       , 0, 0, 's'},
		{"thumbnails"    , 0, 0, 't'},
		{"unloadable"    , 0, 0, 'u'},
		{"version"       , 0, 0, 'v'},
		{"multiwindow"   , 0, 0, 'w'},
		{"borderless"    , 0, 0, 'x'},
		{"thumb-width"   , 1, 0, 'y'},
		{"randomize"     , 0, 0, 'z'},
		{"start-at"      , 1, 0, '|'},
		{"thumb-title"   , 1, 0, '~'},
		{"bg-tile"       , 0, 0, 200},
		{"bg-center"     , 0, 0, 201},
		{"bg-scale"      , 0, 0, 202},
		{"zoom"          , 1, 0, 205},
		{"no-screen-clip", 0, 0, 206},
		{"index-info"    , 1, 0, 207},
		{"magick-timeout", 1, 0, 208},
		{"action1"       , 1, 0, 209},
		{"action2"       , 1, 0, 210},
		{"action3"       , 1, 0, 211},
		{"action4"       , 1, 0, 212},
		{"action5"       , 1, 0, 213},
		{"action6"       , 1, 0, 214},
		{"action7"       , 1, 0, 215},
		{"action8"       , 1, 0, 216},
		{"action9"       , 1, 0, 217},
		{"bg-fill"       , 0, 0, 218},
		{"bg-max"        , 0, 0, 219},
		{"no-jump-on-resort", 0, 0, 220},
		{"edit"          , 0, 0, 221},
		{"debug"         , 0, 0, OPTION_debug},
		{"scale-down"    , 0, 0, OPTION_scale_down},
		{"max-dimension" , 1, 0, OPTION_max_dimension},
		{"min-dimension" , 1, 0, OPTION_min_dimension},
		{"title-font"    , 1, 0, OPTION_title_font},
		{"action"        , 1, 0, OPTION_action},
		{"image-bg"      , 1, 0, OPTION_image_bg},
		{"fontpath"      , 1, 0, OPTION_fontpath},
		{"slideshow-delay",1, 0, OPTION_slideshow_delay},
		{"thumb-height"  , 1, 0, OPTION_thumb_height},
		{"full-screen"   , 0, 0, OPTION_fullscreen}, /* deprecated */
		{"fullscreen"    , 0, 0, OPTION_fullscreen},
		{"draw-actions"  , 0, 0, OPTION_draw_actions},
		{"limit-height"  , 1, 0, OPTION_limit_height},
		{"fullindex"     , 0, 0, OPTION_fullindex},
		{"thumb-redraw"  , 1, 0, OPTION_thumb_redraw},
		{"caption-path"  , 1, 0, OPTION_caption_path},
		{"customlist"    , 1, 0, OPTION_customlist},
		{"menu-font"     , 1, 0, OPTION_menu_font},
		{"no-menus"      , 0, 0, OPTION_no_menus},
		{"output-only"   , 1, 0, OPTION_output_only},
		{"cache-thumbnails", 0, 0, OPTION_cache_thumbnails},
		{"reload"        , 1, 0, OPTION_reload},
		{"sort"          , 1, 0, OPTION_sort},
		{"theme"         , 1, 0, OPTION_theme},
		{"loadable"      , 0, 0, OPTION_loadable},
		{"verbose"       , 0, 0, OPTION_verbose},
		{"limit-width"   , 1, 0, OPTION_limit_width},
		{"ignore-aspect" , 0, 0, OPTION_ignore_aspect},
		{"hide-pointer"  , 0, 0, OPTION_hide_pointer},
		{"auto-zoom"     , 0, 0, OPTION_auto_zoom},
		{"title"         , 1, 0, OPTION_title},
		{"alpha"         , 1, 0, OPTION_alpha},
		{"bg"            , 1, 0, OPTION_bg},
		{"draw-filename" , 0, 0, OPTION_draw_filename},
		{"font"          , 1, 0, OPTION_font},
		{"filelist"      , 1, 0, OPTION_filelist},
		{"geometry"      , 1, 0, OPTION_geometry},
		{"help"          , 0, 0, OPTION_help},
		{"index"         , 0, 0, OPTION_index},
		{"output-dir"    , 1, 0, OPTION_output_dir},
		{"keep-http"     , 0, 0, OPTION_keep_http},
		{"list"          , 0, 0, OPTION_list},
		{"montage"       , 0, 0, OPTION_montage},
		{"reverse"       , 0, 0, OPTION_reverse},
		{"output"        , 1, 0, OPTION_output},
		{"preload"       , 0, 0, OPTION_preload},
		{"quiet"         , 0, 0, OPTION_quiet},
		{"recursive"     , 0, 0, OPTION_recursive},
		{"stretch"       , 0, 0, OPTION_stretch},
		{"thumbnails"    , 0, 0, OPTION_thumbnails},
		{"unloadable"    , 0, 0, OPTION_unloadable},
		{"version"       , 0, 0, OPTION_version},
		{"multiwindow"   , 0, 0, OPTION_multiwindow},
		{"borderless"    , 0, 0, OPTION_borderless},
		{"thumb-width"   , 1, 0, OPTION_thumb_width},
		{"randomize"     , 0, 0, OPTION_randomize},
		{"start-at"      , 1, 0, OPTION_start_at},
		{"thumb-title"   , 1, 0, OPTION_thumb_title},
		{"bg-tile"       , 0, 0, OPTION_bg_title},
		{"bg-center"     , 0, 0, OPTION_bg_center},
		{"bg-scale"      , 0, 0, OPTION_bg_scale},
		{"zoom"          , 1, 0, OPTION_zoom},
		{"zoom-rate"     , 1, 0, OPTION_zoom_rate},
		{"no-screen-clip", 0, 0, OPTION_no_screen_clip},
		{"index-info"    , 1, 0, OPTION_index_info},
		{"magick-timeout", 1, 0, OPTION_magick_timeout},
		{"action1"       , 1, 0, OPTION_action1},
		{"action2"       , 1, 0, OPTION_action2},
		{"action3"       , 1, 0, OPTION_action3},
		{"action4"       , 1, 0, OPTION_action4},
		{"action5"       , 1, 0, OPTION_action5},
		{"action6"       , 1, 0, OPTION_action6},
		{"action7"       , 1, 0, OPTION_action7},
		{"action8"       , 1, 0, OPTION_action8},
		{"action9"       , 1, 0, OPTION_action9},
		{"bg-fill"       , 0, 0, OPTION_bg_fill},
		{"bg-max"        , 0, 0, OPTION_bg_max},
		{"no-jump-on-resort", 0, 0, OPTION_no_jump_on_resort},
		{"edit"          , 0, 0, OPTION_edit},
#ifdef HAVE_LIBEXIF
		{"draw-exif"     , 0, 0, 223},
		{"auto-rotate"   , 0, 0, 242},
		{"draw-exif"     , 0, 0, OPTION_draw_exif},
		{"auto-rotate"   , 0, 0, OPTION_auto_rotate},
#endif
		{"no-xinerama"   , 0, 0, 225},
		{"draw-tinted"   , 0, 0, 229},
		{"info"          , 1, 0, 234},
		{"force-aliasing", 0, 0, 235},
		{"no-fehbg"      , 0, 0, 236},
		{"keep-zoom-vp"  , 0, 0, 237},
		{"scroll-step"   , 1, 0, 238},
		{"xinerama-index", 1, 0, 239},
		{"insecure"      , 0, 0, 240},
		{"no-recursive"  , 0, 0, 241},
		{"cache-size"    , 1, 0, 243},
		{"on-last-slide" , 1, 0, 244},
		{"conversion-timeout" , 1, 0, 245},
		{"version-sort"  , 0, 0, 246},
		{"offset"        , 1, 0, 247},
		{"no-xinerama"   , 0, 0, OPTION_no_xinerama},
		{"draw-tinted"   , 0, 0, OPTION_draw_tinted},
		{"info"          , 1, 0, OPTION_info},
		{"force-aliasing", 0, 0, OPTION_force_aliasing},
		{"no-fehbg"      , 0, 0, OPTION_no_fehbg},
		{"keep-zoom-vp"  , 0, 0, OPTION_keep_zoom_vp},
		{"scroll-step"   , 1, 0, OPTION_scroll_step},
		{"xinerama-index", 1, 0, OPTION_xinerama_index},
		{"insecure"      , 0, 0, OPTION_insecure},
		{"no-recursive"  , 0, 0, OPTION_recursive},
		{"cache-size"    , 1, 0, OPTION_cache_size},
		{"on-last-slide" , 1, 0, OPTION_on_last_slide},
		{"conversion-timeout" , 1, 0, OPTION_conversion_timeout},
		{"version-sort"  , 0, 0, OPTION_version_sort},
		{"offset"        , 1, 0, OPTION_offset},
#ifdef HAVE_INOTIFY
		{"auto-reload"   , 0, 0, 248},
		{"auto-reload"   , 0, 0, OPTION_auto_reload},
#endif
		{"class"         , 1, 0, 249},
		{"no-conversion-cache", 0, 0, 250},
		{"window-id", 1, 0, 251},
		{"class"         , 1, 0, OPTION_class},
		{"no-conversion-cache", 0, 0, OPTION_no_conversion_cache},
		{"window-id", 1, 0, OPTION_window_id},
		{0, 0, 0, 0}
	};
	int optch = 0, cmdx = 0;
@@ -443,10 +446,10 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
		switch (optch) {
		case 0:
			break;
		case '+':
		case OPTION_debug:
			opt.debug = 1;
			break;
		case '<':
		case OPTION_max_dimension:
			opt.filter_by_dimensions = 1;
			XParseGeometry(optarg, &discard, &discard, &opt.max_width, &opt.max_height);
			if (opt.max_width == 0)
@@ -454,27 +457,27 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
			if (opt.max_height == 0)
				opt.max_height = UINT_MAX;
			break;
		case '>':
		case OPTION_min_dimension:
			opt.filter_by_dimensions = 1;
			XParseGeometry(optarg, &discard, &discard, &opt.min_width, &opt.min_height);
			break;
		case '.':
		case OPTION_scale_down:
			opt.scale_down = 1;
			break;
		case '@':
		case OPTION_title_font:
			opt.title_font = estrdup(optarg);
			break;
		case 'A':
		case OPTION_action:
			opt.actions[0] = estrdup(optarg);
			break;
		case 'B':
		case OPTION_image_bg:
			opt.image_bg = estrdup(optarg);
			break;
		case 'C':
		case OPTION_fontpath:
			D(("adding fontpath %s\n", optarg));
			imlib_add_path_to_font_path(optarg);
			break;
		case 'D':
		case OPTION_slideshow_delay:
			opt.slideshow_delay = atof(optarg);
			if (opt.slideshow_delay < 0.0) {
				opt.slideshow_delay *= (-1);
@@ -483,55 +486,55 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
				opt.paused = 0;
			}
			break;
		case 'E':
		case OPTION_thumb_height:
			opt.thumb_h = atoi(optarg);
			break;
		case 'F':
		case OPTION_fullscreen:
			opt.full_screen = 1;
			break;
		case 'G':
		case OPTION_draw_actions:
			opt.draw_actions = 1;
			break;
		case 'H':
		case OPTION_limit_height:
			opt.limit_h = atoi(optarg);
			break;
		case 'I':
		case OPTION_fullindex:
			opt.index = 1;
			opt.index_info = estrdup("%n\n%S\n%wx%h");
			break;
		case 'J':
		case OPTION_thumb_redraw:
			opt.thumb_redraw = atoi(optarg);
			break;
		case 'K':
		case OPTION_caption_path:
			opt.caption_path = estrdup(optarg);
			break;
		case 'L':
		case OPTION_customlist:
			opt.customlist = estrdup(optarg);
			opt.display = 0;
			break;
		case 'M':
		case OPTION_menu_font:
			free(opt.menu_font);
			opt.menu_font = estrdup(optarg);
			break;
		case 'N':
		case OPTION_no_menus:
			opt.no_menus = 1;
			break;
		case 'O':
		case OPTION_output_only:
			opt.output = 1;
			opt.output_file = estrdup(optarg);
			opt.display = 0;
			break;
		case 'P':
		case OPTION_cache_thumbnails:
			opt.cache_thumbnails = 1;
			break;
		case 'R':
		case OPTION_reload:
			opt.reload = atof(optarg);
			opt.use_conversion_cache = 0;
#ifdef HAVE_INOTIFY
			opt.auto_reload = 0;
#endif
			break;
		case 'S':
		case OPTION_sort:
			if (!strcasecmp(optarg, "name"))
				opt.sort = SORT_NAME;
			else if (!strcasecmp(optarg, "filename"))
@@ -561,116 +564,116 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
				opt.randomize = 0;
			}
			break;
		case 'T':
		case OPTION_theme:
			theme = estrdup(optarg);
			break;
		case 'U':
		case OPTION_loadable:
			opt.loadables = 1;
			opt.display = 0;
			break;
		case 'V':
		case OPTION_verbose:
			opt.verbose = 1;
			break;
		case 'W':
		case OPTION_limit_width:
			opt.limit_w = atoi(optarg);
			break;
		case 'X':
		case OPTION_ignore_aspect:
			opt.aspect = 0;
			break;
		case 'Y':
		case OPTION_hide_pointer:
			opt.hide_pointer = 1;
			break;
		case 'Z':
		case OPTION_auto_zoom:
			opt.zoom_mode = ZOOM_MODE_MAX;
			break;
		case '^':
		case OPTION_title:
			opt.title = estrdup(optarg);
			break;
		case 'a':
		case OPTION_alpha:
			opt.alpha = 1;
			opt.alpha_level = 255 - atoi(optarg);
			break;
		case 'b':
		case OPTION_bg:
			opt.bg = 1;
			opt.bg_file = estrdup(optarg);
			break;
		case 'd':
		case OPTION_draw_filename:
			opt.draw_filename = 1;
			break;
		case 'e':
		case OPTION_font:
			opt.font = estrdup(optarg);
			break;
		case 'f':
		case OPTION_filelist:
			if (!strcmp(optarg, "-"))
				opt.filelistfile = estrdup("/dev/stdin");
			else
				opt.filelistfile = estrdup(optarg);
			break;
		case 'g':
		case OPTION_geometry:
			opt.geom_enabled = 1;
			opt.geom_flags = XParseGeometry(optarg, &opt.geom_x,
					&opt.geom_y, &opt.geom_w, &opt.geom_h);
			break;
		case 'h':
		case OPTION_help:
			show_usage();
			break;
		case 'i':
		case OPTION_index:
			opt.index = 1;
			opt.index_info = estrdup("%n");
			break;
		case 'j':
		case OPTION_output_dir:
			opt.output_dir = estrdup(optarg);
			break;
		case 'k':
		case OPTION_keep_http:
			opt.keep_http = 1;
			break;
		case 'l':
		case OPTION_list:
			opt.list = 1;
			opt.display = 0;
			break;
		case 'm':
		case OPTION_montage:
			opt.index = 1;
			break;
		case 'n':
		case OPTION_reverse:
			opt.reverse = 1;
			break;
		case 'o':
		case OPTION_output:
			opt.output = 1;
			opt.output_file = estrdup(optarg);
			break;
		case 'p':
		case OPTION_preload:
			opt.preload = 1;
			break;
		case 'q':
		case OPTION_quiet:
			opt.quiet = 1;
			break;
		case 'r':
		case OPTION_recursive:
			opt.recursive = 1;
			break;
		case 's':
		case OPTION_stretch:
			opt.stretch = 1;
			break;
		case 't':
		case OPTION_thumbnails:
			opt.thumbs = 1;
			opt.index_info = estrdup("%n");
			break;
		case 'u':
		case OPTION_unloadable:
			opt.unloadables = 1;
			opt.display = 0;
			break;
		case 'v':
		case OPTION_version:
			show_version();
			break;
		case 'w':
		case OPTION_multiwindow:
			opt.multiwindow = 1;
			break;
		case 'x':
		case OPTION_borderless:
			opt.borderless = 1;
			break;
		case 'y':
		case OPTION_thumb_width:
			opt.thumb_w = atoi(optarg);
			break;
		case 'z':
		case OPTION_randomize:
			opt.randomize = 1;
			if (opt.sort != SORT_NONE) {
				weprintf("commandline contains --sort and --randomize. "
@@ -678,22 +681,22 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
				opt.sort = SORT_NONE;
			}
			break;
		case '|':
		case OPTION_start_at:
			opt.start_list_at = estrdup(optarg);
			break;
		case '~':
		case OPTION_thumb_title:
			opt.thumb_title = estrdup(optarg);
			break;
		case 200:
		case OPTION_bg_title:
			opt.bgmode = BG_MODE_TILE;
			break;
		case 201:
		case OPTION_bg_center:
			opt.bgmode = BG_MODE_CENTER;
			break;
		case 202:
		case OPTION_bg_scale:
			opt.bgmode = BG_MODE_SCALE;
			break;
		case 205:
		case OPTION_zoom:
			if (!strcmp("fill", optarg))
				opt.zoom_mode = ZOOM_MODE_FILL;
			else if (!strcmp("max", optarg))
@@ -701,70 +704,70 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
			else
				opt.default_zoom = atoi(optarg);
			break;
		case 206:
		case OPTION_no_screen_clip:
			opt.screen_clip = 0;
			break;
		case 207:
		case OPTION_index_info:
			opt.index_info = estrdup(optarg);
			break;
		case 208:
		case OPTION_magick_timeout:
			weprintf("--magick-timeout is deprecated, please use --conversion-timeout instead");
			opt.conversion_timeout = atoi(optarg);
			break;
		case 209:
		case OPTION_action1:
			opt.actions[1] = estrdup(optarg);
			break;
		case 210:
		case OPTION_action2:
			opt.actions[2] = estrdup(optarg);
			break;
		case 211:
		case OPTION_action3:
			opt.actions[3] = estrdup(optarg);
			break;
		case 212:
		case OPTION_action4:
			opt.actions[4] = estrdup(optarg);
			break;
		case 213:
		case OPTION_action5:
			opt.actions[5] = estrdup(optarg);
			break;
		case 214:
		case OPTION_action6:
			opt.actions[6] = estrdup(optarg);
			break;
		case 215:
		case OPTION_action7:
			opt.actions[7] = estrdup(optarg);
			break;
		case 216:
		case OPTION_action8:
			opt.actions[8] = estrdup(optarg);
			break;
		case 217:
		case OPTION_action9:
			opt.actions[9] = estrdup(optarg);
			break;
		case 218:
		case OPTION_bg_fill:
			opt.bgmode = BG_MODE_FILL;
			break;
		case 219:
		case OPTION_bg_max:
			opt.bgmode = BG_MODE_MAX;
			break;
		case 220:
		case OPTION_no_jump_on_resort:
			opt.jump_on_resort = 0;
			break;
		case 221:
		case OPTION_edit:
			opt.edit = 1;
			break;
#ifdef HAVE_LIBEXIF
		case 223:
		case OPTION_draw_exif:
			opt.draw_exif = 1;
			break;
		case 242:
		case OPTION_auto_rotate:
			opt.auto_rotate = 1;
			break;
#endif
		case 225:
		case OPTION_no_xinerama:
			opt.xinerama = 0;
			break;
		case 229:
		case OPTION_draw_tinted:
			opt.text_bg = TEXT_BG_TINTED;
			break;
		case 234:
		case OPTION_info:
			opt.info_cmd = estrdup(optarg);
			if (opt.info_cmd[0] == ';') {
				opt.draw_info = 0;
@@ -773,35 +776,35 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
				opt.draw_info = 1;
			}
			break;
		case 235:
		case OPTION_force_aliasing:
			opt.force_aliasing = 1;
			break;
		case 236:
		case OPTION_no_fehbg:
			opt.no_fehbg = 1;
			break;
		case 237:
		case OPTION_keep_zoom_vp:
			opt.keep_zoom_vp = 1;
			break;
		case 238:
		case OPTION_scroll_step:
			opt.scroll_step = atoi(optarg);
			break;
		case 239:
		case OPTION_xinerama_index:
			opt.xinerama_index = atoi(optarg);
			break;
		case 240:
		case OPTION_insecure:
			opt.insecure_ssl = 1;
			break;
		case 241:
		case OPTION_no_recursive:
			opt.recursive = 0;
			break;
		case 243:
		case OPTION_cache_size:
			opt.cache_size = atoi(optarg);
			if (opt.cache_size < 0)
				opt.cache_size = 0;
			if (opt.cache_size > 2048)
				opt.cache_size = 2048;
			break;
		case 244:
		case OPTION_on_last_slide:
			if (!strcmp(optarg, "quit")) {
				opt.on_last_slide = ON_LAST_SLIDE_QUIT;
			} else if (!strcmp(optarg, "hold")) {
@@ -813,30 +816,39 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
						"Supported actions: hold, resume, quit\n", optarg);
			}
			break;
		case 245:
		case OPTION_conversion_timeout:
			opt.conversion_timeout = atoi(optarg);
			break;
		case 246:
		case OPTION_version_sort:
			opt.version_sort = 1;
			break;
		case 247:
		case OPTION_offset:
			opt.offset_flags = XParseGeometry(optarg, &opt.offset_x,
					&opt.offset_y, (unsigned int *)&discard, (unsigned int *)&discard);
			break;
#ifdef HAVE_INOTIFY
		case 248:
		case OPTION_auto_reload:
			opt.auto_reload = 1;
			break;
#endif
		case 249:
		case OPTION_class:
			opt.x11_class = estrdup(optarg);
			break;
		case 250:
		case OPTION_no_conversion_cache:
			opt.use_conversion_cache = 0;
			break;
		case 251:
		case OPTION_window_id:
			opt.x11_windowid = atol(optarg);
			break;
		case OPTION_zoom_rate:
			opt.zoom_rate = atof(optarg);
			if ((opt.zoom_rate <= 0.0) || (opt.zoom_rate == 1.0)) {
				weprintf("Zooming disabled due to --zoom-rate=%f", opt.zoom_rate);
				opt.zoom_rate = 1.0;
			} else if (opt.zoom_rate < 1.0) {
				opt.zoom_rate = 1.0 / opt.zoom_rate;
			}
			break;
		default:
			break;
		}
Loading