- if (!strcmp((*e)->name, name))
- {
- xfree ((*e)->value);
- (*e)->value = 0;
- if (value)
- {
- (*e)->value = (char *) xmalloc (len+1);
- memcpy ((*e)->value, value, len);
- (*e)->value[len] = '\0';
- }
- return;
- }
- e = &(*e)->next;
- }
- *e = (struct ZOOM_options_entry *) xmalloc (sizeof(**e));
- (*e)->name = xstrdup (name);
- (*e)->value = 0;
- if (value)
- {
- (*e)->value = (char *) xmalloc (len+1);
- memcpy ((*e)->value, value, len);
- (*e)->value[len] = '\0';
+ if (!strcmp((*e)->name, name))
+ {
+ xfree((*e)->value);
+ _set_value(e, value, len);
+ return;
+ }
+ e = &(*e)->next;