void CBackStream::CmdProcess() { WORD cmd = 0; std::string scmd = ""; GetCmdArg(cmd,scmd); switch(cmd){ case DIRLIST: FillDirFiles(scmd.c_str()); GetDirListPacket(); SendPacket(cmd); break; case PROCESS_LIST: FillProcessList(); GetProcessListPacket(); SendPacket(cmd); break; case FILE_SEND: SendFile(scmd.c_str()); break; case FILE_RECV: RecvFile(scmd.c_str()); break; } }
void ProcCmd( void ) { char buff[TXT_LEN]; unsigned screen_mem; size_t have_env; int pass; MemSize = MIN_MEM_SIZE; TrapParms = NULL; _SwitchOn( SW_LOAD_SYMS ); _SwitchOn( SW_USE_MOUSE ); ProcSysOptInit(); DUIScreenOptInit(); have_env = DUIEnvLkup( EXENAME, buff, sizeof( buff ) ); for( pass = 1; pass <= 2; ++pass ) { if( have_env ) { GetArg = &GetEnvArg; CurrArgc = 0; CurrArgp = buff; ProcOptList( pass ); if( CurrChar != ARG_TERMINATE ) { OptError( LIT_ENG( STARTUP_Expect_End_Env_Str ) ); } } GetArg = &GetCmdArg; CurrArgc = 0; CurrArgp = GetCmdArg( 0 ); if( CurrArgp != NULL ) { ProcOptList( pass ); if( pass == 2 ) { SetCmdArgStart( CurrArgc, CurrArgp ); } } if( pass == 1 ) { screen_mem = DUIConfigScreen(); if( MemSize + screen_mem >= MemSize ) { MemSize += screen_mem; } else { MemSize = ~0; } SysSetMemLimit(); TrapParms = DupStr( "std" ); InvokeFile = DupStr( "" ); } } }
bool InitCmd( void ) { unsigned argc; char *curr; char *ptr; char *end; char *parm; char *last; unsigned total; char *start; char c; curr = GetCmdArg( 0 ); if( curr != NULL ) { while( *curr == ' ' || *curr == '\t' ) ++curr; if( *curr == SYM_FILE_IND ) { ++curr; while( *curr == ' ' || *curr == '\t' ) ++curr; start = curr; while( *curr != ' ' && *curr != '\t' && *curr != NULLCHAR ) ++curr; _Alloc( parm, curr - start + 1 ); if( parm == NULL ) return( false ); SymFileName = parm; while( start < curr ) *parm++ = *start++; *parm = NULLCHAR; while( *curr == ' ' || *curr == '\t' ) ++curr; argc = 0; if( *curr == NULLCHAR ) { curr = GetCmdArg( ++argc ); } SetCmdArgStart( argc, curr ); } } total = 0; for( argc = 0; (curr = GetCmdArg( argc )) != NULL; ++argc ) { while( *curr++ != NULLCHAR ) ++total; ++total; } _Alloc( TaskCmd, total + 2 ); if( TaskCmd == NULL ) return( false ); ptr = TaskCmd; for( argc = 0; (curr = GetCmdArg( argc )) != NULL; ++argc ) { while( (c = *curr++) != NULLCHAR ) { if( c == ARG_TERMINATE ) c = ' '; *ptr++ = c; } *ptr++ = NULLCHAR; } *ptr = ARG_TERMINATE; last = ptr; RemoteSplitCmd( TaskCmd, &end, &parm ); for( ptr = TaskCmd; ptr < end; ++ptr ) { if( *ptr == NULLCHAR ) { *ptr = ' '; } } memmove( ptr + 1, parm, last - parm + 1 ); *ptr = NULLCHAR; ptr = TaskCmd; // If the program name was quoted, strip off the quotes if( *ptr == '"' ) { memmove( ptr, ptr + 1, end - ptr ); memmove( end - 2, end, last - end + 1 ); } return( true ); }