Revert "Add new functions _dbus_hash_table_to_array() and _dbus_hash_table_from_array...
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 12 Feb 2016 15:24:55 +0000 (15:24 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 12 Feb 2016 15:24:55 +0000 (15:24 +0000)
This reverts commit 610ff8d9646c1bb944bc5e56f22750f1754b308e.
This change was intended for 1.11.

bus/activation.c
dbus/dbus-hash.c
dbus/dbus-hash.h

index 8ca3292..7b1ab06 100644 (file)
@@ -729,6 +729,9 @@ update_directory (BusActivation       *activation,
 static dbus_bool_t
 populate_environment (BusActivation *activation)
 {
+  DBusString   key;
+  DBusString   value;
+  int          i;
   char       **environment;
   dbus_bool_t  retval = FALSE;
 
@@ -737,7 +740,50 @@ populate_environment (BusActivation *activation)
   if (environment == NULL)
     return FALSE;
 
-  retval = _dbus_hash_table_from_array (activation->environment, environment, '=');
+  if (!_dbus_string_init (&key))
+    {
+        dbus_free_string_array (environment);
+        return FALSE;
+    }
+
+  if (!_dbus_string_init (&value))
+    {
+      _dbus_string_free (&key);
+      dbus_free_string_array (environment);
+      return FALSE;
+    }
+
+  for (i = 0; environment[i] != NULL; i++)
+    {
+      if (!_dbus_string_append (&key, environment[i]))
+        break;
+
+      if (_dbus_string_split_on_byte (&key, '=', &value))
+        {
+          char *hash_key, *hash_value;
+
+          if (!_dbus_string_steal_data (&key, &hash_key))
+            break;
+
+          if (!_dbus_string_steal_data (&value, &hash_value))
+            break;
+
+          if (!_dbus_hash_table_insert_string (activation->environment,
+                                               hash_key, hash_value))
+            break;
+        }
+      _dbus_string_set_length (&key, 0);
+      _dbus_string_set_length (&value, 0);
+    }
+
+  if (environment[i] != NULL)
+    goto out;
+
+  retval = TRUE;
+out:
+
+  _dbus_string_free (&key);
+  _dbus_string_free (&value);
   dbus_free_string_array (environment);
 
   return retval;
@@ -1553,7 +1599,51 @@ activation_find_entry (BusActivation *activation,
 static char **
 bus_activation_get_environment (BusActivation *activation)
 {
-  return _dbus_hash_table_to_array (activation->environment, '=');
+  char **environment;
+  int i, length;
+  DBusString entry;
+  DBusHashIter iter;
+
+  length = _dbus_hash_table_get_n_entries (activation->environment);
+
+  environment = dbus_new0 (char *, length + 1);
+
+  if (environment == NULL)
+    return NULL;
+
+  i = 0;
+  _dbus_hash_iter_init (activation->environment, &iter);
+
+  if (!_dbus_string_init (&entry))
+    {
+      dbus_free_string_array (environment);
+      return NULL;
+    }
+
+  while (_dbus_hash_iter_next (&iter))
+    {
+      const char *key, *value;
+
+      key = (const char *) _dbus_hash_iter_get_string_key (&iter);
+      value = (const char *) _dbus_hash_iter_get_value (&iter);
+
+      if (!_dbus_string_append_printf (&entry, "%s=%s", key, value))
+        break;
+
+      if (!_dbus_string_steal_data (&entry, environment + i))
+        break;
+      i++;
+    }
+
+  _dbus_string_free (&entry);
+
+  if (i != length)
+    {
+      dbus_free_string_array (environment);
+      environment = NULL;
+    }
+
+  return environment;
 }
 
 dbus_bool_t
index 8858baf..8f7d04b 100644 (file)
@@ -1828,133 +1828,4 @@ _dbus_hash_test (void)
   return ret;
 }
 
-/**
- * Imports a string array into a hash table
- * The hash table needs to be initialized with string keys,
- * and dbus_free() as both key and value free-function.
- *
- * @param table the hash table
- * @param array the string array to import
- * @param delimiter the delimiter to separate key and value
- * @return #TRUE on success.
- * @return #FALSE if not enough memory.
- */
-
-dbus_bool_t
-_dbus_hash_table_from_array (DBusHashTable *table, char **array, char delimiter)
-{
-  DBusString   key;
-  DBusString   value;
-  int          i;
-  dbus_bool_t  retval = FALSE;
-
-  _dbus_assert (table != NULL);
-  _dbus_assert (array != NULL);
-
-  if (!_dbus_string_init (&key))
-    {
-        return FALSE;
-    }
-
-  if (!_dbus_string_init (&value))
-    {
-      _dbus_string_free (&key);
-      return FALSE;
-    }
-
-  for (i = 0; array[i] != NULL; i++)
-    {
-      if (!_dbus_string_append (&key, array[i]))
-        break;
-
-      if (_dbus_string_split_on_byte (&key, delimiter, &value))
-        {
-          char *hash_key, *hash_value;
-
-          if (!_dbus_string_steal_data (&key, &hash_key))
-            break;
-
-          if (!_dbus_string_steal_data (&value, &hash_value))
-            break;
-
-          if (!_dbus_hash_table_insert_string (table,
-                                               hash_key, hash_value))
-            break;
-        }
-      _dbus_string_set_length (&key, 0);
-      _dbus_string_set_length (&value, 0);
-    }
-
-  if (array[i] != NULL)
-    goto out;
-
-  retval = TRUE;
-out:
-
-  _dbus_string_free (&key);
-  _dbus_string_free (&value);
-
-  return retval;
-}
-
-/**
- * Creates a string array from a hash table
- *
- * @param table the hash table
- * @param delimiter the delimiter to join key and value
- * @return pointer to created string array (free with dbus_free_string_array)
- * @return #FALSE if not enough memory.
- */
-char **
-_dbus_hash_table_to_array (DBusHashTable *table, char delimiter)
-{
-  int i, length;
-  DBusString entry;
-  DBusHashIter iter;
-  char **array;
-
-  _dbus_assert (table != NULL);
-
-  length = _dbus_hash_table_get_n_entries (table);
-
-  array = dbus_new0 (char *, length + 1);
-
-  if (array == NULL)
-    return NULL;
-
-  i = 0;
-  _dbus_hash_iter_init (table, &iter);
-
-  if (!_dbus_string_init (&entry))
-    {
-      dbus_free_string_array (array);
-      return NULL;
-    }
-
-  while (_dbus_hash_iter_next (&iter))
-    {
-      const char *key, *value;
-
-      key = (const char *) _dbus_hash_iter_get_string_key (&iter);
-      value = (const char *) _dbus_hash_iter_get_value (&iter);
-
-      if (!_dbus_string_append_printf (&entry, "%s%c%s", key, delimiter, value))
-        break;
-
-      if (!_dbus_string_steal_data (&entry, array + i))
-        break;
-      i++;
-    }
-
-  _dbus_string_free (&entry);
-
-  if (i != length)
-    {
-      dbus_free_string_array (array);
-      array = NULL;
-    }
-
-  return array;
-}
-
 #endif /* DBUS_ENABLE_EMBEDDED_TESTS */
index 93f717a..2898f51 100644 (file)
@@ -133,14 +133,6 @@ dbus_bool_t    _dbus_hash_table_insert_uintptr     (DBusHashTable    *table,
 DBUS_PRIVATE_EXPORT
 int            _dbus_hash_table_get_n_entries      (DBusHashTable    *table);
 
-DBUS_PRIVATE_EXPORT
-char **        _dbus_hash_table_to_array           (DBusHashTable     *table,
-                                                    char               delimiter);
-DBUS_PRIVATE_EXPORT
-dbus_bool_t    _dbus_hash_table_from_array         (DBusHashTable     *table,
-                                                    char             **array,
-                                                    char               delimiter);
-
 /* Preallocation */
 
 /** A preallocated hash entry */