- // Determine if we already have a dictionary entry
- if (!strncmp(set->name, "pz:", 3) && (p = strchr(set->name + 3, ':')))
- *(p + 1) = '\0';
- for (i = 0; i < dictionary->num; i++)
- if (!strcmp(dictionary->dict[i], set->name))
- return;
+void expand_settings_array(struct setting ***set_ar, int *num, int offset,
+ NMEM nmem)
+{
+ assert(offset >= 0);
+ assert(*set_ar);
+ if (offset >= *num)
+ {
+ int i, n_num = offset + 10;
+ struct setting **n_ar = nmem_malloc(nmem, n_num * sizeof(*n_ar));
+ for (i = 0; i < *num; i++)
+ n_ar[i] = (*set_ar)[i];
+ for (; i < n_num; i++)
+ n_ar[i] = 0;
+ *num = n_num;
+ *set_ar = n_ar;
+ }
+}
+
+void expand_settings_array2(struct settings_array *settings, int offset, NMEM nmem)
+{
+ assert(offset >= 0);
+ assert(settings);
+ if (offset >= settings->num_settings)
+ {
+ int i, n_num = offset + 10;
+ struct setting **n_ar = nmem_malloc(nmem, n_num * sizeof(*n_ar));
+ for (i = 0; i < settings->num_settings; i++)
+ n_ar[i] = settings->settings[i];
+ for (; i < n_num; i++)
+ n_ar[i] = 0;
+ settings->num_settings = n_num;
+ settings->settings = n_ar;
+ }
+}
+
+static void update_settings(struct setting *set, struct settings_array *settings, int offset, NMEM nmem)
+{
+ struct setting **sp;
+ yaz_log(YLOG_DEBUG, "update service settings offset %d with %s=%s", offset, set->name, set->value);
+ expand_settings_array2(settings, offset, nmem);