|
Packit Service |
f629e6 |
/*
|
|
Packit Service |
f629e6 |
* cmd.h - definitions for command parser
|
|
Packit Service |
f629e6 |
*/
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/*
|
|
Packit Service |
f629e6 |
* Copyright (C) 2004, 2010, 2011, 2013, 2014, 2017,
|
|
Packit Service |
f629e6 |
* the Free Software Foundation, Inc.
|
|
Packit Service |
f629e6 |
*
|
|
Packit Service |
f629e6 |
* This file is part of GAWK, the GNU implementation of the
|
|
Packit Service |
f629e6 |
* AWK Programming Language.
|
|
Packit Service |
f629e6 |
*
|
|
Packit Service |
f629e6 |
* GAWK is free software; you can redistribute it and/or modify
|
|
Packit Service |
f629e6 |
* it under the terms of the GNU General Public License as published by
|
|
Packit Service |
f629e6 |
* the Free Software Foundation; either version 3 of the License, or
|
|
Packit Service |
f629e6 |
* (at your option) any later version.
|
|
Packit Service |
f629e6 |
*
|
|
Packit Service |
f629e6 |
* GAWK is distributed in the hope that it will be useful,
|
|
Packit Service |
f629e6 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
f629e6 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
f629e6 |
* GNU General Public License for more details.
|
|
Packit Service |
f629e6 |
*
|
|
Packit Service |
f629e6 |
* You should have received a copy of the GNU General Public License
|
|
Packit Service |
f629e6 |
* along with this program; if not, write to the Free Software
|
|
Packit Service |
f629e6 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
Packit Service |
f629e6 |
*/
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
#ifdef HAVE_LIBREADLINE
|
|
Packit Service |
f629e6 |
#include <readline/readline.h>
|
|
Packit Service |
f629e6 |
#include <readline/history.h>
|
|
Packit Service |
f629e6 |
extern char **command_completion(const char *text, int start, int end);
|
|
Packit Service |
f629e6 |
extern void initialize_pager(FILE *fp); /* debug.c */
|
|
Packit Service |
f629e6 |
extern NODE *get_function(void);
|
|
Packit Service |
f629e6 |
#else
|
|
Packit Service |
f629e6 |
#define initialize_pager(x) /* nothing */
|
|
Packit Service |
f629e6 |
#define add_history(x) /* nothing */
|
|
Packit Service |
f629e6 |
#endif
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
extern int gprintf(FILE *fp, const char *format, ...);
|
|
Packit Service |
f629e6 |
extern jmp_buf pager_quit_tag;
|
|
Packit Service |
f629e6 |
extern int pager_quit_tag_valid;
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
extern bool output_is_tty;
|
|
Packit Service |
f629e6 |
extern int input_fd;
|
|
Packit Service |
f629e6 |
extern bool input_from_tty;
|
|
Packit Service |
f629e6 |
extern FILE *out_fp;
|
|
Packit Service |
f629e6 |
extern char *dbg_prompt;
|
|
Packit Service |
f629e6 |
extern char *commands_prompt;
|
|
Packit Service |
f629e6 |
extern char *eval_prompt;
|
|
Packit Service |
f629e6 |
extern char *dgawk_prompt;
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
enum argtype {
|
|
Packit Service |
f629e6 |
D_illegal,
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* commands */
|
|
Packit Service |
f629e6 |
D_backtrace,
|
|
Packit Service |
f629e6 |
D_break,
|
|
Packit Service |
f629e6 |
D_clear,
|
|
Packit Service |
f629e6 |
D_commands,
|
|
Packit Service |
f629e6 |
D_condition,
|
|
Packit Service |
f629e6 |
D_continue,
|
|
Packit Service |
f629e6 |
D_delete,
|
|
Packit Service |
f629e6 |
D_disable,
|
|
Packit Service |
f629e6 |
D_display,
|
|
Packit Service |
f629e6 |
D_down,
|
|
Packit Service |
f629e6 |
D_dump,
|
|
Packit Service |
f629e6 |
D_enable,
|
|
Packit Service |
f629e6 |
D_end,
|
|
Packit Service |
f629e6 |
D_eval,
|
|
Packit Service |
f629e6 |
D_finish,
|
|
Packit Service |
f629e6 |
D_frame,
|
|
Packit Service |
f629e6 |
D_help,
|
|
Packit Service |
f629e6 |
D_ignore,
|
|
Packit Service |
f629e6 |
D_info,
|
|
Packit Service |
f629e6 |
D_list,
|
|
Packit Service |
f629e6 |
D_next,
|
|
Packit Service |
f629e6 |
D_nexti,
|
|
Packit Service |
f629e6 |
D_option,
|
|
Packit Service |
f629e6 |
D_print,
|
|
Packit Service |
f629e6 |
D_printf,
|
|
Packit Service |
f629e6 |
D_quit,
|
|
Packit Service |
f629e6 |
D_return,
|
|
Packit Service |
f629e6 |
D_run,
|
|
Packit Service |
f629e6 |
D_save,
|
|
Packit Service |
f629e6 |
D_set,
|
|
Packit Service |
f629e6 |
D_silent,
|
|
Packit Service |
f629e6 |
D_source,
|
|
Packit Service |
f629e6 |
D_step,
|
|
Packit Service |
f629e6 |
D_stepi,
|
|
Packit Service |
f629e6 |
D_tbreak,
|
|
Packit Service |
f629e6 |
D_trace,
|
|
Packit Service |
f629e6 |
D_undisplay,
|
|
Packit Service |
f629e6 |
D_until,
|
|
Packit Service |
f629e6 |
D_unwatch,
|
|
Packit Service |
f629e6 |
D_up,
|
|
Packit Service |
f629e6 |
D_watch,
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* arguments */
|
|
Packit Service |
f629e6 |
D_argument,
|
|
Packit Service |
f629e6 |
D_int,
|
|
Packit Service |
f629e6 |
D_string,
|
|
Packit Service |
f629e6 |
D_variable,
|
|
Packit Service |
f629e6 |
D_node,
|
|
Packit Service |
f629e6 |
D_field,
|
|
Packit Service |
f629e6 |
D_array,
|
|
Packit Service |
f629e6 |
D_subscript,
|
|
Packit Service |
f629e6 |
D_func,
|
|
Packit Service |
f629e6 |
D_range
|
|
Packit Service |
f629e6 |
};
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* non-number arguments to commands */
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
enum nametypeval {
|
|
Packit Service |
f629e6 |
A_NONE = 0,
|
|
Packit Service |
f629e6 |
A_ARGS,
|
|
Packit Service |
f629e6 |
A_BREAK,
|
|
Packit Service |
f629e6 |
A_DEL,
|
|
Packit Service |
f629e6 |
A_DISPLAY,
|
|
Packit Service |
f629e6 |
A_FRAME,
|
|
Packit Service |
f629e6 |
A_FUNCTIONS,
|
|
Packit Service |
f629e6 |
A_LOCALS,
|
|
Packit Service |
f629e6 |
A_ONCE,
|
|
Packit Service |
f629e6 |
A_SOURCE,
|
|
Packit Service |
f629e6 |
A_SOURCES,
|
|
Packit Service |
f629e6 |
A_TRACE_ON,
|
|
Packit Service |
f629e6 |
A_TRACE_OFF,
|
|
Packit Service |
f629e6 |
A_VARIABLES,
|
|
Packit Service |
f629e6 |
A_WATCH
|
|
Packit Service |
f629e6 |
};
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
typedef struct cmd_argument {
|
|
Packit Service |
f629e6 |
struct cmd_argument *next;
|
|
Packit Service |
f629e6 |
enum argtype type;
|
|
Packit Service |
f629e6 |
union {
|
|
Packit Service |
f629e6 |
long lval;
|
|
Packit Service |
f629e6 |
char *sval;
|
|
Packit Service |
f629e6 |
NODE *nodeval;
|
|
Packit Service |
f629e6 |
} value;
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
#define a_int value.lval /* type = D_int or D_range */
|
|
Packit Service |
f629e6 |
#define a_argument value.lval /* type = D_argument */
|
|
Packit Service |
f629e6 |
#define a_string value.sval /* type = D_string, D_array, D_subscript or D_variable */
|
|
Packit Service |
f629e6 |
#define a_node value.nodeval /* type = D_node, D_field or D_func */
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
int a_count; /* subscript count for D_subscript and D_array */
|
|
Packit Service |
f629e6 |
} CMDARG;
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
typedef int (*Func_cmd)(CMDARG *, int);
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
struct cmdtoken {
|
|
Packit Service |
f629e6 |
const char *name;
|
|
Packit Service |
f629e6 |
char *abbrvn; /* abbreviation */
|
|
Packit Service |
f629e6 |
enum argtype type;
|
|
Packit Service |
f629e6 |
int class;
|
|
Packit Service |
f629e6 |
Func_cmd cf_ptr;
|
|
Packit Service |
f629e6 |
const char *help_txt;
|
|
Packit Service |
f629e6 |
};
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* command.c */
|
|
Packit Service |
f629e6 |
extern void free_cmdarg(CMDARG *list);
|
|
Packit Service |
f629e6 |
extern Func_cmd get_command(int ctype);
|
|
Packit Service |
f629e6 |
extern const char *get_command_name(int ctype);
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* debug.c */
|
|
Packit Service |
f629e6 |
extern void d_error(const char *mesg, ...);
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
/* command.c */
|
|
Packit Service |
f629e6 |
extern int find_option(char *name);
|
|
Packit Service |
f629e6 |
extern void option_help(void);
|
|
Packit Service |
f629e6 |
extern char *(*read_a_line)(const char *prompt);
|
|
Packit Service |
f629e6 |
extern char *read_commands_string(const char *prompt);
|
|
Packit Service |
f629e6 |
extern int in_cmd_src(const char *);
|
|
Packit Service |
f629e6 |
extern int get_eof_status(void);
|
|
Packit Service |
f629e6 |
extern void push_cmd_src(int fd, bool istty, char * (*readfunc)(const char *),
|
|
Packit Service |
f629e6 |
int (*closefunc)(int), int cmd, int eofstatus);
|
|
Packit Service |
f629e6 |
extern int pop_cmd_src(void);
|
|
Packit Service |
f629e6 |
extern int has_break_or_watch_point(int *pnum, bool any);
|
|
Packit Service |
f629e6 |
extern int do_list(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_info(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_print_var(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_backtrace(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_breakpoint(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_tmp_breakpoint(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_delete_breakpoint(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_enable_breakpoint(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_disable_breakpoint(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_ignore_breakpoint(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_run(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_quit(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_continue(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_step(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_stepi(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_next(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_nexti(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_clear(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_finish(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_help(CMDARG *arg, int cmd) ;
|
|
Packit Service |
f629e6 |
extern int do_up(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_down(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_frame(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_until(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_set_var(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_return(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_display(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_undisplay(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_watch(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_unwatch(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_dump_instructions(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_trace_instruction(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_option(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_commands(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_print_f(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_source(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_save(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_eval(CMDARG *arg, int cmd);
|
|
Packit Service |
f629e6 |
extern int do_condition(CMDARG *arg, int cmd);
|