/**********************************************************************
 *
 *	Program:		Unix Shell
 *
 *	Description:	Makes UNIX PIPE: on AmigaShell
 *
 *	Authors:
 * 	Ricardo Temporal (Rick) - E-mail: temporal@novell.nce.ufrj.br
 * 	&
 * 	Daniel Bracher   (Jack) - E-mail: mega@lci.ufrj.br
 *
 *	Date Compiled: 06/16/94 on SAS/C 6.0
 *
 **********************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <proto/dos.h>
#include <pragmas/dos_pragmas.h>

#define DELIMITER '|'

#define CLS putc(12,stdout)

extern struct DosLibrary *DOSBase;

int	main (int,  char *[]);
void	oh_shit (void);
char	find_delimiter (int, char *[]);


	unsigned char const normal[]={155,'0',';','3','1','m','\0'};
	unsigned char const bold[]= {155,'1',';','2','3','m','\0'};
	unsigned char const inverse[]= {155,'1',';','4','2','m','\0'};

int	main(int argc, char *argv[])
{
	char line[255];   /* line to be launch to shell */
	char a;           /* parameter index */

	CLS;
	printf ("%sUNIX Shell V1.0 - (c) 1994 Rick & Jack\n",inverse);
	printf ("%sThis software is public domain, see DISCLAIMER\n\n",normal);
	if (argc < 4)
	{
		fprintf(stderr,"Wrong number of parameters\n");
		oh_shit();
	}
	if (find_delimiter(argc, argv) == 0)
	{
		printf("Character  %c not found\n",DELIMITER);
		oh_shit();
	}
	strcpy (line,"run ");
	strcat (line,argv[1]);
	strcat (line," >pipe:us");
	a = 2;
	while (*argv[a] != DELIMITER)
	{
		strcat (line," ");
		strcat (line,argv[a++]);
	}
	a++;
	if (Execute (line,NULL,NULL) == NULL)
	{
		fprintf (stderr,"%sError:%s Read doc file please",bold,normal);
		oh_shit();
	}
	printf("Sending data from %s%s%s to %s%s%s\n",
				bold,argv[1],normal,bold,argv[a],normal);
	strcpy (line,"run ");
	strcat (line,argv[a++]);
	strcat (line," <pipe:us");
	while (a < argc)
	{
		strcat (line," ");
		strcat (line,argv[a++]);
	}
	if (Execute (line,NULL,NULL) == NULL)
	{
		fprintf (stderr,"%sError:%s Read doc file please",bold,normal);
		oh_shit();
	}
	exit(0);
}

void oh_shit()
{
	fprintf(stderr,"%sUsage:%s us command1 [parameters] %c command2 [parameters]\n",bold,normal,DELIMITER);
	exit(20);
}

char find_delimiter(int argc, char *argv[])
{
  char a;

  for (a = 2; a<=argc; a++)
		if (*argv[a] == DELIMITER) return (a);
	return(0);
}
