X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fcommon.h;h=7ad01c5d5d786a27f41ba52c409ba6845db887bb;hb=adaae4129acdd981ea7c2ae386d0ac41a93a4b7a;hp=d790c8253ae170d4e802523f551062e005b79251;hpb=05918a67e8509a2b2df6509039a801affd3444eb;p=tpg%2Fopendispense2.git diff --git a/src/server/common.h b/src/server/common.h index d790c82..7ad01c5 100644 --- a/src/server/common.h +++ b/src/server/common.h @@ -9,6 +9,9 @@ #ifndef _COMMON_H_ #define _COMMON_H_ +#include +#include "../cokebank.h" + // === CONSTANTS === #define DEFAULT_CONFIG_FILE "/etc/opendispense/main.cfg" #define DEFAULT_ITEM_FILE "/etc/opendispense/items.cfg" @@ -17,6 +20,10 @@ #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; @@ -27,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 @@ -50,6 +59,10 @@ struct sHandler { char *Name; int (*Init)(int NConfig, tConfigItem *Config); + /** + * \brief Check if an item can be dispensed + * \return Boolean Failure + */ int (*CanDispense)(int User, int ID); int (*DoDispense)(int User, int ID); }; @@ -60,19 +73,38 @@ extern int giNumItems; extern tHandler *gaHandlers[]; extern int giNumHandlers; extern int giDebugLevel; +extern int gbNoCostMode; // === FUNCTIONS === -extern int DispenseItem(int User, tItem *Item); +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 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 --- extern void Log_Error(const char *Format, ...); extern void Log_Info(const char *Format, ...); -// --- 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); -extern int GetUserAuth(const char *Username, const char *Password); +// --- 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