mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-04 00:31:14 +02:00
initial commit of public abc
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
/**CFile****************************************************************
|
||||
|
||||
FileName [cmdApi.c]
|
||||
|
||||
SystemName [ABC: Logic synthesis and verification system.]
|
||||
|
||||
PackageName [Command processing package.]
|
||||
|
||||
Synopsis [External procedures of the command package.]
|
||||
|
||||
Author [Alan Mishchenko]
|
||||
|
||||
Affiliation [UC Berkeley]
|
||||
|
||||
Date [Ver. 1.0. Started - June 20, 2005.]
|
||||
|
||||
Revision [$Id: cmdApi.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
|
||||
|
||||
***********************************************************************/
|
||||
|
||||
#include "abc.h"
|
||||
#include "mainInt.h"
|
||||
#include "cmd.h"
|
||||
#include "cmdInt.h"
|
||||
|
||||
ABC_NAMESPACE_IMPL_START
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// DECLARATIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static int CmdCommandLoad ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// FUNCTION DEFINITIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**Function********************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
******************************************************************************/
|
||||
int CmdCommandLoad( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
{
|
||||
Vec_Str_t * vCommand;
|
||||
FILE * pFile;
|
||||
int i;
|
||||
vCommand = Vec_StrAlloc( 100 );
|
||||
Vec_StrAppend( vCommand, "abccmd_" );
|
||||
Vec_StrAppend( vCommand, argv[0] );
|
||||
Vec_StrAppend( vCommand, ".exe" );
|
||||
Vec_StrPush( vCommand, 0 );
|
||||
// check if there is the binary
|
||||
if ( (pFile = fopen( Vec_StrArray(vCommand), "r" )) == NULL )
|
||||
{
|
||||
Abc_Print( -1, "Cannot run the binary \"%s\".\n\n", Vec_StrArray(vCommand) );
|
||||
return 1;
|
||||
}
|
||||
fclose( pFile );
|
||||
Vec_StrPop( vCommand );
|
||||
// add other arguments
|
||||
for ( i = 1; i < argc; i++ )
|
||||
{
|
||||
Vec_StrAppend( vCommand, " " );
|
||||
Vec_StrAppend( vCommand, argv[i] );
|
||||
}
|
||||
Vec_StrPush( vCommand, 0 );
|
||||
// run the command line
|
||||
if ( system( Vec_StrArray(vCommand) ) )
|
||||
{
|
||||
Abc_Print( -1, "The following command has returned non-zero exit status:\n" );
|
||||
Abc_Print( -1, "\"%s\"\n", Vec_StrArray(vCommand) );
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
#if defined(WIN32) && !defined(__cplusplus)
|
||||
|
||||
#include <direct.h>
|
||||
|
||||
|
||||
// these structures are defined in <io.h> but are for some reason invisible
|
||||
typedef unsigned long _fsize_t; // Could be 64 bits for Win32
|
||||
|
||||
struct _finddata_t {
|
||||
unsigned attrib;
|
||||
time_t time_create; // -1 for FAT file systems
|
||||
time_t time_access; // -1 for FAT file systems
|
||||
time_t time_write;
|
||||
_fsize_t size;
|
||||
char name[260];
|
||||
};
|
||||
|
||||
extern long _findfirst( char *filespec, struct _finddata_t *fileinfo );
|
||||
extern int _findnext( long handle, struct _finddata_t *fileinfo );
|
||||
extern int _findclose( long handle );
|
||||
|
||||
//extern char * _getcwd( char * buffer, int maxlen );
|
||||
//extern int _chdir( const char *dirname );
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Collect file names ending with .exe]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Vec_Ptr_t * CmdCollectFileNames()
|
||||
{
|
||||
Vec_Ptr_t * vFileNames;
|
||||
struct _finddata_t c_file;
|
||||
long hFile;
|
||||
if( (hFile = _findfirst( "*.exe", &c_file )) == -1L )
|
||||
{
|
||||
// Abc_Print( 0, "No files with extention \"%s\" in the current directory.\n", "exe" );
|
||||
return NULL;
|
||||
}
|
||||
vFileNames = Vec_PtrAlloc( 100 );
|
||||
do {
|
||||
Vec_PtrPush( vFileNames, Extra_UtilStrsav( c_file.name ) );
|
||||
} while( _findnext( hFile, &c_file ) == 0 );
|
||||
_findclose( hFile );
|
||||
return vFileNames;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Collect file names ending with .exe]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Vec_Ptr_t * CmdCollectFileNames()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Load_Init( Abc_Frame_t * pAbc )
|
||||
{
|
||||
Vec_Ptr_t * vFileNames;
|
||||
char * pName, * pStop;
|
||||
int i;
|
||||
vFileNames = CmdCollectFileNames();
|
||||
if ( vFileNames == NULL )
|
||||
return;
|
||||
Vec_PtrForEachEntry( char *, vFileNames, pName, i )
|
||||
{
|
||||
if ( strncmp( pName, "abccmd_", 7 ) )
|
||||
continue;
|
||||
// get the command name
|
||||
// pName[6] = '!';
|
||||
pStop = strstr( pName + 7, "." );
|
||||
if ( pStop )
|
||||
*pStop = 0;
|
||||
// add the command
|
||||
Cmd_CommandAdd( pAbc, "ZZ", pName+7, CmdCommandLoad, 0 );
|
||||
// printf( "Loaded command \"%s\"\n", pName+7 );
|
||||
}
|
||||
Vec_PtrFreeFree( vFileNames );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Load_End( Abc_Frame_t * pAbc )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// END OF FILE ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ABC_NAMESPACE_IMPL_END
|
||||
|
||||
Reference in New Issue
Block a user