1 /*
2  * cmd.h - User command entry point
3  *
4  * Copyright (C) 1995, 1996 by Scott C. Gray
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, write to the Free Software
18  * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19  *
20  * You may contact the author :
21  *   e-mail:  gray@voicenet.com
22  *            grays@xtend-tech.com
23  *            gray@xenotropic.com
24  */
25 #ifndef cmd_h_included
26 #define cmd_h_included
27 #include "sqsh_cmd.h"
28 #include "sqsh_varbuf.h"
29 
30 /*
31  * The following defines are the return values agreed upon by all
32  * cmd_* functions.  It should be noted that these are predominantly
33  * of importance to cmd_loop().  Typically the return value of each
34  * command indiciates to cmd_loop() the action that it should perform
35  * on the current working buffer.
36  */
37 
38 #define CMD_FAIL             0    /* The command failed, the current */
39                                   /* buffer is untouched */
40 #define CMD_LEAVEBUF         1    /* Command was succesfull, didn't touch */
41                                   /* the current buffer */
42 #define CMD_ALTERBUF         2    /* Command altered the current buffer */
43 #define CMD_CLEARBUF         3    /* Command cleared current buffer (no buf save) */
44 #define CMD_RESETBUF         4    /* Command reset current buffer (with buf save) */
45 #define CMD_EXIT             5    /* Command requests that cmd_loop() exit */
46 #define CMD_ABORT            6    /* Request cmd_loop() abort */
47 #define CMD_INTERRUPTED      7    /* Request cmd_loop() abort */
48 #define CMD_RETURN           8    /* Pop up a level */
49 #define CMD_BREAK            9    /* Pop up a level */
50 
51 /*
52  * Place all prototypes for custom commands here.
53  */
54 int  cmd_loop       _ANSI_ARGS(( int, char** )) ;   /* Loop commands */
55 int  cmd_go         _ANSI_ARGS(( int, char** )) ;   /* Database commands */
56 int  cmd_connect    _ANSI_ARGS(( int, char** )) ;
57 int  cmd_bcp        _ANSI_ARGS(( int, char** )) ;
58 int  cmd_reconnect  _ANSI_ARGS(( int, char** )) ;
59 int  cmd_rpc        _ANSI_ARGS(( int, char** )) ;
60 int  cmd_clear      _ANSI_ARGS(( int, char** )) ;   /* sqsh-2.1.7 */
61 int  cmd_reset      _ANSI_ARGS(( int, char** )) ;   /* Buffer commands */
62 int  cmd_redraw     _ANSI_ARGS(( int, char** )) ;
63 int  cmd_history    _ANSI_ARGS(( int, char** )) ;
64 int  cmd_hist_load  _ANSI_ARGS(( int, char** )) ;   /* sqsh-2.1.7 */
65 int  cmd_hist_save  _ANSI_ARGS(( int, char** )) ;   /* sqsh-2.1.7 */
66 int  cmd_buf_edit   _ANSI_ARGS(( int, char** )) ;
67 int  cmd_buf_copy   _ANSI_ARGS(( int, char** )) ;
68 int  cmd_buf_get    _ANSI_ARGS(( int, char** )) ;
69 int  cmd_buf_save   _ANSI_ARGS(( int, char** )) ;
70 int  cmd_buf_load   _ANSI_ARGS(( int, char** )) ;
71 int  cmd_buf_show   _ANSI_ARGS(( int, char** )) ;
72 int  cmd_buf_append _ANSI_ARGS(( int, char** )) ;
73 int  cmd_buf_del    _ANSI_ARGS(( int, char** )) ;   /* sqsh-2.1.6 feature */
74 int  cmd_set        _ANSI_ARGS(( int, char** )) ;   /* Variable commands */
75 int  cmd_jobs       _ANSI_ARGS(( int, char** )) ;   /* Job Control */
76 int  cmd_wait       _ANSI_ARGS(( int, char** )) ;
77 int  cmd_kill       _ANSI_ARGS(( int, char** )) ;
78 int  cmd_show       _ANSI_ARGS(( int, char** )) ;
79 int  cmd_exit       _ANSI_ARGS(( int, char** )) ;   /* Misc */
80 int  cmd_abort      _ANSI_ARGS(( int, char** )) ;
81 int  cmd_echo       _ANSI_ARGS(( int, char** )) ;
82 int  cmd_sleep      _ANSI_ARGS(( int, char** )) ;
83 int  cmd_warranty   _ANSI_ARGS(( int, char** )) ;
84 int  cmd_help       _ANSI_ARGS(( int, char** )) ;
85 int  cmd_read       _ANSI_ARGS(( int, char** )) ;
86 int  cmd_lock       _ANSI_ARGS(( int, char** )) ;
87 int  cmd_shell      _ANSI_ARGS(( int, char** )) ;
88 int  cmd_alias      _ANSI_ARGS(( int, char** )) ;   /* Alias commands */
89 int  cmd_unalias    _ANSI_ARGS(( int, char** )) ;
90 int  cmd_do         _ANSI_ARGS(( int, char** )) ;
91 int  cmd_func       _ANSI_ARGS(( int, char** )) ;
92 int  cmd_call       _ANSI_ARGS(( int, char** )) ;
93 int  cmd_if         _ANSI_ARGS(( int, char** )) ;
94 int  cmd_while      _ANSI_ARGS(( int, char** )) ;
95 int  cmd_return     _ANSI_ARGS(( int, char** )) ;
96 int  cmd_break      _ANSI_ARGS(( int, char** )) ;
97 int  cmd_for        _ANSI_ARGS(( int, char** )) ;
98 int  cmd_snace      _ANSI_ARGS(( int, char** )) ;
99 int  cmd_run        _ANSI_ARGS(( int, char** )) ;
100 int  cmd_lcd        _ANSI_ARGS(( int, char** )) ; /* sqsh-2.5 local change dir */
101 int  cmd_pwd        _ANSI_ARGS(( int, char** )) ; /* sqsh-2.5 show current dir */
102 int  cmd_ls         _ANSI_ARGS(( int, char** )) ; /* sqsh-2.5 list files in current dir */
103 
104 #ifdef SQSH_INIT
105 /*
106  * The following describes a command entry.  These are used by
107  * sqsh_init() to populate g_cmdset (see sqsl_global.h) with the
108  * initial set of available commands.
109  */
110 typedef struct cmd_entry_st
111 {
112 	char      *ce_name ;           /* The name of the command */
113 	char      *ce_alias ;          /* If non-null, the aliased command */
114 	cmd_f     *ce_func ;           /* Pointer to the actual function */
115 }
116 cmd_entry_t ;
117 
118 static cmd_entry_t  sg_cmd_entry[] = {
119 
120 /*	COMMAND          ALIAS          FUNCTION  */
121 /*	------------     ----------     --------  */
122 #if !defined(NO_BCP)
123 	{ "\\bcp",       NULL,          cmd_bcp          },
124 #endif
125 	{ "\\rpc",       NULL,          cmd_rpc          },
126 	{ "\\lock",      NULL,          cmd_lock         },
127 	{ "\\loop",      NULL,          cmd_loop         },
128 	{ "\\exit",      NULL,          cmd_exit         },
129 	{ "\\abort",     NULL,          cmd_abort        },
130 	{ "\\quit",      NULL,          cmd_exit         },
131 	{ "\\done",      NULL,          cmd_exit         },
132 	{ "\\connect",   NULL,          cmd_connect      },
133 	{ "\\clear",     NULL,          cmd_clear        }, /* sqsh-2.1.7 */
134 	{ "\\reset",     NULL,          cmd_reset        },
135 	{ "\\set",       NULL,          cmd_set          },
136 	{ "\\echo",      NULL,          cmd_echo         },
137 	{ "\\sleep",     NULL,          cmd_sleep        },
138 	{ "\\jobs",      NULL,          cmd_jobs         },
139 	{ "\\wait",      NULL,          cmd_wait         },
140 	{ "\\kill",      NULL,          cmd_kill         },
141 	{ "\\show",      NULL,          cmd_show         },
142 	{ "\\warranty",  NULL,          cmd_warranty     },
143 	{ "\\go",        NULL,          cmd_go           },
144 	{ "\\reconnect", NULL,          cmd_reconnect    },
145 	{ "\\read",      NULL,          cmd_read         },
146 	{ "\\help",      NULL,          cmd_help         },
147 	{ "\\alias",     NULL,          cmd_alias        },
148 	{ "\\unalias",   NULL,          cmd_unalias      },
149 	{ "\\redraw",    NULL,          cmd_redraw       },
150 	{ "\\history",   NULL,          cmd_history      },
151 	{ "\\hist-load", NULL,          cmd_hist_load    }, /* sqsh-2.1.7 */
152 	{ "\\hist-save", NULL,          cmd_hist_save    }, /* sqsh-2.1.7 */
153 	{ "\\shell",     NULL,          cmd_shell        },
154 	{ "\\do",        NULL,          cmd_do           },
155 	{ "\\func",      NULL,          cmd_func         },
156 	{ "\\call",      NULL,          cmd_call         },
157 	{ "\\if",        NULL,          cmd_if           },
158 	{ "\\while",     NULL,          cmd_while        },
159 	{ "\\for",       NULL,          cmd_for          },
160 	{ "\\return",    NULL,          cmd_return       },
161 	{ "\\break",     NULL,          cmd_break        },
162 	{ "\\buf-edit",  NULL,          cmd_buf_edit     },
163 	{ "\\buf-copy",  NULL,          cmd_buf_copy     },
164 	{ "\\buf-get",   NULL,          cmd_buf_get      },
165 	{ "\\buf-save",  NULL,          cmd_buf_save     },
166 	{ "\\buf-load",  NULL,          cmd_buf_load     },
167 	{ "\\buf-show",  NULL,          cmd_buf_show     },
168 	{ "\\buf-append",NULL,          cmd_buf_append   },
169 	{ "\\buf-del",   NULL,          cmd_buf_del      }, /* sqsh-2.1.6 feature */
170 	{ "\\snace",     NULL,          cmd_snace        }, /* sqsh-2.1.7 */
171 	{ "\\run",       NULL,          cmd_run          }, /* sqsh-2.5 */
172 	{ "\\lcd",       NULL,          cmd_lcd          }, /* sqsh-2.5 */
173 	{ "\\pwd",       NULL,          cmd_pwd          }, /* sqsh-2.5 */
174 	{ "\\ls",        NULL,          cmd_ls           }, /* sqsh-2.5 */
175 	{ ":r",          NULL,          cmd_buf_load     },
176 	{ "vi",          NULL,          cmd_buf_edit     },
177 	{ "emacs",       NULL,          cmd_buf_edit     },
178 
179 } ;
180 #endif
181 
182 /* cmd_do.c */
183 int cmd_body_input _ANSI_ARGS(( varbuf_t* ));
184 
185 /* cmd_if.c */
186 int cmd_if_exec    _ANSI_ARGS(( int, char**, int* ));
187 
188 #endif /* cmd_h_included */
189