#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);
void end(void);
void LastCommand(void);
void sr(char *s);
char Path[200];
char EDIT[200];
main(int argc,char *argv[])
{
   FILE *fi;
   register int i;
   if(argc!=2)
   {
      printf(".-----------------------------------------------------.\n",1);
      printf("| Ami-Express AUXED Version 1.0 Written by ByteMaster |\n");
      printf("|     /X Development Team - The Silent Achievers      |\n");
      printf("`-----------------------------------------------------'\n");
      printf("\n");
      printf(" This is a (XIM) for AmiExpress 2.30+\n");
      printf("\n");
      exit(0);
 
   }
   Register(argv[1][0]-'0');
   Whence_The_Logon=GetInfo(BB_LOGONTYPE);
   mynode=argv[1][0]-'0';
   strcpy(Path,argv[0]);
   strcat(Path,".cfg");
   
   gu(temp,BB_MAINLINE);
   sr(temp);
   i=0;
   while(temp[i]!=' ' && temp[i]!='\0') i++;
   while(temp[i]!='\0' && temp[i]==' ') i++; 
   fi=fopen(Path,"r");
   if(fi!=NULL && Whence_The_Logon!=REMOTE_LOGON)
   {
     fgets(Path,80,fi);
     fclose(fi);
     sr(Path);
     sprintf(EDIT,"%s %s",Path,&temp[i]);
     Execute(EDIT,NULL,NULL);
   }
   else
     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) {
	    sprintf(str,"AUX%u:",mynode);
	} else
	    sprintf(str,"CNN:S*/0/1/%d/%d/LocalEmacs",GetInfo(BB_SCRWIDTH),GetInfo(BB_SCRHEIGHT)-1);

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

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

void end(void)
{
  exit(0);
}
void LastCommand(void)
{
  sm("",1);
}
void sr(char *s)
{
  register int i;
  i=strlen(s)-1;
  while(i>-1)
  {
    if(*(s+i)<=32) *(s+i)='\0'; else break;
    i--;
  }
}