Version abc80705

This commit is contained in:
Alan Mishchenko
2008-07-05 08:01:00 -07:00
parent 17ab7c7135
commit 7b734f23fc
23 changed files with 520 additions and 54 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ int Cmd_CommandExecute( Abc_Frame_t * pAbc, char * sCommand )
loop = 0;
fStatus = CmdApplyAlias( pAbc, &argc, &argv, &loop );
if ( fStatus == 0 )
fStatus = CmdCommandDispatch( pAbc, argc, argv );
fStatus = CmdCommandDispatch( pAbc, &argc, &argv );
CmdFreeArgv( argc, argv );
}
while ( fStatus == 0 && *sCommandNext != '\0' );
+2 -1
View File
@@ -65,12 +65,13 @@ extern void CmdCommandAliasPrint( Abc_Frame_t * pAbc, Abc_Alias * pAlias )
extern char * CmdCommandAliasLookup( Abc_Frame_t * pAbc, char * sCommand );
extern void CmdCommandAliasFree( Abc_Alias * p );
/*=== cmdUtils.c =======================================================*/
extern int CmdCommandDispatch( Abc_Frame_t * pAbc, int argc, char ** argv );
extern int CmdCommandDispatch( Abc_Frame_t * pAbc, int * argc, char *** argv );
extern char * CmdSplitLine( Abc_Frame_t * pAbc, char * sCommand, int * argc, char *** argv );
extern int CmdApplyAlias( Abc_Frame_t * pAbc, int * argc, char *** argv, int * loop );
extern char * CmdHistorySubstitution( Abc_Frame_t * pAbc, char * line, int * changed );
extern FILE * CmdFileOpen( Abc_Frame_t * pAbc, char * sFileName, char * sMode, char ** pFileNameReal, int silent );
extern void CmdFreeArgv( int argc, char ** argv );
extern char ** CmdAddToArgv( int argc, char ** argv );
extern void CmdCommandFree( Abc_Command * pCommand );
extern void CmdCommandPrint( Abc_Frame_t * pAbc, bool fPrintAll );
extern void CmdPrintTable( st_table * tTable, int fAliases );
+39 -4
View File
@@ -85,8 +85,12 @@ int cmdCheckShellEscape( Abc_Frame_t * pAbc, int argc, char ** argv)
SeeAlso []
***********************************************************************/
int CmdCommandDispatch( Abc_Frame_t * pAbc, int argc, char **argv )
int CmdCommandDispatch( Abc_Frame_t * pAbc, int * pargc, char *** pargv )
{
int argc = *pargc;
char ** argv = *pargv;
char ** argv2;
Abc_Ntk_t * pNetCopy;
int (*pFunc) ( Abc_Frame_t *, int, char ** );
Abc_Command * pCommand;
@@ -103,8 +107,17 @@ int CmdCommandDispatch( Abc_Frame_t * pAbc, int argc, char **argv )
// get the command
if ( !st_lookup( pAbc->tCommands, argv[0], (char **)&pCommand ) )
{ // the command is not in the table
fprintf( pAbc->Err, "** cmd error: unknown command '%s'\n", argv[0] );
return 1;
// fprintf( pAbc->Err, "** cmd error: unknown command '%s'\n", argv[0] );
// return 1;
// add command 'read' assuming that this is the file name
argv2 = CmdAddToArgv( argc, argv );
CmdFreeArgv( argc, argv );
argc = argc+1;
argv = argv2;
*pargc = argc;
*pargv = argv;
if ( !st_lookup( pAbc->tCommands, argv[0], (char **)&pCommand ) )
assert( 0 );
}
// get the backup network if the command is going to change the network
@@ -303,7 +316,7 @@ int CmdApplyAlias( Abc_Frame_t * pAbc, int *argcp, char ***argvp, int *loop )
fError = CmdApplyAlias( pAbc, &newc, &newv, loop );
if ( fError == 0 )
{
fError = CmdCommandDispatch( pAbc, newc, newv );
fError = CmdCommandDispatch( pAbc, &newc, &newv );
}
CmdFreeArgv( newc, newv );
}
@@ -453,6 +466,28 @@ void CmdFreeArgv( int argc, char **argv )
FREE( argv );
}
/**Function*************************************************************
Synopsis [Frees the previously allocated argv array.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
char ** CmdAddToArgv( int argc, char ** argv )
{
char ** argv2;
int i;
argv2 = ALLOC( char *, argc + 1 );
argv2[0] = Extra_UtilStrsav( "read" );
for ( i = 0; i < argc; i++ )
argv2[i+1] = Extra_UtilStrsav( argv[i] );
return argv2;
}
/**Function*************************************************************
Synopsis [Frees the previously allocated command.]