diff options
Diffstat (limited to 'src/gdbmtool.h')
-rw-r--r-- | src/gdbmtool.h | 31 |
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 @@ -15,24 +15,26 @@ You should have received a copy of the GNU General Public License along with GDBM. If not, see <http://www.gnu.org/licenses/>. */ #include "autoconf.h" #include "gdbmdefs.h" #include "gdbm.h" #include "gdbmapp.h" #include <stdlib.h> #include <stdio.h> #include <stdarg.h> #include <ctype.h> +#define ARG_UNUSED __attribute__ ((__unused__)) + /* Position in input file */ struct point { char *file; /* file name */ unsigned line; /* line number */ unsigned col; /* column number */ }; /* Location in input file */ struct locus { struct point beg, end; @@ -85,44 +87,58 @@ typedef struct locus gdbm_yyltype_t; fprintf (File, "%s:%u.%u", \ (Loc).beg.file, \ (Loc).beg.line, \ (Loc).beg.col); \ } \ while (0) void vlerror (struct locus *loc, const char *fmt, va_list ap); void lerror (struct locus *loc, const char *fmt, ...); void terror (const char *fmt, ...); -void print_prompt (void); +char *make_prompt (void); int setsource (const char *filename, int intr); extern char *file_name; extern int interactive; extern int open_mode; #define GDBMTOOLRC ".gdbmtoolrc" #define GDBMTOOL_DEFFILE "junk.gdbm" + +ssize_t input_read (FILE *fp, char *buf, size_t size); +void input_init (void); +void input_done (void); + +struct handler_param; +void input_history_handler (struct handler_param *param); +int input_history_begin (struct handler_param *param, size_t *exp_count); + +void print_prompt_at_bol (void); +char *command_generator (const char *text, int state); struct slist { struct slist *next; char *str; }; -struct slist *slist_new (char *s); +struct slist *slist_new (char const *s); +struct slist *slist_new_s (char *s); +struct slist *slist_new_l (char const *s, size_t l); void slist_free (struct slist *); +void slist_insert (struct slist **where, struct slist *what); #define KV_STRING 0 #define KV_LIST 1 struct kvpair { struct kvpair *next; int type; struct locus loc; char *key; union { @@ -152,24 +168,32 @@ struct gdbmarg char *string; datum dat; struct kvpair *kvpair; } v; }; /* List of arguments */ struct gdbmarglist { struct gdbmarg *head, *tail; }; +struct handler_param +{ + int argc; + struct gdbmarg **argv; + FILE *fp; + void *data; +}; + void gdbmarglist_init (struct gdbmarglist *, struct gdbmarg *); void gdbmarglist_add (struct gdbmarglist *, struct gdbmarg *); void gdbmarglist_free (struct gdbmarglist *lst); struct gdbmarg *gdbmarg_string (char *, struct locus *); struct gdbmarg *gdbmarg_datum (datum *, struct locus *); struct gdbmarg *gdbmarg_kvpair (struct kvpair *kvl, struct locus *); int gdbmarg_free (struct gdbmarg *arg); void gdbmarg_destroy (struct gdbmarg **parg); struct command; @@ -253,12 +277,15 @@ void end_def (void); int yylex (void); int yyerror (char const *s); int yyparse (void); void datum_format (FILE *fp, datum const *dat, struct dsegm *ds); int datum_scan (datum *dat, struct dsegm *ds, struct kvpair *kv); void dsprint (FILE *fp, int what, struct dsegm *ds); char *mkfilename (const char *dir, const char *file, const char *suf); char *tildexpand (char *s); int vgetyn (const char *prompt, va_list ap); int getyn (const char *prompt, ...); + +int getnum (int *pnum, char *arg, char **endp); +int get_screen_lines (void); |