diff --git a/bin/ed/buf.c b/bin/ed/buf.c index 1d74cb827f4a..7c92e5586269 100644 --- a/bin/ed/buf.c +++ b/bin/ed/buf.c @@ -49,13 +49,13 @@ static char sccsid[] = "@(#)buf.c 5.5 (Berkeley) 3/28/93"; #include "ed.h" extern char errmsg[]; -extern line_t line0; FILE *sfp; /* scratch file pointer */ char *sfbuf = NULL; /* scratch file input buffer */ int sfbufsz = 0; /* scratch file input buffer size */ off_t sfseek; /* scratch file position */ int seek_write; /* seek before writing */ +line_t line0; /* initial node of line queue */ /* gettxt: get a line of text from the scratch file; return pointer to the text */ @@ -248,3 +248,39 @@ quit(n) } exit(n); } + + +unsigned char ctab[256]; /* character translation table */ + +/* init_buf: open scratch buffer; initialize line queue */ +void +init_buf() +{ + int i = 0; + + if (sbopen() < 0) + quit(2); + requeue(&line0, &line0); + for (i = 0; i < 256; i++) + ctab[i] = i; +} + + +/* translit: translate characters in a string */ +char * +translit(s, len, from, to) + char *s; + int len; + int from; + int to; +{ + static int i = 0; + + unsigned char *us; + + ctab[i] = i; /* restore table to initial state */ + ctab[i = from] = to; + for (us = (unsigned char *) s; len-- > 0; us++) + *us = ctab[*us]; + return s; +} diff --git a/bin/ed/ed.h b/bin/ed/ed.h index c854364dfb69..20d5cec9c8de 100644 --- a/bin/ed/ed.h +++ b/bin/ed/ed.h @@ -206,6 +206,7 @@ int desputc __P((int, FILE *)); int docmd __P((int)); void err __P((char *)); char *ccl __P((char *)); +void clrmark __P((line_t *)); void cvtkey __P((char *, char *)); long doglob __P((int)); void dohup __P((int)); @@ -223,6 +224,7 @@ int getkey __P((void)); char *getlhs __P((int)); int getline __P((void)); int getlist __P((void)); +long getmark __P((int)); long getnum __P((int)); long getone __P((void)); line_t *getlp __P((long)); @@ -236,12 +238,12 @@ line_t *lpdup __P((line_t *)); void lpqueue __P((line_t *)); void makekey __P((char *)); char *makesub __P((int)); -char *translit __P((char *, int, int, int)); int move __P((long, int)); int oddesc __P((char *, char *)); void onhup __P((int)); void onintr __P((int)); pattern_t *optpat __P((void)); +int putmark __P((int, line_t *)); void putstr __P((char *, int, long, int)); char *puttxt __P((char *)); void quit __P((int)); @@ -253,6 +255,7 @@ int catsub __P((char *, regmatch_t *, int)); int subst __P((pattern_t *, int)); int tobinhex __P((int, int)); int transfer __P((long)); +char *translit __P((char *, int, int, int)); int undo __P((int)); undo_t *upush __P((int, long, long)); void ureset __P((void));