aboutsummaryrefslogtreecommitdiff
path: root/src/datconv.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2013-05-13 16:46:30 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2013-05-13 16:46:30 +0000
commitaa0eaa5bc642167db8cfb5778cf9a0091401a4f3 (patch)
treea5a6cbdc9ca61b6867bd902fc880efd2eaa0f29c /src/datconv.c
parent1638ed6202b77b521214128189dc4aacdb5fe098 (diff)
downloadgdbm-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.c12
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:

Return to:

Send suggestions and report system problems to the System administrator.