mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-03 08:25:20 +02:00
Version abc80705
This commit is contained in:
@@ -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' );
|
||||
|
||||
@@ -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
@@ -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.]
|
||||
|
||||
Reference in New Issue
Block a user