|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T t ┃
Length: 7350 (0x1cb6) Types: TextFile Names: »te_data.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/teco/te_data.c«
/* TECO for Ultrix Copyright 1986 Matt Fichtenbaum */ /* This program and its components belong to GenRad Inc, Concord MA 01742 */ /* They may be copied if this copyright notice is included */ /* te_data.c global variables 12/31/85 */ #include "te_defs.h" /* error message text */ char *errors[] = { "> not in iteration", "Can't pop Q register", "Can't open output file ", "File not found ", "Invalid E character", "Invalid F character", "Invalid insert arg", "Invalid command", "Invalid number", "Invalid P arg", "Invalid \" character", "Invalid Q-reg name", "Invalid radix arg", "Invalid search arg", "Invalid search string", "Invalid ^ character", "Insufficient memory available", "Missing )", "No arg before ^_", "No arg before ,", "No arg before =", "No arg before )", "No arg before \"", "No arg before ;", "No arg before U", "No file for input", "No file for output", "Numeric arg with Y", "Output file already open", "Pushdown list overflow", "Pointer off page", "; not in iteration", "Search failure ", "String too long", "Unterminated command", "Unterminated macro", "Execution interrupted", "Y command suppressed", "Invalid W arg", "Numeric arg with FR", "Internal error", "EOF read from std input", "Invalid A arg", "Ambiguous file specification ", "System fork or pipe error" } ; \f /* declare global variables */ struct buffcell *freebuff = NULL; /* buffcell free-list pointer */ struct buffcell *dly_freebuff = NULL; /* delayed free-list pointer */ struct qp *freedcell = NULL; /* cell free-list pointer */ /* the text buffer header */ struct qh buff = { NULL, NULL, 0, 0 } ; /* the q-register headers point to the start of the buffer and registers */ struct qh qreg[NQREGS+5]; /* for q regs, command, search, file, sys-command, time/date */ /* the q-register stack contains temporary copies of q-register contents */ struct qh qstack[QSTACKSIZE]; /* q-reg stack */ struct qh *qsp; /* q-reg stack pointer */ /* the macro stack contains pointers to the currently active macros. */ /* the top of the stack is the command pointer */ struct qp mstack[MSTACKSIZE]; /* macro stack */ struct qp *msp; /* macro stack pointer */ /* the expression stack */ struct exp_entry estack[ESTACKSIZE]; /* expression stack */ struct exp_entry *esp; /* expression stack pointer */ /* global variables, etc. */ int char_count = 0; /* char count for tab typer */ char lastc = ' '; /* last char read */ int ttyerr; /* error return from ioctl */ extern int errno; /* system error code */ struct sgttyb ttybuf; /* local copy of tty control data */ jmp_buf xxx; /* preserved environment for error restart */ int err; /* local error code */ struct qp t_qp; /* temporary buffer pointer */ struct qp aa, bb, cc; /* more temporaries */ struct buffcell t_bcell; /* temporary bcell */ int tabmask = 7; /* mask for typing tabs */ int exitflag; /* flag for ending command str exec */ char term_char = ESC; /* terminator for insert, search, etc. */ char cmdc; /* current command character */ char skipc; /* char found by "skipto()" */ int dot, z, tdot; /* current, last, temp buffer position */ int ins_count; /* count of chars inserted */ int ll, mm, nn; /* general temps */ int ctrl_e = 0; /* form feed flag */ int ctrl_r = 10; /* numeric radix (8, 10, 16) */ int ctrl_s = 0; /* string length for S, I, G */ int ctrl_x = 0; /* search mode flag */ int ed_val = 0; /* ED value */ int es_val = 0; /* ES value */ int et_val = 518; /* ET value */ int eu_val = -1; /* EU value */ int ev_val = 0; /* EV value */ int ez_val = 0; /* EZ value */ int srch_result = 0; /* result of last :S executed */ int atflag = 0; /* flag for @ char typed */ int colonflag = 0; /* flag for : char typed */ int trace_sw = 0; /* nonzero if tracing command exec */ struct buffcell *insert_p; /* pointer to temp buffer segment during insert */ int buff_mod; /* set to earliest buffer change */ int search_flag; /* set nonzero by search */ \f /* character mapping table (direct) */ char mapch[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* ^@ - ^M */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* ^N - ^_ */ ' ', '!', '"', '#', '$', '%', '&', '\'','(', ')', '*', '+', ',', '-', '.', '/', /* sp - / */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', /* 0 - ? */ '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* @ - O */ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\',']', '^', '_', /* P - _ */ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* ` - o */ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|','}', '~', 0177 /* p - del */ } ; /* character table (mapped to lower case) */ char mapch_l[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* ^@ - ^M */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* ^N - ^_ */ ' ', '!', '"', '#', '$', '%', '&', '\'','(', ')', '*', '+', ',', '-', '.', '/', /* sp - / */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', /* 0 - ? */ '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* @ - O */ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\',']', '^', '_', /* P - _ */ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', /* ` - o */ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|','}', '~', 0177 /* p - del */ } ; \f /* table of special characters for "search," "skipto()," and "lines()" */ /* see "te_defs.h for meaning of bits */ char spec_chars[] = { 0, A_S, 0, 0, /* ^@ ^A ^B ^C */ 0, A_A, 0, 0, /* ^D ^E ^F ^G */ 0, A_T, A_L, A_L, /* ^H ^I ^J ^K */ A_L, 0, A_A, 0, /* ^L ^M ^N ^O */ 0, A_A, A_A, A_A, /* ^P ^Q ^R ^S */ 0, A_T|A_Q, 0, 0, /* ^T ^U ^V ^W */ A_A, 0, 0, 0, /* ^X ^Y ^Z ^[ */ 0, 0, A_S, 0, /* ^\ ^] ^^ ^_ */ 0, A_S, A_X, 0, /* ! " # */ 0, 0, 0, A_X, /* $ % & ' */ 0, 0, 0, 0, /* ( ) * + */ 0, 0, 0, 0, /* , - . / */ 0, 0, 0, 0, /* 0 1 2 3 */ 0, 0, 0, 0, /* 4 5 6 7 */ 0, 0, 0, 0, /* 8 9 : ; */ A_X, 0, A_X, 0, /* < = > ? */ A_S, 0, A_E|A_F, 0, /* @ A B C */ 0, A_S, A_S, A_Q, /* D E F G */ 0, A_T|A_E, 0, 0, /* H I J K */ 0, A_Q, A_T|A_F, A_T, /* L M N O */ 0, A_Q, A_E, A_T|A_F, /* P Q R S */ 0, A_Q, 0, A_E, /* T U V W */ A_Q, 0, 0, A_Q, /* X Y Z [ */ 0, A_Q, A_S, A_T|A_E, /* \ ] ^ _ */ 0, 0, A_E|A_F, 0, /* ` a b c */ 0, A_S, A_S, A_Q, /* d e f g */ 0, A_T|A_E, 0, 0, /* h i j k */ 0, A_Q, A_T|A_F, A_T, /* l m n o */ 0, A_Q, A_E, A_T|A_F, /* p q r s */ 0, A_Q, 0, A_E, /* t u v w */ A_Q, 0, 0, 0, /* x y z { */ A_X, 0, 0, 0, /* | } ~ del */ } ;