#include "bbs.h"
#define StripInfo(x,y) x=strlen(y)-1; while(x>-1) { if(y[x]=='.') { y[x]='\0'; break; } x--; }

void SetNRAMS(void)
{
   struct DiskObject *dobj;
   char **oldtooltypes;
   char *s;
   char temp[200];
   char FileName[200];
   int j;
   sprintf(temp,"%sNode%d/NRAMS",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
   if(GetFirstName(temp,FileName))
   {
      if(SEROUT)
      {
        StripInfo(j,FileName);
        sprintf(temp,"%sNode%d/NRAMS/%s",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER],FileName);
        IO_Flags[IOFLAG_SER_IN]=1;
                 IO_Flags[IOFLAG_SER_OUT]=0;
                 IO_Flags[IOFLAG_SCR_OUT]=0;
                 IO_Flags[IOFLAG_KBD_IN]=1;
        DropDTR();
        IntDoReset(Sopt->OffHook);
        SetEnvMsg("Setting NRAMS");
        dobj=GetDiskObject(temp);
        if(dobj)
        {
           oldtooltypes=dobj->do_ToolTypes;
           j=1;
           sprintf(FileName,"NRAM.%d",j++);
           while(s=FindToolType(oldtooltypes,FileName))
           {
              sprintf(FileName,"Setting NRAM.%d",j-1);
              SetEnvMsg(FileName);
              IntDoReset(s); Delay(60L);
              sprintf(FileName,"NRAM.%d",j++);
           }
           Reset_System(0);
           SetEnvStat(ENV_AWAITCONNECT);
           FreeDiskObject(dobj);
        }
      }
    }
    else
    {
       SetEnvMsg("NO NRAM.DEF");
       Delay(30L);
       SetEnvStat(ENV_AWAITCONNECT);
    }
}
int GetFirstName(char *path,char *buf)
{
   struct FileLock      *pdir = NULL;
   struct FileInfoBlock *dir_info = NULL;
   int returnval=0;
   if ((dir_info =(struct FileInfoBlock *)AllocDosObject(DOS_FIB,NULL)) == NULL)
   {
     Delay(300L);
     return(0);
   }
  if (! (pdir=(struct FileLock *)Lock(path,(ULONG)ACCESS_READ)) )
  {
       UnLock((BPTR)pdir);
       FreeDosObject(DOS_FIB,dir_info);
       return(0);
  }
  if ( ! Examine((BPTR)pdir, dir_info) )
  {
    UnLock((BPTR)pdir);
    FreeDosObject(DOS_FIB,dir_info);
    return(0);
  }
  if(ExNext((BPTR)pdir,dir_info))
  {
    if(dir_info->fib_DirEntryType < 0L )
    {
        returnval=1; strcpy(buf,dir_info->fib_FileName);
    }
  }
   UnLock((BPTR)pdir);
   FreeDosObject(DOS_FIB,dir_info);
  return(returnval);
}