1 /*
2  * main.h
3  * various constants etc
4  */
5 
6 #ifndef _MAIN_H_
7 #define _MAIN_H_
8 
9 /* shared functions from main.c */
10 void printver		__P ((void));
11 void status		__P ((int s));
12 void process_remote_input __P ((char *buf, int size));
13 void push_params	__P ((void));
14 void pop_params		__P ((void));
15 void prompt_set_iac     __P ((char *p));
16 char *parse_instruction __P ((char *line, char silent, char subs, char jit_subs));
17 char *get_next_instr	__P ((char *p));
18 void parse_user_input	__P ((char *line, char silent));
19 void set_deffile	__P ((char *arg));
20 int  is_permanent_variable __P ((varnode *v));
21 
22 
23 /* shared vars from main.c */
24 extern int  prompt_status, line_status;
25 extern int  limit_mem;
26 extern char ready;
27 extern VOLATILE char confirm;
28 extern int  history_done;
29 extern int  linemode;
30 extern char hostname[];
31 extern int  portnumber;
32 extern char deffile[], helpfile[], copyfile[];
33 
34 extern int cols, lines, cols_1;	/* terminal window size */
35 extern int olines;		/* previous terminal window size */
36 extern int line0, col0;		/* origin of input line */
37 
38 extern varnode *prompt;		/* $prompt is always set */
39 extern ptr marked_prompt;	/* $prompt with marks added */
40 
41 #define promptstr    (ptrdata(prompt->str))
42 #define promptlen    (ptrlen(prompt->str))
43 #define promptzero() (prompt_status = 0, ptrzero(prompt->str))
44 
45 extern char surely_isprompt;    /* 1 if #prompt set #isprompt */
46 extern char edbuf[];		/* input line buffer */
47 extern int edlen;		/* characters in edbuf */
48 extern int pos;			/* cursor position in edbuf */
49 extern char edattrbeg[], edattrend[];
50 extern int edattrbg;
51 
52 extern VOLATILE int sig_pending, sig_winch_got, sig_chld_got;
53 
54 extern long received, sent;
55 
56 #ifndef NO_CLOCK
57 #include <time.h>
58 extern clock_t start_clock, cpu_clock;
59 #endif
60 
61 extern aliasnode *aliases[MAX_HASH];
62 extern aliasnode *sortedaliases;
63 extern actionnode *actions;
64 extern promptnode *prompts;
65 extern marknode *markers;
66 extern int a_nice;
67 extern keynode *keydefs;
68 extern delaynode *delays;
69 extern delaynode *dead_delays;
70 extern varnode *named_vars[2][MAX_HASH];
71 extern varnode *sortednamed_vars[2];
72 extern int num_named_vars[2];
73 extern int max_named_vars;
74 extern vars *var;
75 #define VAR (var+NUMVAR)
76 
77 extern ptr globptr[];
78 extern char globptrok;
79 #define TAKE_PTR(pbuf, buf) do { if (globptrok & 1) globptrok &= ~1, pbuf = globptr; else if (globptrok & 2) globptrok &= ~2, pbuf = globptr + 1; else pbuf = &buf; } while(0)
80 #define DROP_PTR(pbuf)      do { if (*pbuf == *globptr) globptrok |= 1; else if (*pbuf == *(globptr+1))	globptrok |= 2;	else ptrdel(*pbuf); } while(0)
81 
82 extern vtime now, start_time, ref_time;
83 extern int now_updated;
84 
85 extern char initstr[];
86 extern char prefixstr[];
87 extern char inserted_next[];
88 extern char flashback;
89 extern int excursion;
90 extern char verbatim;
91 
92 extern char opt_exit;
93 extern char opt_history;
94 extern char opt_words;
95 extern char opt_compact;
96 extern char opt_debug;
97 extern char opt_wrap;
98 extern char opt_echo;
99 extern char opt_info;
100 extern char opt_keyecho;
101 extern char opt_speedwalk;
102 extern char opt_autoprint;
103 extern char opt_reprint;
104 extern char opt_sendsize;
105 extern char opt_autoclear;
106 
107 extern function_str last_edit_cmd;
108 
109 extern char *delim_list[];
110 extern int   delim_len[];
111 extern char *delim_name[];
112 extern int   delim_mode;
113 
114 /* Group delimiter for actions/aliases, defaults to @ */
115 extern char *group_delim;
116 
117 extern char action_chars[];
118 
119 #endif /* _MAIN_H_ */
120