app/Makefile.am new files with code split out of main.c.
2008-10-13 Sven Neumann <sven@gimp.org> * app/Makefile.am * app/signals.[ch]: new files with code split out of main.c. * app/main.c: changed accordingly. svn path=/trunk/; revision=27270
This commit is contained in:

committed by
Sven Neumann

parent
bce95343c8
commit
f6e08757a1
@ -1,3 +1,10 @@
|
|||||||
|
2008-10-13 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* app/Makefile.am
|
||||||
|
* app/signals.[ch]: new files with code split out of main.c.
|
||||||
|
|
||||||
|
* app/main.c: changed accordingly.
|
||||||
|
|
||||||
2008-10-13 Martin Nordholts <martinn@svn.gnome.org>
|
2008-10-13 Martin Nordholts <martinn@svn.gnome.org>
|
||||||
|
|
||||||
* app/gegl/gimpoperationadditionmode.c
|
* app/gegl/gimpoperationadditionmode.c
|
||||||
|
@ -49,6 +49,8 @@ app_sources = \
|
|||||||
main.c \
|
main.c \
|
||||||
sanity.c \
|
sanity.c \
|
||||||
sanity.h \
|
sanity.h \
|
||||||
|
signals.c \
|
||||||
|
signals.h \
|
||||||
unique.c \
|
unique.c \
|
||||||
unique.h \
|
unique.h \
|
||||||
units.c \
|
units.c \
|
||||||
|
74
app/main.c
74
app/main.c
@ -18,12 +18,9 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#define _GNU_SOURCE /* for the sigaction stuff */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -57,8 +54,8 @@
|
|||||||
|
|
||||||
#include "about.h"
|
#include "about.h"
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
#include "errors.h"
|
|
||||||
#include "sanity.h"
|
#include "sanity.h"
|
||||||
|
#include "signals.h"
|
||||||
#include "unique.h"
|
#include "unique.h"
|
||||||
#include "units.h"
|
#include "units.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
@ -94,7 +91,6 @@ static void gimp_show_license_and_exit (void) G_GNUC_NORETURN;
|
|||||||
|
|
||||||
static void gimp_init_i18n (void);
|
static void gimp_init_i18n (void);
|
||||||
static void gimp_init_malloc (void);
|
static void gimp_init_malloc (void);
|
||||||
static void gimp_init_signal_handlers (void);
|
|
||||||
|
|
||||||
#ifndef G_OS_WIN32
|
#ifndef G_OS_WIN32
|
||||||
static void gimp_sigfatal_handler (gint sig_num) G_GNUC_NORETURN;
|
static void gimp_sigfatal_handler (gint sig_num) G_GNUC_NORETURN;
|
||||||
@ -401,7 +397,7 @@ main (int argc,
|
|||||||
if (abort_message)
|
if (abort_message)
|
||||||
app_abort (no_interface, abort_message);
|
app_abort (no_interface, abort_message);
|
||||||
|
|
||||||
gimp_init_signal_handlers ();
|
gimp_init_signal_handlers (stack_trace_mode);
|
||||||
|
|
||||||
app_run (argv[0],
|
app_run (argv[0],
|
||||||
filenames,
|
filenames,
|
||||||
@ -638,69 +634,3 @@ gimp_init_i18n (void)
|
|||||||
|
|
||||||
textdomain (GETTEXT_PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gimp_init_signal_handlers (void)
|
|
||||||
{
|
|
||||||
#ifndef G_OS_WIN32
|
|
||||||
/* No use catching these on Win32, the user won't get any
|
|
||||||
* stack trace from glib anyhow. It's better to let Windows inform
|
|
||||||
* about the program error, and offer debugging (if the user
|
|
||||||
* has installed MSVC or some other compiler that knows how to
|
|
||||||
* install itself as a handler for program errors).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Handle fatal signals */
|
|
||||||
|
|
||||||
/* these are handled by gimp_terminate() */
|
|
||||||
gimp_signal_private (SIGHUP, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGINT, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGQUIT, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGABRT, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGTERM, gimp_sigfatal_handler, 0);
|
|
||||||
|
|
||||||
if (stack_trace_mode != GIMP_STACK_TRACE_NEVER)
|
|
||||||
{
|
|
||||||
/* these are handled by gimp_fatal_error() */
|
|
||||||
gimp_signal_private (SIGBUS, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGSEGV, gimp_sigfatal_handler, 0);
|
|
||||||
gimp_signal_private (SIGFPE, gimp_sigfatal_handler, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ignore SIGPIPE because plug_in.c handles broken pipes */
|
|
||||||
gimp_signal_private (SIGPIPE, SIG_IGN, 0);
|
|
||||||
|
|
||||||
/* Restart syscalls on SIGCHLD */
|
|
||||||
gimp_signal_private (SIGCHLD, SIG_DFL, SA_RESTART);
|
|
||||||
|
|
||||||
#endif /* G_OS_WIN32 */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef G_OS_WIN32
|
|
||||||
|
|
||||||
/* gimp core signal handler for fatal signals */
|
|
||||||
|
|
||||||
static void
|
|
||||||
gimp_sigfatal_handler (gint sig_num)
|
|
||||||
{
|
|
||||||
switch (sig_num)
|
|
||||||
{
|
|
||||||
case SIGHUP:
|
|
||||||
case SIGINT:
|
|
||||||
case SIGQUIT:
|
|
||||||
case SIGABRT:
|
|
||||||
case SIGTERM:
|
|
||||||
gimp_terminate (g_strsignal (sig_num));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SIGBUS:
|
|
||||||
case SIGSEGV:
|
|
||||||
case SIGFPE:
|
|
||||||
default:
|
|
||||||
gimp_fatal_error (g_strsignal (sig_num));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* ! G_OS_WIN32 */
|
|
||||||
|
102
app/signals.c
Normal file
102
app/signals.c
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/* GIMP - The GNU 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
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
#include "libgimpbase/gimpbase.h"
|
||||||
|
|
||||||
|
#include "core/core-types.h"
|
||||||
|
|
||||||
|
#include "errors.h"
|
||||||
|
#include "signals.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef G_OS_WIN32
|
||||||
|
static void gimp_sigfatal_handler (gint sig_num) G_GNUC_NORETURN;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_init_signal_handlers (GimpStackTraceMode stack_trace_mode)
|
||||||
|
{
|
||||||
|
#ifndef G_OS_WIN32
|
||||||
|
/* No use catching these on Win32, the user won't get any
|
||||||
|
* stack trace from glib anyhow. It's better to let Windows inform
|
||||||
|
* about the program error, and offer debugging (if the user
|
||||||
|
* has installed MSVC or some other compiler that knows how to
|
||||||
|
* install itself as a handler for program errors).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Handle fatal signals */
|
||||||
|
|
||||||
|
/* these are handled by gimp_terminate() */
|
||||||
|
gimp_signal_private (SIGHUP, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGINT, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGQUIT, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGABRT, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGTERM, gimp_sigfatal_handler, 0);
|
||||||
|
|
||||||
|
if (stack_trace_mode != GIMP_STACK_TRACE_NEVER)
|
||||||
|
{
|
||||||
|
/* these are handled by gimp_fatal_error() */
|
||||||
|
gimp_signal_private (SIGBUS, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGSEGV, gimp_sigfatal_handler, 0);
|
||||||
|
gimp_signal_private (SIGFPE, gimp_sigfatal_handler, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ignore SIGPIPE because plug_in.c handles broken pipes */
|
||||||
|
gimp_signal_private (SIGPIPE, SIG_IGN, 0);
|
||||||
|
|
||||||
|
/* Restart syscalls on SIGCHLD */
|
||||||
|
gimp_signal_private (SIGCHLD, SIG_DFL, SA_RESTART);
|
||||||
|
|
||||||
|
#endif /* G_OS_WIN32 */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef G_OS_WIN32
|
||||||
|
|
||||||
|
/* gimp core signal handler for fatal signals */
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_sigfatal_handler (gint sig_num)
|
||||||
|
{
|
||||||
|
switch (sig_num)
|
||||||
|
{
|
||||||
|
case SIGHUP:
|
||||||
|
case SIGINT:
|
||||||
|
case SIGQUIT:
|
||||||
|
case SIGABRT:
|
||||||
|
case SIGTERM:
|
||||||
|
gimp_terminate (g_strsignal (sig_num));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SIGBUS:
|
||||||
|
case SIGSEGV:
|
||||||
|
case SIGFPE:
|
||||||
|
default:
|
||||||
|
gimp_fatal_error (g_strsignal (sig_num));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* ! G_OS_WIN32 */
|
30
app/signals.h
Normal file
30
app/signals.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* GIMP - The GNU 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
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SIGNALS_H__
|
||||||
|
#define __SIGNALS_H__
|
||||||
|
|
||||||
|
#ifndef GIMP_APP_GLUE_COMPILATION
|
||||||
|
#signal You must not #include "signals.h" from an app/ subdir
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void gimp_init_signal_handlers (GimpStackTraceMode stack_trace_mode);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __SIGNALS_H__ */
|
Reference in New Issue
Block a user