parent
							
								
									122bdd187f
								
							
						
					
					
						commit
						f423716c6a
					
				| @ -5965,28 +5965,34 @@ void process_next_command() { | |||||||
|   char* starpos = strchr(current_command, '*');  // * should always be the last parameter
 |   char* starpos = strchr(current_command, '*');  // * should always be the last parameter
 | ||||||
|   if (starpos) while (*starpos == ' ' || *starpos == '*') *starpos-- = '\0'; // nullify '*' and ' '
 |   if (starpos) while (*starpos == ' ' || *starpos == '*') *starpos-- = '\0'; // nullify '*' and ' '
 | ||||||
| 
 | 
 | ||||||
|   // Get the command code, which must be G, M, or T
 |   char *cmd_ptr = current_command; | ||||||
|   char command_code = *current_command; |  | ||||||
| 
 | 
 | ||||||
|   // Skip the letter-code and spaces to get the numeric part
 |   // Get the command code, which must be G, M, or T
 | ||||||
|   current_command_args = current_command + 1; |   char command_code = *cmd_ptr++; | ||||||
|   while (*current_command_args == ' ') ++current_command_args; | 
 | ||||||
|  |   // Skip spaces to get the numeric part
 | ||||||
|  |   while (*cmd_ptr == ' ') cmd_ptr++; | ||||||
| 
 | 
 | ||||||
|   // The code must have a numeric value
 |   // The code must have a numeric value
 | ||||||
|   bool code_is_good = (*current_command_args >= '0' && *current_command_args <= '9'); |   bool code_is_good = false; | ||||||
| 
 | 
 | ||||||
|   int codenum; // define ahead of goto
 |   int codenum = 0; // define ahead of goto
 | ||||||
|  | 
 | ||||||
|  |   // Get and skip the code number
 | ||||||
|  |   while (*cmd_ptr >= '0' && *cmd_ptr <= '9') { | ||||||
|  |     code_is_good = true; | ||||||
|  |     codenum = codenum * 10 + *cmd_ptr - '0'; | ||||||
|  |     cmd_ptr++; | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   // Bail early if there's no code
 |   // Bail early if there's no code
 | ||||||
|   if (!code_is_good) goto ExitUnknownCommand; |   if (!code_is_good) goto ExitUnknownCommand; | ||||||
| 
 | 
 | ||||||
|   // Args pointer optimizes code_seen, especially those taking XYZEF
 |   // Skip all spaces to get to the first argument
 | ||||||
|   // This wastes a little cpu on commands that expect no arguments.
 |   while (*cmd_ptr == ' ') cmd_ptr++; | ||||||
|   while (*current_command_args == ' ' || (*current_command_args >= '0' && *current_command_args <= '9')) ++current_command_args; |  | ||||||
| 
 | 
 | ||||||
|   // Interpret the code int
 |   // The command's arguments start here, for sure!
 | ||||||
|   seen_pointer = current_command; |   current_command_args = cmd_ptr; | ||||||
|   codenum = code_value_short(); |  | ||||||
| 
 | 
 | ||||||
|   KEEPALIVE_STATE(IN_HANDLER); |   KEEPALIVE_STATE(IN_HANDLER); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user