aboutsummaryrefslogtreecommitdiff
path: root/lib/nullmap.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2012-10-10 19:16:16 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2012-10-10 19:22:57 +0300
commit800e9a67d5d2ced20192f3191b72c12707a30cd4 (patch)
tree8ded26adf647ba8e467b87110070b977500c6ca2 /lib/nullmap.c
parentaa129be43d57fac4842f0340168404a21b3927e6 (diff)
downloadeclat-800e9a67d5d2ced20192f3191b72c12707a30cd4.tar.gz
eclat-800e9a67d5d2ced20192f3191b72c12707a30cd4.tar.bz2
Improve map support.
* doc/eclat.conf.5: Document the null map. * lib/nullmap.c: New file. * lib/Makefile.am: Add new files. * lib/gdbmmap.c (gdbm_map_open): Fix gdbm_open arguments. Report a detailed error description if it fails. * lib/libeclat.h (eclat_map_drv_null): New extern. * src/eclat.c (main): Register the null map. * tests/.gitignore: Update. * tests/Makefile.am: Add new files. * tests/filemap.at: New file. * tests/gdbmload.c: New file. * tests/gdbmmap.at: New file. * tests/nullmap.at: New file. * tests/atlocal.in (GDBMLOAD): New variable. * tests/testsuite.at: Include new files.
Diffstat (limited to 'lib/nullmap.c')
-rw-r--r--lib/nullmap.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/nullmap.c b/lib/nullmap.c
new file mode 100644
index 0000000..7d29191
--- /dev/null
+++ b/lib/nullmap.c
@@ -0,0 +1,81 @@
+/* This file is part of Eclat.
+ Copyright (C) 2012 Sergey Poznyakoff.
+
+ Eclat 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 3, or (at your option)
+ any later version.
+
+ Eclat 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 Eclat. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "libeclat.h"
+#include <errno.h>
+
+static struct grecs_keyword nullmap_kw[] = {
+ { "type", "'null", "Set map type", grecs_type_null },
+ { "key", "<arg: string>", "key expression", grecs_type_null },
+ { NULL }
+};
+
+static void
+nullmap_confhelp()
+{
+ static struct grecs_keyword nullmap_top[] = {
+ { "map", "name: string",
+ "Configuration for a null map",
+ grecs_type_section, GRECS_INAC, NULL, 0, NULL, NULL,
+ nullmap_kw },
+ { NULL }
+ };
+ grecs_print_statement_array(nullmap_top, 1, 0, stdout);
+}
+
+static void
+nullmap_free(int dbg, void *data)
+{
+ struct nullmap *nullmap = data;
+ free(nullmap);
+}
+
+static int
+nullmap_config(int dbg, struct grecs_node *node, void *data)
+{
+ return eclat_map_ok;
+}
+
+static int
+nullmap_open(int dbg, void *data)
+{
+ return eclat_map_ok;
+}
+
+
+static int
+nullmap_close(int dbg, void *data)
+{
+ return eclat_map_ok;
+}
+
+static int
+nullmap_get(int dbg, void *data, const char *key, char **return_value)
+{
+ *return_value = grecs_strdup(key);
+ return eclat_map_ok;
+}
+
+struct eclat_map_drv eclat_map_drv_null = {
+ "null",
+ nullmap_config,
+ nullmap_open,
+ nullmap_close,
+ nullmap_get,
+ nullmap_free,
+ nullmap_confhelp
+};
+

Return to:

Send suggestions and report system problems to the System administrator.