/*************************************************************************/
/* Autor      : RTA                                                      */
/* Computer   : Amiga                                                    */
/* Sprache    : Ansi C                                                   */
/* Compiler   : SAS C-Compiler Version 5.1a                              */
/* Dateiname  : orexx.c                                                  */
/* Projekt    : OnlineHelp                                               */
/* Erstellt am: 10 Nov 1991,19:14                                        */
/*************************************************************************/

#include "online.h"

/*************************************************************************/
/*    Die AREXX-Routinen werden prinizipiell mit folgenden Parametern    */
/* char *args Argumentstring von AREXX ohne das Kommandowort             */
/* int *ret der Return-wert für AREXX (rc)                               */
/* Gibt den Result String zurück                                         */
/*************************************************************************/


char *rx_docadd(char *args,int *ret)
{
	char fname[80]="";

	sscanf(args,"%s",fname);
	if(fname[0]=='\0')*ret=1;
	if(!additem(fname))*ret=2;
	return(NULL);
}

char *rx_docdel(char *args,int *ret)
{
	char fname[80]="";

	sscanf(args,"%s",fname);
	if(fname[0]=='\0')*ret=1;
	if(!delitemonly(fname))*ret=2;
	return(NULL);
}

char *rx_docdelall(char *args,int *ret)
{
	delitem();
	return(NULL);
}

char *rx_doclist(char *args,int *ret)
{
	return(listitem());
}

char *rx_search(char *args,int *ret)
{
	char opt=' ';

	if(!mywindow){*ret=4;return(NULL);}
	if(pattern)free(pattern);
	pattern=calloc(80,sizeof(BYTE));
	if(!pattern)
		{
		SimpleRequest(errortext.nomem);
		*ret=30;
		return(NULL);
		}

	sscanf(args,"%s %c",pattern,&opt);
	if(!mywindow && toupper(opt)!='T'){*ret=1;return(NULL);}
	if(pattern[0]=='\0'){*ret=2;return(NULL);}
	initlist();
	if(toupper(opt)!='T')
		{
		gotoxy(0,0);
   	clrscr();
   	}
	strupr(pattern);
	if(!getnextdoc(pattern)){*ret=3;return(NULL);}
	if(toupper(opt)=='T')return(htext);
	return(NULL);
}

char *rx_openwin(char *args,int *ret)
{
	char screen[80]="";

	sscanf(args,"%hu %hu %hu %hu %s",&winleft,&wintop,&winwidth,&winheight,screen);
	if(screen[0]!='\0')stch_l(screen,(LONG *)&myscreen);
	if(!openwin()) *ret=1;
   if(!addgad())  *ret=1;
	return(NULL);
}

char *rx_closewin(char *args,int *ret)
{
	closewin();
	return(NULL);
}

char *rx_makeindex(char *args,int *ret)
{
	char fname[80]="";
	char iname[80];

	sscanf(args,"%s",fname);
	if(fname[0]=='\0'){*ret=1;return(NULL);}
	sprintf(iname,"%s.index",fname);
	if(!makeindex(fname,iname))*ret=2;
	closestatus();
	return(NULL);
}

char *rx_quit(char *args,int *ret)
{
quit=TRUE;
return(NULL);
}

char *rx_offstatus(char *args,
            int *ret)
{
char status='F';

sscanf(args,"%c",&status);
if(toupper(status)=='T') statuson=FALSE;
else statuson=TRUE;
return(NULL);
}

char *rx_ongad(char *args,
            int *ret)
{
char 	g0='X',
      g1='X',
      g2='X',
      g3='X',
      g4='X';

sscanf(args,"%c %c %c %c %c",&g0,&g1,&g2,&g3,&g4);
g0=toupper(g0);
g1=toupper(g1);
g2=toupper(g2);
g3=toupper(g3);
g4=toupper(g4);

if((g0=='X') || (g1=='X') || (g2=='X') || (g3=='X') || (g4=='X'))
	{
	*ret=1;
	return(NULL);
	}

if(g0=='F') {offgad(0);gad0=FALSE;}
else {ongad(0);gad0=TRUE;}
if(g1=='F') {offgad(1);gad1=FALSE;}
else {ongad(1);gad1=TRUE;}
if(g2=='F') {offgad(2);gad2=FALSE;}
else {ongad(2);gad2=TRUE;}
if(g3=='F') {offgad(3);gad3=FALSE;}
else {ongad(3);gad3=TRUE;}
if(g4=='F') {offgad(4);gad4=FALSE;}
else {ongad(4);gad4=TRUE;}
if(mywindow)RefreshGList(mywindow->FirstGadget,mywindow,NULL,-1);
return(NULL);
}
