aboutsummaryrefslogtreecommitdiff
path: root/src/gdbmtool.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-07-12 12:41:15 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2016-07-12 14:34:16 +0300
commit89f200b55b309aa67c1fbfc11d4de211725348f4 (patch)
tree39e2e43f29766cbebbdf61f160b5d062ea63c996 /src/gdbmtool.h
parente8cad816f36b1cad11bb67c96f0ce878cf30844e (diff)
downloadgdbm-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/gdbmtool.h')
-rw-r--r--src/gdbmtool.h31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/gdbmtool.h b/src/gdbmtool.h
index 84f1409..d0e9aa0 100644
--- a/src/gdbmtool.h
+++ b/src/gdbmtool.h
@@ -24,6 +24,8 @@
24#include <stdarg.h> 24#include <stdarg.h>
25#include <ctype.h> 25#include <ctype.h>
26 26
27#define ARG_UNUSED __attribute__ ((__unused__))
28
27/* Position in input file */ 29/* Position in input file */
28struct point 30struct point
29{ 31{
@@ -94,7 +96,7 @@ void lerror (struct locus *loc, const char *fmt, ...);
94 96
95void terror (const char *fmt, ...); 97void terror (const char *fmt, ...);
96 98
97void print_prompt (void); 99char *make_prompt (void);
98 100
99int setsource (const char *filename, int intr); 101int setsource (const char *filename, int intr);
100 102
@@ -104,6 +106,17 @@ extern int open_mode;
104 106
105#define GDBMTOOLRC ".gdbmtoolrc" 107#define GDBMTOOLRC ".gdbmtoolrc"
106#define GDBMTOOL_DEFFILE "junk.gdbm" 108#define GDBMTOOL_DEFFILE "junk.gdbm"
109
110ssize_t input_read (FILE *fp, char *buf, size_t size);
111void input_init (void);
112void input_done (void);
113
114struct handler_param;
115void input_history_handler (struct handler_param *param);
116int input_history_begin (struct handler_param *param, size_t *exp_count);
117
118void print_prompt_at_bol (void);
119char *command_generator (const char *text, int state);
107 120
108 121
109struct slist 122struct slist
@@ -112,8 +125,11 @@ struct slist
112 char *str; 125 char *str;
113}; 126};
114 127
115struct slist *slist_new (char *s); 128struct slist *slist_new (char const *s);
129struct slist *slist_new_s (char *s);
130struct slist *slist_new_l (char const *s, size_t l);
116void slist_free (struct slist *); 131void slist_free (struct slist *);
132void slist_insert (struct slist **where, struct slist *what);
117 133
118#define KV_STRING 0 134#define KV_STRING 0
119#define KV_LIST 1 135#define KV_LIST 1
@@ -161,6 +177,14 @@ struct gdbmarglist
161 struct gdbmarg *head, *tail; 177 struct gdbmarg *head, *tail;
162}; 178};
163 179
180struct handler_param
181{
182 int argc;
183 struct gdbmarg **argv;
184 FILE *fp;
185 void *data;
186};
187
164void gdbmarglist_init (struct gdbmarglist *, struct gdbmarg *); 188void gdbmarglist_init (struct gdbmarglist *, struct gdbmarg *);
165void gdbmarglist_add (struct gdbmarglist *, struct gdbmarg *); 189void gdbmarglist_add (struct gdbmarglist *, struct gdbmarg *);
166void gdbmarglist_free (struct gdbmarglist *lst); 190void gdbmarglist_free (struct gdbmarglist *lst);
@@ -262,3 +286,6 @@ char *mkfilename (const char *dir, const char *file, const char *suf);
262char *tildexpand (char *s); 286char *tildexpand (char *s);
263int vgetyn (const char *prompt, va_list ap); 287int vgetyn (const char *prompt, va_list ap);
264int getyn (const char *prompt, ...); 288int getyn (const char *prompt, ...);
289
290int getnum (int *pnum, char *arg, char **endp);
291int get_screen_lines (void);

Return to:

Send suggestions and report system problems to the System administrator.