enum conf_setting_type setting,
int brief,
int termlist,
- int rank,
+ const char *rank,
int sortkey_offset,
enum conf_metadata_mergekey mt,
const char *facetrule,
metadata->setting = setting;
metadata->brief = brief;
metadata->termlist = termlist;
- metadata->rank = rank;
+ metadata->rank = nmem_strdup_null(nmem, rank);
metadata->sortkey_offset = sortkey_offset;
metadata->mergekey = mt;
metadata->facetrule = nmem_strdup_null(nmem, facetrule);
enum conf_setting_type setting,
int brief,
int termlist,
- int rank,
+ const char *rank,
int sortkey_offset,
enum conf_metadata_mergekey mt,
const char *facetrule,
enum conf_metadata_mergekey mergekey_type = Metadata_mergekey_no;
int brief = 0;
int termlist = 0;
- int rank = 0;
int sortkey_offset = 0;
xmlChar *xml_name = 0;
xmlChar *xml_brief = 0;
xmlChar *xml_mergekey = 0;
xmlChar *xml_limitmap = 0;
xmlChar *xml_icu_chain = 0;
+
struct _xmlAttr *attr;
for (attr = n->properties; attr; attr = attr->next)
{
}
}
- if (xml_rank)
- rank = atoi((const char *) xml_rank);
-
if (xml_type)
{
if (!strcmp((const char *) xml_type, "generic"))
conf_service_add_metadata(service, *md_node,
(const char *) xml_name,
type, merge, setting,
- brief, termlist, rank, sortkey_offset,
- mergekey_type, (const char *) xml_icu_chain, (const char *) xml_limitmap);
+ brief, termlist,
+ (const char *) xml_rank, sortkey_offset,
+ mergekey_type,
+ (const char *) xml_icu_chain,
+ (const char *) xml_limitmap);
(*md_node)++;
return 0;
}
continue;
if (!strcmp((const char *) n->name, "settings"))
{
+ int ret;
xmlChar *src = xmlGetProp(n, (xmlChar *) "src");
if (src)
{
WRBUF w = wrbuf_alloc();
conf_dir_path(server->config, w, (const char *) src);
- settings_read_file(service, wrbuf_cstr(w), pass);
+ ret = settings_read_file(service, wrbuf_cstr(w), pass);
wrbuf_destroy(w);
xmlFree(src);
}
else
{
- settings_read_node(service, n, pass);
+ ret = settings_read_node(service, n, pass);
}
+ if (ret)
+ return 0;
}
}
}
return service;
}
-static void inherit_server_settings(struct conf_service *s)
+static int inherit_server_settings(struct conf_service *s)
{
+ int ret = 0;
struct conf_server *server = s->server;
if (!s->dictionary) /* service has no config settings ? */
{
{
/* inherit settings from server */
init_settings(s);
- settings_read_file(s, server->settings_fname, 1);
- settings_read_file(s, server->settings_fname, 2);
+ if (settings_read_file(s, server->settings_fname, 1))
+ ret = -1;
+ if (settings_read_file(s, server->settings_fname, 2))
+ ret = -1;
}
else
{
s->charsets = pp2_charset_fact_create();
}
}
+ return ret;
}
struct conf_service *service_create(struct conf_server *server,