/* * ProcAppl - receives server specific messages for the main window */ void ProcAppl( HWND windhandle, unsigned message, WORD worddata, LONG longdata ) { char name[80]; const char *err; int i; char buff[80]; windhandle = windhandle; message = message; longdata = longdata; switch( worddata ) { case SELECT_1: i = GetWindowTextLength( EditChild ); if( i == 0 ) { Output( TRP_ERR_null_name ); Output( "\r\n" ); } else { *name = '\0'; GetWindowText( EditChild, name, sizeof( name ) ); if( RemoteLinkObtained ) RemoteUnLink(); err = RemoteLink( name, TRUE ); if( err != NULL ) { StartupErr( err ); RemoteLinkObtained = FALSE; } else { sprintf( buff, TRP_WIN_setting_name, name ); Output( buff ); Output( "\r\n" ); RemoteLinkObtained = TRUE; } /* if */ } /* if */ break; } /* switch */ } /* ProcAppl */
int main( int argc, char **argv ) { _DBG( ( "Calling ads_init()\r\n" ) ); ads_init( argc, argv ); _DBG( ( "After ads_init()\r\n" ) ); #else int main( void ) { #endif _DBG(("Calling Initialize\n")); Initialize(); _DBG(("Calling RemoteConnect\n")); RemoteConnect(); _DBG(("Calling Session\n")); Session(); _DBG(("Calling TrapFini\n")); TrapFini(); _DBG(("Calling RemoteDisco\n")); RemoteDisco(); _DBG(("Calling RemoteUnLink\n")); RemoteUnLink(); _DBG(("After calling RemoteUnLink\n")); #ifdef ACAD LetACADDie(); #endif return( 0 ); }
int main( int argc, char **argv ) { char key; #ifndef __WATCOMC__ _argc = argc; _argv = argv; #endif Initialize(); OpeningStatement(); for( ;; ) { Output( TRP_MSG_press_q ); Output( "\r\n" ); for( ;; ) { if( RemoteConnect() ) break; NothingToDo(); if( KeyPress() ) { key = KeyGet(); if( key == 'q' || key == 'Q' ) { KillTrap(); RemoteUnLink(); SayGNiteGracey( 0 ); } } } Output( TRP_MSG_session_started ); Output( "\r\n\r\n" ); Session(); #ifndef NETWARE /* flush keyboard input */ while( KeyPress() ) KeyGet(); #endif Output( "\r\n\r\n" ); Output( TRP_MSG_session_ended ); Output( "\r\n\r\n" ); RemoteDisco(); if( OneShot ) { KillTrap(); RemoteUnLink(); SayGNiteGracey( 0 ); } } return( 0 ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; _DBG_IPX(("RemoteLink\r\n")); server = server; if( *parms == '\0' ) parms = "NovLink"; for( i = 0; i < 48 && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { SAPStruct.ASServerIDpacket.serverName[ i++ ] = toupper( *parms ); } } SAPStruct.ASServerIDpacket.serverName[ i ] = '\0'; if( CIPXOpenSocketRTag( &SPXSocket, SocketTag ) != 0 || CIPXOpenSocketRTag( &IPXSocket, SocketTag ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragmentCount = 2; /* for SPXSocket - yes, SPXSocket is a long, but it always goes out on the wire as a 16-bit quantity */ RespECB.fragmentDescriptor[1].size = sizeof( WORD ); Timer.TCallBackProcedure = (void (*)(LONG))Ticker; Timer.TCallBackEBXParameter = (LONG)&Timer; Timer.TCallBackWaitTime = 0; Timer.TResourceTag = TimerTag; CScheduleInterruptTimeCallBack( &Timer ); if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } return( NULL ); }
char *RemoteLink( char *name, bool server ) { unsigned i; server = server; putstring( "RemoteLink\r\n" ); if( name == NULL || *name == '\0' ) name = "NovLink"; for( i = 0; i < 47 && *name != '\0'; ++name ) { if( strchr( "/\\:;,*?+-", *name ) == NULL ) { SAPHead.name[ i++ ] = toupper( *name ); } } SAPHead.name[ i ] = '\0'; if( SpxOpenSocket( &SPXSocket ) != 0 || IpxOpenSocket( &IPXSocket ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragCount = 2; RespECB.fragList[1].fragSize = sizeof( WORD ); /* for SPXSocket */ #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } #else if( !FindPartner() ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; WSADATA data; #ifdef SERVER const char *p; #endif server = server; if( *parms == '\0' ) parms = "NovLink"; for( i = 0; i < 47 && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { ServerName[ i++ ] = (char)toupper( *(byte *)parms ); } } ServerName[ i ] = '\0'; if( WSAStartup( 0x101, &data ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( (p = InitServer()) != NULL ) { RemoteUnLink(); return( p ); } #else if( !FindPartner() ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }
unsigned ReqProg_kill( void ) { int len; prog_kill_ret *ret; if( !TaskLoaded ) { ret = GetOutPtr( 0 ); ret->err = 0; return( sizeof( *ret ) ); } len = DoAccess(); RemoteUnLink(); TaskLoaded = FALSE; RestoreVectors( OrigVectors ); return( len ); }
trap_retval ReqProg_kill( void ) { trap_elen len; prog_kill_ret *ret; if( !TaskLoaded ) { ret = GetOutPtr( 0 ); ret->err = 0; return( sizeof( *ret ) ); } len = DoAccess(); RemoteUnLink(); TaskLoaded = false; RestoreVectors( OrigVectors ); return( len ); }
int main( int argc, char *argv[] ) { char *err; unsigned len; #ifdef __WINDOWS__ Instance = *_MainWindowData; #endif err = RemoteLink( ( argc > 1 ) ? argv[1] : "", TRUE ); if( err != 0 ) { printf( "%s\n", err ); return( 1 ); } printf( "server running\n" ); for( ;; ) { NothingToDo(); #if defined(__WATCOMC__) // How to do the equivalent of kbhit()? if( kbhit() && getch() == 'q' ) break; #endif if( RemoteConnect() ) { printf( "\nCONNECT\n" ); for( ;; ) { len = RemoteGet( (byte *)&Data, sizeof( Data ) ); if( len == -1 ) { printf( "\nlink broken\n" ); break; } if( Data[0] == TEST_OVER ) break; if( Data[0] == TEST_STRING ) { printf( "'%s' - %d bytes\n", &Data[1], len ); RemotePut( (byte *)&Data, len ); } else { RunTime(); } } RemoteDisco(); printf( "\nDISCO\n" ); } } RemoteUnLink(); return( 0 ); }
char *RemoteLink( char *parm, bool server ) { char *result; server = server; if( parm == NULL ) parm = ""; result = SetLinkParms( &parm ); /* set com: port & max baud rate */ if( result != NULL ) { DonePort(); return( result ); } result = InitSys(); if( result != NULL ) { DonePort(); return( result ); } result = SetupModem( parm ); if( result != NULL ) RemoteUnLink(); return( result ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; BYTE major_ver,minor_ver; WORD max_conn,avail_conn; #ifdef __WINDOWS__ { HINSTANCE ipxspx; HINSTANCE netapi; HMODULE netware; GlobalPageLock( (HGLOBAL)FP_SEG( &SAPECB ) ); netware = GetModuleHandle( "NETWARE.DRV" ); ipxspx = LoadLibrary( "NWIPXSPX.DLL" ); netapi = LoadLibrary( "NWCALLS.DLL" ); if( (UINT)ipxspx < 32 ) return( TRP_ERR_IPX_SPX_not_present ); if( (UINT)netapi < 32 ) return( TRP_ERR_Netware_API_not_present ); if( netware == NULL ) return( TRP_ERR_NETWAREDRV_not_present ); #define str( x ) #x #define GetAddr( hdl, x ) IPXFuncs[x] = (NOVWINAPI)GetProcAddress( hdl, str( x ) ) #define GetIPXAddr( x ) GetAddr( ipxspx, x ) GetAddr( netapi, NWReadPropertyValue ); GetIPXAddr( IPXInitialize ); GetIPXAddr( IPXSPXDeinit ); GetIPXAddr( IPXCancelEvent ); GetIPXAddr( IPXCloseSocket ); GetIPXAddr( IPXDisconnectFromTarget ); GetIPXAddr( IPXGetInternetworkAddress ); GetIPXAddr( IPXGetIntervalMarker ); GetIPXAddr( IPXGetLocalTarget ); GetIPXAddr( IPXListenForPacket ); GetIPXAddr( IPXOpenSocket ); GetIPXAddr( IPXRelinquishControl ); GetIPXAddr( IPXScheduleIPXEvent ); GetIPXAddr( IPXSendPacket ); GetIPXAddr( SPXAbortConnection ); GetIPXAddr( SPXEstablishConnection ); GetIPXAddr( SPXInitialize ); GetIPXAddr( SPXListenForConnection ); GetIPXAddr( SPXListenForSequencedPacket ); GetIPXAddr( SPXSendSequencedPacket ); GetIPXAddr( SPXTerminateConnection ); IPXTaskID = 0x00000000L; if( IPXInitialize( (DWORD __far *)&IPXTaskID, 20, 576 ) != 0 ) { return( TRP_ERR_IPX_not_initialized ); } } #endif server = server; if( *parms == '\0' ) parms = DefLinkName; for( i = 0; i < MAX_NAME_LEN && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { SAPHead.name[ i++ ] = toupper( *parms ); } } SAPHead.name[ i ] = '\0'; if( !_SPXInitialize( 20, 576, &major_ver, &minor_ver, &max_conn, &avail_conn ) ) { return( TRP_ERR_SPX_not_present ); } if( _IPXOpenSocket( &SPXSocket, 0 ) != 0 || _IPXOpenSocket( &IPXSocket, 0 ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragmentCount = 2; RespECB.fragmentDescriptor[1].size = sizeof( WORD ); /* for SPXSocket */ #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } #else if( FindPartner() == 0 ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }
unsigned ReqProg_load( void ) { char buffer[160]; char *src; char *dst; char *name; char *endparm; char *err; tiny_ret_t rc; prog_load_ret *ret; unsigned_16 len; SaveVectors( OrigVectors ); _DBG_EnterFunc( "AccLoadProg()" ); ret = GetOutPtr( 0 ); src = name = GetInPtr( sizeof( prog_load_req ) ); rc = FindFilePath( src, buffer, DosXExtList ); endparm = LinkParm; while( *endparm++ != '\0' ) {} // skip program name strcpy( endparm, buffer ); err = RemoteLink( LinkParm, 0 ); if( err != NULL ) { _DBG_Writeln( "Can't RemoteLink" ); TinyWrite( TINY_ERR, err, strlen( err ) ); LoadError = err; ret->err = 1; len = 0; } else { if( TINY_OK( rc ) ) { while( *src++ != '\0' ) {} len = GetTotalSize() - ( src - name ) - sizeof( prog_load_req ); dst = (char *)buffer; while( *dst++ != '\0' ) {}; memcpy( dst, src, len ); dst += len; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( sizeof( prog_load_req ), In_Mx_Ptr[0].ptr ); _DBG_Writeln( "AddPacket" ); AddPacket( dst - buffer, buffer ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); len = GetPacket(); _DBG_Writeln( "RemovePacket" ); RemovePacket( sizeof( *ret ), ret ); } else { len = DoAccess(); } _DBG_Writeln( "Linked --" ); if( ret->err != 0 ) { get_err_text_req erracc; prog_kill_req killacc; int msg_len; _DBG_Writeln( "loadret->errcode != 0" ); if( LoadError == NULL ) { _DBG_Writeln( "making a REQ_GET_ERR_TEXT request" ); erracc.req = REQ_GET_ERR_TEXT; erracc.err = ret->err; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( sizeof( erracc ), &erracc ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); msg_len = GetPacket(); _DBG_Writeln( "RemovePacket" ); RemovePacket( msg_len, FailMsg ); _DBG_Write( "FailMsg : " ); _DBG_NoTabWriteln( FailMsg ); LoadError = FailMsg; } _DBG_Writeln( "making a REQ_PROG_KILL request" ); killacc.req = REQ_PROG_KILL; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( sizeof( killacc ), &killacc ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); GetPacket(); //RemovePacket( msg_len, &erracc ); RemoteUnLink(); TaskLoaded = FALSE; } } if( ret->err == 0 ) { _DBG_Writeln( "loadret->error_code == 0" ); TaskLoaded = TRUE; } SaveVectors( LoadVectors ); SaveVectors( CurrVectors ); _DBG_ExitFunc( "AccLoadProg()" ); return( len ); }
trap_retval ReqProg_load( void ) { char buffer[160]; char *src; char *dst; char *name; char *endparm; const char *err; tiny_ret_t rc; prog_load_ret *ret; trap_elen len; SaveVectors( OrigVectors ); _DBG_EnterFunc( "AccLoadProg()" ); ret = GetOutPtr( 0 ); src = name = GetInPtr( sizeof( prog_load_req ) ); rc = FindProgFile( src, buffer, DosExtList ); endparm = LinkParms; while( *endparm++ != '\0' ) {} // skip trap parameters strcpy( endparm, buffer ); // add command line // result is as follow // "trap parameters string"+"\0"+"command line string"+"\0" err = RemoteLink( LinkParms, false ); if( err != NULL ) { _DBG_Writeln( "Can't RemoteLink" ); TinyWrite( TINY_ERR, err, strlen( err ) ); LoadError = err; ret->err = 1; len = 0; } else { if( TINY_OK( rc ) ) { while( *src++ != '\0' ) {} len = GetTotalSize() - ( src - name ) - sizeof( prog_load_req ); dst = (char *)buffer; while( *dst++ != '\0' ) {}; memcpy( dst, src, len ); dst += len; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( In_Mx_Ptr[0].ptr, sizeof( prog_load_req ) ); _DBG_Writeln( "AddPacket" ); AddPacket( buffer, dst - buffer ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); len = GetPacket(); _DBG_Writeln( "RemovePacket" ); RemovePacket( ret, sizeof( *ret ) ); } else { len = DoAccess(); } _DBG_Writeln( "Linked --" ); if( ret->err != 0 ) { get_err_text_req erracc; prog_kill_req killacc; trap_elen msg_len; _DBG_Writeln( "loadret->errcode != 0" ); if( LoadError == NULL ) { _DBG_Writeln( "making a REQ_GET_ERR_TEXT request" ); erracc.req = REQ_GET_ERR_TEXT; erracc.err = ret->err; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( &erracc, sizeof( erracc ) ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); msg_len = GetPacket(); _DBG_Writeln( "RemovePacket" ); RemovePacket( FailMsg, msg_len ); _DBG_Write( "FailMsg : " ); _DBG_NoTabWriteln( FailMsg ); LoadError = FailMsg; } _DBG_Writeln( "making a REQ_PROG_KILL request" ); killacc.req = REQ_PROG_KILL; _DBG_Writeln( "StartPacket" ); StartPacket(); _DBG_Writeln( "AddPacket" ); AddPacket( &killacc, sizeof( killacc ) ); _DBG_Writeln( "PutPacket" ); PutPacket(); _DBG_Writeln( "GetPacket" ); GetPacket(); //RemovePacket( &erracc, msg_len ); RemoteUnLink(); TaskLoaded = false; } } if( ret->err == 0 ) { _DBG_Writeln( "loadret->error_code == 0" ); TaskLoaded = true; } SaveVectors( LoadVectors ); SaveVectors( CurrVectors ); _DBG_ExitFunc( "AccLoadProg()" ); return( len ); }