home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
back2roots/padua
/
padua.7z
/
padua
/
ftp.vapor.com
/
microdot-1
/
md1_src_02.lzx
/
md_rexx_rxif.c
< prev
next >
Wrap
C/C++ Source or Header
|
2014-05-19
|
25KB
|
1,218 lines
/*
* Source generated with ARexxBox 1.13 (Dec 4 1993)
* which is Copyright (c) 1992,1993 Michael Balzer
*/
#include <exec/types.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <rexx/storage.h>
#include <rexx/rxslib.h>
#ifdef __GNUC__
/* GCC needs all struct defs */
#include <dos/exall.h>
#include <graphics/graphint.h>
#include <intuition/classes.h>
#include <devices/keymap.h>
#include <exec/semaphores.h>
#endif
#include <clib/alib_protos.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/rexxsyslib_protos.h>
#ifndef __NO_PRAGMAS
#ifdef AZTEC_C
#include <pragmas/exec_lib.h>
#include <pragmas/dos_lib.h>
#include <pragmas/rexxsyslib_lib.h>
#endif
#ifdef LATTICE
#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/rexxsyslib_pragmas.h>
#endif
#endif /* __NO_PRAGMAS */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#ifdef LATTICE
#define inline __inline
#endif
#ifdef __GNUC__
#undef toupper
static inline char toupper( char c )
{
return( islower(c) ? c - 'a' + 'A' : c );
}
#endif
#ifdef AZTEC_C
#define inline
#endif
#include "md_rexx.h"
extern struct ExecBase *SysBase;
extern struct DosLibrary *DOSBase;
extern struct RxsLib *RexxSysBase;
/* $ARB: I 754885886 */
/* $ARB: B 1 GETMODE */
#include "microdot.h"
void rx_getmode( struct RexxHost *host, struct rxd_getmode **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getmode *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
break;
case RXIF_ACTION:
/* Insert your CODE here */
rd->rc2 = rexxmode;
rd->res.mode = &rexxmode;
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 1 GETMODE */
/* $ARB: B 2 GETCURRENTMAILHEADER */
void rx_getcurrentmailheader( struct RexxHost *host, struct rxd_getcurrentmailheader **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getcurrentmailheader *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( ( rexxmode != 1 ) && ( rexxmode != 2 ) )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
else
{
struct header *hl;
struct hlist *hlist;
struct msghandle *msg;
int count;
msg = opencurrentmail();
if( msg )
{
hlist = msg_loadheader( msg );
hl = hl_findheader( hlist, rd->arg.header );
count = rd->arg.index ? *rd->arg.index : 0;
while( hl && count-- )
hl = hl_findnextheader( hl );
if( hl )
{
rd->rc = 0;
rd->rc2 = NULL;
rd->res.data = StrDup( host, hl->data );
}
else
{
rd->rc = 10;
rd->rc2 = ERROR_NO_MORE_ENTRIES;
}
hl_freeheader( hlist );
msg_close( msg );
break;
}
}
rd->rc = -10;
rd->rc = (ULONG) "no current mail";
break;
case RXIF_FREE:
/* FREE your local data here */
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 2 GETCURRENTMAILHEADER */
/* $ARB: B 8 HELP */
void rx_help( struct RexxHost *host, struct rxd_help **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_help *rd = *rxd;
struct rxs_command *rxc;
/*
* Dieser HELP-Befehl unterstⁿtzt (noch) nicht das PROMPT-Keyword
* da das nur im Rahmen eines GUIs Sinn hat
*/
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
break;
case RXIF_ACTION:
/* Insert your code HERE */
if( rd->arg.prompt )
{
rd->rc = 0;
rd->rc2 = 0;
showguide( "arexx_commands" );
return;
}
if( rd->arg.command )
{
rxc = FindRXCommand( rd->arg.command );
if( !rxc )
{
rd->rc = -10;
rd->rc2 = (long) "Unknown Command";
return;
}
if( ( rd->res.commanddesc = AllocVec( strlen( rxc->command )
+ (rxc->args ? strlen(rxc->args) : 0)
+ (rxc->results ? strlen(rxc->results) : 0) + 42,
MEMF_ANY) ) )
{
sprintf( rd->res.commanddesc,
"%s%lc%s%s%s%s%s",
rxc->command,
(rxc->results || rxc->args) ? ' ' : '\0',
rxc->results ? "VAR/K,STEM/K" : "",
(rxc->results && rxc->args) ? "," : "",
rxc->args ? rxc->args : "",
rxc->results ? " => " : "",
rxc->results ? rxc->results : "" );
}
else
{
rd->rc = 10;
rd->rc2 = ERROR_NO_FREE_STORE;
return;
}
}
else
{
char **s;
if( !(s = AllocVec(sizeof(char *) * ( command_cnt + 1 ), MEMF_CLEAR)) )
{
rd->rc = 10;
rd->rc2 = ERROR_NO_FREE_STORE;
return;
}
rd->res.commandlist = s;
rxc = rxs_commandlist;
while( rxc->command )
{
*s = rxc->command;
s++;
rxc++;
}
}
break;
case RXIF_FREE:
/* FREE your local data HERE */
if( rd->res.commanddesc )
FreeVec( rd->res.commanddesc );
if( rd->res.commandlist )
FreeVec( rd->res.commandlist );
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 8 HELP */
/* $ARB: B 9 RX */
void rx_rx( struct RexxHost *host, struct rxd_rx **rxd, long action, struct RexxMsg *rexxmsg )
{
struct {
struct rxd_rx rd;
long rc;
} *rd = (void *) *rxd;
BPTR fh = NULL;
struct RexxMsg *sentrm;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
/* Insert your code HERE */
/* Kommando leer? */
if( !rd->rd.arg.command )
return;
/* Mit Ein-/Ausgabe-Fenster? */
if( rd->rd.arg.console )
{
fh = OpenCon( "CON:////RX Window/AUTO" );
if( !fh )
{
rd->rd.rc = -20;
rd->rd.rc2 = (long) "RX can't open Window";
return;
}
}
/* Kommando abschicken */
if( !(sentrm = SendRexxCommand(host, rd->rd.arg.command, fh)) )
{
rd->rd.rc = -20;
rd->rd.rc2 = (long) "RX can't send ARexx command";
return;
}
/* auf den Reply warten */
if( !rd->rd.arg.async )
{
struct RexxMsg *rm;
int waiting = TRUE;
do
{
WaitPort( host->port );
while( rm = (struct RexxMsg *) GetMsg(host->port) )
{
/* Reply? */
if( rm->rm_Node.mn_Node.ln_Type == NT_REPLYMSG )
{
/* 'unsere' Msg? */
if( rm == sentrm )
{
rd->rc = rm->rm_Result1;
rd->rd.res.rc = &rd->rc;
if( !rm->rm_Result1 && rm->rm_Result2 )
{
/* Res2 ist String */
rd->rd.res.result =
StrDup( host, (char *) rm->rm_Result2 );
}
waiting = FALSE;
}
FreeRexxCommand( rm );
--host->replies;
}
/* sonst Kommando -> Fehler */
else if( ARG0(rm) )
{
ReplyRexxCommand( rm, -20, (long)
"CommandShell Port", NULL );
}
}
}
while( waiting );
}
break;
case RXIF_FREE:
/* FREE your local data HERE */
if( rd->rd.res.result ) ARBFree( host, rd->rd.res.result );
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 9 RX */
/* $ARB: B 10 EXTRACTCURRENTMAIL */
void rx_extractcurrentmail( struct RexxHost *host, struct rxd_extractcurrentmail **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_extractcurrentmail *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( ( rexxmode != 1 ) && ( rexxmode != 2 ) )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
else
{
struct msghandle *msg;
int what = MC_DATA;
if( rd->arg.header )
what |= MC_HEADER;
if( rd->arg.comment )
what |= MC_COMMENT;
msg = opencurrentmail();
if( msg )
{
msg_copy( msg, rd->arg.file, what );
rd->rc = 0;
rd->rc2 = 0;
msg_close( msg );
break;
}
}
/* Insert your CODE here */
rd->rc = -10;
rd->rc = (ULONG) "no current mail";
break;
case RXIF_FREE:
/* FREE your local data here */
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 10 EXTRACTCURRENTMAIL */
/* $ARB: B 11 MDVERSION */
void rx_mdversion( struct RexxHost *host, struct rxd_mdversion **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_mdversion *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
break;
case RXIF_ACTION:
/* Insert your CODE here */
rd->rc = 0;
rd->rc2 = MDUPDVER;
rd->res.version = MDVER;
break;
case RXIF_FREE:
/* FREE your local data here */
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 11 MDVERSION */
/* $ARB: B 12 GETMDPUBSCREENNAME */
void rx_getmdpubscreenname( struct RexxHost *host, struct rxd_getmdpubscreenname **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getmdpubscreenname *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = AllocVec( sizeof *rd, MEMF_CLEAR );
break;
case RXIF_ACTION:
/* Insert your CODE here */
rd->rc = 0;
rd->rc2 = !wbwindow;
rd->res.pubscreenname = ( pubscreenname ) ? pubscreenname : "Workbench";
break;
case RXIF_FREE:
/* FREE your local data here */
FreeVec( rd );
break;
}
return;
}
/* $ARB: E 12 GETMDPUBSCREENNAME */
/* $ARB: B 13 SENDSHORTMAIL */
void rx_sendshortmail( struct RexxHost *host, struct rxd_sendshortmail **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_sendshortmail *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
rd->arg.subject = "";
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
/* Insert your CODE here */
sendshortmail( rd->arg.to, rd->arg.subject, rd->arg.text, ( rd->arg.referenceid ) ? rd->arg.referenceid : NULL, NULL, NULL, 1 );
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 13 SENDSHORTMAIL */
/* $ARB: B 14 SENDMAIL */
extern int sendwinauto;
void rx_sendmail( struct RexxHost *host, struct rxd_sendmail **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_sendmail *rd = *rxd;
static ULONG rc;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
sendwinauto = !rd->arg.wait;
if( !rd->arg.bin )
copyfile( rd->arg.bodyfile, TMPMSGNAME );
if( rd->arg.commentfile )
copyfile( rd->arg.commentfile, TMPCOMMENTNAME );
rc = dosendwin( "Per ARexx verschickte Nachricht",
rd->arg.subject,
rd->arg.shortcomment,
rd->arg.referenceid,
rd->arg.to,
rd->arg.bin ? 1 : 0,
NULL, NULL,
rd->arg.followup_to,
NULL,
NULL,
( rd->arg.bin ) ? rd->arg.bodyfile : NULL,
( rd->arg.bin ) ? FilePart( rd->arg.bodyfile ): NULL,
NULL
);
rd->res.rc = &rc;
/* Insert your CODE here */
rd->rc = 0;
displayscroller();
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 14 SENDMAIL */
/* $ARB: B 15 GETCURRENTBOARD */
/* ATT: Interface changed! Check arg/res/name consistency! */
extern struct mbrett *cmb;
void rx_getcurrentboard( struct RexxHost *host, struct rxd_getcurrentboard **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getcurrentboard *rd = *rxd;
struct mbrett *brett=(struct mbrett*)GetEntry( &brettlist, getscrollercurrent() );
static ULONG holddays, nocrunch, subpm, select;
if( rexxmode )
brett = cmb;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
select = brett->n.ln_Type ? 1 : 0;
nocrunch = ( brett->b.flags & BFLAG_NOCRUNCH ) ? 1 : 0;
subpm = ( brett->b.flags & BFLAG_EXTEND_PM ) ? 1 : 0;
/* Insert your CODE here */
holddays = brett->b.days;
rd->res.name = StrDup( host, brett->b.name );
rd->res.mails = &brett->b.mails;
rd->res.newmails = &brett->b.newmails;
rd->res.unreadmails = &brett->b.unreadmails;
rd->res.holddays = &holddays;
rd->res.nodelete = &nocrunch;
rd->res.subpm = &subpm;
rd->res.selected = &select;
rd->res.updatetime = &brett->b.lastwrite;
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 15 GETCURRENTBOARD */
/* $ARB: B 16 GETPREFS */
void rx_getprefs( struct RexxHost *host, struct rxd_getprefs **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getprefs *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
/* Insert your CODE here */
rd->res.username = StrDup( host, prefs.username );
rd->res.userrealname = StrDup( host, prefs.userrealname );
rd->res.pointname = StrDup( host, prefs.pointname );
rd->res.servername = StrDup( host, prefs.boxname );
rd->res.serverdomain = StrDup( host, prefs.boxdomain );
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 16 GETPREFS */
/* $ARB: B 17 GETCURRENTMAIL */
/* ATT: Interface changed! Check arg/res/name consistency! */
/* ATT: Interface changed! Check arg/res/name consistency! */
void rx_getcurrentmail( struct RexxHost *host, struct rxd_getcurrentmail **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getcurrentmail *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
/* Insert your CODE here */
if( ( rexxmode != 1 ) && ( rexxmode != 2 ) )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
else
{
struct vmail *v = getcurrentmail();
if( v )
{
static ULONG readf, newf, holdf, delf, binf, showf, rx1f, rx2f, self;
readf = ( v->m->m.flags & MMF_READ ) ? 1 : 0;
newf = ( v->m->m.flags & MMF_UNSEEN ) ? 1 : 0;
holdf = ( v->m->m.flags & MMF_ARCHIVE ) ? 1 : 0;
delf = ( v->m->m.flags & MMF_DEL ) ? 1 : 0;
binf = ( v->m->m.flags & MMF_BIN ) ? 1 : 0;
showf = ( v->m->m.flags & MMF_SHOW ) ? 1 : 0;
rx1f = ( v->m->m.flags & MMF_RX1 ) ? 1 : 0;
rx2f = ( v->m->m.flags & MMF_RX2 ) ? 1 : 0;
self = ( v->sel ) ? 1 : 0;
rd->res.from = StrDup( host, v->m->m.absender );
rd->res.fromreal = StrDup( host, v->m->m.absenderreal );
rd->res.subject = StrDup( host, v->m->m.betreff );
rd->res.midhash = &v->m->m.midcrc;
rd->res.refhash = &v->m->m.bezcrc;
rd->res.length = &v->m->m.maillen;
rd->res.new = &newf;
rd->res.read = &readf;
rd->res.hold = &holdf;
rd->res.del = &delf;
rd->res.bin = &binf;
rd->res.show = &showf;
rd->res.selected = &self;
rd->res.rx1 = &rx1f;
rd->res.rx2 = &rx2f;
rd->res.sendtime = &v->m->m.time;
rd->res.incometime = &v->m->m.incomtime;
rd->rc = 0;
break;
}
}
rd->rc = -10;
rd->rc = (ULONG) "no current mail";
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 17 GETCURRENTMAIL */
/* $ARB: B 18 EDITOR */
void rx_editor( struct RexxHost *host, struct rxd_editor **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_editor *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
/* Insert your CODE here */
rd->res.rc = 0;
calleditor( rd->arg.file );
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 18 EDITOR */
/* $ARB: B 19 GETPOS */
void rx_getpos( struct RexxHost *host, struct rxd_getpos **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_getpos *rd = *rxd;
static ULONG pos;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
pos = getscrollercurrent();
rd->res.rc = &pos;
/* Insert your CODE here */
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 19 GETPOS */
/* $ARB: B 20 SETPOS */
/* ATT: Interface changed! Check arg/res/name consistency! */
void rx_setpos( struct RexxHost *host, struct rxd_setpos **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_setpos *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
rd->rc = 0;
if( rd->arg.up )
setscrollercurrent( getscrollercurrent() - 1 );
else if( rd->arg.down )
setscrollercurrent( getscrollercurrent() + 1 );
else if( rd->arg.gotopos )
setscrollercurrent( *rd->arg.gotopos );
else
rd->rc = 1;
showcurrentitem();
/* Insert your CODE here */
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 20 SETPOS */
/* $ARB: B 21 CHOOSE */
/* ATT: Interface changed! Check arg/res/name consistency! */
/* ATT: Interface changed! Check arg/res/name consistency! */
int scrollerenter;
void rx_choose( struct RexxHost *host, struct rxd_choose **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_choose *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( rexxmode == 2 )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
else
{
static int isselected;
isselected = ( getscrollerselect() ) ? TRUE : FALSE;
if( rd->arg.off )
scrollerselect( 0, 0 );
else if( rd->arg.toggle )
scrollerselect( 0, !isselected );
else if( rd->arg.allon )
scrollerselect( TRUE, TRUE );
else if( rd->arg.alloff )
scrollerselect( TRUE, FALSE );
else if( rd->arg.enter )
scrollerenter = TRUE;
else if( !rd->arg.test )
scrollerselect( 0, TRUE );
if( !rexxmode )
calcbcount();
else
calcmcount();
rd->res.rc = &isselected;
/* Insert your CODE here */
rd->rc = 0;
}
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 21 CHOOSE */
/* $ARB: B 22 CRUNCH */
void rx_crunch( struct RexxHost *host, struct rxd_crunch **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_crunch *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
if( rexxmode )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
/* Insert your CODE here */
docrunch( ( struct mbrett*)-1 );
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 22 CRUNCH */
/* $ARB: B 23 REORG */
void rx_reorg( struct RexxHost *host, struct rxd_reorg **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_reorg *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( rexxmode )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
/* Insert your CODE here */
doreorg2( rd->arg.merge );
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 23 REORG */
/* $ARB: B 24 NETCALL */
void rx_netcall( struct RexxHost *host, struct rxd_netcall **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_netcall *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
if( rexxmode )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
/* Insert your CODE here */
if( !dospool() )
{
if( !donetcall( 0 ) )
{
delspool();
dosortin();
sortbrettlist();
calcbcount();
displayscroller();
rd->res.rc = 0;
break;
}
}
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 24 NETCALL */
/* $ARB: B 25 GOTOBOARD */
/* ATT: Interface changed! Check arg/res/name consistency! */
/* ATT: Interface changed! Check arg/res/name consistency! */
void rx_gotoboard( struct RexxHost *host, struct rxd_gotoboard **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_gotoboard *rd = *rxd;
struct mbrett *mb;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( rexxmode )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
mb = findbrett( rd->arg.name, 0 );
if( mb )
{
setscrollercurrent( GetEntryNum( &brettlist, mb ) );
showcurrentitem();
rd->rc = 0;
}
else
rd->rc = 5;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 25 GOTOBOARD */
/* $ARB: B 26 SETCURRENTMAILFLAGS */
extern struct mindex *mix;
static void setmailflag( long *state, ULONG flag, struct vmail *v )
{
if( state )
{
if( *state )
v->m->m.flags |= flag;
else
v->m->m.flags &= ~flag;
mix->changed = 1;
}
}
void rx_setcurrentmailflags( struct RexxHost *host, struct rxd_setcurrentmailflags **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_setcurrentmailflags *rd = *rxd;
struct vmail *v;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
if( ( rexxmode != 1 ) && ( rexxmode != 2 ) )
{
rd->rc = -10;
rd->rc2 = (ULONG) "Illegal mode";
break;
}
v = getcurrentmail();
if( v )
{
setmailflag( rd->arg.new, MMF_UNSEEN, v );
setmailflag( rd->arg.read, MMF_READ, v );
setmailflag( rd->arg.hold, MMF_ARCHIVE, v );
setmailflag( rd->arg.del, MMF_DEL, v );
setmailflag( rd->arg.show, MMF_SHOW, v );
setmailflag( rd->arg.rx1, MMF_RX1, v );
setmailflag( rd->arg.rx2, MMF_RX2, v );
if( rd->arg.selected )
{
if( *rd->arg.selected )
v->sel = 0xff;
else
v->sel = 0;
}
displaycurrentline();
calcmcount();
}
/* Insert your CODE here */
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 26 SETCURRENTMAILFLAGS */
/* $ARB: B 28 REQUEST */
void rx_request( struct RexxHost *host, struct rxd_request **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_request *rd = *rxd;
static ULONG rc;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
rc = askreq( rd->arg.text, rd->arg.gadgets );
rd->res.rc = &rc;
/* Insert your CODE here */
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 28 REQUEST */
/* $ARB: B 30 QUIT */
extern int rexxquitflag;
void rx_quit( struct RexxHost *host, struct rxd_quit **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_quit *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
break;
case RXIF_ACTION:
rexxquitflag = TRUE;
/* Insert your CODE here */
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 30 QUIT */
/* $ARB: B 31 NOREQUEST */
extern int noreq;
void rx_norequest( struct RexxHost *host, struct rxd_norequest **rxd, long action, struct RexxMsg *rexxmsg )
{
struct rxd_norequest *rd = *rxd;
switch( action )
{
case RXIF_INIT:
*rxd = ARBAlloc( host, sizeof *rd );
if( rd = *rxd )
{
/* set your DEFAULTS here */
}
break;
case RXIF_ACTION:
/* Insert your CODE here */
if( rd->arg.off )
noreq = FALSE;
else
noreq = TRUE;
rd->rc = 0;
break;
case RXIF_FREE:
/* FREE your local data here */
ARBFree( host, rd );
break;
}
return;
}
/* $ARB: E 31 NOREQUEST */
#ifndef RX_ALIAS_C
char *ExpandRXCommand( struct RexxHost *host, char *command )
{
/* Insert your ALIAS-HANDLER here */
return( NULL );
}
#endif