--- /dev/null
+/*
+ gw-res-test.c: Test of resource management.
+
+ Europagate, 1994-1995.
+
+ $Log: gw-res-test.c,v $
+ Revision 1.1 1995/02/09 17:27:11 adam
+ Initial revision
+
+
+ Initial: Dec 7, 94 (Adam Dickmeiss)
+ Last update: Dec 13, 94 (Adam Dickmeiss)
+
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include <gw-log.h>
+#include <gw-res.h>
+
+static GwRes res;
+
+static void showf (const char *name, const char *value)
+{
+ printf ("%s: %s\n", name, value);
+}
+
+static void interactive (void)
+{
+ char buffer[128];
+ char arg[3][128];
+ int no_arg;
+ int r;
+
+ while (1)
+ {
+ char *cp;
+ const char *value;
+
+ putc ('>', stdout);
+ fflush (stdout);
+ if (!(fgets (buffer, sizeof(buffer)-1, stdin)))
+ break;
+ while ((cp = strchr (buffer, '\n')))
+ *cp = '\0';
+ if (*buffer == '\0')
+ continue;
+ no_arg = sscanf (buffer+1, "%s %s %s", arg[0], arg[1], arg[2]);
+ r = -10;
+ switch (*buffer)
+ {
+ case 'm':
+ if (no_arg == 1)
+ r = gw_res_merge (res, arg[0]);
+ break;
+ case 'p':
+ if (no_arg == 3)
+ r = gw_res_put (res, arg[0], arg[1], arg[2]);
+ break;
+ case 'g':
+ if (no_arg == 1)
+ {
+ value = gw_res_get (res, arg[0], "<unknown>");
+ printf ("%s has value `%s'\n", arg[0], value);
+ r = 0;
+ }
+ break;
+ case 's':
+ if (no_arg == 1)
+ r = gw_res_trav (res, arg[0], showf);
+ else if (no_arg <= 0)
+ r = gw_res_trav (res, NULL, showf);
+ break;
+ case 'c':
+ if (no_arg == 1)
+ r = gw_res_commit (res, arg[0]);
+ break;
+ case 'h':
+ printf ("m <file> merge\n"
+ "g <name> get\n"
+ "p <name> <value> <file> put\n"
+ "s [<file>] show\n"
+ "c <file> commit\n"
+ "q quit\n");
+ r = 0;
+ break;
+ case 'q':
+ return;
+ }
+ if (r == -10)
+ printf ("syntax, type 'h' for help\n");
+ else if (r)
+ printf ("returned %d\n", r);
+ else
+ printf ("ok\n");
+ }
+}
+
+static void do_intensive (void)
+{
+ int i;
+ for (i = 0; i<100; i++)
+ {
+ const char *cp;
+ char new_val[12];
+ res = gw_res_init ();
+
+ gw_res_merge (res, "big.res");
+ gw_res_merge (res, "default.res");
+ gw_res_merge (res, "adam.res");
+
+ cp = gw_res_get (res, "loopvar", "0");
+ sprintf (new_val, "%d", atoi(cp)+1);
+ gw_res_put (res, "loopvar", new_val, "big.res");
+
+ gw_res_commit (res, "big.res");
+ gw_res_close (res);
+ }
+}
+
+int main (int argc, char **argv)
+{
+ gw_log_init (*argv);
+
+ while (--argc > 0)
+ {
+ if (**++argv == '-')
+ {
+ switch (*++*argv)
+ {
+ case 'd':
+ gw_log_level (GW_LOG_ALL);
+ continue;
+ case 't':
+ do_intensive ();
+ return 0;
+ default:
+ gw_log (GW_LOG_FATAL, "Fatal", "Unknown option %s",
+ *argv);
+ exit (1);
+ }
+ }
+ }
+ gw_log_file (GW_LOG_ALL, "all.log");
+
+ res = gw_res_init ();
+
+ interactive ();
+
+ gw_res_close (res);
+ exit (0);
+}