add a "debug" method to tell a component to output debugging messages to a
* Evolution-ShellComponent.idl: add a "debug" method to tell a component to output debugging messages to a given file. * main.c (main): Add a "--debug filename" argument, to direct debugging output for all components to a file. Redirect the shell's stdout/stderr to that file if this argument is used. * evolution-shell-component-client.c (evolution_shell_component_client_set_owner): If debug_log is set, call the component's debug method as well. * evolution-shell-component.c (impl_ShellComponent_debug): redirect stdout/stderr to the named file and emit a "debug" signal. svn path=/trunk/; revision=9046
This commit is contained in:
@ -1,3 +1,20 @@
|
|||||||
|
2001-03-30 Dan Winship <danw@ximian.com>
|
||||||
|
|
||||||
|
* Evolution-ShellComponent.idl: add a "debug" method to tell a
|
||||||
|
component to output debugging messages to a given file.
|
||||||
|
|
||||||
|
* main.c (main): Add a "--debug filename" argument, to direct
|
||||||
|
debugging output for all components to a file. Redirect the
|
||||||
|
shell's stdout/stderr to that file if this argument is used.
|
||||||
|
|
||||||
|
* evolution-shell-component-client.c
|
||||||
|
(evolution_shell_component_client_set_owner): If debug_log is set,
|
||||||
|
call the component's debug method as well.
|
||||||
|
|
||||||
|
* evolution-shell-component.c (impl_ShellComponent_debug):
|
||||||
|
redirect stdout/stderr to the named file and emit a "debug"
|
||||||
|
signal.
|
||||||
|
|
||||||
2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
|
2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
|
||||||
|
|
||||||
* e-component-registry.c: Remove/replace unneeded includes and
|
* e-component-registry.c: Remove/replace unneeded includes and
|
||||||
|
@ -40,6 +40,8 @@ module Evolution {
|
|||||||
void unsetOwner ()
|
void unsetOwner ()
|
||||||
raises (NotOwned);
|
raises (NotOwned);
|
||||||
|
|
||||||
|
void debug (in string log_path);
|
||||||
|
|
||||||
/* FIXME: We might want more exceptions here. */
|
/* FIXME: We might want more exceptions here. */
|
||||||
exception NotFound {};
|
exception NotFound {};
|
||||||
exception UnsupportedType {};
|
exception UnsupportedType {};
|
||||||
|
@ -38,6 +38,8 @@
|
|||||||
#include "evolution-shell-component-client.h"
|
#include "evolution-shell-component-client.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern char *debug_log;
|
||||||
|
|
||||||
#define PARENT_TYPE BONOBO_OBJECT_CLIENT_TYPE
|
#define PARENT_TYPE BONOBO_OBJECT_CLIENT_TYPE
|
||||||
static BonoboObjectClass *parent_class = NULL;
|
static BonoboObjectClass *parent_class = NULL;
|
||||||
|
|
||||||
@ -471,6 +473,9 @@ evolution_shell_component_client_set_owner (EvolutionShellComponentClient *shell
|
|||||||
|
|
||||||
result = corba_exception_to_result (&ev);
|
result = corba_exception_to_result (&ev);
|
||||||
|
|
||||||
|
if (result == EVOLUTION_SHELL_COMPONENT_OK && debug_log)
|
||||||
|
GNOME_Evolution_ShellComponent_debug (bonobo_object_corba_objref (BONOBO_OBJECT (shell_component_client)), debug_log, &ev);
|
||||||
|
|
||||||
CORBA_exception_free (&ev);
|
CORBA_exception_free (&ev);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <gtk/gtksignal.h>
|
#include <gtk/gtksignal.h>
|
||||||
#include <bonobo/bonobo-object.h>
|
#include <bonobo/bonobo-object.h>
|
||||||
|
|
||||||
@ -57,6 +59,7 @@ struct _EvolutionShellComponentPrivate {
|
|||||||
enum {
|
enum {
|
||||||
OWNER_SET,
|
OWNER_SET,
|
||||||
OWNER_UNSET,
|
OWNER_UNSET,
|
||||||
|
DEBUG,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -215,6 +218,29 @@ impl_ShellComponent_unset_owner (PortableServer_Servant servant,
|
|||||||
gtk_signal_emit (GTK_OBJECT (shell_component), signals[OWNER_UNSET]);
|
gtk_signal_emit (GTK_OBJECT (shell_component), signals[OWNER_UNSET]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
impl_ShellComponent_debug (PortableServer_Servant servant,
|
||||||
|
const CORBA_char *log_path,
|
||||||
|
CORBA_Environment *ev)
|
||||||
|
{
|
||||||
|
BonoboObject *bonobo_object;
|
||||||
|
EvolutionShellComponent *shell_component;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
bonobo_object = bonobo_object_from_servant (servant);
|
||||||
|
shell_component = EVOLUTION_SHELL_COMPONENT (bonobo_object);
|
||||||
|
|
||||||
|
fd = open (log_path, O_WRONLY | O_APPEND);
|
||||||
|
if (!fd)
|
||||||
|
return;
|
||||||
|
|
||||||
|
dup2 (fd, STDOUT_FILENO);
|
||||||
|
dup2 (fd, STDERR_FILENO);
|
||||||
|
close (fd);
|
||||||
|
|
||||||
|
gtk_signal_emit (GTK_OBJECT (shell_component), signals[DEBUG]);
|
||||||
|
}
|
||||||
|
|
||||||
static Bonobo_Control
|
static Bonobo_Control
|
||||||
impl_ShellComponent_create_view (PortableServer_Servant servant,
|
impl_ShellComponent_create_view (PortableServer_Servant servant,
|
||||||
const CORBA_char *physical_uri,
|
const CORBA_char *physical_uri,
|
||||||
@ -436,6 +462,14 @@ class_init (EvolutionShellComponentClass *klass)
|
|||||||
gtk_marshal_NONE__NONE,
|
gtk_marshal_NONE__NONE,
|
||||||
GTK_TYPE_NONE, 0);
|
GTK_TYPE_NONE, 0);
|
||||||
|
|
||||||
|
signals[DEBUG]
|
||||||
|
= gtk_signal_new ("debug",
|
||||||
|
GTK_RUN_FIRST,
|
||||||
|
object_class->type,
|
||||||
|
GTK_SIGNAL_OFFSET (EvolutionShellComponentClass, debug),
|
||||||
|
gtk_marshal_NONE__NONE,
|
||||||
|
GTK_TYPE_NONE, 0);
|
||||||
|
|
||||||
gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
|
gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
|
||||||
|
|
||||||
parent_class = gtk_type_class (PARENT_TYPE);
|
parent_class = gtk_type_class (PARENT_TYPE);
|
||||||
@ -443,6 +477,7 @@ class_init (EvolutionShellComponentClass *klass)
|
|||||||
epv->_get_supported_types = impl_ShellComponent__get_supported_types;
|
epv->_get_supported_types = impl_ShellComponent__get_supported_types;
|
||||||
epv->setOwner = impl_ShellComponent_set_owner;
|
epv->setOwner = impl_ShellComponent_set_owner;
|
||||||
epv->unsetOwner = impl_ShellComponent_unset_owner;
|
epv->unsetOwner = impl_ShellComponent_unset_owner;
|
||||||
|
epv->debug = impl_ShellComponent_debug;
|
||||||
epv->createView = impl_ShellComponent_create_view;
|
epv->createView = impl_ShellComponent_create_view;
|
||||||
epv->createFolderAsync = impl_ShellComponent_async_create_folder;
|
epv->createFolderAsync = impl_ShellComponent_async_create_folder;
|
||||||
epv->removeFolderAsync = impl_ShellComponent_async_remove_folder;
|
epv->removeFolderAsync = impl_ShellComponent_async_remove_folder;
|
||||||
|
@ -129,6 +129,7 @@ struct _EvolutionShellComponentClass {
|
|||||||
EvolutionShellClient *shell_client,
|
EvolutionShellClient *shell_client,
|
||||||
const char *evolution_homedir);
|
const char *evolution_homedir);
|
||||||
void (* owner_unset) (EvolutionShellComponent *shell_component);
|
void (* owner_unset) (EvolutionShellComponent *shell_component);
|
||||||
|
void (* debug) (EvolutionShellComponent *shell_component);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
18
shell/main.c
18
shell/main.c
@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <fcntl.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <gtk/gtkmain.h>
|
#include <gtk/gtkmain.h>
|
||||||
#include <gtk/gtklabel.h>
|
#include <gtk/gtklabel.h>
|
||||||
@ -50,6 +51,7 @@
|
|||||||
static EShell *shell = NULL;
|
static EShell *shell = NULL;
|
||||||
static char *evolution_directory = NULL;
|
static char *evolution_directory = NULL;
|
||||||
static gboolean no_splash = FALSE;
|
static gboolean no_splash = FALSE;
|
||||||
|
char *debug_log = NULL;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -180,7 +182,8 @@ int
|
|||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct poptOption options[] = {
|
struct poptOption options[] = {
|
||||||
{ "no-splash", '\0', POPT_ARG_NONE, &no_splash, 0, N_("Disable."), NULL },
|
{ "no-splash", '\0', POPT_ARG_NONE, &no_splash, 0, N_("Disable splash screen"), NULL },
|
||||||
|
{ "debug", '\0', POPT_ARG_STRING, &debug_log, 0, N_("Send the debugging output of all components to a file."), NULL },
|
||||||
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, &oaf_popt_options, 0, NULL, NULL },
|
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, &oaf_popt_options, 0, NULL, NULL },
|
||||||
POPT_AUTOHELP
|
POPT_AUTOHELP
|
||||||
{ NULL, '\0', 0, NULL, 0, NULL, NULL }
|
{ NULL, '\0', 0, NULL, 0, NULL, NULL }
|
||||||
@ -190,6 +193,19 @@ main (int argc, char **argv)
|
|||||||
textdomain (PACKAGE);
|
textdomain (PACKAGE);
|
||||||
|
|
||||||
gnome_init_with_popt_table ("Evolution", VERSION, argc, argv, options, 0, NULL);
|
gnome_init_with_popt_table ("Evolution", VERSION, argc, argv, options, 0, NULL);
|
||||||
|
|
||||||
|
if (debug_log) {
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
fd = open (debug_log, O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
||||||
|
if (fd) {
|
||||||
|
dup2 (fd, STDOUT_FILENO);
|
||||||
|
dup2 (fd, STDERR_FILENO);
|
||||||
|
close (fd);
|
||||||
|
} else
|
||||||
|
g_warning ("Could not set up debugging output file.");
|
||||||
|
}
|
||||||
|
|
||||||
oaf_init (argc, argv);
|
oaf_init (argc, argv);
|
||||||
|
|
||||||
glade_gnome_init ();
|
glade_gnome_init ();
|
||||||
|
Reference in New Issue
Block a user