#include <exec/exec.h>
#include <dos/dos.h>
#include <stdio.h>
#include <stdlib.h>
#include "work:romconf/doorheader.h"

#define AWAIT_LOGON	0
#define SYSOP_LOGON	1
#define LOCAL_LOGON	2
#define REMOTE_LOGON	3
#define GOODBYE_LOGON	4
#define SUSPEND_LOGON	5
int Whence_The_Logon;
void EditEmacs(char *filename);
int mynode;
char temp[200];
char GSTR3[200];
char GSTR2[200];
#define gu getuserstring
#define sm sendmessage
#define pm prompt
void CloseAux(BPTR tfh);
BPTR OpenAux(void);
main(int argc,char *argv[])
{
   register int i;
   if(argc!=2)
   {
      printf("AUXED version 1.0 written by Joseph Hodge\n");
      printf("\n");
      exit(0);
   }
   Register(argv[1][0]-'0');
   mynode=argv[1][0]-'0';
   Whence_The_Logon=GetInfo(BB_LOGONTYPE);
   gu(temp,BB_MAINLINE);
   sr(temp);
   i=0;
   while(temp[i]!=' ' && temp[i]!='\0') i++;
   while(temp[i]!='\0' && temp[i]==' ') i++; 
   EditEmacs(&temp[i]);
   ShutDown();
   end();
}
void EditEmacs(char *filename)
{
 FILE *f;
 struct Task *task;
 BPTR fh;
 sprintf(GSTR3,"\tEditEmacs %s\n",filename);
 //CallersLog(GSTR3);

 if(f=fopen(filename,"r")) {
 	fclose(f);
 	sprintf(GSTR3,"ram:Node%dEmacs",mynode);
	    if(f=fopen(GSTR3,"w")) {
 		BPTR fh;

	    	fprintf(f,"emacs %s\n",filename);
		    fprintf(f,"endcli\n");
 		fclose(f);
	    	if(fh=OpenAux()) {
 			sm("[0;0H[J",0);
	    		//ConPutStr(&Xinfo,"\nUser is using EMACS...");
		    	
 				sprintf(GSTR2,"failat 100\nc:execute %s\nendcli\n",GSTR3);
	    			Execute(GSTR2,fh,0);
			    CloseAux(fh);
			}
 		sprintf(GSTR3,"ram:Node%dEmacs",mynode);
	    	DeleteFile(GSTR3);
		}
	} else {
 	sprintf(GSTR2,"The file %s does not exist!",filename);
	    sm("",1);sm(GSTR2,1);
	}
}


BPTR OpenAux(void)
{
 char str[100];
 BPTR tfh;

 if(Whence_The_Logon==REMOTE_LOGON) {
	    PurgeLineEnd();
	    sprintf(str,"AUX%u:",mynode);
	} else
	    strcpy(str,"CNN:S*/0/1/640/199/LocalAUX");

 if(!(tfh=Open(str,MODE_OLDFILE))) {
	    if(Whence_The_Logon==REMOTE_LOGON) {
	    	PurgeLineStart();
		}
	    sm("",1);sm("The ",0);
	    sm(str,0);
	    sm(" handler can't be opened!",1);
	}
 return(tfh);
}

void CloseAux(BPTR tfh)
{
 Close(tfh);
}

