/* Screen2Front.c : 14.9.1992 V 1.0 (And Only) */

#define USAGE "s2f <Screennamepattern>\nVersion 1.0 © UD-Softworks 92\nE.g.: s2f *ANSWER*\n"

#include <stdlib.h>
#include <string.h>

#include <exec/types.h>
#include <exec/execbase.h>
#include <intuition/intuitionbase.h>
#include <intuition/screens.h>

#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/intuition_protos.h>

#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/intuition_pragmas.h>

extern struct ExecBase *SysBase;
extern struct Library *DOSBase;

void _main(char *arg)
{
 struct IntuitionBase *IntuitionBase;
 register struct Screen *scr;
 register char *ptr;
 if (arg[strlen(arg)-1] == '\n') arg[strlen(arg)-1] = '\0';
 ptr=strchr(arg+1, '\"');
 if (ptr!=NULL) {
  ptr += 2;
  if (strcmp(ptr,"?")==0) {
   Write(Output(),USAGE,strlen(USAGE));
   _exit(RETURN_OK);
  } else {
   if (IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0)) {
    ULONG lock;
    lock=LockIBase(0);
    scr=IntuitionBase->FirstScreen;
    while (scr!=NULL) {
     if (*ptr!='\0') {
      if (stcpma(scr->Title,ptr)) {
       ScreenToFront(scr);
       break;
      }
     } else {
      Write(Output(),scr->Title,strlen(scr->Title));
      Write(Output(),"\n",1);
     }
     scr=scr->NextScreen;
    }
    UnlockIBase(lock);
    CloseLibrary((struct Library *)IntuitionBase);
    _exit(RETURN_OK);
   }
  }
 }
 _exit(RETURN_FAIL);
}
