]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Avoid putting blank entries in history, allow linefeed for enter
authorMatt Ventura <mattventura@mattventura.net>
Fri, 5 Jun 2015 00:42:58 +0000 (17:42 -0700)
committerMatt Ventura <mattventura@mattventura.net>
Fri, 5 Jun 2015 00:42:58 +0000 (17:42 -0700)
Debug/cli/cli.c

index 83bdfdc8f175b0a401a9d1ccd536c2644f69bccd..a5aa94c84daa80b59753800b76f946bc4c078f61 100644 (file)
@@ -149,31 +149,41 @@ void CLI_process()
                // 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 @@ void CLI_process()
                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 )