Subversion Repositories Kolibri OS

Rev

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