X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fitemdb.c;h=5b2d828520abd6d1f1048e712b0d53c90761002a;hb=a3ef38a0e3c7869bac3da397a56330ed61d26cb3;hp=dc188fdc2d63859bfbc5f082a632295d96de5ee2;hpb=4fef498619ca05876568c6bc5114fadd7c2496ee;p=tpg%2Fopendispense2.git diff --git a/src/server/itemdb.c b/src/server/itemdb.c index dc188fd..5b2d828 100644 --- a/src/server/itemdb.c +++ b/src/server/itemdb.c @@ -16,6 +16,8 @@ #include #include +#define DUMP_ITEMS 0 + // === IMPORTS === extern tHandler gCoke_Handler; extern tHandler gSnack_Handler; @@ -31,8 +33,12 @@ char *trim(char *__str); int giNumItems = 0; tItem *gaItems = NULL; time_t gItems_LastUpdated; -tHandler gPseudo_Handler = {Name:"pseudo"}; -tHandler *gaHandlers[] = {&gPseudo_Handler, &gCoke_Handler, &gSnack_Handler, &gDoor_Handler}; +tHandler gPseudo_Handler = {.Name="pseudo"}; +tHandler gMembership_Handler = {.Name="membership"}; +tHandler *gaHandlers[] = { + &gPseudo_Handler, &gMembership_Handler, + &gCoke_Handler, &gSnack_Handler, &gDoor_Handler + }; int giNumHandlers = sizeof(gaHandlers)/sizeof(gaHandlers[0]); char *gsItemListFile = DEFAULT_ITEM_FILE; #if USE_INOTIFY @@ -43,8 +49,7 @@ regex_t gItemFile_Regex; // === CODE === void Init_Handlers() { - int i; - for( i = 0; i < giNumHandlers; i ++ ) + for( int i = 0; i < giNumHandlers; i ++ ) { if( gaHandlers[i]->Init ) gaHandlers[i]->Init(0, NULL); // TODO: Arguments @@ -81,7 +86,7 @@ void ItemList_Changed(int signum) #endif /** - * \brief Read the initiali item list + * \brief Read the initial item list */ void Load_Itemlist(void) { @@ -169,7 +174,9 @@ void Items_ReadFromFile(void) price = atoi( line + matches[3].rm_so ); desc = line + matches[4].rm_so; + #if DUMP_ITEMS printf("Item '%s' - %i cents, %s:%i\n", desc, price, type, num); + #endif handler = NULL; for( i = 0; i < giNumHandlers; i ++ ) @@ -190,7 +197,9 @@ void Items_ReadFromFile(void) if( items[i].Handler != handler ) continue; if( items[i].ID != num ) continue; + #if DUMP_ITEMS printf("Redefinition of %s:%i, updated\n", handler->Name, num); + #endif items[i].Price = price; free(items[i].Name); items[i].Name = strdup(desc); @@ -201,7 +210,10 @@ void Items_ReadFromFile(void) items = realloc( items, (numItems + 1)*sizeof(items[0]) ); items[numItems].Handler = handler; items[numItems].ID = num; - items[numItems].Price = price; + if( gbNoCostMode ) + items[numItems].Price = 0; + else + items[numItems].Price = price; items[numItems].Name = strdup(desc); items[numItems].bHidden = (line[0] == '-'); numItems ++; @@ -214,6 +226,7 @@ void Items_ReadFromFile(void) free(gaItems); gaItems = NULL; } + fclose(fp); // Replace with new giNumItems = numItems; @@ -263,6 +276,8 @@ void Items_UpdateFile(void) int num; tHandler *handler; + trim(buffer); + lineNum ++; line_items[lineNum-1] = -1; line_comments[lineNum-1] = NULL; @@ -326,7 +341,8 @@ void Items_UpdateFile(void) fclose(fp); - fp = fopen("items.cfg.new", "w"); // DEBUG: Don't kill the real item file until debugged + //fp = fopen("items.cfg.new", "w"); // DEBUG: Don't kill the real item file until debugged + fp = fopen(gsItemListFile, "w"); // Create new file { @@ -342,8 +358,11 @@ void Items_UpdateFile(void) if( done_items[ line_items[i] ] ) { fprintf(fp, "; DUP -"); } - done_items[ line_items[i] ] = 1; + + if( item->bHidden ) + fprintf(fp, "-"); + fprintf(fp, "%s\t%i\t%i\t%s\t", item->Handler->Name, item->ID, item->Price, item->Name ); @@ -363,6 +382,9 @@ void Items_UpdateFile(void) tItem *item = &gaItems[i]; if( done_items[i] ) continue ; + if( item->bHidden ) + fprintf(fp, "-"); + fprintf(fp, "%s\t%i\t%i\t%s\n", item->Handler->Name, item->ID, item->Price, item->Name );