diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-12 12:41:15 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-12 14:34:16 +0300 |
commit | 89f200b55b309aa67c1fbfc11d4de211725348f4 (patch) | |
tree | 39e2e43f29766cbebbdf61f160b5d062ea63c996 /src/input-std.c | |
parent | e8cad816f36b1cad11bb67c96f0ce878cf30844e (diff) | |
download | gdbm-89f200b55b309aa67c1fbfc11d4de211725348f4.tar.gz gdbm-89f200b55b309aa67c1fbfc11d4de211725348f4.tar.bz2 |
Line-editing support in gdbmtool
* configure.ac: Check if GNU Readline is available.
* src/Makefile.am: Add new files.
* src/input-rl.c: New file.
* src/input-std.c: New file.
* src/gdbmtool.c (handler_param): Move declaration to
the header file.
(quit_handler): Call input_done.
(command_tab): Add the "history" command.
(command_generator): New function.
(slist_new_s, slist_new_l)
(slist_insert): New functions.
(main): Call input_init and input_done.
* src/gdbmtool.h: New protos.
* src/gram.y: Use slist_insert to construct string lists.
* src/lex.l (read_input): Remove. Use input_read instead.
(print_prompt_at_bol): New function.
(print_prompt): Remove.
(make_prompt): New function.
* NEWS: Document changes.
* README: Document readline support.
* doc/gdbm.texi: Document line editing in gdbmtool.
* doc/gdbmtool.1: Likewise.
Diffstat (limited to 'src/input-std.c')
-rw-r--r-- | src/input-std.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/input-std.c b/src/input-std.c new file mode 100644 index 0000000..4508368 --- /dev/null +++ b/src/input-std.c | |||
@@ -0,0 +1,43 @@ | |||
1 | /* This file is part of GDBM, the GNU data base manager. | ||
2 | Copyright (C) 2016 Free Software Foundation, Inc. | ||
3 | |||
4 | GDBM is free software; you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation; either version 3, or (at your option) | ||
7 | any later version. | ||
8 | |||
9 | GDBM is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with GDBM. If not, see <http://www.gnu.org/licenses/>. */ | ||
16 | |||
17 | #include "gdbmtool.h" | ||
18 | |||
19 | ssize_t | ||
20 | input_read (FILE *fp, char *buf, size_t size) | ||
21 | { | ||
22 | if (interactive) | ||
23 | { | ||
24 | print_prompt_at_bol (); | ||
25 | if (fgets (buf, size, fp) == NULL) | ||
26 | return 0; | ||
27 | return strlen (buf); | ||
28 | } | ||
29 | return fread (buf, 1, size, fp); | ||
30 | } | ||
31 | |||
32 | void | ||
33 | input_init (void) | ||
34 | { | ||
35 | /* nothing */ | ||
36 | } | ||
37 | |||
38 | void | ||
39 | input_done (void) | ||
40 | { | ||
41 | /* nothing */ | ||
42 | } | ||
43 | |||