+// Initialize CCL map for a target
+// Note: This approach ignores user-specific CCL maps, for which I
+// don't presently see any application.
+static void prepare_cclmap(void *context, struct database *db)
+{
+ struct setting *s;
+
+ if (!db->settings)
+ return;
+ db->ccl_map = ccl_qual_mk();
+ for (s = db->settings[PZ_CCLMAP]; s; s = s->next)
+ if (!*s->user)
+ {
+ char *p = strchr(s->name + 3, ':');
+ if (!p)
+ {
+ yaz_log(YLOG_FATAL, "Malformed cclmap name: %s", s->name);
+ exit(1);
+ }
+ p++;
+ ccl_qual_fitem(db->ccl_map, s->value, p);
+ }
+}
+
+// Read settings for each database, and prepare a CCL map for that database
+static void prepare_cclmaps(void)
+{
+ grep_databases(0, 0, prepare_cclmap);
+}
+
+static void start_proxy(void)
+{
+ char hp[128] = "";
+ struct conf_server *ser = global_parameters.server;
+
+ if (*global_parameters.proxy_override)
+ strcpy(hp, global_parameters.proxy_override);
+ else if (ser->proxy_host || ser->proxy_port)
+ {
+ strcpy(hp, ser->proxy_host ? ser->proxy_host : "");
+ if (ser->proxy_port)
+ {
+ if (*hp)
+ strcat(hp, ":");
+ sprintf(hp + strlen(hp), "%d", ser->proxy_port);
+ }
+ }
+ else
+ return;
+
+ http_set_proxyaddr(hp, ser->myurl ? ser->myurl : "");
+}
+
+static void start_zproxy(void)
+{
+ struct conf_server *ser = global_parameters.server;
+
+ if (*global_parameters.zproxy_override){
+ yaz_log(YLOG_LOG, "Z39.50 proxy %s",
+ global_parameters.zproxy_override);
+ return;
+ }
+
+ else if (ser->zproxy_host || ser->zproxy_port)
+ {
+ char hp[128] = "";
+
+ strcpy(hp, ser->zproxy_host ? ser->zproxy_host : "");
+ if (ser->zproxy_port)
+ {
+ if (*hp)
+ strcat(hp, ":");
+ else
+ strcat(hp, "@:");
+
+ sprintf(hp + strlen(hp), "%d", ser->zproxy_port);
+ }
+ strcpy(global_parameters.zproxy_override, hp);
+ yaz_log(YLOG_LOG, "Z39.50 proxy %s",
+ global_parameters.zproxy_override);
+
+ }
+ else
+ return;
+}
+
+
+