# HG changeset patch # User Matt Ventura # Date 1433464978 25200 # Node ID 9dd55aa71d7687e4fc46598bff8eff11f6f2fe87 # Parent b2c8581307bc44482c2f82113929d7b4a6ae1df1 Avoid putting blank entries in history, allow linefeed for enter diff -r b2c8581307bc -r 9dd55aa71d76 Debug/cli/cli.c --- a/Debug/cli/cli.c Wed May 13 21:58:22 2015 -0700 +++ b/Debug/cli/cli.c Thu Jun 04 17:42:58 2015 -0700 @@ -149,32 +149,42 @@ // Check for control characters switch ( CLILineBuffer[prev_buf_pos] ) { - case 0x0D: // Enter + // Enter + case 0x0A: // LF + case 0x0D: // CR CLILineBuffer[CLILineBufferCurrent - 1] = ' '; // Replace Enter with a space (resolves a bug in args) // Remove the space if there is no command if ( CLILineBufferCurrent == 1 ) + { CLILineBufferCurrent--; + } + else + { + // Only do command-related stuff if there was actually a command + // Avoids clogging command history with blanks - // Process the current line buffer - CLI_commandLookup(); + // Process the current line buffer + CLI_commandLookup(); - // Add the command to the history - CLI_saveHistory( CLILineBuffer ); + // Add the command to the history + CLI_saveHistory( CLILineBuffer ); - // Keep the array circular, discarding the older entries - if ( CLIHistoryTail < CLIHistoryHead ) - CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; - CLIHistoryTail++; - if ( CLIHistoryTail == CLIMaxHistorySize ) - { - CLIHistoryTail = 0; - CLIHistoryHead = 1; + // Keep the array circular, discarding the older entries + if ( CLIHistoryTail < CLIHistoryHead ) + CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; + CLIHistoryTail++; + if ( CLIHistoryTail == CLIMaxHistorySize ) + { + CLIHistoryTail = 0; + CLIHistoryHead = 1; + } + + CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item + CLI_saveHistory( NULL ); // delete the old temp buffer + } - CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item - CLI_saveHistory( NULL ); // delete the old temp buffer - // Reset the buffer CLILineBufferCurrent = 0; @@ -199,7 +209,7 @@ case 0x1B: // Esc / Escape codes // Check for other escape sequence - // \e[ is an escape code in vt100 compatable terminals + // \e[ is an escape code in vt100 compatible terminals if ( CLILineBufferCurrent >= prev_buf_pos + 3 && CLILineBuffer[ prev_buf_pos ] == 0x1B && CLILineBuffer[ prev_buf_pos + 1] == 0x5B )