From 42daa759c16328607aff6ab35ef97656ad2050da Mon Sep 17 00:00:00 2001 From: "martin.holst@gmail.com" Date: Thu, 19 Sep 2013 19:53:09 +0000 Subject: [PATCH 1/1] Only superficial changes, to get rid of compiler warnings --- client/cmdmain.c | 103 +++++++++++++++++++++++---------------------- client/cmdscript.c | 7 +-- client/scripting.c | 15 ++++--- 3 files changed, 64 insertions(+), 61 deletions(-) diff --git a/client/cmdmain.c b/client/cmdmain.c index b6f32ada..59ab8bf5 100644 --- a/client/cmdmain.c +++ b/client/cmdmain.c @@ -67,6 +67,58 @@ int CmdQuit(const char *Cmd) exit(0); return 0; } +/** + * @brief This method should be called when sending a new command to the pm3. In case any old + * responses from previous commands are stored in the buffer, a call to this method should clear them. + * A better method could have been to have explicit command-ACKS, so we can know which ACK goes to which + * operation. Right now we'll just have to live with this. + */ +void clearCommandBuffer() +{ + //This is a very simple operation + cmd_tail = cmd_head; +} + +/** + * @brief storeCommand stores a USB command in a circular buffer + * @param UC + */ +void storeCommand(UsbCommand *command) +{ + if( ( cmd_head+1) % CMD_BUFFER_SIZE == cmd_tail) + { + //If these two are equal, we're about to overwrite in the + // circular buffer. + PrintAndLog("WARNING: Command buffer about to overwrite command! This needs to be fixed!"); + } + //Store the command at the 'head' location + UsbCommand* destination = &cmdBuffer[cmd_head]; + memcpy(destination, command, sizeof(UsbCommand)); + + cmd_head = (cmd_head +1) % CMD_BUFFER_SIZE; //increment head and wrap + +} +/** + * @brief getCommand gets a command from an internal circular buffer. + * @param response location to write command + * @return 1 if response was returned, 0 if nothing has been received + */ +int getCommand(UsbCommand* response) +{ + //If head == tail, there's nothing to read, or if we just got initialized + if(cmd_head == cmd_tail){ + return 0; + } + //Pick out the next unread command + UsbCommand* last_unread = &cmdBuffer[cmd_tail]; + memcpy(response, last_unread, sizeof(UsbCommand)); + //Increment tail - this is a circular buffer, so modulo buffer size + cmd_tail = (cmd_tail +1 ) % CMD_BUFFER_SIZE; + + return 1; + +} + /** * Waits for a certain response type. This method waits for a maximum of * ms_timeout milliseconds for a specified response command. @@ -213,54 +265,3 @@ void UsbCommandReceived(UsbCommand *UC) } -/** - * @brief This method should be called when sending a new command to the pm3. In case any old - * responses from previous commands are stored in the buffer, a call to this method should clear them. - * A better method could have been to have explicit command-ACKS, so we can know which ACK goes to which - * operation. Right now we'll just have to live with this. - */ -void clearCommandBuffer() -{ - //This is a very simple operation - cmd_tail = cmd_head; -} - -/** - * @brief storeCommand stores a USB command in a circular buffer - * @param UC - */ -void storeCommand(UsbCommand *command) -{ - if( ( cmd_head+1) % CMD_BUFFER_SIZE == cmd_tail) - { - //If these two are equal, we're about to overwrite in the - // circular buffer. - PrintAndLog("WARNING: Command buffer about to overwrite command! This needs to be fixed!"); - } - //Store the command at the 'head' location - UsbCommand* destination = &cmdBuffer[cmd_head]; - memcpy(destination, command, sizeof(UsbCommand)); - - cmd_head = (cmd_head +1) % CMD_BUFFER_SIZE; //increment head and wrap - -} -/** - * @brief getCommand gets a command from an internal circular buffer. - * @param response location to write command - * @return 1 if response was returned, 0 if nothing has been received - */ -int getCommand(UsbCommand* response) -{ - //If head == tail, there's nothing to read, or if we just got initialized - if(cmd_head == cmd_tail){ - return 0; - } - //Pick out the next unread command - UsbCommand* last_unread = &cmdBuffer[cmd_tail]; - memcpy(response, last_unread, sizeof(UsbCommand)); - //Increment tail - this is a circular buffer, so modulo buffer size - cmd_tail = (cmd_tail +1 ) % CMD_BUFFER_SIZE; - - return 1; - -} diff --git a/client/cmdscript.c b/client/cmdscript.c index e4666dbf..f57724af 100644 --- a/client/cmdscript.c +++ b/client/cmdscript.c @@ -65,6 +65,7 @@ int str_ends_with(const char * str, const char * suffix) { int CmdHelp(const char * Cmd) { PrintAndLog("This is a feature to run Lua-scripts. You can place lua-scripts within the scripts/-folder. "); + return 0; } /** @@ -80,7 +81,7 @@ int CmdList(const char *Cmd) if (dp != NULL) { - while (ep = readdir (dp)) + while ((ep = readdir (dp)) != NULL) { if(ep->d_name != NULL && str_ends_with(ep->d_name, ".lua")) PrintAndLog("%-16s %s", ep->d_name, "A script file"); @@ -189,7 +190,6 @@ static void set_cmdlibraries(lua_State *L) //-- remove the global environment table from the stack lua_pop(L, 1); - return 1; } /** * Utility to check the ending of a string (used to check file suffix) @@ -270,12 +270,13 @@ int CmdRun(const char *Cmd) // get the top of the stack as the error and pop it off const char * str = lua_tostring(lua_state, lua_gettop(lua_state)); lua_pop(lua_state, 1); - printf(str); + puts(str); } //luaL_dofile(lua_state, buf); // close the Lua state lua_close(lua_state); printf("\n-----Finished\n"); + return 0; } diff --git a/client/scripting.c b/client/scripting.c index edaa926c..82d6ffc9 100644 --- a/client/scripting.c +++ b/client/scripting.c @@ -51,7 +51,7 @@ static int l_SendCommand(lua_State *L){ } // UsbCommand c = (*data); - SendCommand(data); + SendCommand((UsbCommand* )data); return 0; // no return values } /** @@ -93,7 +93,7 @@ static int l_WaitForResponseTimeout(lua_State *L){ if(WaitForResponseTimeout(cmd, &response, ms_timeout)) { //Push it as a string - lua_pushlstring(L,&response,sizeof(UsbCommand)); + lua_pushlstring(L,(const char *)&response,sizeof(UsbCommand)); return 1;// return 1 to signal one return value }else{ @@ -102,10 +102,11 @@ static int l_WaitForResponseTimeout(lua_State *L){ return 1;// one return value } } -static int l_nonce2key(lua_State *L){ return CmdHF14AMfRdSc(luaL_checkstring(L, 1));} -static int l_PrintAndLog(lua_State *L){ return CmdHF14AMfDump(luaL_checkstring(L, 1));} +//static int l_nonce2key(lua_State *L){ return CmdHF14AMfRdSc(luaL_checkstring(L, 1));} +//static int l_PrintAndLog(lua_State *L){ return CmdHF14AMfDump(luaL_checkstring(L, 1));} static int l_clearCommandBuffer(lua_State *L){ clearCommandBuffer(); + return 0; } /** * @brief l_foobar is a dummy function to test lua-integration with @@ -121,7 +122,7 @@ static int l_foobar(lua_State *L) printf("Arguments discarded, stack now contains %d elements", lua_gettop(L)); UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}}; printf("Now returning a UsbCommand as a string"); - lua_pushlstring(L,&response,sizeof(UsbCommand)); + lua_pushlstring(L,(const char *)&response,sizeof(UsbCommand)); return 1; } @@ -141,8 +142,8 @@ int set_pm3_libraries(lua_State *L) static const luaL_Reg libs[] = { {"SendCommand", l_SendCommand}, {"WaitForResponseTimeout", l_WaitForResponseTimeout}, - {"nonce2key", l_nonce2key}, - {"PrintAndLog", l_PrintAndLog}, + //{"nonce2key", l_nonce2key}, + //{"PrintAndLog", l_PrintAndLog}, {"foobar", l_foobar}, {"ukbhit", l_ukbhit}, {"clearCommandBuffer", l_clearCommandBuffer}, -- 2.39.5