Server - Fixed leaked file handles in both itemdb and modbus
[tpg/opendispense2.git] / src / server / common.h
index 280cd4e..74c42d9 100644 (file)
@@ -10,6 +10,7 @@
 #define _COMMON_H_
 
 #include <regex.h>
+#include "../cokebank.h"
 
 // === CONSTANTS ===
 #define        DEFAULT_CONFIG_FILE     "/etc/opendispense/main.cfg"
 #define _EXPSTR(x)     #x
 #define EXPSTR(x)      _EXPSTR(x)
 
+#define UNUSED(var)    unused__##var __attribute__((__unused__))
+
+#define ASSERT(cnd) do{if(!(cnd)){fprintf(stderr, "ASSERT failed at "__FILE__":"EXPSTR(__LINE__)" - "EXPSTR(cnd)"\n");exit(-1);}}while(0)
+
 // === STRUCTURES ===
 typedef struct sItem   tItem;
 typedef struct sUser   tUser;
@@ -29,6 +34,8 @@ struct sItem
 {
        char    *Name;  //!< Display Name
         int    Price;  //!< Price
+        int    bHidden;        //!< Hidden item?
+        int    bDisabledi;     //!< Disabled Item
        
        tHandler        *Handler;       //!< Handler for the item
        short   ID;     //!< Item ID
@@ -66,26 +73,42 @@ extern int  giNumItems;
 extern tHandler        *gaHandlers[];
 extern int     giNumHandlers;
 extern int     giDebugLevel;
+extern int     gbNoCostMode;
 
 // === FUNCTIONS ===
+extern void    Items_UpdateFile(void);
+
 // --- Helpers --
+extern void    StartPeriodicThread(void);
+extern void    AddPeriodicFunction(void (*Fcn)(void));
 extern void    CompileRegex(regex_t *Regex, const char *Pattern, int Flags);
 extern int     RunRegex(regex_t *regex, const char *string, int nMatches, regmatch_t *matches, const char *errorMessage);
 extern int     InitSerial(const char *Path, int BaudRate);
 extern char    *mkstr(const char *Format, ...);
 
 // --- Dispense ---
-extern int     DispenseItem(int User, tItem *Item);
-extern int     DispenseGive(int SrcUser, int DestUser, int Ammount, const char *ReasonGiven);
+extern int     DispenseItem(int ActualUser, int User, tItem *Item);
+extern int     DispenseRefund(int ActualUser, int DestUser, tItem *Item, int OverridePrice);
+extern int     DispenseGive(int ActualUser, int SrcUser, int DestUser, int Ammount, const char *ReasonGiven);
+extern int     DispenseAdd(int ActualUser, int User, int Ammount, const char *ReasonGiven);
+extern int     DispenseSet(int ActualUser, int User, int Balance, const char *ReasonGiven);
+extern int     DispenseDonate(int ActualUser, int User, int Ammount, const char *ReasonGiven);
+extern int     DispenseUpdateItem(int User, tItem *Item, const char *NewName, int NewPrice);
 
 // --- Logging ---
+// to syslog
 extern void    Log_Error(const char *Format, ...);
 extern void    Log_Info(const char *Format, ...);
+// To stdout
+#define Debug_Notice(msg, v...)        fprintf(stderr, "%08llun: "msg"\n", (unsigned long long)time(NULL) ,##v)
+#define Debug_Debug(msg, v...) fprintf(stderr, "%08llud: "msg"\n", (unsigned long long)time(NULL) ,##v)
 
-// --- Cokebank Functions ---
-extern int     Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason);
-extern int     GetBalance(int User);
-extern char    *GetUserName(int User);
-extern int     GetUserID(const char *Username);
+// --- Config Database ---
+extern void    Config_ParseFile(const char *Filename);
+extern void    Config_AddValue(const char *Key, const char *Value);
+extern int     Config_GetValueCount(const char *KeyName);
+extern const char      *Config_GetValue(const char *KeyName, int Index);
+extern int     Config_GetValue_Bool(const char *KeyName, int Index);
+extern int     Config_GetValue_Int(const char *KeyName, int Index);
 
 #endif

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