#
/*
* sed -- stream editor
*
*
*/
#define CBRA 1
#define CCHR 2
#define CDOT 4
#define CCL 6
#define CNL 8
#define CDOL 10
#define CEOF 11
#define CKET 12
#define CNULL 13
#define CLNUM 14
#define CEND 16
#define CDONT 17
#define CBACK 18
#define STAR 01
#define NLINES 256
#define DEPTH 20
#define PTRSIZE 1024
#define RESIZE 20000
#define ABUFSIZE 20
#define LBSIZE 4000
#define LABSIZE 50
#define NBRA 9
typedef unsigned char uchar;
FILE *fin;
union reptr *abuf[ABUFSIZE];
union reptr **aptr;
uchar *lastre;
uchar ibuf[512];
uchar *cbp;
uchar *ebp;
uchar genbuf[LBSIZE];
uchar *loc1;
uchar *loc2;
uchar *locs;
uchar seof;
uchar *reend;
uchar *lbend;
uchar *hend;
uchar *lcomend;
union reptr *ptrend;
int eflag;
int dolflag;
int sflag;
int jflag;
int numbra;
int delflag;
long lnum;
uchar linebuf[LBSIZE+1];
uchar holdsp[LBSIZE+1];
uchar *spend;
uchar *hspend;
int nflag;
int gflag;
uchar *braelist[NBRA];
uchar *braslist[NBRA];
long tlno[NLINES];
int nlno;
#define MAXFILES 120
char fname[MAXFILES][40];
FILE *fcode[MAXFILES];
int nfiles;
#define ACOM 01
#define BCOM 020
#define CCOM 02
#define CDCOM 025
#define CNCOM 022
#define COCOM 017
#define CPCOM 023
#define DCOM 03
#define ECOM 015
#define EQCOM 013
#define FCOM 016
#define GCOM 027
#define CGCOM 030
#define HCOM 031
#define CHCOM 032
#define ICOM 04
#define LCOM 05
#define NCOM 012
#define PCOM 010
#define QCOM 011
#define RCOM 06
#define SCOM 07
#define TCOM 021
#define WCOM 014
#define CWCOM 024
#define YCOM 026
#define XCOM 033
uchar *cp;
uchar *reend;
uchar *lbend;
union reptr {
struct reptr1 {
uchar *ad1;
uchar *ad2;
uchar *re1;
uchar *rhs;
FILE *fcode;
uchar command;
uchar gfl;
uchar pfl;
uchar inar;
uchar negfl;
} r1;
struct reptr2 {
uchar *ad1;
uchar *ad2;
union reptr *lb1;
uchar *rhs;
FILE *fcode;
uchar command;
uchar gfl;
uchar pfl;
uchar inar;
uchar negfl;
} r2;
} ptrspace[PTRSIZE], *rep;
uchar respace[RESIZE];
struct label {
uchar asc[9];
union reptr *chain;
union reptr *address;
} ltab[LABSIZE];
struct label *lab;
struct label *labend;
int f;
int depth;
int eargc;
uchar **eargv;
uchar *address(uchar *);
int advance(uchar *, uchar *);
void arout(void);
extern uchar bittab[];
uchar bad;
uchar *badp;
int cmp(uchar *, uchar *);
union reptr **cmpend[DEPTH];
void command(union reptr *);
uchar compfl;
uchar *compile(uchar *);
uchar *compsub(uchar *);
void dechain(void);
int depth;
void dosub(uchar *);
int ecmp(uchar *, uchar *, int);
void execute(uchar *);
void fcomp(void);
uchar *gline(uchar *);
uchar *lformat(int, uchar *);
int match(uchar *, int);
union reptr *pending;
uchar *place(uchar *, uchar *, uchar *);
int rline(uchar *);
struct label *search(struct label *);
int substitute(union reptr *);
uchar *text(uchar *);
uchar *ycomp(uchar *);
|