annotate 3rdparty/packages/ed/move.c @ 1942:b41df77588b0

printer is now scbbp sio is now scbbt All references changed in various files
author boisy
date Sat, 26 Nov 2005 22:51:50 +0000
parents bef1844de0dc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
994
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
1 /* move.c */
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
2 #include <stdio.h>
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
3 #include "tools.h"
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
4 #include "ed.h"
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
5
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
6 int move(num)
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
7 int num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
8 {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
9 LINE *k0, *k1, *k2, *k3;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
10
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
11 if (line1 <= 0 || line2 < line1 || (line1 <= num && num <= line2))
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
12 return(ERR);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
13 k0 = getptr(prevln(line1));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
14 k1 = getptr(line1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
15 k2 = getptr(line2);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
16 k3 = getptr(nextln(line2));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
17
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
18 relink(k0, k3, k0, k3);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
19 lastln -= line2 - line1 + 1;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
20
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
21 if (num > line1) num -= line2 - line1 + 1;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
22
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
23 curln = num + (line2 - line1 + 1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
24
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
25 k0 = getptr(num);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
26 k3 = getptr(nextln(num));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
27
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
28 relink(k0, k1, k2, k3);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
29 relink(k2, k3, k0, k1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
30 lastln += line2 - line1 + 1;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
31
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
32 return(1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
33 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
34
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
35 int transfer(num)
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
36 int num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
37 {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
38 int mid, lin, ntrans;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
39
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
40 if (line1 <= 0 || line1 > line2) return(ERR);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
41
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
42 mid = num < line2 ? num : line2;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
43
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
44 curln = num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
45 ntrans = 0;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
46
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
47 for (lin = line1; lin <= mid; lin++) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
48 ins(gettxt(lin));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
49 ntrans++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
50 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
51 lin += ntrans;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
52 line2 += ntrans;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
53
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
54 for (; lin <= line2; lin += 2) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
55 ins(gettxt(lin));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
56 line2++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
57 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
58 return(1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
59 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
60