BSD 4_4 release
[unix-history] / usr / src / contrib / ed / e.c
index 09c351a..0e09ff3 100644 (file)
@@ -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.
  *
  *
  * 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
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)e.c        5.4 (Berkeley) %G%";
+static char sccsid[] = "@(#)e.c        8.1 (Berkeley) 5/31/93";
 #endif /* not lint */
 
 #include <sys/types.h>
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -72,10 +98,10 @@ e(inputt, errnum)
                ungetc('\n', inputt);
                return;
        }
                ungetc('\n', inputt);
                return;
        }
-       start = top;
+       Start = top;
        End = bottom;
        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 */
        else {
                ungetc(ss, inputt);
                d(inputt, errnum);      /* delete the whole buffer */
@@ -115,9 +141,6 @@ e2(inputt, errnum)
        int *errnum;
 {
        char *tmp_path;
        int *errnum;
 {
        char *tmp_path;
-#ifdef DBI
-       RECNOINFO l_dbaccess;
-#endif
 
        sigspecial++;
 #ifndef MEMORY
 
        sigspecial++;
 #ifndef MEMORY
@@ -140,19 +163,18 @@ e2(inputt, errnum)
        file_seek = 0;
 #endif
 #ifdef DBI
        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,
        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;
        if (dbhtmp == NULL) {
                ed_exit(5); /* unable to create buffer */
        }
 #endif
        current = top;
-       start = top;
+       Start = top;
        End = bottom;
 
        sigspecial--;
        End = bottom;
 
        sigspecial--;
@@ -164,6 +186,16 @@ e2(inputt, errnum)
                /* So 'r' knows the filename is already read in. */
                filename_flag = 1;
                r(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;
        }
        change_flag = 0;
+       *errnum = 1;
 }
 }