2 * Copyright 1987, 1988 by MIT Student Information Processing Board
4 * For copyright information, see copyright.h.
7 #ifndef _ss_ss_internal_h
8 #define _ss_ss_internal_h __FILE__
16 #define PROTOTYPE(p) p
17 typedef void * pointer;
24 #define PROTOTYPE(p) ()
25 typedef char * pointer;
27 #endif /* not __STDC__ */
32 #define LOCAL_ALLOC(x) __builtin_alloca(x)
36 #define LOCAL_ALLOC(x) alloca(x)
38 extern pointer alloca PROTOTYPE((unsigned));
40 #if defined(__HIGHC__) /* Barf! */
42 #define LOCAL_ALLOC(x) alloca(x)
44 extern pointer alloca PROTOTYPE((unsigned));
47 #define LOCAL_ALLOC(x) malloc(x)
48 #define LOCAL_FREE(x) free(x)
51 #endif /* LOCAL_ALLOC stuff */
55 typedef struct _ss_abbrev_entry {
56 char *name; /* abbrev name */
57 char **abbrev; /* new tokens to insert */
58 unsigned int beginning_of_line : 1;
61 typedef struct _ss_abbrev_list {
63 ss_abbrev_entry *first_abbrev;
68 ss_abbrev_list abbrevs[127];
71 typedef struct _ss_data { /* init values */
74 char *subsystem_version;
75 /* current request info */
77 char **argv; /* arg list */
78 char const *current_request; /* primary name */
79 /* info directory for 'help' */
81 /* to be extracted by subroutines */
82 pointer info_ptr; /* (void *) NULL */
83 /* for ss_listen processing */
85 ss_request_table **rqt_tables;
86 ss_abbrev_info *abbrev_info;
88 unsigned int escape_disabled : 1,
92 int abort; /* exit subsystem */
96 #define CURRENT_SS_VERSION 1
98 #define ss_info(sci_idx) (_ss_table[sci_idx])
99 #define ss_current_request(sci_idx,code_ptr) \
100 (*code_ptr=0,ss_info(sci_idx)->current_request)
101 void ss_delete_info_dir PROTOTYPE((int sci_idx, char *info_dir,
103 int ss_execute_line PROTOTYPE((int sci_idx, char *line_ptr));
104 char **ss_parse PROTOTYPE((int sci_idx, char *line_ptr, int *argc_ptr));
105 ss_abbrev_info *ss_abbrev_initialize PROTOTYPE((char *, int *));
106 void ss_page_stdin(NOARGS);
108 extern ss_data **_ss_table;
109 extern char *ss_et_msgs[];
111 #ifdef USE_SIGPROCMASK
112 /* fake sigmask, sigblock, sigsetmask */
114 #define sigmask(x) (1L<<(x)-1)
115 #define sigsetmask(x) sigprocmask(SIG_SETMASK,&x,NULL)
116 static int _fake_sigstore;
117 #define sigblock(x) (_fake_sigstore=x,sigprocmask(SIG_BLOCK,&_fake_sigstore,0))
119 #endif /* _ss_internal_h */