1997-11-24 22:05:25 +00:00
|
|
|
/* The GIMP -- an image manipulation program
|
|
|
|
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
1998-04-13 05:44:11 +00:00
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
1997-11-24 22:05:25 +00:00
|
|
|
*/
|
|
|
|
#include "config.h"
|
Check for mmap.
* configure.in: Check for mmap.
* app/makefile.msc: Depend on gimpi.lib.
* app/app_procs.c (app_init): Fix gccism: Allocate filenames (an
array with non-constant size) dynamically.
* app/{datafiles,fileops,general,install,module_db,temp_buf}.c:
Include glib.h before standard headers, because of certain obscure
details related to compiling with gcc on Win32.
(If you really want to know: glib.h defines he names of POSIXish
(but non-ANSI) functions as prefixed with underscore, because
that's how they are named in the msvcrt runtime C library we want
to use. However, defining stat as _stat causes some problems if
done after including the mingw32 <sys/stat.h>. So, it's easiest to
include <glib.h> early.)
* app/main.c: Use _stdcall and __argc, __argv with MSC, but
__attribute__((stdcall)) and _argc, _argv with gcc. Don't print
the "Passed serialization test" message on Win32. (It would open
up an otherwise unnecessary console window.)
* app/paint_funcs.c (gaussian_blur_region): Don't use variable sum
until initialized.
* app/{bezier_select,paths_dialog}.c: Include config.h and define
rint() if necessary.
* app/plug_in.c: Use _spawnv, not spawnv, on Win32 and OS/2.
1999-05-28 17:47:17 +00:00
|
|
|
|
1998-03-14 17:54:08 +00:00
|
|
|
#include <locale.h>
|
1997-11-24 22:05:25 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <signal.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <sys/types.h>
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef HAVE_SYS_WAIT_H
|
1997-11-24 22:05:25 +00:00
|
|
|
#include <sys/wait.h>
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef HAVE_UNISTD_H
|
1997-11-24 22:05:25 +00:00
|
|
|
#include <unistd.h>
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
|
1998-11-07 23:02:14 +00:00
|
|
|
#include "libgimp/gserialize.h"
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
#ifndef WAIT_ANY
|
|
|
|
#define WAIT_ANY -1
|
|
|
|
#endif /* WAIT_ANY */
|
|
|
|
|
1998-07-15 02:28:31 +00:00
|
|
|
#include "libgimp/gimpfeatures.h"
|
1999-06-14 22:18:02 +00:00
|
|
|
#include "libgimp/gimpenv.h"
|
1998-07-15 02:28:31 +00:00
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
#include "appenv.h"
|
|
|
|
#include "app_procs.h"
|
|
|
|
#include "errors.h"
|
|
|
|
#include "install.h"
|
|
|
|
|
1998-08-05 23:46:04 +00:00
|
|
|
#include "libgimp/gimpintl.h"
|
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
static RETSIGTYPE on_signal (int);
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef SIGCHLD
|
1997-11-24 22:05:25 +00:00
|
|
|
static RETSIGTYPE on_sig_child (int);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
static void init (void);
|
1998-11-07 23:02:14 +00:00
|
|
|
static void test_gserialize();
|
1999-01-07 19:53:05 +00:00
|
|
|
static void on_error (const gchar* domain,
|
|
|
|
GLogLevelFlags flags,
|
|
|
|
const gchar* msg,
|
|
|
|
gpointer user_data);
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
/* GLOBAL data */
|
|
|
|
int no_interface;
|
|
|
|
int no_data;
|
1998-02-17 20:14:29 +00:00
|
|
|
int no_splash;
|
|
|
|
int no_splash_image;
|
1998-01-25 22:13:00 +00:00
|
|
|
int be_verbose;
|
1997-11-24 22:05:25 +00:00
|
|
|
int use_shm;
|
1998-04-21 01:19:30 +00:00
|
|
|
int use_debug_handler;
|
1998-05-30 07:32:37 +00:00
|
|
|
int console_messages;
|
1998-07-11 22:23:23 +00:00
|
|
|
int restore_session;
|
1998-07-01 23:06:49 +00:00
|
|
|
GimpSet* image_context;
|
1998-06-19 23:45:54 +00:00
|
|
|
|
|
|
|
MessageHandlerType message_handler;
|
|
|
|
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gchar *prog_name; /* The path name we are invoked with */
|
|
|
|
gchar *alternate_gimprc;
|
|
|
|
gchar *alternate_system_gimprc;
|
|
|
|
gchar **batch_cmds;
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
/* LOCAL data */
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
static gint gimp_argc;
|
|
|
|
static gchar **gimp_argv;
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* argv processing:
|
|
|
|
* Arguments are either switches, their associated
|
|
|
|
* values, or image files. As switches and their
|
|
|
|
* associated values are processed, those slots in
|
1998-09-10 19:03:20 +00:00
|
|
|
* the argv[] array are NULLed. We do this because
|
|
|
|
* unparsed args are treated as images to load on
|
|
|
|
* startup.
|
|
|
|
*
|
1997-11-24 22:05:25 +00:00
|
|
|
*
|
|
|
|
* The GTK switches are processed first (X switches are
|
|
|
|
* processed here, not by any X routines). Then the
|
|
|
|
* general GIMP switches are processed. Any args
|
|
|
|
* left are assumed to be image files the GIMP should
|
|
|
|
* display.
|
|
|
|
*
|
|
|
|
* The exception is the batch switch. When this is
|
|
|
|
* encountered, all remaining args are treated as batch
|
|
|
|
* commands.
|
|
|
|
*/
|
|
|
|
|
1998-02-05 05:41:05 +00:00
|
|
|
int
|
1997-11-24 22:05:25 +00:00
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
int show_version;
|
|
|
|
int show_help;
|
|
|
|
int i, j;
|
1998-08-28 23:01:46 +00:00
|
|
|
#ifdef HAVE_PUTENV
|
1997-12-17 23:28:44 +00:00
|
|
|
gchar *display_name, *display_env;
|
1998-08-28 23:01:46 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
|
1998-09-08 05:31:51 +00:00
|
|
|
g_atexit (g_mem_profile);
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
/* Initialize variables */
|
|
|
|
prog_name = argv[0];
|
|
|
|
|
|
|
|
/* Initialize Gtk toolkit */
|
1998-03-14 17:54:08 +00:00
|
|
|
gtk_set_locale ();
|
|
|
|
setlocale(LC_NUMERIC, "C"); /* must use dot, not comma, as decimal separator */
|
1998-08-05 23:46:04 +00:00
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
/* Initialize i18n support */
|
1998-08-05 23:46:04 +00:00
|
|
|
#ifdef HAVE_LC_MESSAGES
|
|
|
|
setlocale(LC_MESSAGES, "");
|
|
|
|
#endif
|
1999-06-14 22:18:02 +00:00
|
|
|
#ifdef LOCALEDIR
|
1998-08-05 23:46:04 +00:00
|
|
|
bindtextdomain("gimp", LOCALEDIR);
|
1999-08-27 21:06:00 +00:00
|
|
|
bindtextdomain("gimp-std-plugins", LOCALEDIR);
|
1999-06-14 22:18:02 +00:00
|
|
|
#else
|
|
|
|
bindtextdomain("gimp", g_strconcat (gimp_data_directory (),
|
|
|
|
G_DIR_SEPARATOR_S,
|
|
|
|
"locale",
|
|
|
|
NULL));
|
|
|
|
#endif
|
1998-08-05 23:46:04 +00:00
|
|
|
textdomain("gimp");
|
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
gtk_init (&argc, &argv);
|
1998-06-07 13:55:36 +00:00
|
|
|
|
1998-08-28 23:01:46 +00:00
|
|
|
#ifdef HAVE_PUTENV
|
1997-12-17 23:28:44 +00:00
|
|
|
display_name = gdk_get_display ();
|
|
|
|
display_env = g_new (gchar, strlen (display_name) + 9);
|
|
|
|
*display_env = 0;
|
|
|
|
strcat (display_env, "DISPLAY=");
|
|
|
|
strcat (display_env, display_name);
|
|
|
|
putenv (display_env);
|
1998-08-28 23:01:46 +00:00
|
|
|
#endif
|
1997-12-17 23:28:44 +00:00
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
no_interface = FALSE;
|
|
|
|
no_data = FALSE;
|
1998-02-17 20:14:29 +00:00
|
|
|
no_splash = FALSE;
|
|
|
|
no_splash_image = FALSE;
|
1999-06-05 02:11:16 +00:00
|
|
|
|
1999-02-20 23:20:54 +00:00
|
|
|
#if defined (HAVE_SHM_H) || defined (NATIVE_WIN32)
|
1997-11-24 22:05:25 +00:00
|
|
|
use_shm = TRUE;
|
1998-08-28 23:01:46 +00:00
|
|
|
#else
|
|
|
|
use_shm = FALSE;
|
|
|
|
#endif
|
1999-06-05 02:11:16 +00:00
|
|
|
|
1998-04-21 01:19:30 +00:00
|
|
|
use_debug_handler = FALSE;
|
1998-07-11 22:23:23 +00:00
|
|
|
restore_session = FALSE;
|
1998-05-30 07:32:37 +00:00
|
|
|
console_messages = FALSE;
|
1998-06-19 23:45:54 +00:00
|
|
|
|
|
|
|
message_handler = CONSOLE;
|
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
batch_cmds = g_new (char *, argc);
|
1997-11-24 22:05:25 +00:00
|
|
|
batch_cmds[0] = NULL;
|
1998-07-11 02:00:19 +00:00
|
|
|
|
|
|
|
alternate_gimprc = NULL;
|
1998-07-11 07:06:39 +00:00
|
|
|
alternate_system_gimprc = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
show_version = FALSE;
|
|
|
|
show_help = FALSE;
|
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
test_gserialize ();
|
1998-11-07 23:02:14 +00:00
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
for (i = 1; i < argc; i++)
|
|
|
|
{
|
|
|
|
if ((strcmp (argv[i], "--no-interface") == 0) ||
|
|
|
|
(strcmp (argv[i], "-n") == 0))
|
|
|
|
{
|
|
|
|
no_interface = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
|
|
|
else if ((strcmp (argv[i], "--batch") == 0) ||
|
|
|
|
(strcmp (argv[i], "-b") == 0))
|
|
|
|
{
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
|
|
|
for (j = 0, i++ ; i < argc; j++, i++)
|
|
|
|
{
|
1997-11-24 22:05:25 +00:00
|
|
|
batch_cmds[j] = argv[i];
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
|
|
|
}
|
1997-11-24 22:05:25 +00:00
|
|
|
batch_cmds[j] = NULL;
|
1998-09-10 19:03:20 +00:00
|
|
|
|
|
|
|
if (batch_cmds[0] == NULL) /* We need at least one batch command */
|
|
|
|
show_help = TRUE;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
1998-07-11 07:06:39 +00:00
|
|
|
else if (strcmp (argv[i], "--system-gimprc") == 0)
|
|
|
|
{
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-07-11 07:06:39 +00:00
|
|
|
if (argc <= ++i)
|
|
|
|
{
|
|
|
|
show_help = TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
alternate_system_gimprc = argv[i];
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-07-11 07:06:39 +00:00
|
|
|
}
|
|
|
|
}
|
1998-07-11 02:00:19 +00:00
|
|
|
else if ((strcmp (argv[i], "--gimprc") == 0) ||
|
|
|
|
(strcmp (argv[i], "-g") == 0))
|
|
|
|
{
|
|
|
|
if (argc <= ++i)
|
|
|
|
{
|
|
|
|
show_help = TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
alternate_gimprc = argv[i];
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-07-11 02:00:19 +00:00
|
|
|
}
|
|
|
|
}
|
1997-11-24 22:05:25 +00:00
|
|
|
else if ((strcmp (argv[i], "--help") == 0) ||
|
|
|
|
(strcmp (argv[i], "-h") == 0))
|
|
|
|
{
|
|
|
|
show_help = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
|
|
|
else if (strcmp (argv[i], "--version") == 0 ||
|
|
|
|
strcmp (argv[i], "-v") == 0)
|
|
|
|
{
|
|
|
|
show_version = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
|
|
|
else if (strcmp (argv[i], "--no-data") == 0)
|
|
|
|
{
|
|
|
|
no_data = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
1998-02-17 20:14:29 +00:00
|
|
|
else if (strcmp (argv[i], "--no-splash") == 0)
|
|
|
|
{
|
|
|
|
no_splash = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-02-17 20:14:29 +00:00
|
|
|
}
|
|
|
|
else if (strcmp (argv[i], "--no-splash-image") == 0)
|
|
|
|
{
|
|
|
|
no_splash_image = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-02-17 20:14:29 +00:00
|
|
|
}
|
1998-01-25 22:13:00 +00:00
|
|
|
else if (strcmp (argv[i], "--verbose") == 0)
|
|
|
|
{
|
|
|
|
be_verbose = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-01-25 22:13:00 +00:00
|
|
|
}
|
1997-11-24 22:05:25 +00:00
|
|
|
else if (strcmp (argv[i], "--no-shm") == 0)
|
|
|
|
{
|
|
|
|
use_shm = FALSE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
1998-04-21 01:19:30 +00:00
|
|
|
else if (strcmp (argv[i], "--debug-handlers") == 0)
|
|
|
|
{
|
|
|
|
use_debug_handler = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-04-21 01:19:30 +00:00
|
|
|
}
|
1998-05-30 07:32:37 +00:00
|
|
|
else if (strcmp (argv[i], "--console-messages") == 0)
|
|
|
|
{
|
|
|
|
console_messages = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-05-30 07:32:37 +00:00
|
|
|
}
|
1998-07-11 22:23:23 +00:00
|
|
|
else if ((strcmp (argv[i], "--restore-session") == 0) ||
|
|
|
|
(strcmp (argv[i], "-r") == 0))
|
|
|
|
{
|
|
|
|
restore_session = TRUE;
|
1998-09-10 19:03:20 +00:00
|
|
|
argv[i] = NULL;
|
1998-07-11 22:23:23 +00:00
|
|
|
}
|
1997-11-24 22:05:25 +00:00
|
|
|
/*
|
|
|
|
* ANYTHING ELSE starting with a '-' is an error.
|
|
|
|
*/
|
|
|
|
else if (argv[i][0] == '-')
|
|
|
|
{
|
|
|
|
show_help = TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (show_version)
|
1998-08-05 23:46:04 +00:00
|
|
|
g_print ( "%s %s\n", _("GIMP version"), GIMP_VERSION);
|
1997-11-24 22:05:25 +00:00
|
|
|
|
|
|
|
if (show_help)
|
|
|
|
{
|
1999-02-20 23:20:54 +00:00
|
|
|
g_print (_("Usage: %s [option ...] [files ...]\n"), argv[0]);
|
1998-08-05 23:46:04 +00:00
|
|
|
g_print (_("Valid options are:\n"));
|
|
|
|
g_print (_(" -h --help Output this help.\n"));
|
|
|
|
g_print (_(" -v --version Output version info.\n"));
|
|
|
|
g_print (_(" -b --batch <commands> Run in batch mode.\n"));
|
|
|
|
g_print (_(" -g --gimprc <gimprc> Use an alternate gimprc file.\n"));
|
|
|
|
g_print (_(" -n --no-interface Run without a user interface.\n"));
|
|
|
|
g_print (_(" -r --restore-session Try to restore saved session.\n"));
|
|
|
|
g_print (_(" --no-data Do not load patterns, gradients, palettes, brushes.\n"));
|
|
|
|
g_print (_(" --verbose Show startup messages.\n"));
|
|
|
|
g_print (_(" --no-splash Do not show the startup window.\n"));
|
|
|
|
g_print (_(" --no-splash-image Do not add an image to the startup window.\n"));
|
|
|
|
g_print (_(" --no-shm Do not use shared memory between GIMP and its plugins.\n"));
|
|
|
|
g_print (_(" --no-xshm Do not use the X Shared Memory extension.\n"));
|
|
|
|
g_print (_(" --console-messages Display warnings to console instead of a dialog box.\n"));
|
|
|
|
g_print (_(" --debug-handlers Enable debugging signal handlers.\n"));
|
|
|
|
g_print (_(" --display <display> Use the designated X display.\n\n"));
|
|
|
|
g_print (_(" --system-gimprc <gimprc> Use an alternate system gimprc file.\n"));
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (show_version || show_help)
|
|
|
|
exit (0);
|
|
|
|
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
g_set_message_handler ((GPrintFunc) gimp_message_func);
|
1998-05-28 09:03:57 +00:00
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
/* Handle some signals */
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef SIGHUP
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGHUP, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGINT
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGINT, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGQUIT
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGQUIT, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGABRT
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGABRT, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGBUS
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGBUS, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGSEGV
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGSEGV, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGPIPE
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGPIPE, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGTERM
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGTERM, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGFPE
|
1997-11-24 22:05:25 +00:00
|
|
|
signal (SIGFPE, on_signal);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef SIGCHLD
|
1997-11-24 22:05:25 +00:00
|
|
|
/* Handle child exits */
|
|
|
|
signal (SIGCHLD, on_sig_child);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
g_log_set_handler (NULL, G_LOG_LEVEL_ERROR | G_LOG_FLAG_FATAL,
|
|
|
|
on_error, NULL);
|
1999-01-07 19:53:05 +00:00
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
/* Keep the command line arguments--for use in gimp_init */
|
|
|
|
gimp_argc = argc - 1;
|
|
|
|
gimp_argv = argv + 1;
|
|
|
|
|
|
|
|
/* Check the installation */
|
|
|
|
install_verify (init);
|
|
|
|
|
|
|
|
/* Main application loop */
|
1998-02-05 05:41:05 +00:00
|
|
|
if (!app_exit_finish_done ())
|
|
|
|
gtk_main ();
|
|
|
|
|
|
|
|
return 0;
|
1997-11-24 22:05:25 +00:00
|
|
|
}
|
|
|
|
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef NATIVE_WIN32
|
|
|
|
|
|
|
|
/* In case we build this as a windowed application */
|
|
|
|
|
Check for mmap.
* configure.in: Check for mmap.
* app/makefile.msc: Depend on gimpi.lib.
* app/app_procs.c (app_init): Fix gccism: Allocate filenames (an
array with non-constant size) dynamically.
* app/{datafiles,fileops,general,install,module_db,temp_buf}.c:
Include glib.h before standard headers, because of certain obscure
details related to compiling with gcc on Win32.
(If you really want to know: glib.h defines he names of POSIXish
(but non-ANSI) functions as prefixed with underscore, because
that's how they are named in the msvcrt runtime C library we want
to use. However, defining stat as _stat causes some problems if
done after including the mingw32 <sys/stat.h>. So, it's easiest to
include <glib.h> early.)
* app/main.c: Use _stdcall and __argc, __argv with MSC, but
__attribute__((stdcall)) and _argc, _argv with gcc. Don't print
the "Passed serialization test" message on Win32. (It would open
up an otherwise unnecessary console window.)
* app/paint_funcs.c (gaussian_blur_region): Don't use variable sum
until initialized.
* app/{bezier_select,paths_dialog}.c: Include config.h and define
rint() if necessary.
* app/plug_in.c: Use _spawnv, not spawnv, on Win32 and OS/2.
1999-05-28 17:47:17 +00:00
|
|
|
#ifdef __GNUC__
|
|
|
|
#define _stdcall __attribute__((stdcall))
|
|
|
|
#endif
|
|
|
|
|
1999-02-20 23:20:54 +00:00
|
|
|
int _stdcall
|
|
|
|
WinMain (int hInstance, int hPrevInstance, char *lpszCmdLine, int nCmdShow)
|
|
|
|
{
|
|
|
|
return main (__argc, __argv);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
static void
|
1999-06-05 02:11:16 +00:00
|
|
|
init (void)
|
1997-11-24 22:05:25 +00:00
|
|
|
{
|
|
|
|
/* Continue initializing */
|
|
|
|
gimp_init (gimp_argc, gimp_argv);
|
|
|
|
}
|
|
|
|
|
1999-01-07 19:53:05 +00:00
|
|
|
|
|
|
|
static void
|
1999-06-05 02:11:16 +00:00
|
|
|
on_error (const gchar *domain,
|
|
|
|
GLogLevelFlags flags,
|
|
|
|
const gchar *msg,
|
|
|
|
gpointer user_data)
|
|
|
|
{
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
fprintf (stderr, "%s: fatal error: %s\n", prog_name, msg);
|
|
|
|
g_on_error_query (prog_name);
|
1999-01-07 19:53:05 +00:00
|
|
|
}
|
|
|
|
|
1997-11-24 22:05:25 +00:00
|
|
|
static int caught_fatal_sig = 0;
|
|
|
|
|
|
|
|
static RETSIGTYPE
|
|
|
|
on_signal (int sig_num)
|
|
|
|
{
|
|
|
|
if (caught_fatal_sig)
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef NATIVE_WIN32
|
|
|
|
raise (sig_num);
|
|
|
|
#else
|
1997-11-24 22:05:25 +00:00
|
|
|
kill (getpid (), sig_num);
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
caught_fatal_sig = 1;
|
|
|
|
|
|
|
|
switch (sig_num)
|
|
|
|
{
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef SIGHUP
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGHUP:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sighup caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGINT
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGINT:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sigint caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGQUIT
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGQUIT:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sigquit caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGABRT
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGABRT:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sigabrt caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGBUS
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGBUS:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_fatal_error (_("sigbus caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGSEGV
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGSEGV:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_fatal_error (_("sigsegv caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGPIPE
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGPIPE:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sigpipe caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGTERM
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGTERM:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_terminate (_("sigterm caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
|
|
|
#ifdef SIGFPE
|
1997-11-24 22:05:25 +00:00
|
|
|
case SIGFPE:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_fatal_error (_("sigfpe caught"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1997-11-24 22:05:25 +00:00
|
|
|
default:
|
new ui for the "Layer Offset" dialog.
1999-07-22 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/channel_ops.[ch]: new ui for the "Layer Offset" dialog.
* app/channels_dialog.c
* app/layers_dialog.c: major code cleanup: Folded some callbacks
into common ones, "widget" instead of "w", indentation, ...
* app/commands.c
* app/interface.[ch]
* app/global_edit.c: the query boxes must be shown by the caller
now. There's no need to split up the string for the message box
manually as the Gtk 1.2 label widget handles newlines corectly.
Added the "edge_lock" toggle to the "Shrink Selection" dialog.
Nicer spacings for the query and message boxes.
* app/ink.c: tried to grab the pointer in the blob preview but
failed. Left the code there as a reminder (commented out).
* app/menus.c: reordered <Image>/Select.
I was bored and grep-ed the sources for ancient or deprecated stuff:
* app/about_dialog.[ch]
* app/actionarea.[ch]
* app/app_procs.c
* app/brush_edit.c
* app/brush_select.c
* app/color_select.c
* app/convert.c
* app/devices.c
* app/gdisplay.c
* app/gdisplay_ops.c
* app/histogram_tool.[ch]
* app/info_window.c
* app/install.c
* app/ops_buttons.c
* app/palette.c
* app/palette_select.c
* app/paths_dialog.c
* app/pattern_select.c
* app/resize.c
* app/scale_toolc.c
* app/text_tool.c:
s/container_border_width/container_set_border_width/g,
s/sprintf/g_snprintf/g, replaced some constant string lengths with
strlen(x).
* app/bezier_select.c
* app/blend.c
* app/boundary.c
* app/errors.[ch]
* app/free_select.c
* app/gimpbrushlist.c
* app/gimprc.c
* app/iscissors.c
* app/main.c
* app/patterns.[ch]
* app/text_tool.c: namespace fanaticism: prefixed all gimp error
functions with "gimp_" and formated the messages more uniformly.
* app/gradient.c
* app/gradient_select.c: same stuff as above for the ui
code. There are still some sub-dialogs which need cleanup.
Did some cleanup in most of these files: prototypes, removed tons
of #include's, i18n fixes, s/w/widget/ as above, indentation, ...
1999-07-22 16:21:10 +00:00
|
|
|
gimp_fatal_error (_("unknown signal"));
|
1997-11-24 22:05:25 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1999-02-20 23:20:54 +00:00
|
|
|
#ifdef SIGCHLD
|
1997-11-24 22:05:25 +00:00
|
|
|
static RETSIGTYPE
|
|
|
|
on_sig_child (int sig_num)
|
|
|
|
{
|
|
|
|
int pid;
|
|
|
|
int status;
|
|
|
|
|
|
|
|
while (1)
|
|
|
|
{
|
|
|
|
pid = waitpid (WAIT_ANY, &status, WNOHANG);
|
|
|
|
if (pid <= 0)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
1999-02-20 23:20:54 +00:00
|
|
|
#endif
|
1998-11-07 23:02:14 +00:00
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
gint32 test_gint32;
|
|
|
|
float test_float;
|
|
|
|
char *test_string;
|
|
|
|
guint32 test_length;
|
|
|
|
guint16 *test_array;
|
|
|
|
} test_struct;
|
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
static void
|
|
|
|
test_gserialize (void)
|
1998-11-07 23:02:14 +00:00
|
|
|
{
|
|
|
|
GSerialDescription *test_struct_descript;
|
|
|
|
test_struct *ts, *to;
|
1998-12-16 11:23:30 +00:00
|
|
|
char ser_1[] = {3, 1, 2, 3, 4, 4, 64, 83, 51, 51, 101, 0, 0, 0, 4, 102, 111, 111, 0, 103, 0, 0, 0, 2, 5, 6, 7, 8 };
|
1999-06-05 02:11:16 +00:00
|
|
|
ts = g_new (test_struct, 1);
|
|
|
|
to = g_new (test_struct, 1);
|
1998-11-07 23:02:14 +00:00
|
|
|
test_struct_descript
|
|
|
|
= g_new_serial_description("test_struct",
|
|
|
|
g_serial_item(GSERIAL_INT32,
|
|
|
|
test_struct,
|
|
|
|
test_gint32),
|
|
|
|
g_serial_item(GSERIAL_FLOAT,
|
|
|
|
test_struct,
|
|
|
|
test_float),
|
|
|
|
g_serial_item(GSERIAL_STRING,
|
|
|
|
test_struct,
|
|
|
|
test_string),
|
|
|
|
g_serial_vlen_array(GSERIAL_INT16ARRAY,
|
|
|
|
test_struct,
|
|
|
|
test_array,
|
|
|
|
test_length),
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
ts->test_gint32 = 0x01020304;
|
|
|
|
ts->test_float = 3.3f;
|
|
|
|
ts->test_string = "foo";
|
|
|
|
ts->test_length = 2;
|
1999-06-05 02:11:16 +00:00
|
|
|
ts->test_array = g_new (guint16, 2);
|
1998-11-07 23:02:14 +00:00
|
|
|
ts->test_array[0] = 0x0506;
|
|
|
|
ts->test_array[1] = 0x0708;
|
|
|
|
|
1999-06-05 02:11:16 +00:00
|
|
|
g_deserialize (test_struct_descript, (char *)(void*)to, ser_1);
|
1998-11-07 23:02:14 +00:00
|
|
|
|
1999-01-19 19:43:36 +00:00
|
|
|
#define EPSILON .0001
|
|
|
|
|
1998-11-08 00:38:16 +00:00
|
|
|
if (to->test_gint32 != ts->test_gint32)
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("gint32 test failed (please email your system configuration to jaycox@earthlink.net): %d\n", to->test_gint32);
|
1999-01-19 19:43:36 +00:00
|
|
|
if (to->test_float + EPSILON < ts->test_float || to->test_float - EPSILON > ts->test_float)
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("float test failed (please email your system configuration to jaycox@earthlink.net): %f\n", to->test_float);
|
1998-11-08 00:38:16 +00:00
|
|
|
if (strcmp(to->test_string, ts->test_string) != 0)
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("string test failed (please email your system configuration to jaycox@earthlink.net): %s\n", to->test_string);
|
1998-11-08 00:38:16 +00:00
|
|
|
if (to->test_length != ts->test_length)
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("array length test failed(please email your system configuration to jaycox@earthlink.net): %d\n", to->test_length);
|
1998-11-08 00:38:16 +00:00
|
|
|
if (to->test_array[0] != ts->test_array[0])
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("int16array value 0 test failed(please email your system configuration to jaycox@earthlink.net): %d\n", to->test_array[0]);
|
1998-11-07 23:02:14 +00:00
|
|
|
g_return_if_fail (to->test_array[1] == ts->test_array[1]);
|
1998-11-08 00:38:16 +00:00
|
|
|
if (to->test_array[1] != ts->test_array[1])
|
1998-11-13 04:00:54 +00:00
|
|
|
g_message("int16array value 1 test failed(please email your system configuration to jaycox@earthlink.net): %d\n", to->test_array[1]);
|
1999-07-15 08:15:17 +00:00
|
|
|
|
Check for mmap.
* configure.in: Check for mmap.
* app/makefile.msc: Depend on gimpi.lib.
* app/app_procs.c (app_init): Fix gccism: Allocate filenames (an
array with non-constant size) dynamically.
* app/{datafiles,fileops,general,install,module_db,temp_buf}.c:
Include glib.h before standard headers, because of certain obscure
details related to compiling with gcc on Win32.
(If you really want to know: glib.h defines he names of POSIXish
(but non-ANSI) functions as prefixed with underscore, because
that's how they are named in the msvcrt runtime C library we want
to use. However, defining stat as _stat causes some problems if
done after including the mingw32 <sys/stat.h>. So, it's easiest to
include <glib.h> early.)
* app/main.c: Use _stdcall and __argc, __argv with MSC, but
__attribute__((stdcall)) and _argc, _argv with gcc. Don't print
the "Passed serialization test" message on Win32. (It would open
up an otherwise unnecessary console window.)
* app/paint_funcs.c (gaussian_blur_region): Don't use variable sum
until initialized.
* app/{bezier_select,paths_dialog}.c: Include config.h and define
rint() if necessary.
* app/plug_in.c: Use _spawnv, not spawnv, on Win32 and OS/2.
1999-05-28 17:47:17 +00:00
|
|
|
#ifndef NATIVE_WIN32
|
1998-11-07 23:02:14 +00:00
|
|
|
g_message("Passed serialization test\n");
|
Check for mmap.
* configure.in: Check for mmap.
* app/makefile.msc: Depend on gimpi.lib.
* app/app_procs.c (app_init): Fix gccism: Allocate filenames (an
array with non-constant size) dynamically.
* app/{datafiles,fileops,general,install,module_db,temp_buf}.c:
Include glib.h before standard headers, because of certain obscure
details related to compiling with gcc on Win32.
(If you really want to know: glib.h defines he names of POSIXish
(but non-ANSI) functions as prefixed with underscore, because
that's how they are named in the msvcrt runtime C library we want
to use. However, defining stat as _stat causes some problems if
done after including the mingw32 <sys/stat.h>. So, it's easiest to
include <glib.h> early.)
* app/main.c: Use _stdcall and __argc, __argv with MSC, but
__attribute__((stdcall)) and _argc, _argv with gcc. Don't print
the "Passed serialization test" message on Win32. (It would open
up an otherwise unnecessary console window.)
* app/paint_funcs.c (gaussian_blur_region): Don't use variable sum
until initialized.
* app/{bezier_select,paths_dialog}.c: Include config.h and define
rint() if necessary.
* app/plug_in.c: Use _spawnv, not spawnv, on Win32 and OS/2.
1999-05-28 17:47:17 +00:00
|
|
|
#endif
|
1999-07-15 08:15:17 +00:00
|
|
|
|
|
|
|
/* free the memory */
|
|
|
|
g_free (ts->test_array);
|
|
|
|
g_free (ts);
|
|
|
|
g_free (to->test_array);
|
|
|
|
g_free (to->test_string);
|
|
|
|
g_free (to);
|
|
|
|
g_free_serial_description (test_struct_descript);
|
|
|
|
}
|