/* **** pscover.h **** * * This is the include file for the pscover program * */ #ifndef EXTERN #define EXTERN extern #undef INIT_VAL #else #define INIT_VAL #endif #ifdef __MSDOS__ #define DIRSLASH '\\' #else #define DIRSLASH '/' #endif #define KEY_NO 0 /* no variations */ #define KEY_LRF 1 /* left, right, full */ #define CMD_CHAR '.' #define CMD_NO 0 #define CMD_LEFT 1 #define CMD_RIGHT 2 #define CMD_FULL 4 #define CMD_CENT 8 #define ERR_ERR 0 #define ERR_NOT 1 #define ERR_AMB 2 #define ERR_VAR 3 /* bit masks to determine if error code or command code */ #define ERR_CODE ERR_ERR + ERR_NOT + ERR_AMB #define CMD_CODE CMD_LEFT + CMD_RIGHT + CMD_FULL + CMD_CENT #define CMD_LRF CMD_LEFT + CMD_RIGHT + CMD_FULL struct keytab { char *key_word; /* command keyword */ int key_type; /* type of command */ int key_mask; /* valid variations */ void (*key_fcn)(FILE *, FILE *, char *, struct keytab *); /* command processor */ }; /* prototypes */ void init(void); void pscover(FILE *, FILE *, int, int); void prologue_ps(FILE *); void do_help(char *); void do_usage(char *); char *get_line(char *, int, FILE *); struct keytab *find_cmd(char *); char *strbeg(char *, char *); char *get_data(char *, char *); FILE *open_file(char *, char *); void new_page(FILE *); void copy_line(FILE *, char *); void print_song(char *, FILE *); void parse_cmd(FILE *, char *, struct keytab *); void out_dat(FILE *); void out_just(int, FILE *); void out_str(char *, FILE *); void dat_str(FILE *); void print_parms(char *, FILE *, FILE *, char *, struct keytab *); /* functions to process keywords */ void do_cover(FILE *fp, FILE *ofp, char *, struct keytab *); void do_wrapup(FILE *fp, FILE *ofp, char *, struct keytab *); void do_artist(FILE *fp, FILE *ofp, char *, struct keytab *); void do_title(FILE *fp, FILE *ofp, char *, struct keytab *); void do_tab(FILE *fp, FILE *ofp, char *, struct keytab *); void do_side(FILE *fp, FILE *ofp, char *, struct keytab *); void do_date(FILE *fp, FILE *ofp, char *, struct keytab *); void do_noise(FILE *fp, FILE *ofp, char *, struct keytab *); void do_noise(FILE *fp, FILE *ofp, char *, struct keytab *); void do_newline(FILE *fp, FILE *ofp, char *, struct keytab *); void do_songs(FILE *fp, FILE *ofp, char *, struct keytab *); void do_newfont(FILE *fp, FILE *ofp, char *, struct keytab *); void do_set(FILE *fp, FILE *ofp, char *, struct keytab *); void do_err(FILE *fp, FILE *ofp, char *, struct keytab *); void do_line(FILE *fp, FILE *ofp, char *, struct keytab *); void do_song(FILE *fp, FILE *ofp, char *, struct keytab *); void do_dblsong(FILE *fp, FILE *ofp, char *, struct keytab *); void do_marg(FILE *fp, FILE *ofp, char *, struct keytab *); void do_code(FILE *fp, FILE *ofp, char *, struct keytab *); EXTERN struct keytab KeyTab[] #ifdef INIT_VAL = { "cover", KEY_LRF, CMD_CODE, do_cover, "wrapup", KEY_NO, CMD_NO, do_wrapup, "artist", KEY_LRF, CMD_CODE, do_artist, "title", KEY_LRF, CMD_CODE, do_title, "tab", KEY_LRF, CMD_CODE, do_tab, "side", KEY_LRF, CMD_LRF, do_side, "date", KEY_NO, CMD_NO, do_date, "noise", KEY_NO, CMD_NO, do_noise, "nr", KEY_NO, CMD_NO, do_noise, "newline", KEY_NO, CMD_NO, do_newline, "oldline", KEY_NO, CMD_NO, do_newline, "songs", KEY_LRF, CMD_CODE, do_songs, "newfont", KEY_NO, CMD_NO, do_newfont, "set", KEY_NO, CMD_NO, do_set, "print", KEY_LRF, CMD_CODE, do_song, "line", KEY_LRF, CMD_CODE, do_song, "doublesong", KEY_NO, CMD_NO, do_dblsong, "doubleline", KEY_NO, CMD_NO, do_dblsong, "marg", KEY_LRF, CMD_LRF, do_marg, "begcode", KEY_NO, CMD_NO, do_code, "endcode", KEY_NO, CMD_NO, do_code, NULL, -1, NULL} #endif ; EXTERN struct keytab ErrTab[] #ifdef INIT_VAL = { "Internal Error", ERR_ERR, ERR_CODE, do_err, "Command not found", ERR_NOT, ERR_CODE, do_err, "Ambiguous command", ERR_AMB, ERR_CODE, do_err, "Invalid variation", ERR_VAR, ERR_CODE, do_err } #endif ; EXTERN char *Prog; /* program name */ EXTERN int cmd_type; /* command type */ EXTERN int cmd_just; /* command mode */ EXTERN char *cmd_dat; /* command data */ EXTERN int song_just; /* justification for songs */ EXTERN int PageNo; /* physical page number */ EXTERN int LineNo; /* input file line number */ EXTERN int debugsw; /* debug switch */