+
+void read_kernel_res (void)
+{
+ char path_prefix[128];
+ char fname[160];
+ const char *v;
+ char resource_name[256];
+
+ bibset = ccl_qual_mk ();
+
+ gw_log (GW_LOG_DEBUG, "main", "reading kernel resource, default %s",
+ default_res);
+ if (target)
+ gw_log (GW_LOG_DEBUG, "main", "reading kernel resource, target %s",
+ target);
+ if (lang)
+ gw_log (GW_LOG_DEBUG, "main", "reading kernel resource, lang %s",
+ lang);
+ if (kernel_res)
+ gw_res_close (kernel_res);
+ kernel_res = gw_res_init ();
+ if (gw_res_merge (kernel_res, default_res))
+ {
+ gw_log (GW_LOG_WARN, "main", "Couldn't read resource file %s",
+ default_res);
+ return;
+ }
+ strcpy (path_prefix, gw_res_get (kernel_res, "gw.path", "."));
+
+ if (target)
+ {
+ sprintf (resource_name, "gw.target.%s", target);
+ v = gw_res_get (kernel_res, resource_name, NULL);
+ if (v)
+ {
+ sprintf (fname, "%s/%s", path_prefix, v);
+ gw_res_merge (kernel_res, fname);
+ }
+ }
+ if (lang)
+ {
+ sprintf (resource_name, "gw.lang.%s", lang);
+ v = gw_res_get (kernel_res, resource_name, NULL);
+ if (v)
+ {
+ sprintf (fname, "%s/%s", path_prefix, v);
+ gw_res_merge (kernel_res, fname);
+ }
+ }
+ v = gw_res_get (kernel_res, "gw.bibset", NULL);
+ if (v)
+ {
+ FILE *bib_inf;
+
+ sprintf (fname, "%s/%s", path_prefix, v);
+ bib_inf = fopen (fname, "r");
+ if (!bib_inf)
+ gw_log (GW_LOG_WARN, "main", "cannot open %s", fname);
+ else
+ {
+ gw_log (GW_LOG_DEBUG, "main", "reading bib file %s", fname);
+ ccl_qual_file (bibset, bib_inf);
+ fclose (bib_inf);
+ }
+ }
+}