X-Git-Url: https://git.cryptolib.org/?p=arm-crypto-lib.git;a=blobdiff_plain;f=test_src%2Fcli.c;h=c9e1b31aabc3a144a4cc512b063c99d6f99bec65;hp=3ecdf6cd9e7b8c4d5151f18305082f03d5ef1886;hb=a0b23b3327c8bc2ecd7278c95662fdebf6f15d6b;hpb=5f46191d2615ebe2caa6e111b478031a34f20b9e diff --git a/test_src/cli.c b/test_src/cli.c index 3ecdf6c..c9e1b31 100644 --- a/test_src/cli.c +++ b/test_src/cli.c @@ -1,7 +1,7 @@ /* cli.c */ /* This file is part of the ARM-Crypto-Lib. - Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -81,7 +81,7 @@ uint16_t cli_getc_cecho(void){ } /** - * \brief outputs a zero-terminated string from ram to the console + * \brief ouputs a zero-terminated string from ram to the console */ void cli_putstr(const char* s){ if(!cli_tx) @@ -93,8 +93,8 @@ void cli_putstr(const char* s){ /** * \brief reads a line or max n characters from the console - * Writes characters from the console into the supplied buffer until a '\r' - * character is received or until n character a read (whatever happens first). + * Writes characters from the console into the supplyed buffer until a '\r' + * character is recieved or until n character a read (whatever happens first). * The string will always be terminated by a '\0' character, so the buffer * should have at least a size of n+1. */ @@ -102,7 +102,8 @@ uint8_t cli_getsn(char* s, uint32_t n){ char c; if(n==0) return 2; - while((c=cli_getc_cecho())!='\0' && c!='\r' && n--){ + while((c=cli_getc_cecho())!='\0' && c!='\r' && n){ + --n; *s++=c; } *s='\0'; @@ -242,7 +243,10 @@ typedef void(*str_fpt)(char*); static int8_t search_and_call(char* cmd, uint32_t maxcmdlength, const cmdlist_entry_t* cmdlist){ - const cmdlist_entry_t* cmdlist_orig = cmdlist; + const cmdlist_entry_t* cmdlist_orig=cmdlist; + if(!cmdlist){ + return 3; + } if(*cmd=='\0' || *cmd=='#') return 1; if(!strcmp(cmd, "exit")) @@ -256,15 +260,13 @@ int8_t search_and_call(char* cmd, uint32_t maxcmdlength, const cmdlist_entry_t* memcpy(fw, cmd, fwlength); fw[fwlength] = '\0'; cmdlist_entry_t item; - do{ - memcpy(&item, cmdlist, sizeof(cmdlist_entry_t)); - cmdlist += 1; - }while(item.cmd_name!=NULL && strcmp(fw, item.cmd_name)); - if(item.cmd_name==NULL){ + while(cmdlist->cmd_name && strcmp(fw, cmdlist->cmd_name)){ + ++cmdlist; + } + if(!cmdlist->cmd_name){ cli_auto_help(maxcmdlength, cmdlist_orig); } else { - if(item.cmd_function==NULL) - return 2; + memcpy(&item, cmdlist, sizeof(cmdlist_entry_t)); switch((uint32_t)item.cmd_param_str){ case 0: item.cmd_function(); @@ -285,13 +287,13 @@ int8_t search_and_call(char* cmd, uint32_t maxcmdlength, const cmdlist_entry_t* return 1; } -static const +static uint16_t max_cmd_length(const cmdlist_entry_t* cmdlist){ uint16_t t,ret=0; const char* str; for(;;){ str = cmdlist->cmd_name; - cmdlist += 1; + ++cmdlist; if(str==NULL){ return ret; } @@ -309,14 +311,14 @@ uint8_t cli_completion(char* buffer, uint16_t maxcmdlength, const cmdlist_entry_ ref[0]='\0'; /* check if we are behind the first word */ while(buffer[i]){ - if(!isgraph(buffer[i++])) + if(!isgraph((uint8_t)(buffer[i++]))) return 0; } for(;;){ itemstr = cmdlist->cmd_name; if(itemstr==NULL) break; - cmdlist += 1; + ++cmdlist; if(!strncmp(buffer, itemstr, i)){ if(!ref[0]){ strcpy(ref, itemstr);