Rev 7983 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7983 | Rev 8859 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2019, Anton Krotov |
4 | Copyright (c) 2018-2021, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 27... | Line 27... | ||
27 | pos1, pos2, len: INTEGER; |
27 | pos1, pos2, len: INTEGER; |
Line 28... | Line 28... | ||
28 | 28 | ||
29 | BEGIN |
29 | BEGIN |
30 | len := LENGTH(fname); |
30 | len := LENGTH(fname); |
31 | pos1 := len - 1; |
31 | pos1 := len - 1; |
32 | pos2 := len - 1; |
32 | pos2 := pos1; |
33 | STRINGS.search(fname, pos1, slash, FALSE); |
33 | STRINGS.search(fname, pos1, slash, FALSE); |
Line 34... | Line 34... | ||
34 | STRINGS.search(fname, pos2, ".", FALSE); |
34 | STRINGS.search(fname, pos2, ".", FALSE); |
35 | 35 | ||
Line 43... | Line 43... | ||
43 | INC(pos1); |
43 | INC(pos1); |
Line 44... | Line 44... | ||
44 | 44 | ||
45 | STRINGS.copy(fname, name, pos1, 0, pos2 - pos1); |
45 | STRINGS.copy(fname, name, pos1, 0, pos2 - pos1); |
46 | name[pos2 - pos1] := 0X; |
46 | name[pos2 - pos1] := 0X; |
47 | STRINGS.copy(fname, ext, pos2, 0, len - pos2); |
47 | STRINGS.copy(fname, ext, pos2, 0, len - pos2); |
48 | ext[len - pos2] := 0X; |
- | |
49 | 48 | ext[len - pos2] := 0X |
|
Line 50... | Line 49... | ||
50 | END split; |
49 | END split; |
51 | 50 | ||
Line 65... | Line 64... | ||
65 | INC(i); |
64 | INC(i); |
66 | res[i] := 0X; |
65 | res[i] := 0X; |
Line 67... | Line 66... | ||
67 | 66 | ||
68 | error := FALSE; |
67 | error := FALSE; |
- | 68 | j := 0; |
|
- | 69 | WHILE (relative[j] = ".") & (relative[j + 1] = slash) DO |
|
- | 70 | INC(j, 2) |
|
- | 71 | ELSIF relative[j] = slash DO |
|
- | 72 | INC(j) |
|
- | 73 | END; |
|
69 | j := 0; |
74 | |
70 | WHILE ~error & (relative[j] # 0X) DO |
75 | WHILE ~error & (relative[j] # 0X) DO |
71 | IF (relative[j] = ".") & (relative[j + 1] = ".") & (relative[j + 2] = slash) & (i > 0) & (res[i - 1] = slash) THEN |
76 | IF (relative[j] = ".") & (relative[j + 1] = ".") & (relative[j + 2] = slash) & (i > 0) & (res[i - 1] = slash) THEN |
72 | DEC(i, 2); |
77 | DEC(i, 2); |
73 | WHILE (i >= 0) & (res[i] # slash) DO |
78 | WHILE (i >= 0) & (res[i] # slash) DO |
Line 93... | Line 98... | ||
93 | END |
98 | END |
Line 94... | Line 99... | ||
94 | 99 | ||
Line -... | Line 100... | ||
- | 100 | END RelPath; |
|
- | 101 | ||
- | 102 | ||
- | 103 | PROCEDURE DelSlashes* (VAR path: ARRAY OF CHAR); |
|
- | 104 | VAR |
|
- | 105 | i, j, k: INTEGER; |
|
- | 106 | c: CHAR; |
|
- | 107 | ||
- | 108 | BEGIN |
|
- | 109 | i := 0; |
|
- | 110 | j := 0; |
|
- | 111 | k := 0; |
|
- | 112 | REPEAT |
|
- | 113 | c := path[j]; |
|
- | 114 | INC(j); |
|
- | 115 | IF c = slash THEN |
|
- | 116 | INC(k) |
|
- | 117 | ELSE |
|
- | 118 | k := 0 |
|
- | 119 | END; |
|
- | 120 | IF k <= 1 THEN |
|
- | 121 | path[i] := c; |
|
- | 122 | INC(i) |
|
- | 123 | END |
|
- | 124 | UNTIL c = 0X; |
|
- | 125 | ||
- | 126 | i := 0; |
|
- | 127 | j := 0; |
|
- | 128 | REPEAT |
|
- | 129 | c := path[j]; |
|
- | 130 | INC(j); |
|
- | 131 | path[i] := c; |
|
- | 132 | INC(i); |
|
- | 133 | IF (c = slash) & (path[j] = ".") & (path[j + 1] = slash) THEN |
|
- | 134 | INC(j, 2) |
|
- | 135 | END |
|
- | 136 | UNTIL c = 0X |
|
95 | END RelPath; |
137 | END DelSlashes; |
96 | 138 | ||
97 | 139 |