* dbus/dbus-sysdeps.h (_dbus_split_paths_and_append): new prototyp (_DBUS_PATH_SEPARA...
authorRalf Habacker <ralf.habacker@freenet.de>
Fri, 16 Mar 2007 21:56:33 +0000 (21:56 +0000)
committerRalf Habacker <ralf.habacker@freenet.de>
Fri, 16 Mar 2007 21:56:33 +0000 (21:56 +0000)
* dbus/dbus-sysdeps.c (_dbus_split_paths_and_append): merged from dbus/dbus-sysdeps-unix.c and dbus/dbus-sysdeps-win.c.

ChangeLog
dbus/dbus-sysdeps-unix.c
dbus/dbus-sysdeps-win.c
dbus/dbus-sysdeps.c
dbus/dbus-sysdeps.h

index b0bb4eb..081e3a5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-03-16 Ralf.Habacker  <ralf.habacker@freenet.de>
+
+       * dbus/dbus-sysdeps.h (_dbus_split_paths_and_append):
+       new prototyp
+       (_DBUS_PATH_SEPARATOR): new macro. 
+
+       * dbus/dbus-sysdeps.c (_dbus_split_paths_and_append): merged 
+       from dbus/dbus-sysdeps-unix.c and dbus/dbus-sysdeps-win.c. 
+
 2007-03-15 Ralf.Habacker  <ralf.habacker@freenet.de>
 
        * bus/config-parser.c, bus/policy.c,  
index d6250bf..7d6271a 100644 (file)
@@ -2695,120 +2695,6 @@ _dbus_read_local_machine_uuid (DBusGUID   *machine_id,
 
 #define DBUS_UNIX_STANDARD_SESSION_SERVICEDIR "/dbus-1/services"
 
-static dbus_bool_t
-split_paths_and_append (DBusString *dirs, 
-                        const char *suffix, 
-                        DBusList **dir_list)
-{
-  /* split on colon (:) */
-   int start;
-   int i;
-   int len;
-   char *cpath;
-   const DBusString file_suffix;
-
-   start = 0;
-   i = 0;
-
-   _dbus_string_init_const (&file_suffix, suffix);
-
-   len = _dbus_string_get_length (dirs);
-
-   while (_dbus_string_find (dirs, start, ":", &i))
-     {
-       DBusString path;
-
-       if (!_dbus_string_init (&path))
-          goto oom;
-
-       if (!_dbus_string_copy_len (dirs,
-                                   start,
-                                   i - start,
-                                   &path,
-                                   0))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        _dbus_string_chop_white (&path);
-
-        /* check for an empty path */
-        if (_dbus_string_get_length (&path) == 0)
-          goto next;
-
-        if (!_dbus_concat_dir_and_file (&path,
-                                        &file_suffix))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        if (!_dbus_string_copy_data(&path, &cpath))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        if (!_dbus_list_append (dir_list, cpath))
-          {
-            _dbus_string_free (&path);              
-            dbus_free (cpath);
-            goto oom;
-          }
-
-       next:
-        _dbus_string_free (&path);
-        start = i + 1;
-    } 
-      
-  if (start != len)
-    { 
-      DBusString path;
-
-      if (!_dbus_string_init (&path))
-        goto oom;
-
-      if (!_dbus_string_copy_len (dirs,
-                                  start,
-                                  len - start,
-                                  &path,
-                                  0))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_concat_dir_and_file (&path,
-                                      &file_suffix))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_string_copy_data(&path, &cpath))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_list_append (dir_list, cpath))
-        {
-          _dbus_string_free (&path);              
-          dbus_free (cpath);
-          goto oom;
-        }
-
-      _dbus_string_free (&path); 
-    }
-
-  return TRUE;
-
- oom:
-  _dbus_list_foreach (dir_list, (DBusForeachFunction)dbus_free, NULL); 
-  _dbus_list_clear (dir_list);
-  return FALSE;
-}
 
 /**
  * Returns the standard directories for a session bus to look for service 
@@ -2884,9 +2770,9 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs)
         goto oom;
     }
 
-  if (!split_paths_and_append (&servicedir_path, 
-                               DBUS_UNIX_STANDARD_SESSION_SERVICEDIR, 
-                               dirs))
+  if (!_dbus_split_paths_and_append (&servicedir_path, 
+                                     DBUS_UNIX_STANDARD_SESSION_SERVICEDIR, 
+                                     dirs))
     goto oom;
 
   _dbus_string_free (&servicedir_path);  
index 64c2f99..b86c977 100644 (file)
@@ -5048,125 +5048,6 @@ _dbus_make_file_world_readable(const DBusString *filename,
 
 #define DBUS_STANDARD_SESSION_SERVICEDIR "/dbus-1/services"
 
-// @TODO: this function is duplicated from dbus-sysdeps-unix.c
-//        and differs only in the path separator, may be we should 
-//        use a dbus path separator variable
-
-#define _dbus_path_seperator ";"
-
-static dbus_bool_t
-split_paths_and_append (DBusString *dirs, 
-                        const char *suffix, 
-                        DBusList **dir_list)
-{
-   int start;
-   int i;
-   int len;
-   char *cpath;
-   const DBusString file_suffix;
-
-   start = 0;
-   i = 0;
-
-   _dbus_string_init_const (&file_suffix, suffix);
-
-   len = _dbus_string_get_length (dirs);
-
-   while (_dbus_string_find (dirs, start, _dbus_path_seperator, &i))
-     {
-       DBusString path;
-
-       if (!_dbus_string_init (&path))
-          goto oom;
-
-       if (!_dbus_string_copy_len (dirs,
-                                   start,
-                                   i - start,
-                                   &path,
-                                   0))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        _dbus_string_chop_white (&path);
-
-        /* check for an empty path */
-        if (_dbus_string_get_length (&path) == 0)
-          goto next;
-
-        if (!_dbus_concat_dir_and_file (&path,
-                                        &file_suffix))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        if (!_dbus_string_copy_data(&path, &cpath))
-          {
-            _dbus_string_free (&path);
-            goto oom;
-          }
-
-        if (!_dbus_list_append (dir_list, cpath))
-          {
-            _dbus_string_free (&path);              
-            dbus_free (cpath);
-            goto oom;
-          }
-
-       next:
-        _dbus_string_free (&path);
-        start = i + 1;
-    } 
-      
-  if (start != len)
-    { 
-      DBusString path;
-
-      if (!_dbus_string_init (&path))
-        goto oom;
-
-      if (!_dbus_string_copy_len (dirs,
-                                  start,
-                                  len - start,
-                                  &path,
-                                  0))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_concat_dir_and_file (&path,
-                                      &file_suffix))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_string_copy_data(&path, &cpath))
-        {
-          _dbus_string_free (&path);
-          goto oom;
-        }
-
-      if (!_dbus_list_append (dir_list, cpath))
-        {
-          _dbus_string_free (&path);              
-          dbus_free (cpath);
-          goto oom;
-        }
-
-      _dbus_string_free (&path); 
-    }
-
-  return TRUE;
-
- oom:
-  _dbus_list_foreach (dir_list, (DBusForeachFunction)dbus_free, NULL); 
-  _dbus_list_clear (dir_list);
-  return FALSE;
-}
 
 /**
  * Returns the standard directories for a session bus to look for service 
@@ -5193,7 +5074,7 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs)
   if (!_dbus_string_init (&servicedir_path))
     return FALSE;
 
-  if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR";"))
+  if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR _DBUS_PATH_SEPARATOR))
         goto oom;
 
   common_progs = _dbus_getenv ("CommonProgramFiles");
@@ -5203,11 +5084,11 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs)
       if (!_dbus_string_append (&servicedir_path, common_progs))
         goto oom;
 
-      if (!_dbus_string_append (&servicedir_path, ";"))
+      if (!_dbus_string_append (&servicedir_path, _DBUS_PATH_SEPARATOR))
         goto oom;
     }
 
-  if (!split_paths_and_append (&servicedir_path, 
+  if (!_dbus_split_paths_and_append (&servicedir_path, 
                                DBUS_STANDARD_SESSION_SERVICEDIR, 
                                dirs))
     goto oom;
index 33179e9..6074063 100644 (file)
@@ -27,6 +27,7 @@
 #include "dbus-threads.h"
 #include "dbus-protocol.h"
 #include "dbus-string.h"
+#include "dbus-list.h"
 
 /* NOTE: If you include any unix/windows-specific headers here, you are probably doing something
  * wrong and should be putting some code in dbus-sysdeps-unix.c or dbus-sysdeps-win.c.
@@ -231,6 +232,127 @@ _dbus_pipe_invalidate (DBusPipe *pipe)
   pipe->fd_or_handle = -1;
 }
 
+/**
+ * split pathes into a list of char strings 
+ * @param dirs string with pathes 
+ * @param suffix string concated to each path in dirs
+ * @param dir_list contains a list of splitted pathes
+ * return #TRUE is pathes could be splittes,#FALSE in oom case 
+ */
+dbus_bool_t
+_dbus_split_paths_and_append (DBusString *dirs, 
+                              const char *suffix, 
+                              DBusList  **dir_list)
+{
+   int start;
+   int i;
+   int len;
+   char *cpath;
+   const DBusString file_suffix;
+
+   start = 0;
+   i = 0;
+
+   _dbus_string_init_const (&file_suffix, suffix);
+
+   len = _dbus_string_get_length (dirs);
+
+   while (_dbus_string_find (dirs, start, _DBUS_PATH_SEPARATOR, &i))
+     {
+       DBusString path;
+
+       if (!_dbus_string_init (&path))
+          goto oom;
+
+       if (!_dbus_string_copy_len (dirs,
+                                   start,
+                                   i - start,
+                                   &path,
+                                   0))
+          {
+            _dbus_string_free (&path);
+            goto oom;
+          }
+
+        _dbus_string_chop_white (&path);
+
+        /* check for an empty path */
+        if (_dbus_string_get_length (&path) == 0)
+          goto next;
+
+        if (!_dbus_concat_dir_and_file (&path,
+                                        &file_suffix))
+          {
+            _dbus_string_free (&path);
+            goto oom;
+          }
+
+        if (!_dbus_string_copy_data(&path, &cpath))
+          {
+            _dbus_string_free (&path);
+            goto oom;
+          }
+
+        if (!_dbus_list_append (dir_list, cpath))
+          {
+            _dbus_string_free (&path);              
+            dbus_free (cpath);
+            goto oom;
+          }
+
+       next:
+        _dbus_string_free (&path);
+        start = i + 1;
+    } 
+      
+  if (start != len)
+    { 
+      DBusString path;
+
+      if (!_dbus_string_init (&path))
+        goto oom;
+
+      if (!_dbus_string_copy_len (dirs,
+                                  start,
+                                  len - start,
+                                  &path,
+                                  0))
+        {
+          _dbus_string_free (&path);
+          goto oom;
+        }
+
+      if (!_dbus_concat_dir_and_file (&path,
+                                      &file_suffix))
+        {
+          _dbus_string_free (&path);
+          goto oom;
+        }
+
+      if (!_dbus_string_copy_data(&path, &cpath))
+        {
+          _dbus_string_free (&path);
+          goto oom;
+        }
+
+      if (!_dbus_list_append (dir_list, cpath))
+        {
+          _dbus_string_free (&path);              
+          dbus_free (cpath);
+          goto oom;
+        }
+
+      _dbus_string_free (&path); 
+    }
+
+  return TRUE;
+
+ oom:
+  _dbus_list_foreach (dir_list, (DBusForeachFunction)dbus_free, NULL); 
+  _dbus_list_clear (dir_list);
+  return FALSE;
+}
+
 /** @} */
 
 /**
index 4bdf2cc..c89d35f 100644 (file)
 
 DBUS_BEGIN_DECLS
 
+#ifdef DBUS_WIN
+#define _DBUS_PATH_SEPARATOR ";"
+#else
+#define _DBUS_PATH_SEPARATOR ":"
+#endif
+
 /* Forward declarations */
 
 /** An opaque string type */
@@ -462,6 +468,10 @@ dbus_bool_t _dbus_read_local_machine_uuid   (DBusGUID         *machine_id,
  */
 dbus_bool_t _dbus_threads_init_platform_specific (void);
 
+dbus_bool_t _dbus_split_paths_and_append (DBusString *dirs, 
+                                          const char *suffix, 
+                                          DBusList **dir_list);
+
 /** @} */
 
 DBUS_END_DECLS