diff options
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | man/feh.1 | 16 | ||||
| -rw-r--r-- | src/options.c | 3 | ||||
| -rw-r--r-- | src/options.h | 2 | ||||
| -rw-r--r-- | src/slideshow.c | 19 | 
5 files changed, 31 insertions, 14 deletions
| @@ -1,3 +1,8 @@ +git HEAD + +    * Fix memory leak related to the menu +    * Make --start-at work with filenames instead of list positions +  Thu Apr 22 22:28:09 CEST 2010  Daniel Friesel <derf@chaosdorf.de>  * Release v1.4.3 @@ -123,10 +123,11 @@ when  .Nm  exits.  You can add files to filelists by specifying them on the commandline  when also specifying the list. -.It Cm -| , --start-at Ar position -Start at -.Ar position -in the filelist. +.It Cm -| , --start-at Ar filename +Start the filelist at +.Ar filename . +See +.Sx USAGE EXAMPLES .  .It Cm -p , --preload  Preload images.  This doesn't mean hold them in RAM, it means run through  them and eliminate unloadable images first.  Otherwise they will be removed @@ -670,7 +671,12 @@ Show the images in .../presentation, sorted by name, in fullscreen,  automatically change to the next image after 5 seconds  .It feh -rSwidth -A Qo mv '%f' ~/images/'%n' Qc /opt/images  View all images in /opt/images and below, sorted by width, move an image to -~/image/image_name when enter is pressed. +~/image/image_name when enter is pressed +.It feh --start-at ./foo.jpg \&. +View all images in the current directory, starting with foo.jpg.  All other +images are still in the slideshow and can be viewed normally +.It feh --start-at foo.jpg * +Same as above  .El  .  .Sh BUGS diff --git a/src/options.c b/src/options.c index 9afa33a..224af59 100644 --- a/src/options.c +++ b/src/options.c @@ -72,6 +72,7 @@ void init_parse_options(int argc, char **argv)  	opt.blur_button = 1;  	opt.no_blur_ctrl_mask = 0; +	opt.start_list_at = NULL;  	opt.no_jump_on_resort = 0;  	opt.builtin_http = 0; @@ -627,7 +628,7 @@ static void feh_parse_option_array(int argc, char **argv)  			opt.blur_button = atoi(optarg);  			break;  		case '|': -			opt.start_list_at = atoi(optarg); +			opt.start_list_at = estrdup(optarg);  			break;  		case 't':  			opt.thumbs = 1; diff --git a/src/options.h b/src/options.h index 55b997f..4a275e9 100644 --- a/src/options.h +++ b/src/options.h @@ -87,6 +87,7 @@ struct __fehoptions {  	char *rcfile;  	char *menu_style;  	char *caption_path; +	char *start_list_at;  	gib_style *menu_style_l; @@ -119,7 +120,6 @@ struct __fehoptions {  	int default_zoom;  	int menu_border;  	unsigned char adjust_reload; -	unsigned int start_list_at;  	unsigned char mode;  	unsigned char paused; diff --git a/src/slideshow.c b/src/slideshow.c index 0d509e4..e3791a1 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -34,18 +34,23 @@ void init_slideshow_mode(void)  	winwidget w = NULL;  	int success = 0;  	char *s = NULL; -	gib_list *l = NULL, *last = NULL; +	gib_list *l = filelist, *last = NULL;  	feh_file *file = NULL;  	D_ENTER(3); -	mode = "slideshow"; -	if (opt.start_list_at) { -		l = gib_list_nth(filelist, opt.start_list_at); -		opt.start_list_at = 0;	/* for next time */ -	} else { -		l = filelist; +	for (l = filelist; l && opt.start_list_at; l = l->next) { +		if (!strcmp(opt.start_list_at, FEH_FILE(l->data)->filename)) { +			opt.start_list_at = NULL; +			break; +		}  	} + +	if (opt.start_list_at) +		eprintf("--start-at %s: File not found in filelist", +				opt.start_list_at); + +	mode = "slideshow";  	for (; l; l = l->next) {  		file = FEH_FILE(l->data);  		if (last) { | 
