X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=res%2Blog%2Fgw-res-test.c;fp=res%2Blog%2Fgw-res-test.c;h=5e9b2b1ea56bf86591c7cb6b0e9595fd45a3d0df;hb=54dd4cd1c8dc4c7322b6ae2cf42c4c3f969f8d32;hp=0000000000000000000000000000000000000000;hpb=779719b37d33b06ccd7673c441cf853fe03aa56a;p=egate.git diff --git a/res+log/gw-res-test.c b/res+log/gw-res-test.c new file mode 100644 index 0000000..5e9b2b1 --- /dev/null +++ b/res+log/gw-res-test.c @@ -0,0 +1,155 @@ +/* + gw-res-test.c: Test of resource management. + + Europagate, 1994-1995. + + $Log: gw-res-test.c,v $ + Revision 1.1.1.1 1995/02/09 17:27:12 adam + Initial version of email gateway under CVS control. + + + Initial: Dec 7, 94 (Adam Dickmeiss) + Last update: Dec 13, 94 (Adam Dickmeiss) + + */ + +#include +#include +#include +#include + +#include +#include + +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], ""); + 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 merge\n" + "g get\n" + "p put\n" + "s [] show\n" + "c 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); +}