summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2016-02-12 15:24:55 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2016-02-12 15:24:55 +0000
commit554dba974cf161ac4df8d520a3024f1ba8e21c30 (patch)
tree689a3f27d31e45e1b0aef005c312ef1e27551230
parent610ff8d9646c1bb944bc5e56f22750f1754b308e (diff)
downloaddbus-554dba974cf161ac4df8d520a3024f1ba8e21c30.tar.gz
Revert "Add new functions _dbus_hash_table_to_array() and _dbus_hash_table_from_array() from related activation code."
This reverts commit 610ff8d9646c1bb944bc5e56f22750f1754b308e. This change was intended for 1.11.
-rw-r--r--bus/activation.c94
-rw-r--r--dbus/dbus-hash.c129
-rw-r--r--dbus/dbus-hash.h8
3 files changed, 92 insertions, 139 deletions
diff --git a/bus/activation.c b/bus/activation.c
index 8ca3292d..7b1ab063 100644
--- a/bus/activation.c
+++ b/bus/activation.c
@@ -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
diff --git a/dbus/dbus-hash.c b/dbus/dbus-hash.c
index 8858bafd..8f7d04bb 100644
--- a/dbus/dbus-hash.c
+++ b/dbus/dbus-hash.c
@@ -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 */
diff --git a/dbus/dbus-hash.h b/dbus/dbus-hash.h
index 93f717a9..2898f51c 100644
--- a/dbus/dbus-hash.h
+++ b/dbus/dbus-hash.h
@@ -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 */