slackware-current/source/xap/xsane/xsane-0.999-coverity.patch
Patrick J Volkerding d31c50870d Slackware 14.2
Thu Jun 30 20:26:57 UTC 2016
Slackware 14.2 x86_64 stable is released!

The long development cycle (the Linux community has lately been living in
"interesting times", as they say) is finally behind us, and we're proud to
announce the release of Slackware 14.2.  The new release brings many updates
and modern tools, has switched from udev to eudev (no systemd), and adds
well over a hundred new packages to the system.  Thanks to the team, the
upstream developers, the dedicated Slackware community, and everyone else
who pitched in to help make this release a reality.

The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided
32-bit/64-bit x86/x86_64 DVD.  Please consider supporting the Slackware
project by picking up a copy from store.slackware.com.  We're taking
pre-orders now, and offer a discount if you sign up for a subscription.

Have fun!  :-)
2018-05-31 23:31:18 +02:00

2679 lines
121 KiB
Diff

From 9fe09c0e0746067f9e9774229b3d0beb35c5766b Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Wed, 2 Apr 2014 14:54:05 +0200
Subject: [PATCH] patch: coverity
Squashed commit of the following:
commit e26d784a5217d1609e774678d8abaeb2e1ecdadc
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Mar 11 10:28:02 2014 +0100
ensure loop is run at least once while scaling
commit e5bf8c8a659a7b03ae3eb130ebfaad292e16816d
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 27 15:07:42 2014 +0100
remove stray semicolon
commit ad928333ba038051ca0a405470dadeaa0f365b95
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 27 15:06:17 2014 +0100
use actual pointer type in realloc()
commit 11dfb289d03555218318ce1a284c1165bbc58b22
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 17:42:54 2014 +0100
don't overflow size expression for allocation
commit 5daccfc14f129c632f8409a89903d21c5495dd2f
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 17:18:58 2014 +0100
don't leak file descriptors and other resources
commit 034023d7aaac378b8ab02051d11392c639154842
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 16:04:28 2014 +0100
don't overrun buffers
commit f7454d62b5206e2100e8569e04ff4a6868cbd909
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 15:56:40 2014 +0100
check if files actually could be opened
commit de30cacd285c02382a32dc48cf9fe015223a57f7
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 15:47:51 2014 +0100
handle negative return values of some calls
commit b46a520ba85bda776b1a91de9f842ed96d97fa73
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 11:54:31 2014 +0100
only attempt to close successfully opened files
commit bb6a8ccab418f89fa6fb367874f84aa56195cca0
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 11:54:15 2014 +0100
bail out early if memory can't be allocated
commit 9b1e34c1d099c0a7acf7bd5aec8e3f0c2d2eafa8
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 11:53:11 2014 +0100
gtk_entry_get_text() isn't supposed to return NULL
commit bc7553caaea1955e7fa48f3a2f4c0773d40204c3
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 11:00:11 2014 +0100
negate comparison instead of operand
commit d1d4675a416383d808def730ade4f6b5b1a493b8
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 10:55:42 2014 +0100
use int types for fgetc() results
commit cbdc2df85367c27ff56fb9cdd77a61c6d82be0e1
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 25 10:36:53 2014 +0100
avoid freeing static strings
commit 0c377b9658daa5dcdbc6c260baa4e31237202f3e
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Feb 19 16:10:35 2014 +0100
use guchar* for PNG profile buffer
commit 70152131771b891fe04b3087e3b73c42e6d5ebbe
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Feb 19 16:09:46 2014 +0100
cast time_t into long instead of int
commit 0ac0683bcba7d8cf4e786abc3abe9c3e3c7d60a0
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Feb 18 17:55:02 2014 +0100
use glib macros where ints are transported in pointers
commit 8e85947fe5a592a3f938ab5bb2dc79488b638515
Author: Nils Philippsen <nils@redhat.com>
Date: Mon Feb 17 13:42:13 2014 +0100
handle return values of some file related system calls
commit f4ba79f720a9a1e4a3caddc77d0de19a7d2fb75c
Author: Nils Philippsen <nils@redhat.com>
Date: Mon Feb 17 12:07:09 2014 +0100
avoid leaking resources
---
src/xsane-back-gtk.c | 75 +++++++++++++---
src/xsane-batch-scan.c | 41 ++++-----
src/xsane-email-project.c | 83 +++++++++---------
src/xsane-fax-project.c | 14 ++-
src/xsane-front-gtk.c | 42 ++++-----
src/xsane-multipage-project.c | 5 ++
src/xsane-preview.c | 34 ++++----
src/xsane-save.c | 166 ++++++++++++++++++++++-------------
src/xsane-scan.c | 17 ++--
src/xsane-setup.c | 70 +++++++--------
src/xsane-text.h | 1 +
src/xsane-viewer.c | 199 +++++++++++++++++++++++-------------------
src/xsane.c | 65 ++++++++------
13 files changed, 478 insertions(+), 334 deletions(-)
diff --git a/src/xsane-back-gtk.c b/src/xsane-back-gtk.c
index 6ef1506..6452f4b 100644
--- a/src/xsane-back-gtk.c
+++ b/src/xsane-back-gtk.c
@@ -40,6 +40,7 @@ SANE_Status xsane_control_option(SANE_Handle handle, SANE_Int option, SANE_Actio
const SANE_Option_Descriptor *xsane_get_option_descriptor(SANE_Handle handle, SANE_Int option);
const char *xsane_back_gtk_unit_string(SANE_Unit unit);
void xsane_back_gtk_set_tooltip(GtkTooltips *tooltips, GtkWidget *widget, const gchar *desc);
+static int xsane_back_gtk_ensure_dir(const char *path);
int xsane_back_gtk_make_path(size_t buf_size, char *buf, const char *prog_name, const char *dir_name,
const char *prefix, const char *dev_name, const char *postfix, int location);
void xsane_back_gtk_set_option(int opt_num, void *val, SANE_Action action);
@@ -245,11 +246,47 @@ void xsane_back_gtk_set_tooltip(GtkTooltips *tooltips, GtkWidget *widget, const
/* ----------------------------------------------------------------------------------------------------------------- */
+static int xsane_back_gtk_ensure_dir(const char *path)
+{
+ struct stat statbuf;
+
+ if (stat(path, &statbuf) < 0)
+ {
+ if (errno != ENOENT)
+ {
+ /* stat() failed and it wasn't because the file doesn't exist */
+ return -1;
+ }
+ else
+ {
+ /* if path doesn't exist, create directory */
+ if (mkdir(path, 0777) < 0)
+ {
+ /* mkdir() failed */
+ return -2;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+
+ if (S_ISDIR(statbuf.st_mode))
+ {
+ return 0;
+ }
+
+ /* path exists and isn't a directory */
+ return -3;
+}
+
int xsane_back_gtk_make_path(size_t buf_size, char *buf, const char *prog_name, const char *dir_name,
const char *prefix, const char *dev_name, const char *postfix, int location)
{
size_t len, extra;
int i;
+ char msgbuf[TEXTBUFSIZE];
DBG(DBG_proc, "xsane_back_gtk_make_path\n");
@@ -263,7 +300,10 @@ int xsane_back_gtk_make_path(size_t buf_size, char *buf, const char *prog_name,
{
snprintf(buf, buf_size-2, "%s", STRINGIFY(XSANE_FIXED_APPDATA_DIR));
}
- mkdir(buf, 0777); /* ensure ~/.sane directory exists */
+ if (xsane_back_gtk_ensure_dir(buf))
+ {
+ goto dir_failed;
+ }
}
else if (location == XSANE_PATH_SYSTEM) /* make path to system file */
{
@@ -290,7 +330,10 @@ int xsane_back_gtk_make_path(size_t buf_size, char *buf, const char *prog_name,
len += extra;
buf[len] = '\0';
- mkdir(buf, 0777); /* ensure ~/.sane/PROG_NAME directory exists */
+ if (xsane_back_gtk_ensure_dir(buf))
+ {
+ goto dir_failed;
+ }
buf[len++] = SLASH; /* OS/2 does not like slash at end of mktemp-path */
}
@@ -314,7 +357,10 @@ int xsane_back_gtk_make_path(size_t buf_size, char *buf, const char *prog_name,
buf[len++] = SLASH;
buf[len] = '\0';
- mkdir(buf, 0777); /* ensure DIR_NAME directory exists */
+ if (xsane_back_gtk_ensure_dir(buf))
+ {
+ goto dir_failed;
+ }
}
if (len >= buf_size)
@@ -454,6 +500,12 @@ filename_too_long:
xsane_back_gtk_error(ERR_FILENAME_TOO_LONG, FALSE);
errno = E2BIG;
return -1;
+
+dir_failed:
+ snprintf(msgbuf, sizeof(msgbuf), "%s %s.", ERR_FAILED_CREATE_ENSURE_DIR,
+ strerror(errno));
+ xsane_back_gtk_error(msgbuf, FALSE);
+ return -1;
}
/* ----------------------------------------------------------------------------------------------------------------- */
@@ -784,11 +836,15 @@ gint xsane_back_gtk_decision(gchar *title, gchar **xpm_d, gchar *message, gchar
void xsane_back_gtk_ipc_dialog_callback(gpointer data, gint source, GdkInputCondition cond)
{
char message[TEXTBUFSIZE];
- size_t bytes;
+ ssize_t bytes;
DBG(DBG_proc, "xsane_back_gtk_message\n");
- bytes = read(xsane.ipc_pipefd[0], message, sizeof(message)-1);
+ if ((bytes = read(xsane.ipc_pipefd[0], message, sizeof(message)-1)) < 0)
+ {
+ DBG(DBG_error, "xsane_back_gtk_message(): can't read from pipe\n");
+ return;
+ }
message[bytes] = 0;
xsane_back_gtk_decision(ERR_HEADER_CHILD_PROCESS_ERROR, (gchar **) error_xpm, message, BUTTON_CLOSE, 0 /* no reject text */, FALSE);
@@ -1980,7 +2036,7 @@ static void xsane_back_gtk_value_update(GtkAdjustment *adj_data, DialogElement *
static void xsane_back_gtk_range_display_value_right_callback(GtkAdjustment *adjust, gpointer data)
{
gchar buf[TEXTBUFSIZE];
- int digits = (int) data;
+ int digits = GPOINTER_TO_INT(data);
GtkLabel *label;
snprintf(buf, sizeof(buf), "%1.*f", digits, adjust->value);
@@ -2028,7 +2084,7 @@ void xsane_back_gtk_range_new(GtkWidget *parent, const char *name, gfloat val,
gtk_widget_set_size_request(value_label, 45, -1);
gtk_box_pack_end(GTK_BOX(hbox), value_label, FALSE, FALSE, 1);
- g_signal_connect(elem->data, "value_changed", (GtkSignalFunc) xsane_back_gtk_range_display_value_right_callback, (void *) digits);
+ g_signal_connect(elem->data, "value_changed", (GtkSignalFunc) xsane_back_gtk_range_display_value_right_callback, GINT_TO_POINTER(digits));
gtk_object_set_data(GTK_OBJECT(elem->data), "value-label", value_label);
g_signal_emit_by_name(GTK_OBJECT(elem->data), "value_changed"); /* update value */
gtk_widget_show(value_label);
@@ -2318,10 +2374,7 @@ static void xsane_back_gtk_text_entry_callback(GtkWidget *w, gpointer data)
buf[0] = '\0';
text = gtk_entry_get_text(GTK_ENTRY(elem->widget));
- if (text)
- {
- strncpy(buf, text, opt->size);
- }
+ strncpy(buf, text, opt->size);
buf[opt->size - 1] = '\0';
xsane_back_gtk_set_option(opt_num, buf, SANE_ACTION_SET_VALUE);
diff --git a/src/xsane-batch-scan.c b/src/xsane-batch-scan.c
index 90cc0e0..12eb1b2 100644
--- a/src/xsane-batch-scan.c
+++ b/src/xsane-batch-scan.c
@@ -291,7 +291,7 @@ int xsane_batch_scan_load_list_from_file(char *filename)
fd = open(filename, O_RDONLY);
- if (fd > 0)
+ if (fd >= 0)
{
w.io.fd = fd;
w.io.read = read;
@@ -396,11 +396,11 @@ static void xsane_batch_scan_save_list(void)
sprintf(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));
+ 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))
{
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
- if (fd > 0)
+ if (fd >= 0)
{
w.io.fd = fd;
w.io.read = read;
@@ -680,7 +680,6 @@ static GtkWidget *xsane_batch_scan_create_list_entry(Batch_Scan_Parameters *para
GtkWidget *list_item;
GtkWidget *hbox;
int size = 120;
- char *data;
list_item = gtk_list_item_new();
@@ -688,8 +687,6 @@ static GtkWidget *xsane_batch_scan_create_list_entry(Batch_Scan_Parameters *para
gtk_container_add(GTK_CONTAINER(list_item), hbox);
gtk_widget_show(hbox);
- data = calloc(size, size);
-
parameters->gtk_preview = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size(GTK_PREVIEW(parameters->gtk_preview), size, size);
gtk_box_pack_start(GTK_BOX(hbox), parameters->gtk_preview, FALSE, FALSE, 0);
@@ -725,13 +722,17 @@ void xsane_batch_scan_add()
parameters = calloc(1, sizeof(Batch_Scan_Parameters));
- if (parameters)
+ if (!parameters)
{
- xsane_batch_scan_get_parameters(parameters);
-
- parameters->name = strdup(TEXT_BATCH_AREA_DEFAULT_NAME);
+ DBG(DBG_error, "xsane_batch_scan_add(): couldn't allocate memory for "
+ "parameters\n");
+ return;
}
+ xsane_batch_scan_get_parameters(parameters);
+
+ parameters->name = strdup(TEXT_BATCH_AREA_DEFAULT_NAME);
+
list_item = xsane_batch_scan_create_list_entry(parameters);
/* scroll list to end */
@@ -796,7 +797,7 @@ static void xsane_batch_scan_rotate_mirror(GtkWidget *widget, gpointer data)
GList *select;
GtkObject *list_item;
Batch_Scan_Parameters *parameters = NULL;
- int rotate_info = (int) data;
+ int rotate_info = GPOINTER_TO_INT(data);
int rotate, mirror;
DBG(DBG_proc, "xsane_batch_scan_rotate_mirror\n");
@@ -834,7 +835,7 @@ static void xsane_batch_scan_rename_button_callback(GtkWidget *widget, gpointer
{
DBG(DBG_proc, "xsane_batch_scan_rename\n");
- xsane_batch_scan_rename = (int) data;
+ xsane_batch_scan_rename = GPOINTER_TO_INT(data);
}
@@ -881,7 +882,7 @@ static void xsane_batch_scan_rename_callback(GtkWidget *widget, gpointer data)
gtk_window_set_resizable(GTK_WINDOW(rename_dialog), FALSE);
snprintf(buf, sizeof(buf), "%s %s", xsane.prog_name, WINDOW_BATCH_RENAME);
gtk_window_set_title(GTK_WINDOW(rename_dialog), buf);
- g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_batch_scan_rename_button_callback,(void *) -1);
+ g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_batch_scan_rename_button_callback, GINT_TO_POINTER(-1));
gtk_widget_show(rename_dialog);
text = gtk_entry_new();
@@ -898,7 +899,7 @@ static void xsane_batch_scan_rename_callback(GtkWidget *widget, gpointer data)
#else
button = gtk_button_new_with_label(BUTTON_CANCEL);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_batch_scan_rename_button_callback, (void *) -1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_batch_scan_rename_button_callback, GINT_TO_POINTER(-1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -909,7 +910,7 @@ static void xsane_batch_scan_rename_callback(GtkWidget *widget, gpointer data)
button = gtk_button_new_with_label(BUTTON_OK);
#endif
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_batch_scan_rename_button_callback, (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_batch_scan_rename_button_callback, GINT_TO_POINTER(1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_grab_default(button);
gtk_widget_show(button);
@@ -1000,11 +1001,11 @@ void xsane_create_batch_scan_dialog(const char *devicetext)
xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, del_batch_xpm, DESC_BATCH_DEL, (GtkSignalFunc) xsane_batch_scan_delete, NULL);
xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, ascii_xpm, DESC_BATCH_RENAME, (GtkSignalFunc) xsane_batch_scan_rename_callback, NULL);
- xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate90_xpm, DESC_ROTATE90, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, (void *) 1);
- xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate180_xpm, DESC_ROTATE180, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, (void *) 2);
- xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate270_xpm, DESC_ROTATE270, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, (void *) 3);
- xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, mirror_x_xpm, DESC_MIRROR_X, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, (void *) 4);
- xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, mirror_y_xpm, DESC_MIRROR_Y, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, (void *) 6);
+ xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate90_xpm, DESC_ROTATE90, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, GINT_TO_POINTER(1));
+ xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate180_xpm, DESC_ROTATE180, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, GINT_TO_POINTER(2));
+ xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, rotate270_xpm, DESC_ROTATE270, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, GINT_TO_POINTER(3));
+ xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, mirror_x_xpm, DESC_MIRROR_X, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, GINT_TO_POINTER(4));
+ xsane_button_new_with_pixmap(xsane.batch_scan_dialog->window, xsane.batch_scan_button_box, mirror_y_xpm, DESC_MIRROR_Y, (GtkSignalFunc) xsane_batch_scan_rotate_mirror, GINT_TO_POINTER(6));
/* the scolled window with the list */
diff --git a/src/xsane-email-project.c b/src/xsane-email-project.c
index 23fc942..413e3f7 100644
--- a/src/xsane-email-project.c
+++ b/src/xsane-email-project.c
@@ -895,6 +895,11 @@ static void xsane_email_project_update_project_status()
snprintf(filename, sizeof(filename), "%s/xsane-mail-list", preferences.email_project);
projectfile = fopen(filename, "r+b"); /* r+ = read and write, position = start of file */
+ if (!projectfile)
+ {
+ DBG(DBG_error, "Could not open project file '%s'.\n", filename);
+ return;
+ }
snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.email_status); /* fill 32 characters status line */
fprintf(projectfile, "%s\n", buf); /* first line is status of email */
@@ -931,6 +936,11 @@ void xsane_email_project_save()
}
projectfile = fopen(filename, "wb"); /* write binary (b for win32) */
+ if (! projectfile)
+ {
+ DBG(DBG_error, "Could not open project file '%s'.\n", filename);
+ return;
+ }
if (xsane.email_status)
{
@@ -1271,7 +1281,7 @@ static void xsane_email_entry_rename_button_callback(GtkWidget *widget, gpointer
{
DBG(DBG_proc, "xsane_email_entry_rename\n");
- xsane_email_entry_rename = (int) data;
+ xsane_email_entry_rename = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -1322,7 +1332,7 @@ static void xsane_email_entry_rename_callback(GtkWidget *widget, gpointer list)
gtk_window_set_resizable(GTK_WINDOW(rename_dialog), FALSE);
snprintf(filename, sizeof(filename), "%s %s", xsane.prog_name, WINDOW_EMAIL_RENAME);
gtk_window_set_title(GTK_WINDOW(rename_dialog), filename);
- g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_email_entry_rename_button_callback, (void *) -1);
+ g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_email_entry_rename_button_callback, GINT_TO_POINTER(-1));
gtk_widget_show(rename_dialog);
text = gtk_entry_new();
@@ -1339,7 +1349,7 @@ static void xsane_email_entry_rename_callback(GtkWidget *widget, gpointer list)
#else
button = gtk_button_new_with_label(BUTTON_CANCEL);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_email_entry_rename_button_callback,(void *) -1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_email_entry_rename_button_callback, GINT_TO_POINTER(-1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -1348,7 +1358,7 @@ static void xsane_email_entry_rename_callback(GtkWidget *widget, gpointer list)
#else
button = gtk_button_new_with_label(BUTTON_OK);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_email_entry_rename_button_callback, (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_email_entry_rename_button_callback, GINT_TO_POINTER(1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -1526,6 +1536,11 @@ static void xsane_create_email(int fd)
{
DBG(DBG_error, "could not open email project file %s\n", filename);
+ if (projectfile)
+ {
+ fclose(projectfile);
+ }
+
if (xsane.email_status)
{
free(xsane.email_status);
@@ -1766,7 +1781,7 @@ static void xsane_create_email(int fd)
static void xsane_email_send_process()
{
- int fd_socket;
+ int fd_socket = -1;
int status;
char *password;
int i;
@@ -1787,36 +1802,20 @@ static void xsane_email_send_process()
if (fd_socket < 0) /* could not open socket */
{
- if (xsane.email_status)
- {
- free(xsane.email_status);
- }
xsane.email_status = strdup(TEXT_EMAIL_STATUS_POP3_CONNECTION_FAILED);
- xsane.email_progress_val = 0.0;
- xsane_front_gtk_email_project_update_lockfile_status();
-
- free(password);
-
- return;
+ status = -1;
+ goto out;
}
status = pop3_login(fd_socket, preferences.email_auth_user, password);
close(fd_socket);
+ fd_socket = -1;
if (status == -1)
{
- if (xsane.email_status)
- {
- free(xsane.email_status);
- }
xsane.email_status = strdup(TEXT_EMAIL_STATUS_POP3_LOGIN_FAILED);
- xsane.email_progress_val = 0.0;
- xsane_front_gtk_email_project_update_lockfile_status();
-
- free(password);
-
- return;
+ goto out;
}
DBG(DBG_info, "POP3 authentication done\n");
@@ -1829,17 +1828,9 @@ static void xsane_email_send_process()
if (fd_socket < 0) /* could not open socket */
{
- if (xsane.email_status)
- {
- free(xsane.email_status);
- }
xsane.email_status = strdup(TEXT_EMAIL_STATUS_SMTP_CONNECTION_FAILED);
- xsane.email_progress_val = 0.0;
- xsane_front_gtk_email_project_update_lockfile_status();
-
- free(password);
-
- return;
+ status = -1;
+ goto out;
}
@@ -1847,7 +1838,8 @@ static void xsane_email_send_process()
preferences.email_authentication, preferences.email_auth_user, password);
if (status == -1)
{
- return;
+ xsane.email_status = strdup(TEXT_EMAIL_STATUS_SMTP_ERR_DATA);
+ goto out;
}
@@ -1855,19 +1847,30 @@ static void xsane_email_send_process()
write_smtp_footer(fd_socket);
- close(fd_socket);
+out:
+ if (fd_socket >= 0)
+ {
+ close(fd_socket);
+ }
if (xsane.email_status)
{
free(xsane.email_status);
}
- xsane.email_status = strdup(TEXT_EMAIL_STATUS_SENT);
- xsane.email_progress_val = 1.0;
+ if (status != -1)
+ {
+ xsane.email_status = strdup(TEXT_EMAIL_STATUS_SENT);
+ xsane.email_progress_val = 1.0;
+ }
+ else
+ {
+ xsane.email_progress_val = 0.0;
+ }
xsane_front_gtk_email_project_update_lockfile_status();
free(password);
- _exit(0);
+ _exit(status);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
diff --git a/src/xsane-fax-project.c b/src/xsane-fax-project.c
index 5750b55..c08af59 100644
--- a/src/xsane-fax-project.c
+++ b/src/xsane-fax-project.c
@@ -452,6 +452,12 @@ static void xsane_fax_project_update_project_status()
snprintf(filename, sizeof(filename), "%s/xsane-fax-list", preferences.fax_project);
projectfile = fopen(filename, "r+b"); /* r+ = read and write, position = start of file */
+ if (! projectfile)
+ {
+ DBG(DBG_error, "Could not open project file '%s'.\n", filename);
+ return;
+ }
+
snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.fax_status); /* fill 32 characters status line */
fprintf(projectfile, "%s\n", buf); /* first line is status of mail */
@@ -754,7 +760,7 @@ static void xsane_fax_entry_rename_button_callback(GtkWidget *widget, gpointer d
{
DBG(DBG_proc, "xsane_fax_entry_rename\n");
- xsane_fax_entry_rename = (int) data;
+ xsane_fax_entry_rename = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -805,7 +811,7 @@ static void xsane_fax_entry_rename_callback(GtkWidget *widget, gpointer list)
gtk_window_set_resizable(GTK_WINDOW(rename_dialog), FALSE);
snprintf(filename, sizeof(filename), "%s %s", xsane.prog_name, WINDOW_FAX_RENAME);
gtk_window_set_title(GTK_WINDOW(rename_dialog), filename);
- g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_fax_entry_rename_button_callback,(void *) -1);
+ g_signal_connect(GTK_OBJECT(rename_dialog), "delete_event", (GtkSignalFunc) xsane_fax_entry_rename_button_callback, GINT_TO_POINTER(-1));
gtk_widget_show(rename_dialog);
text = gtk_entry_new();
@@ -822,7 +828,7 @@ static void xsane_fax_entry_rename_callback(GtkWidget *widget, gpointer list)
#else
button = gtk_button_new_with_label(BUTTON_CANCEL);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_entry_rename_button_callback, (void *) -1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_entry_rename_button_callback, GINT_TO_POINTER(-1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -832,7 +838,7 @@ static void xsane_fax_entry_rename_callback(GtkWidget *widget, gpointer list)
#else
button = gtk_button_new_with_label(BUTTON_OK);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_entry_rename_button_callback, (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_entry_rename_button_callback, GINT_TO_POINTER(1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
diff --git a/src/xsane-front-gtk.c b/src/xsane-front-gtk.c
index 7bb49b0..84452f2 100644
--- a/src/xsane-front-gtk.c
+++ b/src/xsane-front-gtk.c
@@ -598,7 +598,7 @@ gint xsane_authorization_callback(SANE_String_Const resource,
authorize_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(authorize_dialog), GTK_WIN_POS_CENTER);
gtk_window_set_resizable(GTK_WINDOW(authorize_dialog), FALSE);
- g_signal_connect(GTK_OBJECT(authorize_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), (void *) -1); /* -1 = cancel */
+ g_signal_connect(GTK_OBJECT(authorize_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), GINT_TO_POINTER(-1)); /* -1 = cancel */
snprintf(buf, sizeof(buf), "%s %s", xsane.prog_name, WINDOW_AUTHORIZE);
gtk_window_set_title(GTK_WINDOW(authorize_dialog), buf);
xsane_set_window_icon(authorize_dialog, 0);
@@ -667,7 +667,7 @@ gint xsane_authorization_callback(SANE_String_Const resource,
#else
button = gtk_button_new_with_label(BUTTON_CANCEL);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), (void *) -1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), GINT_TO_POINTER(-1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10); /* x-space around cancel-button */
gtk_widget_show(button);
@@ -677,7 +677,7 @@ gint xsane_authorization_callback(SANE_String_Const resource,
button = gtk_button_new_with_label(BUTTON_OK);
#endif
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
- g_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(xsane_authorization_button_callback), GINT_TO_POINTER(1));
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10); /* x-space around OK-button */
gtk_widget_grab_default(button);
gtk_widget_show(button);
@@ -1107,7 +1107,7 @@ void xsane_option_menu_new_with_pixmap(GdkWindow *window, GtkBox *parent, const
static void xsane_range_display_value_right_callback(GtkAdjustment *adjust, gpointer data)
{
gchar buf[TEXTBUFSIZE];
- int digits = (int) data;
+ int digits = GPOINTER_TO_INT(data);
GtkLabel *label;
snprintf(buf, sizeof(buf), "%1.*f", digits, adjust->value);
@@ -1144,7 +1144,7 @@ void xsane_range_new(GtkBox *parent, char *labeltext, const char *desc,
gtk_widget_set_size_request(value_label, 35, -1);
gtk_box_pack_end(GTK_BOX(hbox), value_label, FALSE, FALSE, 1);
- g_signal_connect(*data, "value_changed", (GtkSignalFunc) xsane_range_display_value_right_callback, (void *) digits);
+ g_signal_connect(*data, "value_changed", (GtkSignalFunc) xsane_range_display_value_right_callback, GINT_TO_POINTER(digits));
gtk_object_set_data(GTK_OBJECT(*data), "value-label", value_label);
g_signal_emit_by_name(GTK_OBJECT(*data), "value_changed"); /* update value */
gtk_widget_show(value_label);
@@ -1236,7 +1236,7 @@ void xsane_range_new_with_pixmap(GdkWindow *window, GtkBox *parent, const char *
gtk_widget_set_size_request(value_label, 35, -1);
gtk_box_pack_end(GTK_BOX(hbox), value_label, FALSE, FALSE, 1);
- g_signal_connect(*data, "value_changed", (GtkSignalFunc) xsane_range_display_value_right_callback, (void *) digits);
+ g_signal_connect(*data, "value_changed", (GtkSignalFunc) xsane_range_display_value_right_callback, GINT_TO_POINTER(digits));
gtk_object_set_data(GTK_OBJECT(*data), "value-label", value_label);
g_signal_emit_by_name(GTK_OBJECT(*data), "value_changed"); /* update value */
gtk_widget_show(value_label);
@@ -1383,7 +1383,7 @@ static void xsane_filename_counter_step_callback(GtkWidget *widget, gpointer dat
{
DBG(DBG_proc, "xsane_filename_counter_step_callback\n");
- preferences.filename_counter_step = (int) data;
+ preferences.filename_counter_step = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -1528,7 +1528,7 @@ void xsane_outputfilename_new(GtkWidget *vbox)
snprintf(buf, sizeof(buf), "%+d", j);
xsane_filename_counter_step_item = gtk_menu_item_new_with_label(buf);
gtk_container_add(GTK_CONTAINER(xsane_filename_counter_step_menu), xsane_filename_counter_step_item);
- g_signal_connect(GTK_OBJECT(xsane_filename_counter_step_item), "activate", (GtkSignalFunc) xsane_filename_counter_step_callback, (void *) j);
+ g_signal_connect(GTK_OBJECT(xsane_filename_counter_step_item), "activate", (GtkSignalFunc) xsane_filename_counter_step_callback, GINT_TO_POINTER(j));
gtk_widget_show(xsane_filename_counter_step_item);
if (preferences.filename_counter_step == j++)
{
@@ -1895,7 +1895,7 @@ static GtkWidget *eula_dialog = NULL;
static gboolean xsane_eula_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
- eula_accept_flag = (int) data;
+ eula_accept_flag = GPOINTER_TO_INT(data);
DBG(DBG_proc ,"xsane_eula_delete_event(%d)\n", eula_accept_flag);
eula_dialog = NULL;
@@ -1907,7 +1907,7 @@ static gboolean xsane_eula_delete_event(GtkWidget *widget, GdkEvent *event, gpoi
static void xsane_eula_button_callback(GtkWidget *widget, gpointer data)
{
- eula_accept_flag = (int) data;
+ eula_accept_flag = GPOINTER_TO_INT(data);
DBG(DBG_proc ,"xsane_eula_button_callback(%d)\n", eula_accept_flag);
@@ -1937,7 +1937,7 @@ int xsane_display_eula(int ask_for_accept)
gtk_widget_set_size_request(eula_dialog, 550, 580);
gtk_window_set_position(GTK_WINDOW(eula_dialog), GTK_WIN_POS_CENTER);
gtk_window_set_resizable(GTK_WINDOW(eula_dialog), TRUE);
- g_signal_connect(GTK_OBJECT(eula_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_eula_delete_event), (void *) -1); /* -1 = cancel */
+ g_signal_connect(GTK_OBJECT(eula_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_eula_delete_event), GINT_TO_POINTER(-1)); /* -1 = cancel */
snprintf(buf, sizeof(buf), "%s %s", xsane.prog_name, WINDOW_EULA);
gtk_window_set_title(GTK_WINDOW(eula_dialog), buf);
accelerator_group = gtk_accel_group_new();
@@ -2090,13 +2090,13 @@ int xsane_display_eula(int ask_for_accept)
button = gtk_button_new_with_label(BUTTON_NOT_ACCEPT);
gtk_widget_add_accelerator(button, "clicked", accelerator_group, GDK_Escape, 0, DEF_GTK_ACCEL_LOCKED);
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, (void *) 1 /* not accept */);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, GINT_TO_POINTER(1) /* not accept */);
gtk_container_add(GTK_CONTAINER(hbox), button);
gtk_widget_grab_default(button);
gtk_widget_show(button);
button = gtk_button_new_with_label(BUTTON_ACCEPT);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, (void *) 0 /* accept */);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, GINT_TO_POINTER(0) /* accept */);
gtk_container_add(GTK_CONTAINER(hbox), button);
gtk_widget_show(button);
}
@@ -2109,7 +2109,7 @@ int xsane_display_eula(int ask_for_accept)
#endif
gtk_widget_add_accelerator(button, "clicked", accelerator_group, GDK_Escape, 0, DEF_GTK_ACCEL_LOCKED);
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, (void *) 0 /* ok = accept */);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_eula_button_callback, GINT_TO_POINTER(0) /* ok = accept */);
gtk_container_add(GTK_CONTAINER(hbox), button);
gtk_widget_grab_default(button);
gtk_widget_show(button);
@@ -2336,7 +2336,7 @@ void xsane_display_gpl(void)
#endif
gtk_widget_add_accelerator(button, "clicked", accelerator_group, GDK_Escape, 0, DEF_GTK_ACCEL_LOCKED);
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_close_license_dialog_callback, (void *) 0 /* ok = accept */);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_close_license_dialog_callback, GINT_TO_POINTER(0) /* ok = accept */);
gtk_container_add(GTK_CONTAINER(hbox), button);
gtk_widget_grab_default(button);
gtk_widget_show(button);
@@ -2414,7 +2414,7 @@ static void xsane_front_gtk_getname_button_callback(GtkWidget *widget, gpointer
{
DBG(DBG_proc, "xsane_front_gtk_getname_button_callback\n");
- xsane_front_gtk_getname_button = (int) data;
+ xsane_front_gtk_getname_button = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -2438,7 +2438,7 @@ int xsane_front_gtk_getname_dialog(const char *dialog_title, const char *desc_te
gtk_window_set_resizable(GTK_WINDOW(getname_dialog), FALSE);
snprintf(buf, sizeof(buf), "%s %s", xsane.prog_name, dialog_title);
gtk_window_set_title(GTK_WINDOW(getname_dialog), buf);
- g_signal_connect(GTK_OBJECT(getname_dialog), "delete_event", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, (void *) -1);
+ g_signal_connect(GTK_OBJECT(getname_dialog), "delete_event", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, GINT_TO_POINTER(-1));
gtk_widget_show(getname_dialog);
/* set the main vbox */
@@ -2469,7 +2469,7 @@ int xsane_front_gtk_getname_dialog(const char *dialog_title, const char *desc_te
#else
button = gtk_button_new_with_label(BUTTON_CANCEL);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, (void *) -1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, GINT_TO_POINTER(-1));
gtk_widget_add_accelerator(button, "clicked", accelerator_group, GDK_Escape, 0, DEF_GTK_ACCEL_LOCKED); /* ESC */
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -2479,7 +2479,7 @@ int xsane_front_gtk_getname_dialog(const char *dialog_title, const char *desc_te
#else
button = gtk_button_new_with_label(BUTTON_OK);
#endif
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_front_gtk_getname_button_callback, GINT_TO_POINTER(1));
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
@@ -2580,9 +2580,9 @@ void xsane_front_gtk_email_project_update_lockfile_status()
{
fprintf(lockfile, "%s\n", xsane.email_status); /* first line is status of mail */
fprintf(lockfile, "%3d\n", (int) (xsane.email_progress_val * 100));
- }
- fclose(lockfile);
+ fclose(lockfile);
+ }
}
#endif
/* ---------------------------------------------------------------------------------------------------------------------- */
diff --git a/src/xsane-multipage-project.c b/src/xsane-multipage-project.c
index f23e5f8..af3c6cc 100644
--- a/src/xsane-multipage-project.c
+++ b/src/xsane-multipage-project.c
@@ -517,6 +517,11 @@ void xsane_multipage_project_save()
}
projectfile = fopen(filename, "wb"); /* write binary (b for win32) */
+ if (!projectfile)
+ {
+ DBG(DBG_error, "Could not open project file '%s'.\n", filename);
+ return;
+ }
if (xsane.multipage_status)
{
diff --git a/src/xsane-preview.c b/src/xsane-preview.c
index 6eaf687..ef26098 100644
--- a/src/xsane-preview.c
+++ b/src/xsane-preview.c
@@ -4112,7 +4112,7 @@ static void preview_create_preset_area_menu(Preview *p, int selection)
gtk_container_add(GTK_CONTAINER(preset_area_menu), preset_area_item);
g_signal_connect(GTK_OBJECT(preset_area_item), "button_press_event", (GtkSignalFunc) preview_preset_area_context_menu_callback, p);
g_signal_connect(GTK_OBJECT(preset_area_item), "activate", (GtkSignalFunc) preview_preset_area_callback, p);
- gtk_object_set_data(GTK_OBJECT(preset_area_item), "Selection", (void *) i);
+ gtk_object_set_data(GTK_OBJECT(preset_area_item), "Selection", GINT_TO_POINTER(i));
gtk_object_set_data(GTK_OBJECT(preset_area_item), "Preview", (void *) p);
gtk_widget_show(preset_area_item);
@@ -4468,7 +4468,7 @@ Preview *preview_new(void)
rotation_item = gtk_menu_item_new_with_label(buf);
gtk_container_add(GTK_CONTAINER(rotation_menu), rotation_item);
g_signal_connect(GTK_OBJECT(rotation_item), "activate", (GtkSignalFunc) preview_rotation_callback, p);
- gtk_object_set_data(GTK_OBJECT(rotation_item), "Selection", (void *) rot);
+ gtk_object_set_data(GTK_OBJECT(rotation_item), "Selection", GINT_TO_POINTER(rot));
gtk_widget_show(rotation_item);
}
@@ -5145,11 +5145,11 @@ static void preview_save_image_file(Preview *p, FILE *out)
/* always save it as a 16 bit PPM image: */
fprintf(out, "P6\n"
"# surface: %g %g %g %g %u %u\n"
- "# time: %d\n"
+ "# time: %ld\n"
"%d %d\n65535\n",
dsurface[0], dsurface[1], dsurface[2], dsurface[3],
p->surface_type, p->surface_unit,
- (int) time(NULL),
+ (long) time(NULL),
p->image_width, p->image_height);
fwrite(p->image_data_raw, 6, p->image_width*p->image_height, out);
@@ -5711,14 +5711,14 @@ static gint preview_preset_area_rename_callback(GtkWidget *widget, GtkWidget *pr
DBG(DBG_proc, "preview_preset_area_rename_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection"));
p = (Preview *) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Preview");
DBG(DBG_info ,"rename %s\n", preferences.preset_area[selection]->name);
/* set menu in correct state, is a bit strange this way but I do not have a better idea */
old_preset_area_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection"));
gtk_menu_popdown(GTK_MENU(old_preset_area_menu));
gtk_option_menu_set_history(GTK_OPTION_MENU(p->preset_area_option_menu), old_selection);
@@ -5761,12 +5761,12 @@ static gint preview_preset_area_add_callback(GtkWidget *widget, GtkWidget *prese
DBG(DBG_proc, "preview_preset_area_add_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection"));
p = (Preview *) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Preview");
/* set menu in correct state, is a bit strange this way but I do not have a better idea */
old_preset_area_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection"));
gtk_menu_popdown(GTK_MENU(old_preset_area_menu));
gtk_option_menu_set_history(GTK_OPTION_MENU(p->preset_area_option_menu), old_selection);
@@ -5812,7 +5812,7 @@ static gint preview_preset_area_delete_callback(GtkWidget *widget, GtkWidget *pr
DBG(DBG_proc, "preview_preset_area_delete_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection"));
p = (Preview *) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Preview");
@@ -5832,7 +5832,7 @@ static gint preview_preset_area_delete_callback(GtkWidget *widget, GtkWidget *pr
old_preset_area_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
gtk_option_menu_remove_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection"));
if (old_selection == selection) /* we are deleting the selected surface */
{
@@ -5861,7 +5861,7 @@ static gint preview_preset_area_move_up_callback(GtkWidget *widget, GtkWidget *p
DBG(DBG_proc, "preview_preset_area_move_up_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection"));
p = (Preview *) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Preview");
if (selection > 1) /* make sure "full area" stays at top */
@@ -5877,7 +5877,7 @@ static gint preview_preset_area_move_up_callback(GtkWidget *widget, GtkWidget *p
old_preset_area_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
gtk_option_menu_remove_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection"));
if (old_selection == selection)
{
@@ -5906,7 +5906,7 @@ static gint preview_preset_area_move_down_callback(GtkWidget *widget, GtkWidget
DBG(DBG_proc, "preview_preset_area_move_down_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Selection"));
p = (Preview *) gtk_object_get_data(GTK_OBJECT(preset_area_widget), "Preview");
/* full size can not moved down */
@@ -5923,7 +5923,7 @@ static gint preview_preset_area_move_down_callback(GtkWidget *widget, GtkWidget
old_preset_area_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
gtk_option_menu_remove_menu(GTK_OPTION_MENU(p->preset_area_option_menu));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_preset_area_menu))), "Selection"));
if (old_selection == selection)
{
@@ -5954,7 +5954,7 @@ static gint preview_preset_area_context_menu_callback(GtkWidget *widget, GdkEven
DBG(DBG_proc, "preview_preset_area_context_menu_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
if (event->type == GDK_BUTTON_PRESS)
{
@@ -6031,7 +6031,7 @@ static void preview_preset_area_callback(GtkWidget *widget, gpointer data)
DBG(DBG_proc, "preview_preset_area_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
p->preset_surface[0] = preferences.preset_area[selection]->xoffset;
p->preset_surface[1] = preferences.preset_area[selection]->yoffset;
@@ -6055,7 +6055,7 @@ static void preview_rotation_callback(GtkWidget *widget, gpointer data)
DBG(DBG_proc, "preview_rotation_callback\n");
- rot = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ rot = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
switch (rot)
{
diff --git a/src/xsane-save.c b/src/xsane-save.c
index 2d0e44b..31825d8 100644
--- a/src/xsane-save.c
+++ b/src/xsane-save.c
@@ -28,6 +28,8 @@
#include "xsane-save.h"
#include <time.h>
#include <sys/wait.h>
+#include <string.h>
+#include <errno.h>
#include <glib.h>
@@ -138,7 +140,7 @@ int xsane_create_secure_file(const char *filename)
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0666);
umask(XSANE_DEFAULT_UMASK); /* define new file permissions */
- if (fd > 0)
+ if (fd >= 0)
{
DBG(DBG_info, "file %s is created and secure\n", filename);
close(fd);
@@ -261,22 +263,27 @@ int xsane_get_filesize(char *filename)
{
FILE *infile;
int pos;
- int size;
+ int size = -1;
infile = fopen(filename, "rb"); /* read binary (b for win32) */
if (infile == NULL)
{
- return 0;
+ return 0;
}
- pos = ftell(infile);
+ if ((pos = ftell(infile)) < 0)
+ {
+ DBG(DBG_error, "xsane_get_filesize(): can't get file position\n");
+ goto out;
+ }
fseek(infile, 0, SEEK_END); /* get size */
size = ftell(infile);
fseek(infile, pos, SEEK_SET); /* go to previous position */
+out:
fclose(infile);
- return size;
+ return size;
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -959,7 +966,8 @@ cmsHTRANSFORM xsane_create_cms_transform(Image_info *image_info, int cms_functio
int xsane_save_grayscale_image_as_lineart(FILE *outfile, FILE *imagefile, Image_info *image_info, GtkProgressBar *progress_bar, int *cancel_save)
{
int x, y, bit;
- u_char bitval, packed;
+ int bitval;
+ u_char packed;
*cancel_save = 0;
@@ -1107,7 +1115,7 @@ int xsane_save_scaled_image(FILE *outfile, FILE *imagefile, Image_info *image_in
y_factor = 1.0;
y = 0.0;
- while (y < original_image_height)
+ do
{
DBG(DBG_info2, "xsane_save_scaled_image: original line %d, new line %d\n", (int) y, y_new);
@@ -1233,6 +1241,7 @@ int xsane_save_scaled_image(FILE *outfile, FILE *imagefile, Image_info *image_in
y += y_factor;
read_line = (oldy != (int) y);
}
+ while (y < original_image_height);
if (read_line) /* we have to write one more line */
{
@@ -3784,7 +3793,8 @@ int xsane_save_ps(FILE *outfile, FILE *imagefile, Image_info *image_info, float
static int xsane_embed_pdf_icm_profile(FILE *outfile, struct pdf_xref *xref, char *icm_filename, int flatedecode, int icc_object)
{
FILE *icm_profile;
- size_t size, embed_len;
+ ssize_t size;
+ size_t embed_len;
unsigned char *embed_buffer;
int ret;
@@ -3798,7 +3808,12 @@ static int xsane_embed_pdf_icm_profile(FILE *outfile, struct pdf_xref *xref, cha
}
fseek(icm_profile, 0, SEEK_END);
- size = ftell(icm_profile);
+ if ((size = ftell(icm_profile)) < 0)
+ {
+ DBG(DBG_error, "Could not determine size of ICM profile file.");
+ fclose(icm_profile);
+ return -1;
+ }
fseek(icm_profile, 0, SEEK_SET);
embed_buffer = malloc(size + 1);
@@ -4374,7 +4389,8 @@ static void xsane_jpeg_write_icm_profile(j_compress_ptr cinfo_ptr, const JOCTET
static void xsane_jpeg_embed_scanner_icm_profile(j_compress_ptr cinfo_ptr, const char *icm_filename)
{
FILE *icm_profile;
- size_t size, embed_len;
+ ssize_t size;
+ size_t embed_len;
cmsUInt8Number *embed_buffer;
DBG(DBG_proc, "xsane_jpeg_embed_scanner_icm_profile(%s)\n", icm_filename);
@@ -4385,15 +4401,19 @@ static void xsane_jpeg_embed_scanner_icm_profile(j_compress_ptr cinfo_ptr, const
return;
}
- fseek(icm_profile, 0, SEEK_END);
- size = ftell(icm_profile);
- fseek(icm_profile, 0, SEEK_SET);
+ if ((fseek(icm_profile, 0, SEEK_END) < 0) ||
+ ((size = ftell(icm_profile)) < 0) ||
+ (fseek(icm_profile, 0, SEEK_SET) < 0))
+ {
+ DBG(DBG_error, "Can't determine size of ICM profile file '%s': '%s'",
+ icm_filename, strerror(errno));
+ goto out;
+ }
embed_buffer = (cmsUInt8Number *) malloc(size + 1);
if (embed_buffer)
{
embed_len = fread(embed_buffer, 1, size, icm_profile);
- fclose(icm_profile);
embed_buffer[embed_len] = 0;
xsane_jpeg_write_icm_profile(cinfo_ptr, embed_buffer, embed_len);
@@ -4401,6 +4421,9 @@ static void xsane_jpeg_embed_scanner_icm_profile(j_compress_ptr cinfo_ptr, const
DBG(DBG_info, "ICM profile %s has been embedded to jpeg file\n", icm_filename);
}
+
+out:
+ fclose(icm_profile);
}
#endif
@@ -4606,15 +4629,20 @@ int xsane_save_jpeg(FILE *outfile, int quality, FILE *imagefile, Image_info *ima
static void xsane_tiff_embed_scanner_icm_profile(TIFF *tiffile, const char *icm_filename)
{
FILE *icm_profile;
- size_t size;
+ ssize_t size;
char *icm_profile_buffer;
DBG(DBG_proc, "xsane_tiff_embed_scanner_icm_profile(%s)\n", icm_filename);
if((icm_profile = fopen(icm_filename, "rb")))
{
- fseek(icm_profile, 0, SEEK_END);
- size = ftell(icm_profile);
- fseek(icm_profile, 0, SEEK_SET);
+ if ((fseek(icm_profile, 0, SEEK_END) < 0) ||
+ ((size = ftell(icm_profile)) < 0) ||
+ (fseek(icm_profile, 0, SEEK_SET) < 0))
+ {
+ DBG(DBG_error, "Can't determine size of ICM profile file '%s': '%s'",
+ icm_filename, strerror(errno));
+ goto out;
+ }
icm_profile_buffer = (char *) malloc(size + 1);
@@ -4638,7 +4666,7 @@ static void xsane_tiff_embed_scanner_icm_profile(TIFF *tiffile, const char *icm_
DBG(DBG_error, "Can not get enogh memory for ICM profile\n");
}
-
+out:
fclose(icm_profile);
}
else
@@ -4869,17 +4897,22 @@ int xsane_save_tiff_page(TIFF *tiffile, int page, int pages, int quality, FILE *
static void xsane_png_embed_scanner_icm_profile(png_structp png_ptr, png_infop png_info_ptr, const char *icm_filename)
{
FILE *icm_profile;
- gchar *profile_buffer;
- size_t size;
+ guchar *profile_buffer;
+ ssize_t size;
DBG(DBG_proc, "xsane_png_embed_scanner_icm_profile(%s)\n", icm_filename);
icm_profile = fopen(icm_filename, "rb");
if (icm_profile)
{
- fseek(icm_profile, 0, SEEK_END);
- size = ftell(icm_profile);
- fseek(icm_profile, 0, SEEK_SET);
+ if ((fseek(icm_profile, 0, SEEK_END) < 0) ||
+ ((size = ftell(icm_profile)) < 0) ||
+ (fseek(icm_profile, 0, SEEK_SET) < 0))
+ {
+ DBG(DBG_error, "Can't determine size of ICM profile file '%s': '%s'",
+ icm_filename, strerror(errno));
+ goto out;
+ }
profile_buffer = malloc(size);
@@ -4901,6 +4934,7 @@ static void xsane_png_embed_scanner_icm_profile(png_structp png_ptr, png_infop p
DBG(DBG_error, "can not allocate profile_buffer\n");
}
+out:
fclose(icm_profile);
}
else
@@ -5416,7 +5450,7 @@ static int xsane_save_pnm_16_ascii_color(FILE *outfile, FILE *imagefile, Image_i
*cancel_save = 0;
- data = malloc(image_info->image_width * 6);
+ data = malloc((guint32)image_info->image_width * 6);
if (!data)
{
@@ -5432,7 +5466,7 @@ static int xsane_save_pnm_16_ascii_color(FILE *outfile, FILE *imagefile, Image_i
{
DBG(DBG_info, "Doing CMS color conversion\n");
- data_raw = malloc(image_info->image_width * 6);
+ data_raw = malloc((guint32)image_info->image_width * 6);
if (!data_raw)
{
@@ -5622,7 +5656,7 @@ static int xsane_save_pnm_16_binary_color(FILE *outfile, FILE *imagefile, Image_
*cancel_save = 0;
- data = malloc(image_info->image_width * 6);
+ data = malloc((guint32)image_info->image_width * 6);
if (!data)
{
@@ -5638,7 +5672,7 @@ static int xsane_save_pnm_16_binary_color(FILE *outfile, FILE *imagefile, Image_
{
DBG(DBG_info, "Doing CMS color conversion\n");
- data_raw = malloc(image_info->image_width * 6);
+ data_raw = malloc((guint32)image_info->image_width * 6);
if (!data_raw)
{
@@ -6159,6 +6193,8 @@ int xsane_save_image_as_text(char *output_filename, char *input_filename, GtkPro
gtk_progress_set_format_string(GTK_PROGRESS(progress_bar), "");
xsane_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress_bar), 0.0);
+
+ fclose(ocr_progress); /* close reading end of pipe */
}
else /* no pipe available */
{
@@ -6178,11 +6214,6 @@ int xsane_save_image_as_text(char *output_filename, char *input_filename, GtkPro
}
}
}
-
- if (pipefd[0])
- {
- fclose(ocr_progress); /* close reading end of pipe */
- }
return (*cancel_save);
}
@@ -6784,11 +6815,12 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
unsigned tile_offset;
int i, x, y;
Image_info image_info;
- FILE *imagefile;
+ FILE *imagefile = NULL;
int bytes;
unsigned char *data = NULL;
guint16 *data16 = NULL;
size_t bytes_read;
+ int retval = 0;
#ifdef HAVE_LIBLCMS
unsigned char *data_raw = NULL;
cmsHTRANSFORM hTransform = NULL;
@@ -6799,13 +6831,13 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
*cancel_save = 0;
imagefile = fopen(input_filename, "rb"); /* read binary (b for win32) */
- if (imagefile == 0)
+ if (!imagefile)
{
char buf[TEXTBUFSIZE];
snprintf(buf, sizeof(buf), "%s `%s': %s", ERR_OPEN_FAILED, input_filename, strerror(errno));
xsane_back_gtk_error(buf, TRUE);
-
- return -1;
+ retval = -1;
+ goto out;
}
xsane_read_pnm_header(imagefile, &image_info);
@@ -6828,7 +6860,8 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
snprintf(buf, sizeof(buf), "%s %s", ERR_DURING_SAVE, ERR_NO_MEM);
xsane_back_gtk_error(buf, TRUE);
- return -1; /* error */
+ retval = -1; /* error */
+ goto out;
}
#ifdef HAVE_LIBLCMS
@@ -6847,11 +6880,10 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
{
char buf[TEXTBUFSIZE];
- free(data);
-
snprintf(buf, sizeof(buf), "%s %s", ERR_DURING_SAVE, ERR_NO_MEM);
xsane_back_gtk_error(buf, TRUE);
- return -1; /* error */
+ retval = -1; /* error */
+ goto out;
}
}
#endif
@@ -6892,6 +6924,11 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
{
fseek(icm_profile, 0, SEEK_END);
size = ftell(icm_profile);
+ if (size < 0)
+ {
+ DBG(DBG_error, "xsane_transfer_to_gimp(): can't tell file position");
+ goto out;
+ }
fseek(icm_profile, 0, SEEK_SET);
profile_buffer = malloc(size);
@@ -6949,7 +6986,7 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
case 1: /* 1 bit gray => conversion to 8 bit gray */
for (i = 0; i < ( (image_info.image_width + 7) / 8) * image_info.image_height; ++i)
{
- u_char mask;
+ int mask;
int j;
mask = fgetc(imagefile);
@@ -7219,7 +7256,7 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
g_free(tile);
tile = 0;
- fclose(imagefile);
+out:
#ifdef HAVE_LIBLCMS
if (hTransform != NULL)
@@ -7232,9 +7269,18 @@ int xsane_transfer_to_gimp(char *input_filename, int apply_ICM_profile, int cms_
free(data_raw);
}
#endif
- free(data);
- return 0;
+ if (imagefile)
+ {
+ fclose(imagefile);
+ }
+
+ if (data)
+ {
+ free(data);
+ }
+
+ return retval;
}
#endif /* HAVE_ANY_GIMP */
@@ -7617,7 +7663,7 @@ int pop3_login(int fd_socket, char *user, char *passwd)
int len;
ssize_t bytes_written;
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7627,7 +7673,7 @@ int pop3_login(int fd_socket, char *user, char *passwd)
snprintf(buf, sizeof(buf), "USER %s\r\n", user);
DBG(DBG_info2, "> USER xxx\n");
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7641,7 +7687,7 @@ int pop3_login(int fd_socket, char *user, char *passwd)
snprintf(buf, sizeof(buf), "PASS %s\r\n", passwd);
DBG(DBG_info2, "> PASS xxx\n");
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7655,7 +7701,7 @@ int pop3_login(int fd_socket, char *user, char *passwd)
snprintf(buf, sizeof(buf), "QUIT\r\n");
DBG(DBG_info2, "> QUIT\n");
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7683,7 +7729,7 @@ int asmtp_authentication(int fd_socket, int auth_type, char *user, char *passwd)
bytes_written = write(fd_socket, buf, strlen(buf));
snprintf(buf, sizeof(buf), "%c%s%c%s", 0, user, 0, passwd);
write_string_base64(fd_socket, buf, strlen(user)+strlen(passwd)+2);
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7695,7 +7741,7 @@ int asmtp_authentication(int fd_socket, int auth_type, char *user, char *passwd)
snprintf(buf, sizeof(buf), "AUTH LOGIN\r\n");
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7710,7 +7756,7 @@ int asmtp_authentication(int fd_socket, int auth_type, char *user, char *passwd)
DBG(DBG_info2, "> (USERNAME)\n");
write_string_base64(fd_socket, user, strlen(user));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7725,7 +7771,7 @@ int asmtp_authentication(int fd_socket, int auth_type, char *user, char *passwd)
DBG(DBG_info2, "> (PASSWORD)\n");
write_string_base64(fd_socket, passwd, strlen(passwd));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7743,7 +7789,7 @@ int asmtp_authentication(int fd_socket, int auth_type, char *user, char *passwd)
snprintf(buf, sizeof(buf), "AUTH CRAM-MD5\r\n");
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7773,7 +7819,7 @@ int write_smtp_header(int fd_socket, char *from, char *to, int auth_type, char *
char *pos = NULL;
ssize_t bytes_written;
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7790,7 +7836,7 @@ int write_smtp_header(int fd_socket, char *from, char *to, int auth_type, char *
}
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7824,7 +7870,7 @@ int write_smtp_header(int fd_socket, char *from, char *to, int auth_type, char *
snprintf(buf, sizeof(buf), "MAIL FROM: <%s>\r\n", from);
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7864,7 +7910,7 @@ int write_smtp_header(int fd_socket, char *from, char *to, int auth_type, char *
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7897,7 +7943,7 @@ int write_smtp_header(int fd_socket, char *from, char *to, int auth_type, char *
snprintf(buf, sizeof(buf), "DATA\r\n");
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
@@ -7932,7 +7978,7 @@ int write_smtp_footer(int fd_socket)
snprintf(buf, sizeof(buf), "\r\n.\r\n");
DBG(DBG_info2, "> %s", buf);
bytes_written = write(fd_socket, buf, strlen(buf));
- len = read(fd_socket, buf, sizeof(buf));
+ len = read(fd_socket, buf, sizeof(buf) - 1);
if (len >= 0)
{
buf[len] = 0;
diff --git a/src/xsane-scan.c b/src/xsane-scan.c
index 88f954a..b6a66d6 100644
--- a/src/xsane-scan.c
+++ b/src/xsane-scan.c
@@ -394,6 +394,13 @@ static void xsane_read_image_data(gpointer data, gint source, GdkInputCondition
{
long fpos = ftell(xsane.out);
+ if (fpos < 0)
+ {
+ DBG(DBG_error, "xsane_read_image_data(): can't tell file "
+ "position");
+ return;
+ }
+
fseek(xsane.out, 0, SEEK_CUR); /* sync between write and read */
bytes_read = fread(rgbbuf, 1, bytes - 1, xsane.out);
fseek(xsane.out, fpos, SEEK_SET);
@@ -1173,6 +1180,8 @@ void xsane_scan_done(SANE_Status status)
{
abort = 1;
}
+
+ fclose(outfile);
}
else
{
@@ -1182,8 +1191,6 @@ void xsane_scan_done(SANE_Status status)
xsane_back_gtk_error(buf, TRUE);
abort = 1;
}
-
- fclose(outfile);
}
fclose(infile);
@@ -1452,7 +1459,7 @@ void xsane_scan_done(SANE_Status status)
}
else
{
- type = "";
+ type = strdup("");
}
list_item = gtk_list_item_new_with_label(page);
@@ -1493,7 +1500,7 @@ void xsane_scan_done(SANE_Status status)
}
else
{
- type = "";
+ type = strdup("");
}
list_item = gtk_list_item_new_with_label(page);
@@ -1535,7 +1542,7 @@ void xsane_scan_done(SANE_Status status)
}
else
{
- type = "";
+ type = strdup("");
}
list_item = gtk_list_item_new_with_label(page);
diff --git a/src/xsane-setup.c b/src/xsane-setup.c
index a61833a..413a343 100644
--- a/src/xsane-setup.c
+++ b/src/xsane-setup.c
@@ -111,7 +111,7 @@ void xsane_new_printer(void)
DBG(DBG_proc, "xsane_new_printer\n");
- newprinters = realloc(preferences.printer, (preferences.printerdefinitions+1) * sizeof(void *));
+ newprinters = realloc(preferences.printer, (preferences.printerdefinitions+1) * sizeof(Preferences_printer_t *));
if (newprinters) /* realloc returns NULL if failed, in this case the old memory keeps alive */
{
@@ -309,7 +309,7 @@ static void xsane_setup_printer_callback(GtkWidget *widget, gpointer data)
{
DBG(DBG_proc, "xsane_setup_printer_callback\n");
- preferences.printernr = (int) data;
+ preferences.printernr = GPOINTER_TO_INT(data);
xsane_setup_printer_update();
}
@@ -328,7 +328,7 @@ static void xsane_setup_printer_menu_build(GtkWidget *option_menu)
{
printer_item = gtk_menu_item_new_with_label(preferences.printer[i]->name);
gtk_container_add(GTK_CONTAINER(printer_menu), printer_item);
- g_signal_connect(GTK_OBJECT(printer_item), "activate", (GtkSignalFunc) xsane_setup_printer_callback, (void *) i);
+ g_signal_connect(GTK_OBJECT(printer_item), "activate", (GtkSignalFunc) xsane_setup_printer_callback, GINT_TO_POINTER(i));
gtk_widget_show(printer_item);
}
@@ -454,7 +454,7 @@ static void xsane_setup_filename_counter_len_callback(GtkWidget *widget, gpointe
{
DBG(DBG_proc, "xsane_setup_filename_counter_len_callback\n");
- xsane_setup.filename_counter_len = (int) data;
+ xsane_setup.filename_counter_len = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -464,7 +464,7 @@ static void xsane_setup_tiff_compression16_callback(GtkWidget *widget, gpointer
{
DBG(DBG_proc, "xsane_setup_tiff_compression16_callback\n");
- xsane_setup.tiff_compression16_nr = (int) data;
+ xsane_setup.tiff_compression16_nr = GPOINTER_TO_INT(data);
}
/* -------------------------------------- */
@@ -473,7 +473,7 @@ static void xsane_setup_tiff_compression8_callback(GtkWidget *widget, gpointer d
{
DBG(DBG_proc, "xsane_setup_tiff_compression8_callback\n");
- xsane_setup.tiff_compression8_nr = (int) data;
+ xsane_setup.tiff_compression8_nr = GPOINTER_TO_INT(data);
}
/* -------------------------------------- */
@@ -481,7 +481,7 @@ static void xsane_setup_tiff_compression8_callback(GtkWidget *widget, gpointer d
static void xsane_setup_tiff_compression1_callback(GtkWidget *widget, gpointer data)
{
DBG(DBG_proc, "xsane_setup_tiff_compression1_callback\n");
- xsane_setup.tiff_compression1_nr = (int) data;
+ xsane_setup.tiff_compression1_nr = GPOINTER_TO_INT(data);
}
#endif
@@ -569,7 +569,7 @@ static void xsane_setup_color_management_apply_changes(GtkWidget *widget, gpoint
{
DBG(DBG_proc, "xsane_setup_colormagaement_apply_changes\n");
- preferences.cms_intent = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(xsane_setup.cms_intent_option_menu))))), "Selection");
+ preferences.cms_intent = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(xsane_setup.cms_intent_option_menu))))), "Selection"));
xsane_update_bool(xsane_setup.cms_bpc_button, &preferences.cms_bpc);
if (xsane.scanner_default_color_icm_profile)
@@ -843,7 +843,7 @@ void xsane_close_setup_dialog_callback(GtkWidget *widget, gpointer data)
static void xsane_permission_toggled(GtkWidget *widget, gpointer data)
{
- int mask = (int) data;
+ int mask = GPOINTER_TO_INT(data);
int *permission = 0;
const gchar *name = gtk_widget_get_name(widget);
@@ -912,7 +912,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_READ);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 256);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(256));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
gtk_widget_set_sensitive(button, user_sensitivity);
@@ -922,7 +922,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_WRITE);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 128);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(128));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
gtk_widget_set_sensitive(button, user_sensitivity);
@@ -932,7 +932,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_SEARCH);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 64);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(64));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
gtk_widget_set_sensitive(button, x_sensitivity & user_sensitivity);
@@ -950,7 +950,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_READ);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 32);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(32));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
@@ -959,7 +959,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_WRITE);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 16);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(16));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
@@ -968,7 +968,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_SEARCH);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 8);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(8));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
gtk_widget_set_sensitive(button, x_sensitivity);
@@ -986,7 +986,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_READ);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 4);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(4));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
@@ -995,7 +995,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_WRITE);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 2);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(2));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
@@ -1004,7 +1004,7 @@ static void xsane_permission_box(GtkWidget *parent, gchar *name, gchar *descript
xsane_back_gtk_set_tooltip(xsane.tooltips, button, DESC_PERMISSION_SEARCH);
gtk_widget_set_size_request(button, 26, -1);
gtk_widget_set_name(button, name);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, (void *) 1);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_permission_toggled, GINT_TO_POINTER(1));
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
gtk_widget_show(button);
gtk_widget_set_sensitive(button, x_sensitivity);
@@ -1750,7 +1750,7 @@ static void xsane_saving_notebook(GtkWidget *notebook)
}
filename_counter_len_item = gtk_menu_item_new_with_label(buf);
gtk_container_add(GTK_CONTAINER(filename_counter_len_menu), filename_counter_len_item);
- g_signal_connect(GTK_OBJECT(filename_counter_len_item), "activate", (GtkSignalFunc) xsane_setup_filename_counter_len_callback, (void *) i);
+ g_signal_connect(GTK_OBJECT(filename_counter_len_item), "activate", (GtkSignalFunc) xsane_setup_filename_counter_len_callback, GINT_TO_POINTER(i));
gtk_widget_show(filename_counter_len_item);
if (preferences.filename_counter_len == i)
{
@@ -1983,7 +1983,7 @@ static void xsane_filetype_notebook(GtkWidget *notebook)
{
tiff_compression_item = gtk_menu_item_new_with_label(tiff_compression16_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(tiff_compression_menu), tiff_compression_item);
- g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression16_callback, (void *) tiff_compression16_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression16_callback, GINT_TO_POINTER(tiff_compression16_strings[i-1].number));
gtk_widget_show(tiff_compression_item);
if (tiff_compression16_strings[i-1].number == preferences.tiff_compression16_nr)
{
@@ -2019,7 +2019,7 @@ static void xsane_filetype_notebook(GtkWidget *notebook)
{
tiff_compression_item = gtk_menu_item_new_with_label(tiff_compression8_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(tiff_compression_menu), tiff_compression_item);
- g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression8_callback, (void *) tiff_compression8_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression8_callback, GINT_TO_POINTER(tiff_compression8_strings[i-1].number));
gtk_widget_show(tiff_compression_item);
if (tiff_compression8_strings[i-1].number == preferences.tiff_compression8_nr)
{
@@ -2056,7 +2056,7 @@ static void xsane_filetype_notebook(GtkWidget *notebook)
{
tiff_compression_item = gtk_menu_item_new_with_label(tiff_compression1_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(tiff_compression_menu), tiff_compression_item);
- g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression1_callback, (void *) tiff_compression1_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(tiff_compression_item), "activate", (GtkSignalFunc) xsane_setup_tiff_compression1_callback, GINT_TO_POINTER(tiff_compression1_strings[i-1].number));
gtk_widget_show(tiff_compression_item);
if (tiff_compression1_strings[i-1].number == preferences.tiff_compression1_nr)
{
@@ -2251,7 +2251,7 @@ static void xsane_fax_notebook(GtkWidget *notebook)
for (i=0; i < sizeof(fax_program)/sizeof(fax_program_options_type); i++)
{
button = gtk_button_new_with_label(fax_program[i].identifier);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_notebook_set_faxprogram_default_callback, (void *) i);
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_fax_notebook_set_faxprogram_default_callback, GINT_TO_POINTER(i));
gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 10);
gtk_widget_show(button);
}
@@ -2557,7 +2557,7 @@ static void xsane_email_notebook(GtkWidget *notebook)
{
authentication_menu_item = gtk_menu_item_new_with_label(authentication_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(authentication_menu), authentication_menu_item);
- g_signal_connect(GTK_OBJECT(authentication_menu_item), "activate", (GtkSignalFunc) xsane_setup_authentication_type_callback, (void *) authentication_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(authentication_menu_item), "activate", (GtkSignalFunc) xsane_setup_authentication_type_callback, GINT_TO_POINTER(authentication_strings[i-1].number));
gtk_widget_show(authentication_menu_item);
if (authentication_strings[i-1].number == preferences.email_authentication)
{
@@ -2926,7 +2926,7 @@ static void xsane_display_notebook(GtkWidget *notebook)
{
show_range_mode_item = gtk_menu_item_new_with_label(show_range_mode_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(show_range_mode_menu), show_range_mode_item);
- g_signal_connect(GTK_OBJECT(show_range_mode_item), "activate", (GtkSignalFunc) xsane_setup_show_range_mode_callback, (void *) show_range_mode_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(show_range_mode_item), "activate", (GtkSignalFunc) xsane_setup_show_range_mode_callback, GINT_TO_POINTER(show_range_mode_strings[i-1].number));
gtk_widget_show(show_range_mode_item);
if (show_range_mode_strings[i-1].number == preferences.show_range_mode)
{
@@ -3129,7 +3129,7 @@ static void xsane_enhance_notebook_sensitivity(int lineart_mode)
static void xsane_setup_authentication_type_callback(GtkWidget *widget, gpointer data)
{
- xsane_setup.email_authentication = (int) data;
+ xsane_setup.email_authentication = GPOINTER_TO_INT(data);
gtk_widget_set_sensitive(xsane_setup.pop3_vbox, (xsane_setup.email_authentication == EMAIL_AUTH_POP3));
}
@@ -3138,14 +3138,14 @@ static void xsane_setup_authentication_type_callback(GtkWidget *widget, gpointer
static void xsane_setup_show_range_mode_callback(GtkWidget *widget, gpointer data)
{
- xsane_setup.show_range_mode = (int) data;
+ xsane_setup.show_range_mode = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
static void xsane_setup_lineart_mode_callback(GtkWidget *widget, gpointer data)
{
- xsane_setup.lineart_mode = (int) data;
+ xsane_setup.lineart_mode = GPOINTER_TO_INT(data);
xsane_enhance_notebook_sensitivity(xsane_setup.lineart_mode);
}
@@ -3168,7 +3168,7 @@ static void xsane_setup_preview_pipette_range_callback(GtkWidget *widget, gpoint
{
DBG(DBG_proc, "xsane_setup_preview_pipette_range_callback\n");
- xsane_setup.preview_pipette_range = (int) data;
+ xsane_setup.preview_pipette_range = GPOINTER_TO_INT(data);
}
/* ---------------------------------------------------------------------------------------------------------------------- */
@@ -3237,7 +3237,7 @@ static void xsane_enhance_notebook(GtkWidget *notebook)
{
lineart_mode_item = gtk_menu_item_new_with_label(lineart_mode_strings[i-1].name);
gtk_container_add(GTK_CONTAINER(lineart_mode_menu), lineart_mode_item);
- g_signal_connect(GTK_OBJECT(lineart_mode_item), "activate", (GtkSignalFunc) xsane_setup_lineart_mode_callback, (void *) lineart_mode_strings[i-1].number);
+ g_signal_connect(GTK_OBJECT(lineart_mode_item), "activate", (GtkSignalFunc) xsane_setup_lineart_mode_callback, GINT_TO_POINTER(lineart_mode_strings[i-1].number));
gtk_widget_show(lineart_mode_item);
if (lineart_mode_strings[i-1].number == xsane.lineart_mode)
{
@@ -3461,7 +3461,7 @@ static void xsane_enhance_notebook(GtkWidget *notebook)
snprintf(buf, sizeof(buf), "%d x %d pixel", j, j);
preview_pipette_range_item = gtk_menu_item_new_with_label(buf);
gtk_container_add(GTK_CONTAINER(preview_pipette_range_menu), preview_pipette_range_item);
- g_signal_connect(GTK_OBJECT(preview_pipette_range_item), "activate", (GtkSignalFunc) xsane_setup_preview_pipette_range_callback, (void *) j);
+ g_signal_connect(GTK_OBJECT(preview_pipette_range_item), "activate", (GtkSignalFunc) xsane_setup_preview_pipette_range_callback, GINT_TO_POINTER(j));
gtk_widget_show(preview_pipette_range_item);
if (preferences.preview_pipette_range == j)
{
@@ -3555,22 +3555,22 @@ static void xsane_color_management_notebook(GtkWidget *notebook)
menu = gtk_menu_new();
menu_item = gtk_menu_item_new_with_label(SUBMENU_ITEM_CMS_INTENT_PERCEPTUAL);
- gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", (void *) INTENT_PERCEPTUAL);
+ gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", GINT_TO_POINTER(INTENT_PERCEPTUAL));
gtk_container_add(GTK_CONTAINER(menu), menu_item);
gtk_widget_show(menu_item);
menu_item = gtk_menu_item_new_with_label(SUBMENU_ITEM_CMS_INTENT_RELATIVE_COLORIMETRIC);
- gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", (void *) INTENT_RELATIVE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", GINT_TO_POINTER(INTENT_RELATIVE_COLORIMETRIC));
gtk_container_add(GTK_CONTAINER(menu), menu_item);
gtk_widget_show(menu_item);
menu_item = gtk_menu_item_new_with_label(SUBMENU_ITEM_CMS_INTENT_ABSOLUTE_COLORIMETRIC);
- gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", (void *) INTENT_ABSOLUTE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", GINT_TO_POINTER(INTENT_ABSOLUTE_COLORIMETRIC));
gtk_container_add(GTK_CONTAINER(menu), menu_item);
gtk_widget_show(menu_item);
menu_item = gtk_menu_item_new_with_label(SUBMENU_ITEM_CMS_INTENT_SATURATION);
- gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", (void *) INTENT_SATURATION);
+ gtk_object_set_data(GTK_OBJECT(menu_item), "Selection", GINT_TO_POINTER(INTENT_SATURATION));
gtk_container_add(GTK_CONTAINER(menu), menu_item);
gtk_widget_show(menu_item);
diff --git a/src/xsane-text.h b/src/xsane-text.h
index ee4a222..44659b9 100644
--- a/src/xsane-text.h
+++ b/src/xsane-text.h
@@ -803,6 +803,7 @@ YOU ARE ALONE!\
#define ERR_HEADER_CHILD_PROCESS_ERROR _("Child process error")
#define ERR_FAILED_CREATE_FILE _("Failed to create file:")
+#define ERR_FAILED_CREATE_ENSURE_DIR _("Failed to ensure path is a directory, or to create as one:")
#define ERR_LOAD_DEVICE_SETTINGS _("Error while loading device settings:")
#define ERR_NO_DRC_FILE _("is not a device-rc-file !!!")
#define ERR_NETSCAPE_EXECUTE_FAIL _("Failed to execute netscape!")
diff --git a/src/xsane-viewer.c b/src/xsane-viewer.c
index 844c077..6786e96 100644
--- a/src/xsane-viewer.c
+++ b/src/xsane-viewer.c
@@ -32,6 +32,8 @@
#include "xsane-save.h"
#include <gdk/gdkkeysyms.h>
#include <sys/wait.h>
+#include <string.h>
+#include <errno.h>
#ifndef PATH_MAX
# define PATH_MAX 1024
@@ -506,8 +508,8 @@ static void xsane_viewer_scale_set_scale_value_and_adjustments(GtkAdjustment *ad
*scale_val = adj_data->value;
- image_width = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_width");
- image_height = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_height");
+ image_width = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_width"));
+ image_height = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_height"));
adj = (GtkAdjustment*) gtk_object_get_data(GTK_OBJECT(adj_data), "size-x-adjustment");
if ((adj) && (image_width))
@@ -529,8 +531,8 @@ static void xsane_viewer_scale_set_size_x_value_and_adjustments(GtkAdjustment *a
GtkAdjustment *adj;
int image_width, image_height;
- image_width = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_width");
- image_height = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_height");
+ image_width = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_width"));
+ image_height = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_height"));
if (!image_width)
{
@@ -553,8 +555,8 @@ static void xsane_viewer_scale_set_size_y_value_and_adjustments(GtkAdjustment *a
GtkAdjustment *adj;
int image_width, image_height;
- image_width = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_width");
- image_height = (int) gtk_object_get_data(GTK_OBJECT(adj_data), "image_height");
+ image_width = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_width"));
+ image_height = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(adj_data), "image_height"));
if (!image_height)
{
@@ -663,7 +665,7 @@ static void xsane_viewer_scale_callback(GtkWidget *window, gpointer data)
button = gtk_check_button_new_with_label(BUTTON_SCALE_BIND);
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 5);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), v->bind_scale);
- g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_viewer_button_changed, (void *) &v->bind_scale);
+ g_signal_connect(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_viewer_button_changed, GINT_TO_POINTER(&v->bind_scale));
g_signal_connect_after(GTK_OBJECT(button), "toggled", (GtkSignalFunc) xsane_viewer_scale_callback, (void *) v);
gtk_widget_show(button);
@@ -715,20 +717,20 @@ static void xsane_viewer_scale_callback(GtkWidget *window, gpointer data)
gtk_widget_show(spinbutton);
xsane_back_gtk_set_tooltip(xsane.tooltips, spinbutton, DESC_SCALE_HEIGHT);
- gtk_object_set_data(GTK_OBJECT(scale_widget), "size-x-adjustment", (void *) adjustment_size_x);
- gtk_object_set_data(GTK_OBJECT(scale_widget), "size-y-adjustment", (void *) adjustment_size_y);
- gtk_object_set_data(GTK_OBJECT(scale_widget), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(scale_widget), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(scale_widget), "size-x-adjustment", GINT_TO_POINTER(adjustment_size_x));
+ gtk_object_set_data(GTK_OBJECT(scale_widget), "size-y-adjustment", GINT_TO_POINTER(adjustment_size_y));
+ gtk_object_set_data(GTK_OBJECT(scale_widget), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(scale_widget), "image_height", GINT_TO_POINTER(image_info.image_height));
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "scale-adjustment", (void *) scale_widget);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "size-y-adjustment", (void *) adjustment_size_y);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "scale-adjustment", GINT_TO_POINTER(scale_widget));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "size-y-adjustment", GINT_TO_POINTER(adjustment_size_y));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_height", GINT_TO_POINTER(image_info.image_height));
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "scale-adjustment", (void *) scale_widget);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "size-x-adjustment", (void *) adjustment_size_x);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "scale-adjustment", GINT_TO_POINTER(scale_widget));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "size-x-adjustment", GINT_TO_POINTER(adjustment_size_x));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_height", GINT_TO_POINTER(image_info.image_height));
}
else
{
@@ -763,12 +765,12 @@ static void xsane_viewer_scale_callback(GtkWidget *window, gpointer data)
xsane_back_gtk_set_tooltip(xsane.tooltips, spinbutton, DESC_SCALE_WIDTH);
gtk_object_set_data(GTK_OBJECT(scalex_widget), "size-x-adjustment", (void *) adjustment_size_x);
- gtk_object_set_data(GTK_OBJECT(scalex_widget), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(scalex_widget), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(scalex_widget), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(scalex_widget), "image_height", GINT_TO_POINTER(image_info.image_height));
gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "scale-adjustment", (void *) scalex_widget);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_x), "image_height", GINT_TO_POINTER(image_info.image_height));
/* Y */
@@ -802,12 +804,12 @@ static void xsane_viewer_scale_callback(GtkWidget *window, gpointer data)
xsane_back_gtk_set_tooltip(xsane.tooltips, spinbutton, DESC_SCALE_HEIGHT);
gtk_object_set_data(GTK_OBJECT(scaley_widget), "size-y-adjustment", (void *) adjustment_size_y);
- gtk_object_set_data(GTK_OBJECT(scaley_widget), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(scaley_widget), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(scaley_widget), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(scaley_widget), "image_height", GINT_TO_POINTER(image_info.image_height));
gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "scale-adjustment", (void *) scaley_widget);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_width", (void *) image_info.image_width);
- gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_height", (void *) image_info.image_height);
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_width", GINT_TO_POINTER(image_info.image_width));
+ gtk_object_set_data(GTK_OBJECT(adjustment_size_y), "image_height", GINT_TO_POINTER(image_info.image_height));
}
/* Apply Cancel */
@@ -1094,6 +1096,7 @@ static void xsane_viewer_scale_image(GtkWidget *window, gpointer data)
{
DBG(DBG_error, "could not save file %s\n", outfilename);
xsane_viewer_set_sensitivity(v, TRUE);
+ fclose(infile);
return;
}
@@ -1176,6 +1179,7 @@ static void xsane_viewer_despeckle_image(GtkWidget *window, gpointer data)
{
DBG(DBG_error, "could not save file %s\n", outfilename);
xsane_viewer_set_sensitivity(v, TRUE);
+ fclose(infile);
return;
}
@@ -1253,6 +1257,7 @@ static void xsane_viewer_blur_image(GtkWidget *window, gpointer data)
{
DBG(DBG_error, "could not save file %s\n", outfilename);
xsane_viewer_set_sensitivity(v, TRUE);
+ fclose(infile);
return;
}
@@ -1335,6 +1340,7 @@ static void xsane_viewer_rotate(Viewer *v, int rotation)
{
DBG(DBG_error, "could not save file %s\n", outfilename);
xsane_viewer_set_sensitivity(v, TRUE);
+ fclose(infile);
return;
}
@@ -1444,7 +1450,7 @@ static void xsane_viewer_zoom_callback(GtkWidget *widget, gpointer data)
DBG(DBG_proc, "xsane_viewer_zoom_callback\n");
- val = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ val = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
v->zoom = (float) val / 100;
DBG(DBG_info, "setting zoom factor to %f\n", v->zoom);
xsane_viewer_read_image(v);
@@ -1721,7 +1727,7 @@ static void xsane_viewer_set_cms_proofing_callback(GtkWidget *widget, gpointer d
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_proofing_widget[1]), (GtkSignalFunc) xsane_viewer_set_cms_proofing_callback, v);
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_proofing_widget[2]), (GtkSignalFunc) xsane_viewer_set_cms_proofing_callback, v);
- val = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ val = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
DBG(DBG_proc, "xsane_viewer_set_cms_proofing_callback (%d)\n", val);
@@ -1748,7 +1754,7 @@ static void xsane_viewer_set_cms_intent_callback(GtkWidget *widget, gpointer dat
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_intent_widget[2]), (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_intent_widget[3]), (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
- val = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ val = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
DBG(DBG_proc, "xsane_viewer_set_cms_intent_callback (%d)\n", val);
@@ -1774,7 +1780,7 @@ static void xsane_viewer_set_cms_proofing_intent_callback(GtkWidget *widget, gpo
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_proofing_intent_widget[0]), (GtkSignalFunc) xsane_viewer_set_cms_proofing_intent_callback, v);
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_proofing_intent_widget[1]), (GtkSignalFunc) xsane_viewer_set_cms_proofing_intent_callback, v);
- val = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ val = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
DBG(DBG_proc, "xsane_viewer_set_cms_proofing_intent_callback (%d)\n", val);
@@ -1806,7 +1812,7 @@ static void xsane_viewer_set_cms_gamut_alarm_color_callback(GtkWidget *widget, g
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_gamut_alarm_color_widget[4]), (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
g_signal_handlers_block_by_func(GTK_OBJECT(v->cms_gamut_alarm_color_widget[5]), (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- val = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ val = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
DBG(DBG_proc, "xsane_viewer_set_cms_gamut_alarm_color_callback (%d)\n", val);
@@ -1942,7 +1948,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_proofing_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 0);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(0));
gtk_widget_show(subitem);
v->cms_proofing_widget[0] = subitem;
@@ -1953,7 +1959,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_proofing_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 1);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(1));
gtk_widget_show(subitem);
v->cms_proofing_widget[1] = subitem;
@@ -1964,7 +1970,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_proofing_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 2);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(2));
gtk_widget_show(subitem);
v->cms_proofing_widget[2] = subitem;
@@ -1985,7 +1991,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_PERCEPTUAL);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_PERCEPTUAL));
gtk_widget_show(subitem);
v->cms_intent_widget[INTENT_PERCEPTUAL] = subitem;
@@ -1996,7 +2002,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_RELATIVE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_RELATIVE_COLORIMETRIC));
gtk_widget_show(subitem);
v->cms_intent_widget[INTENT_RELATIVE_COLORIMETRIC] = subitem;
@@ -2007,7 +2013,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_ABSOLUTE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_ABSOLUTE_COLORIMETRIC));
gtk_widget_show(subitem);
v->cms_intent_widget[INTENT_ABSOLUTE_COLORIMETRIC] = subitem;
@@ -2018,7 +2024,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_SATURATION);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_SATURATION));
gtk_widget_show(subitem);
v->cms_intent_widget[INTENT_SATURATION] = subitem;
@@ -2039,7 +2045,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_proofing_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_RELATIVE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_RELATIVE_COLORIMETRIC));
gtk_widget_show(subitem);
v->cms_proofing_intent_widget[0] = subitem;
@@ -2050,7 +2056,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_proofing_intent_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) INTENT_ABSOLUTE_COLORIMETRIC);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(INTENT_ABSOLUTE_COLORIMETRIC));
gtk_widget_show(subitem);
v->cms_proofing_intent_widget[1] = subitem;
@@ -2078,7 +2084,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 0);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(0));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[0] = subitem;
@@ -2089,7 +2095,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 1);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(1));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[1] = subitem;
@@ -2100,7 +2106,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 2);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(2));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[2] = subitem;
@@ -2111,7 +2117,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 3);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(3));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[3] = subitem;
@@ -2122,7 +2128,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 4);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(4));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[4] = subitem;
@@ -2133,7 +2139,7 @@ static GtkWidget *xsane_viewer_color_management_build_menu(Viewer *v)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_viewer_set_cms_gamut_alarm_color_callback, v);
- gtk_object_set_data(GTK_OBJECT(subitem), "Selection", (void *) 5);
+ gtk_object_set_data(GTK_OBJECT(subitem), "Selection", GINT_TO_POINTER(5));
gtk_widget_show(subitem);
v->cms_gamut_alarm_color_widget[5] = subitem;
@@ -2158,7 +2164,7 @@ static int xsane_viewer_read_image_header(Viewer *v)
if (!infile)
{
DBG(DBG_error, "could not load file %s\n", v->filename);
- return -1;
+ return -1;
}
xsane_read_pnm_header(infile, &image_info);
@@ -2200,7 +2206,7 @@ static int xsane_viewer_read_image_header(Viewer *v)
static int xsane_viewer_read_image(Viewer *v)
{
- unsigned char *cms_row, *row, *src_row;
+ unsigned char *cms_row, *row = NULL, *src_row = NULL;
int x, y;
int last_y;
int nread;
@@ -2211,6 +2217,7 @@ static int xsane_viewer_read_image(Viewer *v)
float size;
char *size_unit;
int width, height;
+ int retval = 0;
#ifdef HAVE_LIBLCMS
cmsHPROFILE hInProfile = NULL;
@@ -2311,7 +2318,8 @@ static int xsane_viewer_read_image(Viewer *v)
snprintf(buf, sizeof(buf), "%s\n%s %s: %s\n", ERR_CMS_CONVERSION, ERR_CMS_OPEN_ICM_FILE, CMS_SCANNER_ICM, image_info.icm_profile);
xsane_back_gtk_error(buf, TRUE);
- return -1;
+ retval = -1;
+ goto out;
}
hOutProfile = cmsOpenProfileFromFile(preferences.display_icm_profile, "r");
@@ -2323,7 +2331,8 @@ static int xsane_viewer_read_image(Viewer *v)
snprintf(buf, sizeof(buf), "%s\n%s %s: %s\n", ERR_CMS_CONVERSION, ERR_CMS_OPEN_ICM_FILE, CMS_DISPLAY_ICM, preferences.display_icm_profile);
xsane_back_gtk_error(buf, TRUE);
- return -1;
+ retval = -1;
+ goto out;
}
@@ -2352,7 +2361,8 @@ static int xsane_viewer_read_image(Viewer *v)
snprintf(buf, sizeof(buf), "%s\n%s %s: %s\n", ERR_CMS_CONVERSION, ERR_CMS_OPEN_ICM_FILE, CMS_PROOF_ICM, cms_proof_icm_profile);
xsane_back_gtk_error(buf, TRUE);
- return -1;
+ retval = -1;
+ goto out;
}
hTransform = cmsCreateProofingTransform(hInProfile, cms_input_format,
@@ -2374,7 +2384,8 @@ static int xsane_viewer_read_image(Viewer *v)
snprintf(buf, sizeof(buf), "%s\n%s\n", ERR_CMS_CONVERSION, ERR_CMS_CREATE_TRANSFORM);
xsane_back_gtk_error(buf, TRUE);
- return -1;
+ retval = -1;
+ goto out;
}
}
#endif
@@ -2414,39 +2425,11 @@ static int xsane_viewer_read_image(Viewer *v)
row = malloc(((int) image_info.image_width * v->zoom) * image_info.channels);
}
-#ifdef HAVE_LIBLCMS
- if ((v->enable_color_management) && (v->cms_enable))
- {
- cms_row = malloc(((int) image_info.image_width * v->zoom) * image_info.channels);
- }
- else
-#endif
+ if (!row || !src_row)
{
- cms_row = row;
- }
-
- if (!row || !src_row || !cms_row)
- {
- if (src_row)
- {
- free(src_row);
- }
-
- if (row)
- {
- free(row);
- }
-
-#ifdef HAVE_LIBLCMS
- if ((cms_row) && (v->enable_color_management) && (v->cms_enable))
- {
- free(cms_row);
- }
-#endif
-
- fclose(infile);
- DBG(DBG_error, "could not allocate memory\n");
- return -1;
+ DBG(DBG_error, "could not allocate memory\n");
+ retval = -1;
+ goto out;
}
@@ -2514,7 +2497,13 @@ static int xsane_viewer_read_image(Viewer *v)
guint16 *src_row16 = (guint16 *) src_row;
guint16 *dst_row16 = (guint16 *) row;
- fseek(infile, pos0 + (((int) (y / v->zoom)) * image_info.image_width) * image_info.channels * 2, SEEK_SET);
+ if (fseek(infile, pos0 + (((int) (y / v->zoom)) * image_info.image_width) * image_info.channels * 2, SEEK_SET))
+ {
+ DBG(DBG_error, "could not seek in file '%s': '%s'\n", v->filename,
+ strerror(errno));
+ retval = -1;
+ goto out;
+ }
nread = fread(src_row, 2 * image_info.channels, image_info.image_width, infile);
if (image_info.channels > 1)
@@ -2541,10 +2530,22 @@ static int xsane_viewer_read_image(Viewer *v)
#ifdef HAVE_LIBLCMS
if ((v->enable_color_management) && (v->cms_enable))
{
+ cms_row = malloc(((int) image_info.image_width * v->zoom) * image_info.channels);
+ if (! cms_row)
+ {
+ DBG(DBG_error, "could not allocate memory\n");
+ retval = -1;
+ goto out;
+ }
cmsDoTransform(hTransform, row, cms_row, image_info.image_width * v->zoom);
+ gtk_preview_draw_row(GTK_PREVIEW(v->window), cms_row, 0, y, image_info.image_width * v->zoom);
+ free(cms_row);
}
+ else
#endif
- gtk_preview_draw_row(GTK_PREVIEW(v->window), cms_row, 0, y, image_info.image_width * v->zoom);
+ {
+ gtk_preview_draw_row(GTK_PREVIEW(v->window), row, 0, y, image_info.image_width * v->zoom);
+ }
}
gtk_preview_put(GTK_PREVIEW(v->window), v->window->window, v->window->style->black_gc, 0, 0, 0, 0,
@@ -2610,9 +2611,23 @@ static int xsane_viewer_read_image(Viewer *v)
gtk_window_set_default_size(GTK_WINDOW(v->top), width, height);
}
- free(row);
- free(src_row);
- fclose(infile);
+out:
+ if (row)
+ {
+ free(row);
+ }
+
+ if (src_row)
+ {
+ free(src_row);
+ }
+
+ /* cms_row is freed directly after use */
+
+ if (infile)
+ {
+ fclose(infile);
+ }
#ifdef HAVE_LIBLCMS
if ((v->enable_color_management) && (v->cms_enable))
@@ -2621,7 +2636,7 @@ static int xsane_viewer_read_image(Viewer *v)
}
#endif
- return 0;
+ return retval;
}
#if 0 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
@@ -3066,7 +3081,7 @@ Viewer *xsane_viewer_new(char *filename, char *selection_filetype, int allow_red
zoom_menu_item = gtk_menu_item_new_with_label(buf);
gtk_menu_append(GTK_MENU(zoom_menu), zoom_menu_item);
g_signal_connect(GTK_OBJECT(zoom_menu_item), "activate", (GtkSignalFunc) xsane_viewer_zoom_callback, v);
- gtk_object_set_data(GTK_OBJECT(zoom_menu_item), "Selection", (void *) xsane_viewer_zoom[i]);
+ gtk_object_set_data(GTK_OBJECT(zoom_menu_item), "Selection", GINT_TO_POINTER(xsane_viewer_zoom[i]));
gtk_widget_show(zoom_menu_item);
if (v->zoom*100 == xsane_viewer_zoom[i])
{
diff --git a/src/xsane.c b/src/xsane.c
index 02b4da4..a4a3f1e 100644
--- a/src/xsane.c
+++ b/src/xsane.c
@@ -585,7 +585,7 @@ static void xsane_show_batch_scan_callback(GtkWidget * widget)
static void xsane_paper_orientation_callback(GtkWidget *widget, gpointer data)
{
- int pos = (int) data;
+ int pos = GPOINTER_TO_INT(data);
DBG(DBG_proc, "xsane_paper_orientation_callback\n");
@@ -601,7 +601,7 @@ static void xsane_printer_callback(GtkWidget *widget, gpointer data)
DBG(DBG_proc, "xsane_printer_callback\n");
- preferences.printernr = (int) data;
+ preferences.printernr = GPOINTER_TO_INT(data);
switch (xsane.param.format)
{
@@ -1165,7 +1165,7 @@ static void xsane_scanmode_menu_callback(GtkWidget *widget, gpointer data)
static void xsane_cms_function_menu_callback(GtkWidget *widget, gpointer data)
{
- preferences.cms_function = (int) data;
+ preferences.cms_function = GPOINTER_TO_INT(data);
DBG(DBG_proc, "xsane_cms_function_menu_callback(%d)\n", preferences.cms_function);
}
@@ -1402,7 +1402,7 @@ GtkWidget *xsane_update_xsane_callback() /* creates the XSane option window */
gtk_container_add(GTK_CONTAINER(paper_orientation_menu), paper_orientation_item);
- g_signal_connect(GTK_OBJECT(paper_orientation_item), "activate", (GtkSignalFunc) xsane_paper_orientation_callback, (void *) i);
+ g_signal_connect(GTK_OBJECT(paper_orientation_item), "activate", (GtkSignalFunc) xsane_paper_orientation_callback, GINT_TO_POINTER(i));
gtk_widget_show(paper_orientation_item);
}
@@ -1436,7 +1436,7 @@ GtkWidget *xsane_update_xsane_callback() /* creates the XSane option window */
GDK_F1+i, GDK_SHIFT_MASK, DEF_GTK_MENU_ACCEL_VISIBLE | DEF_GTK_ACCEL_LOCKED);
}
gtk_container_add(GTK_CONTAINER(xsane_printer_menu), xsane_printer_item);
- g_signal_connect(GTK_OBJECT(xsane_printer_item), "activate", (GtkSignalFunc) xsane_printer_callback, (void *) i);
+ g_signal_connect(GTK_OBJECT(xsane_printer_item), "activate", (GtkSignalFunc) xsane_printer_callback, GINT_TO_POINTER(i));
gtk_widget_show(xsane_printer_item);
}
@@ -1584,9 +1584,9 @@ GtkWidget *xsane_update_xsane_callback() /* creates the XSane option window */
{
xsane_medium_item = gtk_menu_item_new_with_label(preferences.medium[i]->name);
gtk_menu_append(GTK_MENU(xsane_medium_menu), xsane_medium_item);
- g_signal_connect(GTK_OBJECT(xsane_medium_item), "button_press_event", (GtkSignalFunc) xsane_medium_context_menu_callback, (void *) i);
- g_signal_connect(GTK_OBJECT(xsane_medium_item), "activate", (GtkSignalFunc) xsane_set_medium_callback, (void *) i);
- gtk_object_set_data(GTK_OBJECT(xsane_medium_item), "Selection", (void *) i);
+ g_signal_connect(GTK_OBJECT(xsane_medium_item), "button_press_event", (GtkSignalFunc) xsane_medium_context_menu_callback, GINT_TO_POINTER(i));
+ g_signal_connect(GTK_OBJECT(xsane_medium_item), "activate", (GtkSignalFunc) xsane_set_medium_callback, GINT_TO_POINTER(i));
+ gtk_object_set_data(GTK_OBJECT(xsane_medium_item), "Selection", GINT_TO_POINTER(i));
gtk_widget_show(xsane_medium_item);
}
@@ -2697,7 +2697,7 @@ static gint xsane_medium_move_up_callback(GtkWidget *widget, GtkWidget *medium_w
DBG(DBG_proc, "xsane_medium_move_up_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection"));
if (selection > 1) /* make sure "full range" stays at top */
{
@@ -2732,7 +2732,7 @@ static gint xsane_medium_move_down_callback(GtkWidget *widget, GtkWidget *medium
DBG(DBG_proc, "xsane_medium_move_up_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection"));
if ((selection) && (selection < preferences.medium_definitions-1))
{
@@ -2771,7 +2771,7 @@ static gint xsane_medium_rename_callback(GtkWidget *widget, GtkWidget *medium_wi
DBG(DBG_proc, "xsane_medium_rename_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection"));
oldname = strdup(preferences.medium[selection]->name);
@@ -2779,7 +2779,7 @@ static gint xsane_medium_rename_callback(GtkWidget *widget, GtkWidget *medium_wi
/* set menu in correct state, is a bit strange this way but I do not have a better idea */
old_medium_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(xsane.medium_widget));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_medium_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_medium_menu))), "Selection"));
gtk_menu_popdown(GTK_MENU(old_medium_menu));
gtk_option_menu_set_history(GTK_OPTION_MENU(xsane.medium_widget), old_selection);
@@ -2814,13 +2814,13 @@ static gint xsane_medium_add_callback(GtkWidget *widget, GtkWidget *medium_widge
DBG(DBG_proc, "xsane_medium_add_callback\n");
/* add new item after selected item */
- selection = 1 + (int) gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection");
+ selection = 1 + GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection"));
oldname = strdup(TEXT_NEW_MEDIA_NAME);
/* set menu in correct state, is a bit strange this way but I do not have a better idea */
old_medium_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(xsane.medium_widget));
- old_selection = (int) gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_medium_menu))), "Selection");
+ old_selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(old_medium_menu))), "Selection"));
gtk_menu_popdown(GTK_MENU(old_medium_menu));
gtk_option_menu_set_history(GTK_OPTION_MENU(xsane.medium_widget), old_selection);
@@ -2895,7 +2895,7 @@ static gint xsane_medium_delete_callback(GtkWidget *widget, GtkWidget *medium_wi
DBG(DBG_proc, "xsane_medium_delete_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(medium_widget), "Selection"));
if (selection) /* full range can not be deleted */
{
@@ -2951,7 +2951,7 @@ static gint xsane_medium_context_menu_callback(GtkWidget *widget, GdkEvent *even
DBG(DBG_proc, "xsane_medium_context_menu_callback\n");
- selection = (int) gtk_object_get_data(GTK_OBJECT(widget), "Selection");
+ selection = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(widget), "Selection"));
if (event->type == GDK_BUTTON_PRESS)
{
@@ -3022,7 +3022,7 @@ static gint xsane_medium_context_menu_callback(GtkWidget *widget, GdkEvent *even
static void xsane_set_medium_callback(GtkWidget *widget, gpointer data)
{
- int medium_nr = (int) data;
+ int medium_nr = GPOINTER_TO_INT(data);
if (medium_nr != preferences.medium_nr)
{
@@ -3205,11 +3205,11 @@ static void xsane_set_update_policy_callback(GtkWidget *widget, gpointer data)
DBG(DBG_proc, "xsane_set_update_policy_callback\n");
g_signal_handlers_block_by_func(GTK_OBJECT(xsane.update_policy_continu), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_CONTINUOUS);
+ GINT_TO_POINTER(GTK_UPDATE_CONTINUOUS));
g_signal_handlers_block_by_func(GTK_OBJECT(xsane.update_policy_discont), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_DISCONTINUOUS);
+ GINT_TO_POINTER(GTK_UPDATE_DISCONTINUOUS));
g_signal_handlers_block_by_func(GTK_OBJECT(xsane.update_policy_delayed), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_DELAYED);
+ GINT_TO_POINTER(GTK_UPDATE_DELAYED));
if (policy == GTK_UPDATE_CONTINUOUS)
{
@@ -3231,11 +3231,11 @@ static void xsane_set_update_policy_callback(GtkWidget *widget, gpointer data)
}
g_signal_handlers_unblock_by_func(GTK_OBJECT(xsane.update_policy_continu), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_CONTINUOUS);
+ GINT_TO_POINTER(GTK_UPDATE_CONTINUOUS));
g_signal_handlers_unblock_by_func(GTK_OBJECT(xsane.update_policy_discont), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_DISCONTINUOUS);
+ GINT_TO_POINTER(GTK_UPDATE_DISCONTINUOUS));
g_signal_handlers_unblock_by_func(GTK_OBJECT(xsane.update_policy_delayed), (GtkSignalFunc) xsane_set_update_policy_callback,
- (void *) GTK_UPDATE_DELAYED);
+ GINT_TO_POINTER(GTK_UPDATE_DELAYED));
preferences.gtk_update_policy = policy;
xsane_pref_save();
@@ -3389,7 +3389,7 @@ static void xsane_info_dialog(GtkWidget *widget, gpointer data)
snprintf(buf, sizeof(buf), "%d bit", (int) (0.5 + log(opt->constraint.range->max+1.0) / log(2.0)));
label = xsane_info_table_text_new(table, buf, 1, 2);
}
- else if ((!xsane.xsane_channels > 1) && (xsane.scanner_gamma_gray)) /* gray gamma correction by scanner */
+ else if ((!(xsane.xsane_channels > 1)) && (xsane.scanner_gamma_gray)) /* gray gamma correction by scanner */
{
const SANE_Option_Descriptor *opt;
@@ -3807,6 +3807,13 @@ static void xsane_close_fds_for_exec(signed int first_fd_to_leave_open, ...)
open_max = (int) sysconf (_SC_OPEN_MAX);
+ if (open_max < 0)
+ {
+ DBG(DBG_error, "xsane_close_fds_for_exec(): Can't determine maximum "
+ "number of open files.");
+ return;
+ }
+
close_fds = malloc (open_max);
memset (close_fds, 1, open_max);
@@ -4147,7 +4154,7 @@ static GtkWidget *xsane_view_build_menu(void)
{
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
- g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, (void *) GTK_UPDATE_CONTINUOUS);
+ g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, GINT_TO_POINTER(GTK_UPDATE_CONTINUOUS));
gtk_widget_show(subitem);
xsane.update_policy_continu = subitem;
@@ -4157,7 +4164,7 @@ static GtkWidget *xsane_view_build_menu(void)
{
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
- g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, (void *) GTK_UPDATE_DISCONTINUOUS);
+ g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, GINT_TO_POINTER(GTK_UPDATE_DISCONTINUOUS));
gtk_widget_show(subitem);
xsane.update_policy_discont = subitem;
@@ -4167,7 +4174,7 @@ static GtkWidget *xsane_view_build_menu(void)
{
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(subitem), TRUE);
}
- g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, (void *) GTK_UPDATE_DELAYED);
+ g_signal_connect(GTK_OBJECT(subitem), "toggled", (GtkSignalFunc) xsane_set_update_policy_callback, GINT_TO_POINTER(GTK_UPDATE_DELAYED));
gtk_widget_show(subitem);
xsane.update_policy_delayed = subitem;
@@ -5709,8 +5716,8 @@ static void xsane_choose_device(void)
gtk_widget_add_accelerator(button, "clicked", device_selection_accelerator_group, GDK_F1+i, 0, DEF_GTK_ACCEL_LOCKED);
}
- g_signal_connect(GTK_OBJECT(button), "button_press_event", (GtkSignalFunc) xsane_select_device_by_mouse_callback, (void *) (long) i);
- g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_select_device_by_key_callback, (void *) (long) i);
+ g_signal_connect(GTK_OBJECT(button), "button_press_event", (GtkSignalFunc) xsane_select_device_by_mouse_callback, GINT_TO_POINTER(i));
+ g_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) xsane_select_device_by_key_callback, GINT_TO_POINTER(i));
gtk_box_pack_start(GTK_BOX(device_vbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);
owner = gtk_radio_button_group(GTK_RADIO_BUTTON(button));;
--
1.9.0