dbus-daemon-1 --system seems to crash

Kay Sievers kay.sievers at vrfy.org
Fri Aug 6 19:09:07 PDT 2004


On Fri, Aug 06, 2004 at 02:06:33PM -0400, Havoc Pennington wrote:
> Hi,
> 
> Suggest an enum instead of magic int:
> 
> typedef enum
> {
>   FORK_FOLLOWS_CONFIG_FILE,
>   FORK_ALWAYS,
>   FORK_NEVER
> } ForceForkSetting;
> 
> Something like that.

Something like that attached :)

Kay

-------------- next part --------------
Index: bus/bus.c
===================================================================
RCS file: /cvs/dbus/dbus/bus/bus.c,v
retrieving revision 1.53
diff -u -r1.53 bus.c
--- bus/bus.c	30 Jul 2004 05:59:33 -0000	1.53
+++ bus/bus.c	7 Aug 2004 01:57:22 -0000
@@ -540,7 +540,7 @@
 
 BusContext*
 bus_context_new (const DBusString *config_file,
-                 dbus_bool_t       force_fork,
+                 ForceForkSetting  force_fork,
                  int               print_addr_fd,
                  int               print_pid_fd,
                  DBusError        *error)
@@ -659,7 +659,7 @@
     }
   
   /* Now become a daemon if appropriate */
-  if (force_fork || context->fork)
+  if ((force_fork != FORK_NEVER && context->fork) || force_fork == FORK_ALWAYS)
     {
       DBusString u;
 
Index: bus/bus.h
===================================================================
RCS file: /cvs/dbus/dbus/bus/bus.h,v
retrieving revision 1.24
diff -u -r1.24 bus.h
--- bus/bus.h	30 Jul 2004 05:59:33 -0000	1.24
+++ bus/bus.h	7 Aug 2004 01:57:22 -0000
@@ -61,8 +61,15 @@
   int reply_timeout;                  /**< How long to wait before timing out a reply */
 } BusLimits;
 
+typedef enum
+{
+  FORK_FOLLOW_CONFIG_FILE,
+  FORK_ALWAYS,
+  FORK_NEVER
+} ForceForkSetting;
+
 BusContext*       bus_context_new                                (const DBusString *config_file,
-                                                                  dbus_bool_t       force_fork,
+                                                                  ForceForkSetting  force_fork,
                                                                   int               print_addr_fd,
                                                                   int               print_pid_fd,
                                                                   DBusError        *error);
Index: bus/main.c
===================================================================
RCS file: /cvs/dbus/dbus/bus/main.c,v
retrieving revision 1.24
diff -u -r1.24 main.c
--- bus/main.c	30 Jul 2004 05:59:34 -0000	1.24
+++ bus/main.c	7 Aug 2004 01:57:23 -0000
@@ -62,7 +62,7 @@
 static void
 usage (void)
 {
-  fprintf (stderr, "dbus-daemon-1 [--version] [--session] [--system] [--config-file=FILE] [--print-address[=DESCRIPTOR]] [--print-pid[=DESCRIPTOR]] [--fork]\n");
+  fprintf (stderr, "dbus-daemon-1 [--version] [--session] [--system] [--config-file=FILE] [--print-address[=DESCRIPTOR]] [--print-pid[=DESCRIPTOR]] [--fork] [--nofork]\n");
   exit (1);
 }
 
@@ -200,8 +200,8 @@
   int i;
   dbus_bool_t print_address;
   dbus_bool_t print_pid;
-  dbus_bool_t force_fork;
-  
+  int force_fork;
+
   if (!_dbus_string_init (&config_file))
     return 1;
 
@@ -210,25 +210,27 @@
 
   if (!_dbus_string_init (&pid_fd))
     return 1;
-  
+
   print_address = FALSE;
   print_pid = FALSE;
-  force_fork = FALSE;
-  
+  force_fork = FORK_FOLLOW_CONFIG_FILE;
+
   prev_arg = NULL;
   i = 1;
   while (i < argc)
     {
       const char *arg = argv[i];
-      
+
       if (strcmp (arg, "--help") == 0 ||
           strcmp (arg, "-h") == 0 ||
           strcmp (arg, "-?") == 0)
         usage ();
       else if (strcmp (arg, "--version") == 0)
         version ();
+      else if (strcmp (arg, "--nofork") == 0)
+        force_fork = FORK_NEVER;
       else if (strcmp (arg, "--fork") == 0)
-        force_fork = TRUE;
+        force_fork = FORK_ALWAYS;
       else if (strcmp (arg, "--system") == 0)
         {
           check_two_config_files (&config_file, "system");


More information about the dbus mailing list