X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/e692f66f5f4575ad177e23d2f91c7218d195b926..ad7871609881e73855d0b04da49b486cd93efca7:/usr/src/contrib/ed/e.c diff --git a/usr/src/contrib/ed/e.c b/usr/src/contrib/ed/e.c index 284b3b6b12..0e09ff365b 100644 --- a/usr/src/contrib/ed/e.c +++ b/usr/src/contrib/ed/e.c @@ -1,15 +1,41 @@ /*- - * Copyright (c) 1992 The Regents of the University of California. - * All rights reserved. + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Rodney Ruddock of the University of Guelph. * - * %sccs.include.redist.c% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ #ifndef lint -static char sccsid[] = "@(#)e.c 5.3 (Berkeley) %G%"; +static char sccsid[] = "@(#)e.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ #include @@ -72,10 +98,10 @@ e(inputt, errnum) ungetc('\n', inputt); return; } - start = top; + Start = top; End = bottom; - start_default = End_default = 0; - if (start == NULL && bottom == NULL); + Start_default = End_default = 0; + if (Start == NULL && bottom == NULL); else { ungetc(ss, inputt); d(inputt, errnum); /* delete the whole buffer */ @@ -115,9 +141,6 @@ e2(inputt, errnum) int *errnum; { char *tmp_path; -#ifdef DBI - RECNOINFO l_dbaccess; -#endif sigspecial++; #ifndef MEMORY @@ -136,22 +159,22 @@ e2(inputt, errnum) if (fhtmp == NULL) { ed_exit(5); /* unable to create buffer */ } + fwrite("R", sizeof(char), 1, fhtmp); file_seek = 0; #endif #ifdef DBI - (l_dbaccess.bval) = (u_char) '\0'; - (l_dbaccess.cachesize) = 0; - (l_dbaccess.flags) = R_NOKEY; - (l_dbaccess.lorder) = 0; - (l_dbaccess.reclen) = 0; + /* open using btree only, recno will mess things up + * because of garbage collection and how recno operates + * with delete. + */ dbhtmp = dbopen(template, O_CREAT | O_RDWR, - S_IRUSR | S_IWUSR, (DBTYPE) DB_RECNO, &l_dbaccess); + S_IRUSR | S_IWUSR, (DBTYPE) DB_BTREE, NULL); if (dbhtmp == NULL) { ed_exit(5); /* unable to create buffer */ } #endif current = top; - start = top; + Start = top; End = bottom; sigspecial--; @@ -163,6 +186,16 @@ e2(inputt, errnum) /* So 'r' knows the filename is already read in. */ filename_flag = 1; r(inputt, errnum); + gut_num = line_number(bottom) + 512; + if (gut == NULL) { + gut = malloc(sizeof(LINE **) * gut_num); + if (gut == NULL) { + *errnum = -1; + strcpy(help_msg, "out of memory error"); + return; + } + } } change_flag = 0; + *errnum = 1; }