BSD 2 development
[unix-history] / .ref-BSD-1 / ex-1.1 / exd.c
CommitLineData
87f787ee
BJ
1#include "ex.h"
2/*
3 * Ex - a text editor
4 * Bill Joy UCB June 1977
5 */
6
7delete()
8{
9
10 nonzero();
11 change();
12 if (!inglobal && !inopen)
13 deletem();
14 else
15 deleted();
16 killed();
17}
18
19deleted()
20{
21 register int *a1, *a2, *a3;
22
23 a1 = addr1;
24 a2 = addr2 + 1;
25 a3 = unddol;
26 unddol =- a2 - a1;
27 undap2 =- a2 - a1;
28 dol =- a2 - a1;
29 do
30 *a1++ = *a2++;
31 while (a2 <= a3);
32 a1 = addr1;
33 if (a1 > dol)
34 a1 = dol;
35 dot = a1;
36}
37
38deletem()
39{
40 register int *a1, *a2, ra;
41 int dsavint;
42
43 dsavint = signal(INTR, 1);
44 undkind = UNDCHANGE;
45 a1 = addr1;
46 unddol = dol;
47 a2 = addr2;
48 if (a2++ != dol) {
49 reverse(a1, a2);
50 reverse(a2, dol + 1);
51 reverse(a1, dol + 1);
52 }
53 dol =- a2 - a1;
54 unddel = a1 - 1;
55 if (a1 > dol)
56 a1 = dol;
57 dot = a1;
58 signal(INTR, dsavint);
59}
60
61deletenone()
62{
63 if (!inglobal) {
64 undkind = UNDCHANGE;
65 unddol = dol;
66 unddel = addr1;
67 }
68}