Fixing some issues spotted by graham's run of clang's static analyser
authorJohn Hodge <[email protected]>
Mon, 21 Mar 2011 01:04:52 +0000 (09:04 +0800)
committerJohn Hodge <[email protected]>
Mon, 21 Mar 2011 01:04:52 +0000 (09:04 +0800)
src/client/main.c
src/server/itemdb.c
src/server/server.c

index d5ef77a..fc7c19f 100644 (file)
@@ -402,7 +402,11 @@ int main(int argc, char *argv[])
                                ret = Dispense_AlterBalance(sock, gsTextArgs[1], atoi(gsTextArgs[2]), gsTextArgs[3]);
                        }
                }
-               // TODO: Preserve ret if non-zero
+               // On error, quit
+               if( ret ) {
+                       close(sock);
+                       return ret;
+               }
                
                // Show user information
                ret = Dispense_ShowUser(sock, gsTextArgs[1]);
@@ -550,7 +554,7 @@ int main(int argc, char *argv[])
 
                // TODO: More
                close(sock);
-               return RV_UNKNOWN_ERROR;
+               return ret;
        }
        // Query an item price
        else if( strcmp(gsTextArgs[0], "iteminfo") == 0 )
@@ -1533,7 +1537,7 @@ void PopulateItemList(int Socket)
        char    *buf;
         int    responseCode;
        
-       char    *itemType, *itemStart;
+       char    *arrayType;
         int    count, i;
        regmatch_t      matches[4];
        
@@ -1556,19 +1560,16 @@ void PopulateItemList(int Socket)
        //  202 Item <count>
        RunRegex(&gArrayRegex, buf, 4, matches, "Malformed server response");
                
-       itemType = &buf[ matches[2].rm_so ];    buf[ matches[2].rm_eo ] = '\0';
+       arrayType = &buf[ matches[2].rm_so ];   buf[ matches[2].rm_eo ] = '\0';
        count = atoi( &buf[ matches[3].rm_so ] );
                
        // Check array type
-       if( strcmp(itemType, "Items") != 0 ) {
+       if( strcmp(arrayType, "Items") != 0 ) {
                // What the?!
                fprintf(stderr, "Unexpected array type, expected 'Items', got '%s'\n",
-                       itemType);
+                       arrayType);
                exit(RV_UNKNOWN_ERROR);
        }
-               
-       itemStart = &buf[ matches[3].rm_eo ];
-       
        free(buf);
        
        giNumItems = count;
index a88fad8..18a1487 100644 (file)
@@ -31,7 +31,7 @@ char  *trim(char *__str);
  int   giNumItems = 0;
 tItem  *gaItems = NULL;
 time_t gItems_LastUpdated;
-tHandler       gPseudo_Handler = {Name:"pseudo"};
+tHandler       gPseudo_Handler = {.Name="pseudo"};
 tHandler       *gaHandlers[] = {&gPseudo_Handler, &gCoke_Handler, &gSnack_Handler, &gDoor_Handler};
  int   giNumHandlers = sizeof(gaHandlers)/sizeof(gaHandlers[0]);
 char   *gsItemListFile = DEFAULT_ITEM_FILE;
index 1f813d4..b34d93d 100644 (file)
@@ -728,7 +728,7 @@ void Server_Cmd_DISPENSE(tClient *Client, char *Args)
        case 1: sendf(Client->Socket, "501 Unable to dispense\n");      return ;
        case 2: sendf(Client->Socket, "402 Poor You\n");        return ;
        default:
-               sendf(Client->Socket, "500 Dispense Error\n");
+               sendf(Client->Socket, "500 Dispense Error (%i)\n", ret);
                return ;
        }
 }

UCC git Repository :: git.ucc.asn.au