#include <texttool.h>#include <locator.h>#include <memory.h>#include <GSOS.h>#include "IR.h"/*  IR.h (available w/ IR) doesn't have an #endif  and twice says '#define <comment>  That needs to be fixed, but it's not my duty to  distrubute the modified headers.*/#ifdef STACK#include <stdio.h>#include <stack.h>#endif/* Function Prototypes */GSString255Ptr cstring2gs(char *);void FixSBI(void);		/* extern (assembly) kludge *//* IR.h doesn't have this record */typedef struct askIrAreYouThereOut{	word recvCount;	word IrID;	long IRVersion;}askIrAreYouThereOut, *AskIRAreYouThereOutPtr;askIrAreYouThereOut IRHere;askInstallInputRecord InstallIn={irDontOpenNDAs+irNoDuplicates,NULL,0,0};askInstallOutputRecord InstallOut;OpenRecGS 	OpenOS=	{15,0,NULL,1,0,0,0,0L,0,			{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},                        NULL,0L,0L,0L,0L};RefNumRecGS 	CloseOS={1,0};word MyID;extern void Fix_start(void);extern void Fix_end(void);int main(int argc, char *argv[]){	#ifdef STACK	begin_stack_check();	#endif		MyID=MMStartUp();		if (argc==1){		WriteCString("\tShell Interface for IR v 1.0\r");		WriteCString("\tKelvin Sherlock, 3/19/97\r");		WriteCString("Usage: ");		WriteCString(argv[0]);		WriteCString(" <file>\r");		MMShutDown(MyID);		return 0;	}	/* check that IR is active */	SendRequest(askIRAreYouThere,sendToName+stopAfterOne,		(long)NAME_OF_IR, (long)NULL,  (Ptr)&IRHere);	if (_toolErr){		WriteCString(argv[0]);		WriteCString(" :Error - IR is not active\r");		MMShutDown(MyID);		return 0;	}	/* get the file/auxtype */		OpenOS.pathname = InstallIn.pathname = cstring2gs(argv[1]);	OpenGS(&OpenOS);	if (_toolErr){		WriteCString(argv[0]);		WriteCString(" :Error - could not open file ");		WriteCString(argv[1]);		WriteCString("\r");		MMShutDown(MyID);		return 0;	}	CloseOS.refNum= OpenOS.refNum;	CloseGS(&CloseOS);	InstallIn.filetype=OpenOS.fileType;	InstallIn.auxtype=OpenOS.auxType;	Fix_start();		SendRequest(askIRToInstall,sendToName+stopAfterOne,		(long)NAME_OF_IR, (long)&InstallIn, (Ptr)&InstallOut);	Fix_end();	if ( (_toolErr) || (InstallOut.irError) ){		/* error installing */	        WriteCString(argv[0]);		WriteCString(" :Error - IR could not install the file ");		WriteCString(argv[1]);		WriteCString("\r");		MMShutDown(MyID);		return 0;	}		MMShutDown(MyID);	#ifdef STACK	printf("stack usage %d\n",end_stack_check());	#endif		return 0;	}/*Converts a C string to a GSOS string*/GSString255* cstring2gs(char *the_file_name){static GSString255 string;        string.length=strlen(the_file_name);	BlockMove(the_file_name,(Pointer)(&string)+2,string.length);        	//move the string into it	return &string;}
