Selaa lähdekoodia

Added SetWorkPath command (required during startup of a typical WinA2 application)

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7492 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 vuotta sitten
vanhempi
commit
d9869aa5b4
2 muutettua tiedostoa jossa 27 lisäystä ja 0 poistoa
  1. 17 0
      source/Files.Mod
  2. 10 0
      source/Win32.WinFS.Mod

+ 17 - 0
source/Files.Mod

@@ -1125,6 +1125,23 @@ BEGIN
 		IF res # 0 THEN context.error.String(msg); context.error.Ln; END;
 	END
 END AddSearchPath;
+
+(* add a search path to the system *)
+PROCEDURE SetWorkPath*(context: Commands.Context);
+VAR cmd: ARRAY 32 OF CHAR; msg: ARRAY 256 OF CHAR;  res: LONGINT;
+BEGIN
+	(* preliminary implementation until we know how to solve this generically *)
+	IF Modules.ModuleByName("WinFS") # NIL THEN 
+		cmd := "WinFS.SetWorkPath";
+	ELSIF Modules.ModuleByName("UnixFiles") # NIL THEN 
+		cmd := "UnixFiles.SetWorkPath";
+	END;
+	IF cmd # "" THEN 
+		Commands.Activate(cmd, context, {Commands.Wait}, res, msg);
+		IF res # 0 THEN context.error.String(msg); context.error.Ln; END;
+	END
+END SetWorkPath;
+
 (* Find an open file. *)
 
 PROCEDURE FindOpenFile(enum: FileSearcher; fs: FileSystem; key: LONGINT): File;

+ 10 - 0
source/Win32.WinFS.Mod

@@ -1236,6 +1236,16 @@ VAR
 		END;
 	END AddSearchPath;
 	
+	PROCEDURE SetWorkPath*(context: Commands.Context);
+	VAR name: FileName; done: BOOLEAN;
+	BEGIN
+		IF context.arg.GetString(name) THEN
+			ChangeDirectory(name, done); 
+			IF ~done THEN 
+				context.error.String("could not change directory to "); context.error.String(name); context.error.Ln; 
+			END
+		END;
+	END SetWorkPath;
 
 	PROCEDURE Mount*(context : Commands.Context);
 	VAR diskname: ARRAY 256 OF CHAR;