summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-08-25 13:43:44 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-08-25 13:43:44 -0700
commitbffbd05a2f56d96df2485fad7b224e018a3a6d5f (patch)
tree8d9aef4c77f4d83d4b5cf92739079922f0af4c07 /src
parent19d50b98a192013ced1963e5ccb3801082067dbc (diff)
downloadabc-bffbd05a2f56d96df2485fad7b224e018a3a6d5f.tar.gz
abc-bffbd05a2f56d96df2485fad7b224e018a3a6d5f.tar.bz2
abc-bffbd05a2f56d96df2485fad7b224e018a3a6d5f.zip
Added recording history of used commands into file 'abc.history' (Windows only).
Diffstat (limited to 'src')
-rw-r--r--src/base/cmd/cmd.c4
-rw-r--r--src/base/cmd/cmdHist.c17
2 files changed, 9 insertions, 12 deletions
diff --git a/src/base/cmd/cmd.c b/src/base/cmd/cmd.c
index 8c40e71e..3180c3e4 100644
--- a/src/base/cmd/cmd.c
+++ b/src/base/cmd/cmd.c
@@ -79,9 +79,7 @@ void Cmd_Init( Abc_Frame_t * pAbc )
pAbc->tAliases = st_init_table(strcmp, st_strhash);
pAbc->tFlags = st_init_table(strcmp, st_strhash);
pAbc->aHistory = Vec_PtrAlloc( 100 );
-#if defined(WIN32)
Cmd_HistoryRead( pAbc );
-#endif
Cmd_CommandAdd( pAbc, "Basic", "time", CmdCommandTime, 0 );
Cmd_CommandAdd( pAbc, "Basic", "echo", CmdCommandEcho, 0 );
@@ -124,9 +122,7 @@ void Cmd_End( Abc_Frame_t * pAbc )
{
st_generator * gen;
char * pKey, * pValue;
-#if defined(WIN32)
Cmd_HistoryWrite( pAbc, ABC_INFINITY );
-#endif
// st_free_table( pAbc->tCommands, (void (*)()) 0, CmdCommandFree );
// st_free_table( pAbc->tAliases, (void (*)()) 0, CmdCommandAliasFree );
diff --git a/src/base/cmd/cmdHist.c b/src/base/cmd/cmdHist.c
index 359646a6..5885b1b5 100644
--- a/src/base/cmd/cmdHist.c
+++ b/src/base/cmd/cmdHist.c
@@ -47,8 +47,8 @@ ABC_NAMESPACE_IMPL_START
***********************************************************************/
void Cmd_HistoryAddCommand( Abc_Frame_t * p, const char * command )
{
- int nLastLooked = 10; // defines how many entries back are looked
- int nLastSaved = 100; // defines how many last entries are saved
+ int nLastLooked = 10; // do not add history if the same entry appears among the last entries
+ int nLastSaved = 100; // when saving a file, save no more than this number of last entries
char Buffer[ABC_MAX_STR];
int Len = strlen(command);
@@ -61,9 +61,9 @@ void Cmd_HistoryAddCommand( Abc_Frame_t * p, const char * command )
strncmp(Buffer,"history",7) && strncmp(Buffer,"hi ", 3) && strcmp(Buffer,"hi") )
{
char * pStr;
- int i;
- // do not enter if the same command appears among the last five commands
- Vec_PtrForEachEntryStart( char *, p->aHistory, pStr, i, Abc_MaxInt(0, Vec_PtrSize(p->aHistory)-nLastLooked) )
+ int i, Start = Abc_MaxInt( 0, Vec_PtrSize(p->aHistory) - nLastLooked );
+ // do not enter if the same command appears among nLastLooked commands
+ Vec_PtrForEachEntryStart( char *, p->aHistory, pStr, i, Start )
if ( !strcmp(pStr, Buffer) )
break;
if ( i == Vec_PtrSize(p->aHistory) )
@@ -87,15 +87,13 @@ void Cmd_HistoryAddCommand( Abc_Frame_t * p, const char * command )
***********************************************************************/
void Cmd_HistoryRead( Abc_Frame_t * p )
{
+#if defined(WIN32)
char Buffer[ABC_MAX_STR];
FILE * pFile;
assert( Vec_PtrSize(p->aHistory) == 0 );
pFile = fopen( "abc.history", "rb" );
if ( pFile == NULL )
- {
-// Abc_Print( 0, "Cannot open file \"abc.history\" for reading.\n" );
return;
- }
while ( fgets( Buffer, ABC_MAX_STR, pFile ) != NULL )
{
int Len = strlen(Buffer);
@@ -104,6 +102,7 @@ void Cmd_HistoryRead( Abc_Frame_t * p )
Vec_PtrPush( p->aHistory, Extra_UtilStrsav(Buffer) );
}
fclose( pFile );
+#endif
}
/**Function*************************************************************
@@ -119,6 +118,7 @@ void Cmd_HistoryRead( Abc_Frame_t * p )
***********************************************************************/
void Cmd_HistoryWrite( Abc_Frame_t * p, int Limit )
{
+#if defined(WIN32)
FILE * pFile;
char * pStr;
int i;
@@ -132,6 +132,7 @@ void Cmd_HistoryWrite( Abc_Frame_t * p, int Limit )
Vec_PtrForEachEntryStart( char *, p->aHistory, pStr, i, Limit )
fprintf( pFile, "%s\n", pStr );
fclose( pFile );
+#endif
}
////////////////////////////////////////////////////////////////////////