Mail Archives: djgpp/1994/12/20/06:05:12
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 -