/**********************************************************************
* The redirect function redirects standard output to outFileName and
* standard input to inFileName. If either inFileName or outFileName is
* NULL, the corresponding redirection does not occur.
* It returns 0 if successful and -1 if unsuccessful.
**********************************************************************/
#include "ush.h"
int redirect(char *inFileName, char *outFileName)
{
int indes;
int outdes;
if (inFileName != NULL)
{
/* redirect standard in to inFileName */
if ((indes = open(inFileName, O_RDONLY, STDMODE)) == -1)
return -1;
if (dup2(indes, STDIN_FILENO) == -1)
{
close(indes);
return -1;
}
close(indes);
}
if (outFileName != NULL)
{
/* redirect standard out to outFileName */
if ((outdes = open(outFileName, O_WRONLY|O_CREAT, STDMODE)) == -1)
return -1;
if (dup2(outdes, STDOUT_FILENO) == -1)
{
close(outdes);
return -1;
}
close(outdes);
}
return 0;
}