BSD 1 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Tue, 31 Jan 1978 09:56:01 +0000 (01:56 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Tue, 31 Jan 1978 09:56:01 +0000 (01:56 -0800)
Work on file ex-1.1/exd.c
Work on file ex-1.1/exa.c

Synthesized-from: 1bsd

ex-1.1/exa.c [new file with mode: 0644]
ex-1.1/exd.c [new file with mode: 0644]

diff --git a/ex-1.1/exa.c b/ex-1.1/exa.c
new file mode 100644 (file)
index 0000000..40593a4
--- /dev/null
@@ -0,0 +1,59 @@
+#include "ex.h"
+/*
+ * Ex - a text editor
+ * Bill Joy UCB June 1977
+ */
+
+extern getsub();
+extern gettty();
+
+append(f, a)
+       int (*f)();
+{
+       register int *a1, *a2, *rdot;
+       int nline;
+       struct { int integer; };
+
+       nline = 0;
+       dot = a;
+       if (!inglobal && !inopen && f != getsub) {
+               undap1 = undap2 = dot + 1;
+               undkind = UNDCHANGE;
+       }
+       while ((*f)() == 0) {
+               if (unddol >= endcore) {
+                       if (sbrk(1024) == -1) {
+                               if (!inglobal && f == getsub) {
+                                       undap1 = addr1;
+                                       undap2 = addr2 + 1;
+                               }
+                               error("Out of memory@- too many lines in file");
+                       }
+                       endcore.integer =+ 1024;
+               }
+               nline++;
+               a1 = unddol + 1;
+               a2 = a1 + 1;
+               dot++;
+               undap2++;
+               dol++;
+               unddol++;
+               for (rdot = dot; a1 > rdot;)
+                       *--a2 = *--a1;
+               *rdot = 0;
+               putmark(rdot);
+               if (f == &gettty) {
+                       dirtcnt++;
+                       TSYNC();
+               }
+       }
+       return (nline);
+}
+
+appendnone()
+{
+       if (!inglobal) {
+               undkind = UNDCHANGE;
+               undap1 = undap2 = addr1;
+       }
+}
diff --git a/ex-1.1/exd.c b/ex-1.1/exd.c
new file mode 100644 (file)
index 0000000..e0937fa
--- /dev/null
@@ -0,0 +1,68 @@
+#include "ex.h"
+/*
+ * Ex - a text editor
+ * Bill Joy UCB June 1977
+ */
+
+delete()
+{
+
+       nonzero();
+       change();
+       if (!inglobal && !inopen)
+               deletem();
+       else
+               deleted();
+       killed();
+}
+
+deleted()
+{
+       register int *a1, *a2, *a3;
+
+       a1 = addr1;
+       a2 = addr2 + 1;
+       a3 = unddol;
+       unddol =- a2 - a1;
+       undap2 =- a2 - a1;
+       dol =- a2 - a1;
+       do
+               *a1++ = *a2++;
+       while (a2 <= a3);
+       a1 = addr1;
+       if (a1 > dol)
+               a1 = dol;
+       dot = a1;
+}
+
+deletem()
+{
+       register int *a1, *a2, ra;
+       int dsavint;
+
+       dsavint = signal(INTR, 1);
+       undkind = UNDCHANGE;
+       a1 = addr1;
+       unddol = dol;
+       a2 = addr2;
+       if (a2++ != dol) {
+               reverse(a1, a2);
+               reverse(a2, dol + 1);
+               reverse(a1, dol + 1);
+       }
+       dol =- a2 - a1;
+       unddel = a1 - 1;
+       if (a1 > dol)
+               a1 = dol;
+       dot = a1;
+       signal(INTR, dsavint);
+}
+
+deletenone()
+{
+       if (!inglobal) {
+               undkind = UNDCHANGE;
+               unddol = dol;
+               unddel = addr1;
+       }
+}