Package-Name: xsane
Gentoo-Package: media-gfx/xsane
Requires: sane-backends
Suggests: gtk+ jpeg libpng tiff
Homepage: http://www.xsane.org/
Source: ftp://ftp.sane-project.org/pub/sane/xsane/xsane-(\d+(.\d+)+).tar.gz $1
Zap-Before-Install: 1
Repack:
	tar xzvfp "$(SOURCE)"
Compile:
	cp -pf xsane.ACCELKEYS xsane.AUTHOR xsane.BEGINNERS-INFO xsane.BUGS xsane.CHANGES xsane.COPYING xsane.FAQ xsane.LOGO xsane.NEWS xsane.ONLINEHELP xsane.PROBLEMS xsane.ROOT xsane.TODO "$(PREFIX)/"
	$(MAKE) -f ../Makefile configure CUSTOM_CFLAGS="-DXSANE_WINOFS_X=7 -DXSANE_WINOFS_Y=26"
	$(MAKE)
	$(MAKE) install
	rmdir "$(PREFIX)"/sbin
Install:
	$(MAKE) instbin BIN=xsane
	$(MAKE) instman SECTION=1 MAN=xsane
	rm -rf /usr/share/sane/xsane
	ln -s "$(PREFIX)"/share/sane/xsane /usr/share/sane/
Patch: <<EOT
######## begin window-position-fix.diff
--- ../xsane-0.995-orig/src/xsane-front-gtk.c	2007-05-17 22:35:06 +0900
+++ src/xsane-front-gtk.c	2007-12-26 06:14:13 +0900
@@ -2355,6 +2355,12 @@
     gdk_window_get_root_origin(gtk_window->window, x, y);
   }
 #endif
+#ifdef XSANE_WINOFS_X
+  *x += XSANE_WINOFS_X;
+#endif
+#ifdef XSANE_WINOFS_Y
+  *y += XSANE_WINOFS_Y;
+#endif
 }   
 
 /* ---------------------------------------------------------------------------------------------------------------------- */
######## end window-position-fix.diff
######## begin snprintf.diff
diff -urN ../xsane-0.995-orig/src/xsane-batch-scan.c src/xsane-batch-scan.c
--- ../xsane-0.995-orig/src/xsane-batch-scan.c	2007-03-13 06:42:38 +0900
+++ src/xsane-batch-scan.c	2007-12-26 06:13:52 +0900
@@ -342,7 +342,7 @@
 
   xsane_set_sensitivity(FALSE);
 
-  sprintf(windowname, "%s %s %s", xsane.prog_name, WINDOW_LOAD_BATCH_LIST, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_LOAD_BATCH_LIST, xsane.device_text);
   xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", "batch-lists", 0, "default", ".xbl", XSANE_PATH_LOCAL_SANE);
 
   if (!xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, NULL, NULL, XSANE_FILE_CHOOSER_ACTION_OPEN, XSANE_GET_FILENAME_SHOW_NOTHING, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_BATCHLIST, XSANE_FILE_FILTER_BATCHLIST))
@@ -393,7 +393,7 @@
 
   xsane_set_sensitivity(FALSE);
 
-  sprintf(windowname, "%s %s %s", xsane.prog_name, WINDOW_SAVE_BATCH_LIST, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_SAVE_BATCH_LIST, xsane.device_text);
   xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", "batch-lists", 0, "default", ".xbl", XSANE_PATH_LOCAL_SANE);
 
   if (!xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, NULL, NULL, XSANE_FILE_CHOOSER_ACTION_SAVE, XSANE_GET_FILENAME_SHOW_NOTHING, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_BATCHLIST, XSANE_FILE_FILTER_BATCHLIST));
diff -urN ../xsane-0.995-orig/src/xsane-device-preferences.c src/xsane-device-preferences.c
--- ../xsane-0.995-orig/src/xsane-device-preferences.c	2007-03-04 08:34:40 +0900
+++ src/xsane-device-preferences.c	2007-12-26 06:13:52 +0900
@@ -640,7 +640,7 @@
 
   xsane_set_sensitivity(FALSE);
 
-  sprintf(windowname, "%s %s %s", xsane.prog_name, WINDOW_LOAD_SETTINGS, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_LOAD_SETTINGS, xsane.device_text);
   xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, 0, xsane.device_set_filename, ".drc", XSANE_PATH_LOCAL_SANE);
 
   if (!xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, NULL, NULL, XSANE_FILE_CHOOSER_ACTION_OPEN, FALSE, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_DRC, XSANE_FILE_FILTER_DRC))
@@ -791,7 +791,7 @@
 
   xsane_set_sensitivity(FALSE);
 
-  sprintf(windowname, "%s %s %s", xsane.prog_name, WINDOW_SAVE_SETTINGS, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_SAVE_SETTINGS, xsane.device_text);
   xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, 0, xsane.device_set_filename, ".drc", XSANE_PATH_LOCAL_SANE);
 
   if (!xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, NULL, NULL, XSANE_FILE_CHOOSER_ACTION_SAVE, FALSE, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_DRC, XSANE_FILE_FILTER_DRC))
diff -urN ../xsane-0.995-orig/src/xsane-front-gtk.c src/xsane-front-gtk.c
--- ../xsane-0.995-orig/src/xsane-front-gtk.c	2007-05-17 22:35:06 +0900
+++ src/xsane-front-gtk.c	2007-12-26 06:13:52 +0900
@@ -1852,7 +1852,7 @@
 
   xsane_set_sensitivity(FALSE);
 
-  sprintf(windowname, "%s %s %s", xsane.prog_name, WINDOW_CHANGE_WORKING_DIR, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_CHANGE_WORKING_DIR, xsane.device_text);
   if (getcwd(filename, sizeof(filename)))
   {
 /*    xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, NULL, TRUE, FALSE, TRUE, FALSE); */
diff -urN ../xsane-0.995-orig/src/xsane-gamma.c src/xsane-gamma.c
--- ../xsane-0.995-orig/src/xsane-gamma.c	2007-02-26 07:22:22 +0900
+++ src/xsane-gamma.c	2007-12-26 06:13:52 +0900
@@ -2196,7 +2196,7 @@
   gtk_window_set_resizable(GTK_WINDOW(xsane.histogram_dialog), FALSE);
   gtk_window_move(GTK_WINDOW(xsane.histogram_dialog), XSANE_HISTOGRAM_DIALOG_POS_X, XSANE_HISTOGRAM_DIALOG_POS_Y);
   g_signal_connect(GTK_OBJECT(xsane.histogram_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_histogram_win_delete), NULL);
-  sprintf(windowname, "%s %s", WINDOW_HISTOGRAM, devicetext);
+  snprintf(windowname, sizeof(windowname), "%s %s", WINDOW_HISTOGRAM, devicetext);
   gtk_window_set_title(GTK_WINDOW(xsane.histogram_dialog), windowname);
   xsane_set_window_icon(xsane.histogram_dialog, 0);
   gtk_window_add_accel_group(GTK_WINDOW(xsane.histogram_dialog), xsane.accelerator_group);
@@ -2517,7 +2517,7 @@
   gtk_window_set_resizable(GTK_WINDOW(xsane.gamma_dialog), FALSE);
   gtk_window_move(GTK_WINDOW(xsane.gamma_dialog), XSANE_GAMMA_POS_X, XSANE_GAMMA_POS_Y);
   g_signal_connect(GTK_OBJECT(xsane.gamma_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_gamma_win_delete), NULL);
-  sprintf(windowname, "%s %s", WINDOW_GAMMA, devicetext);
+  snprintf(windowname, sizeof(windowname), "%s %s", WINDOW_GAMMA, devicetext);
   gtk_window_set_title(GTK_WINDOW(xsane.gamma_dialog), windowname);
   xsane_set_window_icon(xsane.gamma_dialog, 0);
   gtk_window_add_accel_group(GTK_WINDOW(xsane.gamma_dialog), xsane.accelerator_group);
diff -urN ../xsane-0.995-orig/src/xsane-save.c src/xsane-save.c
--- ../xsane-0.995-orig/src/xsane-save.c	2007-05-17 21:53:40 +0900
+++ src/xsane-save.c	2007-12-26 06:13:52 +0900
@@ -4684,7 +4684,7 @@
 
   time(&now);
   ptm = localtime(&now);
-  sprintf(buf, "%04d:%02d:%02d %02d:%02d:%02d", 1900+ptm->tm_year, ptm->tm_mon+1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
+  snprintf(buf, sizeof(buf), "%04d:%02d:%02d %02d:%02d:%02d", 1900+ptm->tm_year, ptm->tm_mon+1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
   TIFFSetField(tiffile, TIFFTAG_DATETIME, buf);
 
   if (image_info->resolution_x > 0.0)
diff -urN ../xsane-0.995-orig/src/xsane.c src/xsane.c
--- ../xsane-0.995-orig/src/xsane.c	2007-09-29 00:24:56 +0900
+++ src/xsane.c	2007-12-26 06:13:52 +0900
@@ -4824,7 +4824,7 @@
     {
       char msg[TEXTBUFSIZE];
 
-      sprintf(msg, "%s %s: %s.", ERR_GET_OPTION, opt->name, XSANE_STRSTATUS(status));
+      snprintf(msg, sizeof(msg), "%s %s: %s.", ERR_GET_OPTION, opt->name, XSANE_STRSTATUS(status));
       xsane_back_gtk_error(msg, TRUE);
     }
   }
@@ -4970,13 +4970,13 @@
 
   if (!strncmp(devname, "net:", 4)) /* network device ? */
   {
-    sprintf(textptr, "net:");
+    snprintf(textptr, sizeof(devicetext)-(textptr-devicetext), "net:");
     textptr = devicetext + strlen(devicetext);
   }
 
   snprintf(buf, sizeof(buf), ":%s", devname);
   snprintf(buf, sizeof(buf), "/%s", (strrchr(buf, ':')+1));
-  sprintf(textptr, (strrchr(buf, '/')+1));
+  snprintf(textptr, sizeof(devicetext)-(textptr-devicetext), (strrchr(buf, '/')+1));
 
   xsane.device_text = strdup(devicetext);
 
@@ -5005,7 +5005,7 @@
 
   xsane.dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_move(GTK_WINDOW(xsane.dialog), XSANE_DIALOG_POS_X, XSANE_DIALOG_POS_Y);
-  sprintf(windowname, "%s %s %s", xsane.prog_name, XSANE_VERSION, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, XSANE_VERSION, xsane.device_text);
   gtk_window_set_title(GTK_WINDOW(xsane.dialog), (char *) windowname);
   g_signal_connect(GTK_OBJECT(xsane.dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_scan_win_delete), NULL);
 
@@ -5112,7 +5112,7 @@
 
   xsane.standard_options_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_move(GTK_WINDOW(xsane.standard_options_dialog), XSANE_STD_OPTIONS_DIALOG_POS_X, XSANE_STD_OPTIONS_DIALOG_POS_Y);
-  sprintf(windowname, "%s %s", WINDOW_STANDARD_OPTIONS, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s", WINDOW_STANDARD_OPTIONS, xsane.device_text);
   gtk_window_set_title(GTK_WINDOW(xsane.standard_options_dialog), (char *) windowname);
 
   gtk_window_set_resizable(GTK_WINDOW(xsane.standard_options_dialog), FALSE);
@@ -5139,7 +5139,7 @@
 
   xsane.advanced_options_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_move(GTK_WINDOW(xsane.advanced_options_dialog), XSANE_ADV_OPTIONS_DIALOG_POS_X, XSANE_ADV_OPTIONS_DIALOG_POS_Y);
-  sprintf(windowname, "%s %s",WINDOW_ADVANCED_OPTIONS, xsane.device_text);
+  snprintf(windowname, sizeof(windowname), "%s %s",WINDOW_ADVANCED_OPTIONS, xsane.device_text);
   gtk_window_set_title(GTK_WINDOW(xsane.advanced_options_dialog), (char *) windowname);
 
   gtk_window_set_resizable(GTK_WINDOW(xsane.advanced_options_dialog), FALSE);
######## end snprintf.diff
EOT

/pkg/xsane/
/usr/bin/xsane
/usr/man/man1/xsane.1.gz
/usr/share/sane/xsane
