delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1994/12/20/06:05:12

Date: Tue, 20 Dec 1994 07:22:45 +0100 (CET)
From: "Roland Exler" <R DOT Exler AT jk DOT uni-linz DOT ac DOT at>
Sender: k3a0270 AT pop DOT uni-linz DOT ac DOT at
Reply-To: R DOT Exler AT jk DOT uni-linz DOT ac DOT at
To: <djgpp AT sun DOT soe DOT clarkson DOT edu>
Subject: RE: redirecting stderr...

Anton Helm posted the following program to redirect IO some time ago:

This source may also be changed easy to meet your needs.

  Roland

============ begin forwarded message =======================

I use the following program to redirect stderr. It is available from some
ftp servers (I dont know where I took it...)


/*
** redirect -- feed line to shell with stdin/stdout/stderr redirected
**
** usage -- redirect [-i newin] [-o newout] [-e newerr] command
**
** executes command via the shell, but redirects stdin/stdout/stderr first.
** stdout/stderr are appended, not overwritten.
*/

#include <stdio.h>

extern char *strcat( char *, char * );
extern char *strcpy( char *, char * );
extern int system( char * );
extern void exit( int );
extern int errno;
char umsg[] = "usage: redirect [-i newin] [-o newout] [-e newerr] command\n";
char emsg[] = "can't redirect %s to %s\n";

void main ( int, char ** );
void main ( argc, argv )
        int argc;
        char **argv;
        {
        int result;
        char buf[5120];

        argc--;  argv++;
        if (!argc) {
                fprintf( stderr, umsg );
                exit( 0 );
                }
        while (**argv == '-') {
                if (*(*argv+1) == 'i') {
                        argc--;  argv++;
                        if (!freopen( *argv, "r", stdin )) {
                                fprintf( stderr, emsg, "stdin", *argv );
                                exit( 1 );
                                }
                        }
                else if (*(*argv+1) == 'o') {
                        argc--;  argv++;
                        if (!freopen( *argv, "a", stdout )) {
                                fprintf( stderr, emsg, "stdout", *argv );
                                exit( 1 );
                                }
                        }
                else if (*(*argv+1) == 'e') {
                        argc--;  argv++;
                        if (!freopen( *argv, "a", stderr )) {
                                fprintf( stderr, emsg, "stderr", *argv );
                                exit( 1 );
                                }
                        }
                else
                        fprintf( stderr, "unknown option %c\n", *(*argv+1) );
                argc--;  argv++;
                }
        if (!argc) {
                fprintf( stderr, umsg );
                exit( 0 );
                }
        strcpy( buf, *argv++ );
        while (*argv)
                strcat( strcat( buf, " " ), *argv++ );
        if (result = system( buf ))
                fprintf( stderr, "exit code = %d, errno = %d\n", result,
                        errno );
        exit( 0 );
        }



Just compile...

Tony
============================================================================
Office:                           **    Private:
                                  **
Dipl.-Ing. Anton HELM             **
Institut fuer Nachrichtentechnik  **
und Hochfrequenztechnik           **    Anton HELM
Guszhausstr. 25/389               **    Gratian-Marx Str. 7/27
A-1040 Wien                       **    A-1110 Wien
AUSTRIA                           **    AUSTRIA
                                  **
Tel.: +43-1-58801-3520            **
FAX : +43-1-5870583               **
                                  **
email: Anton DOT Helm AT nt DOT tuwien DOT ac DOT at **
       tony AT nt DOT tuwien DOT ac DOT at       **
                                  **
============================================================================
   ________   __    __           __        __   __   _______   __        __
  /__   __/  / /   / /          / /       / /  / /  / _____/  /  \      / /
    /  /    / /   / /  _____   / /  __   / /  / /  / /____   / /\ \    / /
   /  /    / /   / /  /____/  / /  / /  / /  / /  / _____/  / /  \ \  / /
  /  /    / /___/ /          / /__/ /__/ /  / /  / /____   / /    \ \/ /
 /__/    /_______/          /___________/  /_/  /______/  /_/      \__/

============================================================================


=================== end forwarded message ==========================
+---------------------------------------+---------------------------+
I Roland Exler                          I EMAIL:                    I
I Universitaet Linz                     I R DOT Exler AT jk DOT uni-linz DOT ac DOT at I
I Institut fuer Elektrische Messtechnik I                           I
I Altenbergerstr. 69                    I Phone:                    I
I A-4040 Linz, AUSTRIA                  I + 43 732 2468 9205        I
+---------------------------------------+---------------------------+

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019