/* Copyright (c) 2002
* Marko Boomstra (m.boomstra@chello.nl). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Defines
*/
#define VERSION "4.3"
#define MAX_STRING 2048
#define OUTBUF_LENGTH 2048
#define TICKS_SEC 10000
#define PANEL_HIDDEN fPanelHidden
#define PANEL_VISIBLE !fPanelHidden
#define ECHO_OFF 1
#define ECHO_ON 2
#define F1 274
#define F2 275
#define F3 276
#define F4 277
#define F5 278
#define F6 348
#define F7 349
#define F8 350
#define F9 342
#define F10 343
#define F11 345
#define F12 346
#define BEEP 7
#define BS 8
#define TAB 9
#define CR 13
#define ESC 27
#define BACKSPACE 127
#define L_ALT(x) (124+((x)-'a'))
#define HOME 293
#define INSERT 294
#define DELETE 295
#define END 296
#define PGUP 297
#define PGDWN 298
#define ARROW_U 183
#define ARROW_D 184
#define ARROW_R 185
#define ARROW_L 186
#define ARROW_C 189
#define XARROW_U 171
#define XARROW_D 172
#define XARROW_R 173
#define XARROW_L 174
#define LEFT 0
#define RIGHT 1
#define UP 2
#define DOWN 3
#define STDIN 0
#define STDOUT 1
#define STDERR 2
#define ANSI_DEFAULT 0
#define ANSI_BOLD 1
#define ANSI_UNDERLINE 4
#define ANSI_BLINK 5
#define ANSI_REVERSE 7
#define ANSI_BOLD_OFF 22
#define ANSI_UNDERLINE_OFF 24
#define ANSI_BLINK_OFF 25
#define ANSI_REVERSE_OFF 27
#define ANSI_FG_BLACK 30
#define ANSI_FG_RED 31
#define ANSI_FG_GREEN 32
#define ANSI_FG_BROWN 33
#define ANSI_FG_BLUE 34
#define ANSI_FG_MAGENTA 35
#define ANSI_FG_CYAN 36
#define ANSI_FG_WHITE 37
#define ANSI_FG_DEFAULT 39
typedef enum color_types {
/* 0 is reserved */
COL_BLACK=1, COL_RED, COL_GREEN, COL_YELLOW, COL_BLUE, COL_MAGENTA,
COL_CYAN, COL_WHITE, COL_BANNER, COL_MSG, COL_STATUS, COL_SCRL_BANNER,
COL_DIALOG
} TCOLOR;
typedef enum settings_state {
STATE_ERRFILE=-3, STATE_ILLPARM, STATE_NOMEM, STATE_READY,
STATE_CREATE_1, STATE_CREATE_2, STATE_CREATE_3, STATE_CREATE_4,
STATE_TTOGGLE, STATE_TDELETE, STATE_TCREATE_1, STATE_TCREATE_2,
STATE_TCREATE_3, STATE_PCREATE_1, STATE_PCREATE_2, STATE_VCREATE_1,
STATE_VCREATE_2, STATE_ALIAS_1, STATE_ALIAS_2, STATE_NAMING_1,
STATE_NAMING_2, STATE_NDELETE, STATE_PDELETE, STATE_VDELETE, STATE_SAVE,
STATE_QUIT, STATE_WRITE, STATE_TABSCREATE, STATE_TABSDELETE
} SSTATE;
#define MAX_LINES 5000
#define LEN_COL len_col
#define LEN_ROW len_row
#define LINE_LENGTH (LEN_COL-1)
#define SCROLL_SIZE ((LEN_ROW/2)+3)
#define LINE_MAXIM 512
#define INPUT_MAX 500
#define ALIAS_MAX 12
#define TAB_LEN 8
#define CSIPARAMS 16
#define TRG_NORMAL 0
#define TRG_LOGIN -1
#define TRG_PASSWORD -2
typedef struct user_set USER;
typedef struct trigger TRIGGER;
typedef struct scroll SCROLL;
typedef struct naming NAMING;
typedef struct path PATH;
typedef struct tabs TABS;
typedef struct var_type VAR;
/*
* Globals
*/
extern long total_sent;
extern long total_recv;
extern char outbuf[];
extern char inbuf[];
extern char send_buffer[];
extern char *pOut;
extern char *pEndIn;
extern char *pCursor;
extern USER *settings;
extern int len_col;
extern int len_row;
extern bool fEchoIn;
extern bool fEchoOut;
extern bool fProcessData;
extern bool fReconnect;
extern bool fPrintTime;
extern bool fKeypadWalk;
extern bool fStatusReport;
extern bool fCharacterMode;
extern bool fDown;
extern bool fPanelHidden;
extern WINDOW *wMain;
extern WINDOW *wBanner;
extern WINDOW *wInput;
extern WINDOW *wMsg;
extern WINDOW *wStatus;
extern WINDOW *wScroll;
extern WINDOW *wDialog;
extern PANEL *pMain;
extern PANEL *pBanner;
extern PANEL *pInput;
extern PANEL *pMsg;
extern PANEL *pStatus;
extern PANEL *pScroll;
extern PANEL *pDialog;
/*
* Global functions
*/
extern bool write_desc (int sock);
extern void read_input (void);
extern void process_buffer (void);
extern void create_banner (void);
extern void print_cmd_line (void);
extern void process_input (char *input, char *args, bool fReturn);
extern void move_cursor (WINDOW *win, int direction, int value);
extern void backspace (void);
extern void show_scroll (int direction, int scroll_size);
extern void put_in_scroll (char *pBegin, char *pEnd, int attr);
extern bool init_log (char *filename);
extern bool close_log (void);
extern bool toggle_log (void);
extern void write_log (char *log_start, char *log_end);
extern void dialog (char *string);
extern char *fread_string (FILE *fp);
extern char *fread_to_eol (FILE *fp);
extern char *fread_word (FILE *fp);
extern char *get_arg (char *src, char *dst);
extern char *get_acc_arg (char *src, char *dst);
extern void init_settings (int argc, char **argv);
extern bool load_settings (char *file);
extern void show_settings (void);
extern void do_help (void);
extern void free_tabs (TABS *tabs);
extern void free_path (PATH *path);
extern void free_trigger (TRIGGER *trigger);
extern void free_naming (NAMING *name);
extern void free_var (VAR *var);
extern void draw_border (WINDOW *win);
extern void do_status (char *string, int st_time);
extern void trigger_check (char *pTrg);
extern char *parse_input (char *src, char *args, char *dest, bool fReturn);
extern void do_command (char *cmdline);
extern int check_iac (unsigned char *pIac);
extern void check_tab (char *buffer, char *end);
extern void scroll_setup (int lines);
extern bool process_alias (int alias);
extern bool process_naming (char *buffer);
extern bool process_path (char *buffer);
extern bool process_if (char *buffer);
extern void show_triggers (void);
extern void show_aliases (void);
extern void show_paths (void);
extern void show_tabs (void);
extern void show_vars (void);
extern SSTATE set_settings (char *input);
extern TRIGGER *trig_lookup (TRIGGER *beg, int level);
extern TRIGGER *new_trigger (int level, bool last);
extern NAMING *new_naming (bool last);
extern PATH *new_path (bool last);
extern TABS *new_tabs (bool last);
extern VAR *new_var (bool last);
extern VAR *var_lookup (char *var);
struct user_set {
TRIGGER *trigger_list;
NAMING *naming_list;
PATH *path_list;
TABS *tabs_list;
VAR *vars_list;
char *site;
char *alias[ALIAS_MAX];
int port;
int sock;
SSTATE state;
};
struct trigger {
TRIGGER *next;
char *in;
char *out;
char *inp;
char arg[LINE_MAXIM];
char *pArg;
int level;
bool enabled;
};
struct naming {
NAMING *next;
char *name;
char *string;
};
struct path {
PATH *next;
char *name;
char *path;
};
struct tabs {
TABS *next;
char *name;
};
struct var_type {
VAR *next;
char *name;
char *value; /* value is a string also */
};
struct scroll {
char *data;
int *attr;
int len;
};
struct cmd_table_type {
char *cmd;
void (*function)(int index, char *args);
char *help;
};
syntax highlighted by Code2HTML, v. 0.9.1