diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/wallpaper.c | 145 | 
1 files changed, 73 insertions, 72 deletions
| diff --git a/src/wallpaper.c b/src/wallpaper.c index ac9c4de..a34f033 100644 --- a/src/wallpaper.c +++ b/src/wallpaper.c @@ -252,87 +252,88 @@ static void feh_wm_set_bg_maxed(Pixmap pmap, Imlib_Image im, int use_filelist,  void feh_wm_gen_bg_script(char* fil, int centered, int scaled, int filled, int use_filelist) {  	char * home = getenv("HOME"); -	if (home) { -		FILE *fp; -		int fd; -		char *path; -		char *exec_absolute_path; -		char *absolute_path; -		struct stat s; -		gib_list *filelist_pos = filelist; -		exec_absolute_path = feh_absolute_path(cmdargv[0]); -		path = estrjoin("/", home, ".fehbg", NULL); -		if ((fp = fopen(path, "w")) == NULL) { -			weprintf("Can't write to %s", path); -		} else { -			fputs("#!/bin/sh\n", fp); -			fputs(exec_absolute_path, fp); -			fputs(" --no-fehbg --bg-", fp); -			if (centered) -				fputs("center", fp); -			else if (scaled) -				fputs("scale", fp); -			else if (filled == 1) -				fputs("fill", fp); -			else if (filled == 2) -				fputs("max", fp); -			else -				fputs("tile", fp); -			if (opt.image_bg) { -				fputs(" --image-bg ", fp); -				fputs(shell_escape(opt.image_bg), fp); -			} +	if (!home) +		return; + +	FILE *fp; +	int fd; +	char *path; +	char *exec_absolute_path; +	char *absolute_path; +	struct stat s; +	gib_list *filelist_pos = filelist; +	exec_absolute_path = feh_absolute_path(cmdargv[0]); +	path = estrjoin("/", home, ".fehbg", NULL); +	if ((fp = fopen(path, "w")) == NULL) { +		weprintf("Can't write to %s", path); +	} else { +		fputs("#!/bin/sh\n", fp); +		fputs(exec_absolute_path, fp); +		fputs(" --no-fehbg --bg-", fp); +		if (centered) +			fputs("center", fp); +		else if (scaled) +			fputs("scale", fp); +		else if (filled == 1) +			fputs("fill", fp); +		else if (filled == 2) +			fputs("max", fp); +		else +			fputs("tile", fp); +		if (opt.image_bg) { +			fputs(" --image-bg ", fp); +			fputs(shell_escape(opt.image_bg), fp); +		}  #ifdef HAVE_LIBXINERAMA -			if (opt.xinerama) { -				if (opt.xinerama_index >= 0) { -					fprintf(fp, " --xinerama-index %d", opt.xinerama_index); -				} -			} -			else { -				fputs(" --no-xinerama", fp); +		if (opt.xinerama) { +			if (opt.xinerama_index >= 0) { +				fprintf(fp, " --xinerama-index %d", opt.xinerama_index);  			} +		} +		else { +			fputs(" --no-xinerama", fp); +		}  #endif			/* HAVE_LIBXINERAMA */ -			if (opt.geom_flags & XValue) { -				fprintf(fp, " --geometry %c%d", -						opt.geom_flags & XNegative ? '-' : '+', -						opt.geom_flags & XNegative ? abs(opt.geom_x) : opt.geom_x); -				if (opt.geom_flags & YValue) { -					fprintf(fp, "%c%d", -							opt.geom_flags & YNegative ? '-' : '+', -							opt.geom_flags & YNegative ? abs(opt.geom_y) : opt.geom_y); -				} -			} -			if (opt.force_aliasing) { -				fputs(" --force-aliasing", fp); +		if (opt.geom_flags & XValue) { +			fprintf(fp, " --geometry %c%d", +					opt.geom_flags & XNegative ? '-' : '+', +					opt.geom_flags & XNegative ? abs(opt.geom_x) : opt.geom_x); +			if (opt.geom_flags & YValue) { +				fprintf(fp, "%c%d", +						opt.geom_flags & YNegative ? '-' : '+', +						opt.geom_flags & YNegative ? abs(opt.geom_y) : opt.geom_y);  			} -			fputc(' ', fp); -			if (use_filelist) { +		} +		if (opt.force_aliasing) { +			fputs(" --force-aliasing", fp); +		} +		fputc(' ', fp); +		if (use_filelist) {  #ifdef HAVE_LIBXINERAMA -				for (int i = 0; (i < opt.xinerama ? num_xinerama_screens : 1) && filelist_pos; i++) +			for (int i = 0; (i < opt.xinerama ? num_xinerama_screens : 1) && filelist_pos; i++)  #else -					for (int i = 0; (i < 1                   ) && filelist_pos; i++) +				for (int i = 0; (i < 1                   ) && filelist_pos; i++)  #endif -					{ -						absolute_path = feh_absolute_path(FEH_FILE(filelist_pos->data)->filename); -						fputs(shell_escape(absolute_path), fp); -						filelist_pos = filelist_pos->next; -						free(absolute_path); -						fputc(' ', fp); -					} -			} else if (fil) { -				absolute_path = feh_absolute_path(fil); -				fputs(shell_escape(absolute_path), fp); -				free(absolute_path); -			} -			fputc('\n', fp); -			fd = fileno(fp); -			if (fstat(fd, &s) != 0 || fchmod(fd, s.st_mode | S_IXUSR | S_IXGRP) != 0) { -				weprintf("Can't set %s as executable", path); -			} -			fclose(fp); +				{ +					absolute_path = feh_absolute_path(FEH_FILE(filelist_pos->data)->filename); +					fputs(shell_escape(absolute_path), fp); +					filelist_pos = filelist_pos->next; +					free(absolute_path); +					fputc(' ', fp); +				} +		} else if (fil) { +			absolute_path = feh_absolute_path(fil); +			fputs(shell_escape(absolute_path), fp); +			free(absolute_path); +		} +		fputc('\n', fp); +		fd = fileno(fp); +		if (fstat(fd, &s) != 0 || fchmod(fd, s.st_mode | S_IXUSR | S_IXGRP) != 0) { +			weprintf("Can't set %s as executable", path);  		} -		free(path); +		fclose(fp);  	} +	free(path);  }  void feh_wm_set_bg(char *fil, Imlib_Image im, int centered, int scaled, | 
