--- /dev/null
+/* $Id: check_res.c,v 1.1 2006-12-05 14:06:29 adam Exp $
+ Copyright (C) 1995-2006
+ Index Data ApS
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "index.h"
+
+int zebra_check_res(Res res)
+{
+ int errors = 0;
+ Res v = res_open(0, 0);
+
+ res_add(v, "attset", "");
+ res_add(v, "chdir", "");
+ res_add(v, "dbaccess", "");
+ res_add(v, "encoding", "");
+ res_add(v, "estimatehits", "");
+ res_add(v, "group", "");
+ res_add(v, "index", "");
+ res_add(v, "isam", "");
+ res_add(v, "isamcDebug", "");
+ res_add(v, "isamsDebug", "");
+ res_add(v, "keyTmpDir", "");
+ res_add(v, "lockDir", "");
+ res_add(v, "modulePath", "");
+ res_add(v, "perm", "s");
+ res_add(v, "passwd", "");
+ res_add(v, "passwd.c", "");
+ res_add(v, "profilePath", "");
+ res_add(v, "rank", "");
+ res_add(v, "recordCompression", "");
+ res_add(v, "register", "");
+ res_add(v, "root", "");
+ res_add(v, "shadow", "");
+ res_add(v, "segment", "");
+ res_add(v, "setTmpDir", "");
+ res_add(v, "staticrank", "");
+ res_add(v, "threads", "");
+ res_add(v, "database", "p");
+ res_add(v, "explainDatabase", "p");
+ res_add(v, "fileVerboseLimit", "p");
+ res_add(v, "followLinks", "p");
+ res_add(v, "recordId", "p");
+ res_add(v, "recordType", "ps");
+ res_add(v, "storeKeys", "p");
+ res_add(v, "storeData", "p");
+ res_add(v, "openRW", "p");
+
+
+ errors = res_check(res, v);
+
+ res_close(v);
+ return errors;
+}
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-/* $Id: res.c,v 1.52 2006-12-05 09:24:31 adam Exp $
+/* $Id: res.c,v 1.53 2006-12-05 14:06:30 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
res_dump (r->over_res, level + 1);
}
}
+
+int res_check(Res r_i, Res r_v)
+{
+ struct res_entry *e_i;
+ int errors = 0;
+
+ for (e_i = r_i->first; e_i; e_i = e_i->next)
+ {
+ struct res_entry *e_v;
+ for (e_v = r_v->first; e_v; e_v = e_v->next)
+ {
+ int prefix_allowed = 0;
+ int suffix_allowed = 0;
+ const char *name = e_i->name;
+ size_t name_len = strlen(e_i->name);
+ char namez[32];
+
+ if (strchr(e_v->value, 'p'))
+ prefix_allowed = 1;
+ if (strchr(e_v->value, 's'))
+ suffix_allowed = 1;
+
+ if (prefix_allowed)
+ {
+ const char *cp = strchr(name, '.');
+ if (cp)
+ {
+ name = cp;
+ name_len = strlen(name);
+ }
+ }
+ if (suffix_allowed)
+ {
+ const char *cp = strchr(name, '.');
+ if (cp)
+ name_len = cp - name;
+ }
+ if (name_len < sizeof(namez)-1)
+ {
+ memcpy(namez, name, name_len);
+ namez[name_len] = '\0';
+ if (!yaz_matchstr(namez, e_v->name))
+ break;
+ }
+ }
+ if (!e_v)
+ {
+ yaz_log(YLOG_WARN, "The following setting is unrecognized: %s",
+ e_i->name);
+ errors++;
+ }
+ }
+ return errors;
+}
+
/*
* Local variables:
* c-basic-offset: 4