home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / icon / dos / src / common / redirerr.c < prev    next >
C/C++ Source or Header  |  1992-02-10  |  2KB  |  87 lines

  1. #include "../h/gsupport.h"
  2.  
  3. /*
  4.  * redirerr - redirect error output to the named file. '-' indicates that
  5.  *  it should be redirected to standard out.
  6.  */
  7. int redirerr(p)
  8. char *p;
  9.    {
  10.    if ( *p == '-' ) { /* let - be stdout */
  11. /*
  12.  * The following code is operating-system dependent [@redirerr.01].  Redirect
  13.  *  stderr to stdout.
  14.  */
  15.  
  16. #if PORT
  17.    /* may not be possible */
  18. Deliberate Syntax Error
  19. #endif                    /* PORT */
  20.  
  21. #if AMIGA
  22. #if AZTEC_C
  23.        /*
  24.         * Try the same hack as above for Manx and cross fingers.
  25.         * If it doesn't work, try trick used for HIGH_C, below.
  26.         */
  27.        stderr->_unit  = stdout->_unit;
  28.        stderr->_flags = stdout->_flags;
  29. #endif                    /* AZTEC C */
  30. #if LATTICE
  31.       /*
  32.        * The following code is for Lattice 4.0.  It was different
  33.        *  for Lattice 3.10 and probably won't work for other
  34.        *  C compilers.
  35.        */
  36.       stderr->_file = 1;
  37.       stderr->_flag = stdout->_flag;
  38. #endif                    /* LATTICE */
  39. #endif                    /* AMIGA */
  40.  
  41. #if ARM || MVS || VM
  42.    /* cannot do this */
  43. #endif                    /* ARM || MVS || VM */
  44.  
  45. #if ATARI_ST || MSDOS || OS2 || VMS
  46. #if HIGHC_386
  47.       /*
  48.        * Don't like doing this, but it seems to work.
  49.        */
  50.       setbuf(stdout,NULL);
  51.       setbuf(stderr,NULL);
  52.       stderr->_fd = stdout->_fd;                
  53. #else                    /* HIGHC_386 */
  54.       dup2(fileno(stdout),fileno(stderr));
  55. #endif                    /* HIGHC_386 */
  56. #endif                    /* ATARI_ST || MSDOS || OS2 ... */
  57.  
  58.  
  59. #if MACINTOSH
  60. #if LSC
  61.    /* cannot do */
  62. #endif                /* LSC */
  63. #if MPW
  64.       close(fileno(stderr));
  65.       dup(fileno(stdout));
  66. #endif                /* MPW */
  67. #endif                         /* MACINTOSH */
  68.  
  69. #if UNIX
  70.       /*
  71.        * This relies on the way UNIX assigns file numbers.
  72.        */
  73.       close(fileno(stderr));
  74.       dup(fileno(stdout));
  75. #endif                /* UNIX */
  76.  
  77. /*
  78.  * End of operating-system specific code.
  79.  */
  80.  
  81.        }
  82.     else    /* redirecting to named file */
  83.        if (freopen(p, "w", stderr) == NULL)
  84.           return 0;
  85.    return 1;
  86.    }
  87.