#include <sys/stat.h>
#include <time.h>
+#define DUMP_ITEMS 0
+
// === IMPORTS ===
extern tHandler gCoke_Handler;
extern tHandler gSnack_Handler;
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
// === 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
#endif
/**
- * \brief Read the initiali item list
+ * \brief Read the initial item list
*/
void Load_Itemlist(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 ++ )
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);
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 ++;
free(gaItems);
gaItems = NULL;
}
+ fclose(fp);
// Replace with new
giNumItems = numItems;
int num;
tHandler *handler;
+ trim(buffer);
+
lineNum ++;
line_items[lineNum-1] = -1;
line_comments[lineNum-1] = NULL;
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
{
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
);
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
);