SU.OS2.FAQ--------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 95 из 100
 От   : FAQServer                           2:5020/181        11 сен 24 07:37:04
 К    : All                                                   11 сен 24 07:43:02
 Тема : PRG29 - Rexx subcommand handler - пpимеp
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:5020/181 95d1fa52
@RFC-Message-ID: 1@mhm.com.lan>
@TZUTC: 0300
[Q]: Rexx subcommand handler - пpимеp

[A]: Dmitry Zavalishin (2:5020/32)

/************************ U1 ***************************
 *
 *  Copyright (C) 1991-1995 by Infinity Soft
 *
 *  Module  :   Rexx subcommand handler
 *
 *      $Log: RexxScom.c $
 *      Revision 1.2  1995/11/05 13:52:48  dz
 *      current.
 *
 *      Revision 1.1  1995/05/08  16:04:26  dz
 *      Initial revision
 *
 *
**/

#define INCL_RXFUNC
#define INCL_RXSUBCOM
#define INCL_RXSHV
#define INCL_REXXSAA
#include                    /* needed for RexxStart()     */
#include                      /* needed for printf()        */
#include                     /* needed for strlen()        */
#include                      /* needed for strlen()        */



APIRET  EXPENTRY U1_Command(PRXSTRING cmd, PUSHORT flags, PRXSTRING ret );

bool
Register_Rexx_Subcommand_Handler( void )
{

RexxRegisterSubcomExe("U1", (PFN)U1_Command, NULL);

return Ok;
}


#define TEST( v, s ) ( strncmp( v, s, sizeof( s ) - 1 ) == 0 )

#defineSC_SUCCESS{ strcpy(ret->strptr, "0"); ret->strlength = 1; return 0; }
 #defineSC_FAILURE(code){ *flags = RXSUBCOM_FAILURE; strcpy(ret->strptr,
code); ret->strlength = 1; return 0; }
 #defineSC_ERROR(code){ *flags = RXSUBCOM_ERROR; strcpy(ret->strptr,
code); ret->strlength = 1; return 0; }

 #define CMD( tail ){ if( (rc = sc_##tail( cmd )) != 0 ) {
sprintf( rcs, "%d", rc ); SC_ERROR(rcs); } }

static sc_log( string & );
static sc_warning( string & );
static sc_error( string & );
static sc_fatal( string & );

APIRET  EXPENTRY 
U1_Command(PRXSTRING r_cmd, PUSHORT flags, PRXSTRING ret )
{
string cmd( r_cmd->strptr );
const char *p1, *p2;
const maxv = 25;
char  verb[maxv];

// for CMD macro
intrc;
charrcs[10];


p1 = cmd.c_str();
p2 = strpbrk( p1, " \t" );
strncpy( verb, p1, min( maxv, p2-p1 ) );
verb[min( maxv, p2-p1 )] = `\0`;

strlwr( verb );

while( *p2 == ` ` || *p2 == `\t` )
p2++;

cmd = p2;

debug( "Rexx cmd got verb `%s` and tail `%s`", verb, cmd.c_str() );

if( TEST( verb, "log" ) )CMD( log  )else
if( TEST( verb, "warning" ) )CMD( warning )else
if( TEST( verb, "error" ) )CMD( error  )else
if( TEST( verb, "fatal" ) )CMD( fatal  )else
{
error( EI_None, "Rexx subcommand: unknown verb `%s`", verb );
SC_FAILURE("33");
}

SC_SUCCESS;
}













static int
sc_log( string &s )
{
log( "x#", "%s", s.c_str() );
return 0;
}


static int
sc_warning( string &s )
{
warning( EI_None, "%s", s.c_str() );
return 0;
}


static int
sc_error( string &s )
{
error( EI_None, "%s", s.c_str() );
return 0;
}


static int
sc_fatal( string &s )
{
fatal( EC_Dunno, EI_None, "%s", s.c_str() );
return 0;
}
 
--- INN 2.7.2
 * Origin: This echo is READ-ONLY. Send %HELP to FAQSERVER at (2:5020/181)
SEEN-BY: 4500/1 5001/100 5019/40 5020/77 81 181
545 848 1042 1941 1955 4441
SEEN-BY: 5020/8086 12000 5030/1081 1900 5060/900
5097/31 6090/1
@PATH: 5020/181 12000 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх