Win32.StdIO.Mod 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. MODULE StdIO; (** AUTHOR gf; PURPOSE "Unix standard IO and argument channels *)
  2. (* Commands.Context for programs running outside Aos *)
  3. IMPORT S := SYSTEM, Modules, Commands, Streams, WinTrace, Kernel32;
  4. CONST
  5. AddrSize = SIZEOF( ADDRESS );
  6. TYPE
  7. String=POINTER TO ARRAY OF CHAR;
  8. VAR
  9. env-: Commands.Context;
  10. hin-, hout-, herr-: Kernel32.HANDLE;
  11. PROCEDURE Args(): String;
  12. VAR size, pos: SIZE; i,j: LONGINT; str: String;
  13. cmdLine {UNTRACED}: POINTER {UNSAFE} TO ARRAY OF CHAR;
  14. BEGIN
  15. cmdLine := Kernel32.GetCommandLine();
  16. pos := 0;
  17. WHILE cmdLine[pos] # 0X DO
  18. INC(pos);
  19. END;
  20. size := pos + 1;
  21. NEW(str, size);
  22. pos := 0;
  23. WHILE cmdLine[pos] # 0X DO
  24. str[pos] := cmdLine[pos];
  25. INC(pos);
  26. END;
  27. str[pos] := 0X;
  28. RETURN str;
  29. END Args;
  30. PROCEDURE Cleanup;
  31. BEGIN
  32. env.error.Update;
  33. env.out.Update
  34. END Cleanup;
  35. PROCEDURE Setup;
  36. VAR
  37. arg: Streams.StringReader;
  38. stdin: Streams.Reader;
  39. stdout: Streams.Writer;
  40. errout: Streams.Writer;
  41. str: String;
  42. BEGIN
  43. WinTrace.OpenConsole;
  44. str := Args();
  45. NEW( arg, LEN(str) ); arg.Set(str^);
  46. NEW( stdin, WinTrace.Receive, 1024 );
  47. NEW( stdout, WinTrace.Send, 1024 );
  48. NEW( errout, WinTrace.SendError, 512 );
  49. NEW( env, stdin, arg, stdout, errout, NIL );
  50. Modules.InstallTermHandler( Cleanup )
  51. END Setup
  52. BEGIN
  53. Setup
  54. END StdIO.
  55. SystemTools.DoCommands
  56. Compiler.Compile -b=AMD --objectFile=Generic --symbolFile=Textual --newObjectFile --objectFileExtension=.Gox --symbolFileExtension=.Syx --mergeSections
  57. Runtime.Mod Trace.Mod Generic.Win32.Kernel32.Mod Win32.Machine.Mod Heaps.Mod
  58. Generic.Modules.Mod Win32.Objects.Mod Win32.Kernel.Mod KernelLog.Mod Streams.Mod Commands.Mod
  59. I386.Reals.Mod Reflection.Mod Locks.Mod Win32.Clock.Mod Files.Mod Dates.Mod Strings.Mod
  60. Win32.WinTrace.Mod Win32.WinFS.Mod
  61. Diagnostics.Mod StringPool.Mod BitSets.Mod ObjectFile.Mod
  62. GenericLinker.Mod GenericLoader.Mod Options.Mod Debugging.Mod
  63. Win32.StdIO.Mod Pipes.Mod Shell.Mod TestStdIO.Mod
  64. ~
  65. StaticLinker.Link --fileFormat=PE32CUI --fileName=fox.exe --extension=Gox --displacement=401000H
  66. Runtime Trace Kernel32 Machine Heaps Modules Objects Kernel KernelLog Streams Commands Files
  67. WinFS Clock Dates Reals Strings Diagnostics BitSets StringPool ObjectFile GenericLinker Reflection GenericLoader
  68. WinTrace StdIO Pipes Shell TestStdIO ~
  69. FSTools.CloseFiles fox.exe ~
  70. ~