diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-05-13 16:46:30 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-05-13 16:46:30 +0000 |
commit | aa0eaa5bc642167db8cfb5778cf9a0091401a4f3 (patch) | |
tree | a5a6cbdc9ca61b6867bd902fc880efd2eaa0f29c /src/datconv.c | |
parent | 1638ed6202b77b521214128189dc4aacdb5fe098 (diff) | |
download | gdbm-aa0eaa5bc642167db8cfb5778cf9a0091401a4f3.tar.gz gdbm-aa0eaa5bc642167db8cfb5778cf9a0091401a4f3.tar.bz2 |
Implement shell variables in gdbmtool.
* src/var.c: New file.
* src/datconv.c (datum_format): Remove the "delim"
parameter, use "delim1" and "delim2" shell variables
instead.
* src/gdbmtool.c: Remove "prompt" command. Use "set ps[12]"
instead.
(print_prompt): Move to lex.l
* src/gdbmtool.h (variable_set)
(variable_get, variable_print_all): New protos.
* src/gram.y: Handle the "set" command.
* src/lex.l: Update.
Diffstat (limited to 'src/datconv.c')
-rw-r--r-- | src/datconv.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/datconv.c b/src/datconv.c index 2ef64a6..10a1406 100644 --- a/src/datconv.c +++ b/src/datconv.c @@ -207,15 +207,21 @@ dsegm_free_list (struct dsegm *dp) } void -datum_format (FILE *fp, datum const *dat, struct dsegm *ds, char *delim) +datum_format (FILE *fp, datum const *dat, struct dsegm *ds) { int off = 0; + char *delim[2]; if (!ds) { fprintf (fp, "%.*s\n", dat->dsize, dat->dptr); return; } + + if (variable_get ("delim1", VART_STRING, (void*) &delim[0])) + abort (); + if (variable_get ("delim2", VART_STRING, (void*) &delim[1])) + abort (); for (; ds && off <= dat->dsize; ds = ds->next) { @@ -233,7 +239,7 @@ datum_format (FILE *fp, datum const *dat, struct dsegm *ds, char *delim) for (i = 0; i < ds->v.field.dim; i++) { if (i) - fwrite (delim, strlen (delim), 1, fp); + fwrite (delim[0], strlen (delim[0]), 1, fp); if (off + ds->v.field.type->size > dat->dsize) { fprintf (fp, _("(not enough data)")); @@ -253,7 +259,7 @@ datum_format (FILE *fp, datum const *dat, struct dsegm *ds, char *delim) } if (ds->v.field.dim > 1) fprintf (fp, " }"); - fwrite (delim, strlen (delim), 1, fp); + fwrite (delim[1], strlen (delim[1]), 1, fp); break; case FDEF_OFF: |