|
@@ -24,16 +24,12 @@
|
|
|
*/
|
|
|
struct Key_Value *G_create_key_value(void)
|
|
|
{
|
|
|
- struct Key_Value *kv;
|
|
|
-
|
|
|
- kv = (struct Key_Value *)G_malloc(sizeof(struct Key_Value));
|
|
|
- if (kv == NULL)
|
|
|
- return NULL;
|
|
|
+ struct Key_Value *kv = G_malloc(sizeof(struct Key_Value));
|
|
|
|
|
|
kv->nitems = 0;
|
|
|
kv->nalloc = 0;
|
|
|
- kv->key = (char **)NULL;
|
|
|
- kv->value = (char **)NULL;
|
|
|
+ kv->key = NULL;
|
|
|
+ kv->value = NULL;
|
|
|
|
|
|
return kv;
|
|
|
}
|
|
@@ -41,24 +37,17 @@ struct Key_Value *G_create_key_value(void)
|
|
|
/*!
|
|
|
\brief Set value for given key
|
|
|
|
|
|
- If key has spaces in it, this will break the logic
|
|
|
- so rule is: NO SPACES IN key.
|
|
|
-
|
|
|
\param[in] key key to be set up
|
|
|
\param[in] value value for given key
|
|
|
\param[in,out] kv Key_value structure to be modified
|
|
|
-
|
|
|
- \return 0 no memory
|
|
|
- \return 1 ok, but key was NULL or "" so ignored
|
|
|
- \return 2 ok
|
|
|
*/
|
|
|
-int G_set_key_value(const char *key, const char *value, struct Key_Value *kv)
|
|
|
+
|
|
|
+void G_set_key_value(const char *key, const char *value, struct Key_Value *kv)
|
|
|
{
|
|
|
int n;
|
|
|
- int size;
|
|
|
|
|
|
- if (key == NULL || key == 0)
|
|
|
- return 1;
|
|
|
+ if (!key)
|
|
|
+ return;
|
|
|
|
|
|
for (n = 0; n < kv->nitems; n++)
|
|
|
if (strcmp(key, kv->key[n]) == 0)
|
|
@@ -66,54 +55,28 @@ int G_set_key_value(const char *key, const char *value, struct Key_Value *kv)
|
|
|
|
|
|
if (n == kv->nitems) {
|
|
|
if (n >= kv->nalloc) {
|
|
|
- if (kv->nalloc <= 0) {
|
|
|
+ size_t size;
|
|
|
+
|
|
|
+ if (kv->nalloc <= 0)
|
|
|
kv->nalloc = 8;
|
|
|
- size = kv->nalloc * sizeof(char *);
|
|
|
- kv->key = (char **)G_malloc(size);
|
|
|
- kv->value = (char **)G_malloc(size);
|
|
|
- }
|
|
|
- else {
|
|
|
+ else
|
|
|
kv->nalloc *= 2;
|
|
|
- size = kv->nalloc * sizeof(char *);
|
|
|
- kv->key = (char **)G_realloc(kv->key, size);
|
|
|
- kv->value = (char **)G_realloc(kv->value, size);
|
|
|
- }
|
|
|
-
|
|
|
- if (kv->key == NULL || kv->value == NULL) {
|
|
|
- if (kv->key) {
|
|
|
- G_free(kv->key);
|
|
|
- kv->key = NULL;
|
|
|
- }
|
|
|
- if (kv->value) {
|
|
|
- G_free(kv->value);
|
|
|
- kv->value = NULL;
|
|
|
- }
|
|
|
- kv->nitems = kv->nalloc = 0;
|
|
|
- return 0;
|
|
|
- }
|
|
|
+
|
|
|
+ size = kv->nalloc * sizeof(char *);
|
|
|
+ kv->key = G_realloc(kv->key, size);
|
|
|
+ kv->value = G_realloc(kv->value, size);
|
|
|
}
|
|
|
- kv->value[n] = NULL;
|
|
|
- kv->key[n] = G_malloc(strlen(key) + 1);
|
|
|
- if (kv->key[n] == NULL)
|
|
|
- return 0;
|
|
|
- strcpy(kv->key[n], key);
|
|
|
+
|
|
|
+ kv->key[n] = G_store(key);
|
|
|
+ kv->value[n] = G_store(value);
|
|
|
kv->nitems++;
|
|
|
+ return;
|
|
|
}
|
|
|
- if (value == NULL)
|
|
|
- size = 0;
|
|
|
- else
|
|
|
- size = strlen(value);
|
|
|
- if (kv->value[n] != NULL)
|
|
|
+
|
|
|
+ if (kv->value[n])
|
|
|
G_free(kv->value[n]);
|
|
|
- if (size > 0) {
|
|
|
- kv->value[n] = G_malloc(size + 1);
|
|
|
- if (kv->value[n] == NULL)
|
|
|
- return 0;
|
|
|
- strcpy(kv->value[n], value);
|
|
|
- }
|
|
|
- else
|
|
|
- kv->value[n] = NULL;
|
|
|
- return 2;
|
|
|
+
|
|
|
+ kv->value[n] = value ? G_store(value) : NULL;
|
|
|
}
|
|
|
|
|
|
/*!
|