home *** CD-ROM | disk | FTP | other *** search
/ Boston 2 / boston-2.iso / DOS / PROGRAM / MODULA / FSTCOMPI / ERRTO.MOD < prev    next >
Text File  |  1993-12-01  |  2KB  |  64 lines

  1. MODULE errto;
  2.  
  3. (* (C) Copyright 1988 Fitted Software Tools *)
  4.  
  5. (* exec command w/ stderr redirected to file *)
  6.  
  7. FROM System     IMPORT GetArg, ErrorMessage;
  8. FROM Loader     IMPORT Execute;
  9. FROM Files      IMPORT NORMAL, Create, Close, Dup, Dup2;
  10. FROM Paths      IMPORT Locate;
  11. FROM Strings    IMPORT Assign, Concat;
  12.  
  13. VAR
  14.     file        :ARRAY [0..65] OF CHAR;
  15.     cmd,
  16.     cmd1,
  17.     cmdpath     :ARRAY [0..65] OF CHAR;
  18.     arg, args   :ARRAY [0..128] OF CHAR;
  19.     fd, saverr  :INTEGER;
  20.     oc          :CARDINAL;
  21.     ok          :BOOLEAN;
  22.     space       :ARRAY [0..1] OF CHAR;
  23.     n           :CARDINAL;
  24.  
  25. BEGIN
  26.     space[0] := ' '; space[1] := 0C;
  27.     GetArg( file, n );
  28.     GetArg( cmd, n );
  29.     IF n > 0 THEN
  30.         args := "";
  31.         LOOP
  32.             GetArg( arg, n );
  33.             IF n = 0 THEN EXIT END;
  34.             Concat( args, arg, args );
  35.             Concat( args, space, args );
  36.         END;
  37.         Create( fd, file, NORMAL );
  38.         IF fd <> -1 THEN
  39.             Assign( cmd, cmd1 );
  40.             Concat( cmd, ".COM", cmd );
  41.             Locate( cmd, "PATH", cmdpath, ok );
  42.             IF NOT ok THEN
  43.                 Concat( cmd1, ".EXE", cmd );
  44.                 Locate( cmd, "PATH", cmdpath, ok );
  45.             END;
  46.             IF ok THEN
  47.                 Dup( 2, saverr );
  48.                 Dup2( fd, 2 );
  49.                 Execute( cmdpath, args, oc );
  50.                 IF oc < 256 THEN
  51.                     ErrorMessage( "--- exec failed" )
  52.                 END;
  53.                 Dup2( saverr, 2 );
  54.                 Close( saverr );
  55.                 Close( fd );
  56.             ELSE
  57.                 ErrorMessage( "--- could not locate command" );
  58.             END;
  59.         END;
  60.     ELSE
  61.         ErrorMessage( " usage: errto file command [args]" );
  62.     END;
  63.  
  64. END errto.