aboutsummaryrefslogtreecommitdiffstats
path: root/lang/pm3-base/files/patch-ea
blob: 98daf0ed8dfca7dd655f60bb6f4efe5feadb2d43 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--- language/modula3/m3compiler/m3ship/src/Main.m3.orig Mon Jun  7 10:11:49 1999
+++ language/modula3/m3compiler/m3ship/src/Main.m3  Sat Sep  8 14:46:14 2001
@@ -303,9 +303,10 @@
     m3_template := Env.Get("M3_TEMPLATE_DIR");
     path        : TEXT;
     subpath     : TEXT;
-    nextsep     : INTEGER := 0;
-    prevsep     : INTEGER := 0;
+    nextsep     : INTEGER;
+    prevsep     : INTEGER := -1;
     sep         : CHAR;
+    filename    : TEXT;
   BEGIN
     IF m3_template # NIL THEN
       template_dir := m3_template;
@@ -322,13 +323,17 @@
       REPEAT
         nextsep := Text.FindChar(path, sep, prevsep + 1);
         IF nextsep # -1 THEN
-          subpath := Text.Sub(path, prevsep, nextsep - prevsep - 1);
+          subpath := Text.Sub(path, prevsep + 1, nextsep - prevsep - 1);
         ELSE
-          subpath := Text.Sub(path, prevsep);
+          subpath := Text.Sub(path, prevsep + 1);
         END;
-        IF M3File.IsReadable(subpath & template) THEN
-          template_dir := subpath;
-          RETURN;
+        IF Text.Length(subpath) > 0 THEN
+          filename := subpath & SL & template;
+          IF M3File.IsReadable(filename) AND
+            NOT M3File.IsDirectory(filename) THEN
+            template_dir := subpath;
+            RETURN;
+          END;
         END;
         prevsep := nextsep;
       UNTIL prevsep = -1;