Commit a12feb1d authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Remove D_ENTER/D_RETURN, use gdb tracepoints + readelf/awk magic instead

parent c262680c
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -42,8 +42,6 @@ void init_collage_mode(void)
	gib_list *l, *last = NULL;
	char *s;

	D_ENTER(4);

	mode = "collage";

	/* Use bg image dimensions for default size */
@@ -207,5 +205,6 @@ void init_collage_mode(void)
	if (!opt.display)
		gib_imlib_free_image_and_decache(im_main);
	free(s);
	D_RETURN_(4);

	return;
}
+5 −54
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifndef DEBUG_H
#define DEBUG_H

/* #define DEBUG */

#ifdef WITH_DMALLOC
#include <dmalloc.h>
#define emalloc(a) malloc(a)
@@ -50,36 +48,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         fflush(stdout); \
      } \
  }
#define D_ENTER(i) \
  { \
     call_level++; \
     if(i <= opt.debug_level) \
     { \
         printf("%s +%u %s() %s ENTER\n",__FILE__,__LINE__,__FUNCTION__, stroflen('>', call_level)); \
         fflush(stdout); \
     } \
  }
#define D_RETURN(i, a) \
{ \
      if(i <= opt.debug_level) \
      { \
         printf("%s +%u %s() %s LEAVE\n",__FILE__,__LINE__,__FUNCTION__, stroflen('<', call_level)); \
         fflush(stdout); \
      } \
      call_level--; \
      return (a); \
  }
#define D_RETURN_(i) \
{ \
      if(i <= opt.debug_level) \
      { \
         printf("%s +%u %s() %s LEAVE\n",__FILE__,__LINE__,__FUNCTION__, stroflen('<', call_level)); \
         fflush(stdout); \
      } \
      call_level--; \
      return; \
  }
#else
#else					/* __GNUC__ */
#define D(i, a) \
{ \
   if(i <= opt.debug_level) \
@@ -89,27 +58,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   } \
      fflush(stdout); \
  }
#define D_ENTER(a)
#define D_RETURN(i, a) \
  { \
      return(a); \
  }
#define D_RETURN_(i) \
  { \
      return; \
  }
#endif
#else
#endif					/* __GNUC__ */
#else					/* DEBUG */
#define D(i,a)
#define D_ENTER(a)
#define D_RETURN(i, a) \
  { \
      return (a); \
  }
#define D_RETURN_(i) \
  { \
      return; \
  }
#endif
#endif					/* DEBUG */

#endif
#endif					/* DEBUG_H */
+13 −23
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ void feh_event_init(void)
{
	int i;

	D_ENTER(4);
	for (i = 0; i < LASTEvent; i++)
		ev_handler[i] = NULL;

@@ -58,7 +57,7 @@ void feh_event_init(void)
	ev_handler[MotionNotify] = feh_event_handle_MotionNotify;
	ev_handler[ClientMessage] = feh_event_handle_ClientMessage;

	D_RETURN_(4);
	return;
}

static void feh_event_handle_ButtonPress(XEvent * ev)
@@ -66,12 +65,10 @@ static void feh_event_handle_ButtonPress(XEvent * ev)
	winwidget winwid = NULL;
	int scr_width, scr_height;

	D_ENTER(4);

	/* get the heck out if it's a mouse-click on the
	   cover, we'll hide the menus on release */
	if (ev->xbutton.window == menu_cover) {
		D_RETURN_(4);
		return;
	}

	scr_width = scr->width;
@@ -85,7 +82,7 @@ static void feh_event_handle_ButtonPress(XEvent * ev)

	winwid = winwidget_get_from_window(ev->xbutton.window);
	if (winwid && winwid->caption_entry) {
		D_RETURN_(4);
		return;
	}

	if (!opt.no_menus && EV_IS_MENU_BUTTON(ev)) {
@@ -173,14 +170,13 @@ static void feh_event_handle_ButtonPress(XEvent * ev)
	} else {
		D(3, ("Received other ButtonPress event\n"));
	}
	D_RETURN_(4);
	return;
}

static void feh_event_handle_ButtonRelease(XEvent * ev)
{
	winwidget winwid = NULL;

	D_ENTER(4);
	if (menu_root) {
		/* if menus are open, close them, and execute action if needed */

@@ -196,12 +192,12 @@ static void feh_event_handle_ButtonRelease(XEvent * ev)
				feh_menu_item_activate(m, i);
			}
		}
		D_RETURN_(4);
		return;
	}

	winwid = winwidget_get_from_window(ev->xbutton.window);
	if (winwid && winwid->caption_entry) {
		D_RETURN_(4);
		return;
	}

	if ((ev->xbutton.button == opt.menu_button)
@@ -287,12 +283,11 @@ static void feh_event_handle_ButtonRelease(XEvent * ev)
			winwid->mode = MODE_NORMAL;
		}
	}
	D_RETURN_(4);
	return;
}

static void feh_event_handle_ConfigureNotify(XEvent * ev)
{
	D_ENTER(4);
	while (XCheckTypedWindowEvent(disp, ev->xconfigure.window, ConfigureNotify, ev));
	if (!menu_root) {
		winwidget w = winwidget_get_from_window(ev->xconfigure.window);
@@ -314,19 +309,16 @@ static void feh_event_handle_ConfigureNotify(XEvent * ev)
		}
	}

	D_RETURN_(4);
	return;
}

static void feh_event_handle_EnterNotify(XEvent * ev)
{
	D_ENTER(4);
	D_RETURN_(4);
	ev = NULL;
	return;
}

static void feh_event_handle_LeaveNotify(XEvent * ev)
{
	D_ENTER(4);
	if ((menu_root) && (ev->xcrossing.window == menu_root->win)) {
		feh_menu_item *ii;

@@ -343,7 +335,7 @@ static void feh_event_handle_LeaveNotify(XEvent * ev)
		feh_raise_all_menus();
	}

	D_RETURN_(4);
	return;
}

static void feh_event_handle_MotionNotify(XEvent * ev)
@@ -361,7 +353,6 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
	}
#endif				/* HAVE_LIBXINERAMA */

	D_ENTER(5);
	if (menu_root) {
		feh_menu *m;
		feh_menu_item *selected_item, *mouseover_item;
@@ -370,7 +361,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
		while (XCheckTypedWindowEvent(disp, ev->xmotion.window, MotionNotify, ev));

		if (ev->xmotion.window == menu_cover) {
			D_RETURN_(5);
			return;
		} else if ((m = feh_menu_get_from_window(ev->xmotion.window))) {
			selected_item = feh_menu_find_selected(m);
			mouseover_item = feh_menu_find_at_xy(m, ev->xmotion.x, ev->xmotion.y);
@@ -600,19 +591,18 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
			}
		}
	}
	D_RETURN_(5);
	return;
}

static void feh_event_handle_ClientMessage(XEvent * ev)
{
	winwidget winwid = NULL;

	D_ENTER(4);
	if (ev->xclient.format == 32 && ev->xclient.data.l[0] == (signed) wmDeleteWindow) {
		winwid = winwidget_get_from_window(ev->xclient.window);
		if (winwid)
			winwidget_destroy(winwid);
	}

	D_RETURN_(4);
	return;
}
+39 −68
Original line number Diff line number Diff line
@@ -39,8 +39,6 @@ feh_file *feh_file_new(char *filename)
	feh_file *newfile;
	char *s;

	D_ENTER(4);

	newfile = (feh_file *) emalloc(sizeof(feh_file));
	newfile->caption = NULL;
	newfile->filename = estrdup(filename);
@@ -50,14 +48,13 @@ feh_file *feh_file_new(char *filename)
	else
		newfile->name = estrdup(filename);
	newfile->info = NULL;
	D_RETURN(4, newfile);
	return(newfile);
}

void feh_file_free(feh_file * file)
{
	D_ENTER(4);
	if (!file)
		D_RETURN_(4);
		return;
	if (file->filename)
		free(file->filename);
	if (file->name)
@@ -67,14 +64,13 @@ void feh_file_free(feh_file * file)
	if (file->info)
		feh_file_info_free(file->info);
	free(file);
	D_RETURN_(4);
	return;
}

feh_file_info *feh_file_info_new(void)
{
	feh_file_info *info;

	D_ENTER(4);

	info = (feh_file_info *) emalloc(sizeof(feh_file_info));

@@ -86,36 +82,33 @@ feh_file_info *feh_file_info_new(void)
	info->format = NULL;
	info->extension = NULL;

	D_RETURN(4, info);
	return(info);
}

void feh_file_info_free(feh_file_info * info)
{
	D_ENTER(4);
	if (!info)
		D_RETURN_(4);
		return;
	if (info->format)
		free(info->format);
	if (info->extension)
		free(info->extension);
	free(info);
	D_RETURN_(4);
	return;
}

gib_list *feh_file_rm_and_free(gib_list * list, gib_list * l)
{
	D_ENTER(4);
	unlink(FEH_FILE(l->data)->filename);
	D_RETURN(4, feh_file_remove_from_list(list, l));
	return(feh_file_remove_from_list(list, l));
}

gib_list *feh_file_remove_from_list(gib_list * list, gib_list * l)
{
	D_ENTER(4);
	feh_file_free(FEH_FILE(l->data));
	D(4, ("filelist_len %d -> %d\n", filelist_len, filelist_len - 1));
	filelist_len--;
	D_RETURN(4, gib_list_remove(list, l));
	return(gib_list_remove(list, l));
}

/* Recursive */
@@ -124,9 +117,8 @@ void add_file_to_filelist_recursively(char *origpath, unsigned char level)
	struct stat st;
	char *path;

	D_ENTER(5);
	if (!origpath)
		D_RETURN_(5);
		return;

	path = estrdup(origpath);
	D(4, ("file is %s\n", path));
@@ -147,7 +139,7 @@ void add_file_to_filelist_recursively(char *origpath, unsigned char level)
			filelist = gib_list_add_front(filelist, feh_file_new(path));
			/* We'll download it later... */
			free(path);
			D_RETURN_(5);
			return;
		} else if (opt.filelistfile) {
			char *newpath = feh_absolute_path(path);

@@ -179,7 +171,7 @@ void add_file_to_filelist_recursively(char *origpath, unsigned char level)
			break;
		}
		free(path);
		D_RETURN_(5);
		return;
	}

	if ((S_ISDIR(st.st_mode)) && (level != FILELIST_LAST)) {
@@ -192,7 +184,7 @@ void add_file_to_filelist_recursively(char *origpath, unsigned char level)
			if (!opt.quiet)
				weprintf("couldn't open directory %s:", path);
			free(path);
			D_RETURN_(5);
			return;
		}
		de = readdir(dir);
		while (de != NULL) {
@@ -219,24 +211,22 @@ void add_file_to_filelist_recursively(char *origpath, unsigned char level)
		filelist = gib_list_add_front(filelist, feh_file_new(path));
	}
	free(path);
	D_RETURN_(5);
	return;
}

void add_file_to_rm_filelist(char *file)
{
	D_ENTER(4);
	rm_filelist = gib_list_add_front(rm_filelist, feh_file_new(file));
	D_RETURN_(4);
	return;
}

void delete_rm_files(void)
{
	gib_list *l;

	D_ENTER(4);
	for (l = rm_filelist; l; l = l->next)
		unlink(FEH_FILE(l->data)->filename);
	D_RETURN_(4);
	return;
}

gib_list *feh_file_info_preload(gib_list * list)
@@ -245,7 +235,6 @@ gib_list *feh_file_info_preload(gib_list * list)
	feh_file *file = NULL;
	gib_list *remove_list = NULL;

	D_ENTER(4);
	if (opt.verbose)
		fprintf(stdout, PACKAGE " - preloading...\n");

@@ -270,7 +259,7 @@ gib_list *feh_file_info_preload(gib_list * list)
		gib_list_free(remove_list);
	}

	D_RETURN(4, list);
	return(list);
}

int feh_file_info_load(feh_file * file, Imlib_Image im)
@@ -279,8 +268,6 @@ int feh_file_info_load(feh_file * file, Imlib_Image im)
	int need_free = 1;
	Imlib_Image im1;

	D_ENTER(4);

	D(4, ("im is %p\n", im));

	if (im)
@@ -308,16 +295,16 @@ int feh_file_info_load(feh_file * file, Imlib_Image im)
				weprintf("couldn't open %s ", file->filename);
			break;
		}
		D_RETURN(4, 1);
		return(1);
	}

	if (im)
		im1 = im;
	else if (!feh_load_image(&im1, file))
		D_RETURN(4, 1);
		return(1);

	if (!im1)
		D_RETURN(4, 1);
		return(1);

	file->info = feh_file_info_new();

@@ -334,54 +321,46 @@ int feh_file_info_load(feh_file * file, Imlib_Image im)

	if (need_free && im1)
		gib_imlib_free_image_and_decache(im1);
	D_RETURN(4, 0);
	return(0);
}

int feh_cmp_filename(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, strcmp(FEH_FILE(file1)->filename, FEH_FILE(file2)->filename));
	return(strcmp(FEH_FILE(file1)->filename, FEH_FILE(file2)->filename));
}

int feh_cmp_name(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, strcmp(FEH_FILE(file1)->name, FEH_FILE(file2)->name));
	return(strcmp(FEH_FILE(file1)->name, FEH_FILE(file2)->name));
}

int feh_cmp_width(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, (FEH_FILE(file1)->info->width - FEH_FILE(file2)->info->width));
	return((FEH_FILE(file1)->info->width - FEH_FILE(file2)->info->width));
}

int feh_cmp_height(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, (FEH_FILE(file1)->info->height - FEH_FILE(file2)->info->height));
	return((FEH_FILE(file1)->info->height - FEH_FILE(file2)->info->height));
}

int feh_cmp_pixels(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, (FEH_FILE(file1)->info->pixels - FEH_FILE(file2)->info->pixels));
	return((FEH_FILE(file1)->info->pixels - FEH_FILE(file2)->info->pixels));
}

int feh_cmp_size(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, (FEH_FILE(file1)->info->size - FEH_FILE(file2)->info->size));
	return((FEH_FILE(file1)->info->size - FEH_FILE(file2)->info->size));
}

int feh_cmp_format(void *file1, void *file2)
{
	D_ENTER(4);
	D_RETURN(4, strcmp(FEH_FILE(file1)->info->format, FEH_FILE(file2)->info->format));
	return(strcmp(FEH_FILE(file1)->info->format, FEH_FILE(file2)->info->format));
}

void feh_prepare_filelist(void)
{
	D_ENTER(4);
	if (opt.list || opt.customlist || (opt.sort > SORT_FILENAME)
			|| opt.preload) {
		/* For these sort options, we have to preload images */
@@ -432,7 +411,7 @@ void feh_prepare_filelist(void)
		filelist = gib_list_reverse(filelist);
	}

	D_RETURN_(4);
	return;
}

int feh_write_filelist(gib_list * list, char *filename)
@@ -440,15 +419,13 @@ int feh_write_filelist(gib_list * list, char *filename)
	FILE *fp;
	gib_list *l;

	D_ENTER(4);

	if (!list || !filename)
		D_RETURN(4, 0);
		return(0);

	errno = 0;
	if ((fp = fopen(filename, "w")) == NULL) {
		weprintf("can't write filelist %s:", filename);
		D_RETURN(4, 0);
		return(0);
	}

	for (l = list; l; l = l->next)
@@ -456,7 +433,7 @@ int feh_write_filelist(gib_list * list, char *filename)

	fclose(fp);

	D_RETURN(4, 1);
	return(1);
}

gib_list *feh_read_filelist(char *filename)
@@ -466,10 +443,8 @@ gib_list *feh_read_filelist(char *filename)
	char s[1024], s1[1024];
	Imlib_Image im1;

	D_ENTER(4);

	if (!filename)
		D_RETURN(4, NULL);
		return(NULL);

	/* try and load the given filelist as an image, cowardly refuse to
	 * overwrite an image with a filelist. (requested by user who did feh -df *
@@ -481,14 +456,14 @@ gib_list *feh_read_filelist(char *filename)
				"The file you specified as a filelist to read - %s - appears to be an image. Ignoring it (this is a common mistake).\n",
				filename);
		opt.filelistfile = NULL;
		D_RETURN(4, NULL);
		return(NULL);
	}

	errno = 0;
	if ((fp = fopen(filename, "r")) == NULL) {
		/* return quietly, as it's okay to specify a filelist file that doesn't
		   exist. In that case we create it on exit. */
		D_RETURN(4, NULL);
		return(NULL);
	}

	for (; fgets(s, sizeof(s), fp);) {
@@ -503,7 +478,7 @@ gib_list *feh_read_filelist(char *filename)
	}
	fclose(fp);

	D_RETURN(4, list);
	return(list);
}

char *feh_absolute_path(char *path)
@@ -513,12 +488,10 @@ char *feh_absolute_path(char *path)
	char temp[PATH_MAX];
	char *ret;

	D_ENTER(4);

	if (!path)
		D_RETURN(4, NULL);
		return(NULL);
	if (path[0] == '/')
		D_RETURN(4, estrdup(path));
		return(estrdup(path));
	/* This path is not relative. We're gonna convert it, so that a
	   filelist file can be saved anywhere and feh will still find the
	   images */
@@ -534,15 +507,13 @@ char *feh_absolute_path(char *path)
		ret = estrdup(temp);
	}
	D(4, ("Converted path to %s\n", ret));
	D_RETURN(4, ret);
	return(ret);
}

void feh_save_filelist()
{
	char *tmpname;

	D_ENTER(4);

	tmpname = feh_unique_filename("", "filelist");

	if (!opt.quiet)
@@ -550,5 +521,5 @@ void feh_save_filelist()

	feh_write_filelist(filelist, tmpname);
	free(tmpname);
	D_RETURN_(4);
	return;
}
+41 −63
Original line number Diff line number Diff line
@@ -64,20 +64,16 @@ void init_xinerama(void)

void init_imlib_fonts(void)
{
	D_ENTER(4);

	/* Set up the font stuff */
	imlib_add_path_to_font_path(".");
	imlib_add_path_to_font_path(PREFIX "/share/feh/fonts");
	imlib_add_path_to_font_path("./ttfonts");

	D_RETURN_(4);
	return;
}

void init_x_and_imlib(void)
{
	D_ENTER(4);

	disp = XOpenDisplay(NULL);
	if (!disp)
		eprintf("Can't open X display. It *is* running, yeah?");
@@ -103,7 +99,7 @@ void init_x_and_imlib(void)
	/* Initialise random numbers */
	srand(getpid() * time(NULL) % ((unsigned int) -1));

	D_RETURN_(4);
	return;
}

int feh_load_image_char(Imlib_Image * im, char *filename)
@@ -111,22 +107,20 @@ int feh_load_image_char(Imlib_Image * im, char *filename)
	feh_file *file;
	int i;

	D_ENTER(4);
	file = feh_file_new(filename);
	i = feh_load_image(im, file);
	feh_file_free(file);
	D_RETURN(4, i);
	return(i);
}

int feh_load_image(Imlib_Image * im, feh_file * file)
{
	Imlib_Load_Error err;

	D_ENTER(4);
	D(3, ("filename is %s, image is %p\n", file->filename, im));

	if (!file || !file->filename)
		D_RETURN(4, 0);
		return(0);

	/* Handle URLs */
	if ((!strncmp(file->filename, "http://", 7)) || (!strncmp(file->filename, "https://", 8))
@@ -136,7 +130,7 @@ int feh_load_image(Imlib_Image * im, feh_file * file)

		tmpname = feh_http_load_image(file->filename);
		if (tmpname == NULL)
			D_RETURN(4, 0);
			return(0);
		*im = imlib_load_image_with_error_return(tmpname, &err);
		if (im) {
			/* load the info now, in case it's needed after we delete the
@@ -228,11 +222,11 @@ int feh_load_image(Imlib_Image * im, feh_file * file)
			break;
		}
		D(3, ("Load *failed*\n"));
		D_RETURN(4, 0);
		return(0);
	}

	D(3, ("Loaded ok\n"));
	D_RETURN(4, 1);
	return(1);
}

char *feh_http_load_image(char *url)
@@ -245,8 +239,6 @@ char *feh_http_load_image(char *url)
	int rnum;
	char *path = NULL;

	D_ENTER(4);

	if (opt.keep_http) {
		if (opt.output_dir)
			path = opt.output_dir;
@@ -304,7 +296,7 @@ char *feh_http_load_image(char *url)
		if (!fp) {
			weprintf("couldn't write to file %s:", tmpname);
			free(tmpname);
			D_RETURN(4, NULL);
			return(NULL);
		}

		hostname = feh_strip_hostname(newurl);
@@ -314,7 +306,7 @@ char *feh_http_load_image(char *url)
			unlink(tmpname);
			free(tmpname);
			free(newurl);
			D_RETURN(4, NULL);
			return(NULL);
		}

		D(4, ("trying hostname %s\n", hostname));
@@ -326,7 +318,7 @@ char *feh_http_load_image(char *url)
			free(hostname);
			free(tmpname);
			free(newurl);
			D_RETURN(4, NULL);
			return(NULL);
		}

		/* Copy the address of the host to socket description. */
@@ -343,7 +335,7 @@ char *feh_http_load_image(char *url)
			free(tmpname);
			free(hostname);
			free(newurl);
			D_RETURN(4, NULL);
			return(NULL);
		}
		if (connect(sockno, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
			weprintf("error connecting socket:");
@@ -352,7 +344,7 @@ char *feh_http_load_image(char *url)
			free(tmpname);
			free(hostname);
			free(newurl);
			D_RETURN(4, NULL);
			return(NULL);
		}

		get_url = strchr(newurl, '/') + 2;
@@ -382,7 +374,7 @@ char *feh_http_load_image(char *url)
			free(hostname);
			free(newurl);
			weprintf("error sending over socket:");
			D_RETURN(4, NULL);
			return(NULL);
		}
		free(get_string);
		free(host_string);
@@ -476,7 +468,7 @@ char *feh_http_load_image(char *url)
			weprintf("open url: fork failed:");
			free(tmpname);
			free(newurl);
			D_RETURN(4, NULL);
			return(NULL);
		} else if (pid == 0) {
			char *quiet = NULL;

@@ -497,7 +489,7 @@ char *feh_http_load_image(char *url)
				unlink(opt.wget_timestamp ? tmpname_timestamper : tmpname);
				free(newurl);
				free(tmpname);
				D_RETURN(4, NULL);
				return(NULL);
			}
			if (opt.wget_timestamp) {
				char cmd[2048];
@@ -509,7 +501,7 @@ char *feh_http_load_image(char *url)
		}
	}

	D_RETURN(4, tmpname);
	return(tmpname);
}

struct hostent *feh_gethostbyname(const char *name)
@@ -517,13 +509,12 @@ struct hostent *feh_gethostbyname(const char *name)
	struct hostent *hp;
	unsigned long addr;

	D_ENTER(3);
	addr = (unsigned long) inet_addr(name);
	if ((int) addr != -1)
		hp = gethostbyaddr((char *) &addr, sizeof(addr), AF_INET);
	else
		hp = gethostbyname(name);
	D_RETURN(3, hp);
	return(hp);
}

char *feh_strip_hostname(char *url)
@@ -533,24 +524,22 @@ char *feh_strip_hostname(char *url)
	char *finish;
	int len;

	D_ENTER(3);

	start = strchr(url, '/');
	if (!start)
		D_RETURN(3, NULL);
		return(NULL);

	start += 2;

	finish = strchr(start, '/');
	if (!finish)
		D_RETURN(3, NULL);
		return(NULL);

	len = finish - start;

	ret = emalloc(len + 1);
	strncpy(ret, start, len);
	ret[len] = '\0';
	D_RETURN(3, ret);
	return(ret);
}

void feh_draw_zoom(winwidget w)
@@ -561,10 +550,8 @@ void feh_draw_zoom(winwidget w)
	char buf[100];
	static DATA8 atab[256];

	D_ENTER(4);

	if (!w->im)
		D_RETURN_(4);
		return;

	if (!fn) {
		fn = gib_imlib_load_font(DEFAULT_FONT);
@@ -573,7 +560,7 @@ void feh_draw_zoom(winwidget w)

	if (!fn) {
		weprintf("Couldn't load font for zoom printing");
		D_RETURN_(4);
		return;
	}

	snprintf(buf, sizeof(buf), "%.0f%%, %dx%d", w->zoom * 100,
@@ -596,7 +583,7 @@ void feh_draw_zoom(winwidget w)
	gib_imlib_text_draw(im, fn, NULL, 1, 1, buf, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255);
	gib_imlib_render_image_on_drawable(w->bg_pmap, im, 0, w->h - th, 1, 1, 0);
	gib_imlib_free_image_and_decache(im);
	D_RETURN_(4);
	return;
}

void feh_draw_filename(winwidget w)
@@ -608,11 +595,9 @@ void feh_draw_filename(winwidget w)
	char *s = NULL;
	int len = 0;

	D_ENTER(4);

	if ((!w->file) || (!FEH_FILE(w->file->data))
			|| (!FEH_FILE(w->file->data)->filename))
		D_RETURN_(4);
		return;

	if (!fn) {
		memset(atab, 0, sizeof(atab));
@@ -624,7 +609,7 @@ void feh_draw_filename(winwidget w)

	if (!fn) {
		weprintf("Couldn't load font for filename printing");
		D_RETURN_(4);
		return;
	}

	/* Work out how high the font is */
@@ -662,7 +647,7 @@ void feh_draw_filename(winwidget w)
	gib_imlib_render_image_on_drawable(w->bg_pmap, im, 0, 0, 1, 1, 0);

	gib_imlib_free_image_and_decache(im);
	D_RETURN_(4);
	return;
}

char *build_caption_filename(feh_file * file)
@@ -709,14 +694,12 @@ void feh_draw_caption(winwidget w)
	static gib_style *caption_style = NULL;
	feh_file *file;

	D_ENTER(4);

	if (!w->file) {
		D_RETURN_(4);
		return;
	}
	file = FEH_FILE(w->file->data);
	if (!file->filename) {
		D_RETURN_(4);
		return;
	}

	if (!file->caption) {
@@ -740,7 +723,7 @@ void feh_draw_caption(winwidget w)
	}

	if (*(file->caption) == '\0' && !w->caption_entry)
		D_RETURN_(4);
		return;

	caption_style = gib_style_new("caption");
	caption_style->bits = gib_list_add_front(caption_style->bits,
@@ -758,7 +741,7 @@ void feh_draw_caption(winwidget w)

	if (!fn) {
		weprintf("Couldn't load font for caption printing");
		D_RETURN_(4);
		return;
	}

	if (*(file->caption) == '\0') {
@@ -769,7 +752,7 @@ void feh_draw_caption(winwidget w)
		lines = feh_wrap_string(file->caption, w->w, fn, NULL);

	if (!lines)
		D_RETURN_(4);
		return;

	/* Work out how high/wide the caption is */
	l = lines;
@@ -822,7 +805,7 @@ void feh_draw_caption(winwidget w)
	gib_imlib_render_image_on_drawable(w->bg_pmap, im, (w->w - tw) / 2, w->h - th, 1, 1, 0);
	gib_imlib_free_image_and_decache(im);
	gib_list_free_and_data(lines);
	D_RETURN_(4);
	return;
}

unsigned char reset_output = 0;
@@ -833,8 +816,6 @@ void feh_display_status(char stat)
	static int init_len = 0;
	int j = 0;

	D_ENTER(5);

	D(5, ("filelist %p, filelist->next %p\n", filelist, filelist->next));

	if (!init_len)
@@ -863,21 +844,20 @@ void feh_display_status(char stat)
	fprintf(stdout, "%c", stat);
	fflush(stdout);
	i++;
	D_RETURN_(5);
	return;
}

void feh_edit_inplace_orient(winwidget w, int orientation)
{
	int ret;
	Imlib_Image old;
	D_ENTER(4);
	if (!w->file || !w->file->data || !FEH_FILE(w->file->data)->filename)
		D_RETURN_(4);
		return;

	if (!strcmp(gib_imlib_image_format(w->im), "jpeg")) {
		feh_edit_inplace_lossless_rotate(w, orientation);
		feh_reload_image(w, 1, 1);
		D_RETURN_(4);
		return;
	}

	ret = feh_load_image(&old, FEH_FILE(w->file->data));
@@ -890,7 +870,7 @@ void feh_edit_inplace_orient(winwidget w, int orientation)
		weprintf("failed to load image from disk to edit it in place\n");
	}

	D_RETURN_(4);
	return;
}

gib_list *feh_wrap_string(char *text, int wrap_width, Imlib_Font fn, gib_style * style)
@@ -1005,7 +985,7 @@ void feh_edit_inplace_lossless_rotate(winwidget w, int orientation)

	if ((pid = fork()) < 0) {
		weprintf("lossless rotate: fork failed:");
		D_RETURN_(4);
		return;
	} else if (pid == 0) {

		execlp("jpegtran", "jpegtran", "-copy", "all", "-rotate",
@@ -1020,7 +1000,7 @@ void feh_edit_inplace_lossless_rotate(winwidget w, int orientation)
					" Commandline was:\n"
					"jpegtran -copy all -rotate %d -outfile %s %s\n",
					status >> 8, rotate_str, file_str, file_str);
			D_RETURN_(4);
			return;
		}
	}
}
@@ -1040,8 +1020,6 @@ void feh_draw_actions(winwidget w)
	char index[1];
	char *line;

	D_ENTER(4);

	/* Count number of defined actions. This method sucks a bit since it needs
	 * to be changed if the number of actions changes, but at least it doesn't
	 * miss actions 2 to 9 if action1 isn't defined
@@ -1056,7 +1034,7 @@ void feh_draw_actions(winwidget w)

	if ((!w->file) || (!FEH_FILE(w->file->data))
			|| (!FEH_FILE(w->file->data)->filename))
		D_RETURN_(4);
		return;

	if (!fn) {
		memset(atab, 0, sizeof(atab));
@@ -1068,7 +1046,7 @@ void feh_draw_actions(winwidget w)

	if (!fn) {
		weprintf("Couldn't load font for actions printing");
		D_RETURN_(4);
		return;
	}

	gib_imlib_get_text_size(fn, "defined actions:", NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT);
@@ -1134,5 +1112,5 @@ void feh_draw_actions(winwidget w)
	gib_imlib_render_image_on_drawable(w->bg_pmap, im, 0, 0 + th_offset, 1, 1, 0);

	gib_imlib_free_image_and_decache(im);
	D_RETURN_(4);
	return;
}
Loading