#ifndef _COMMON_H_
#define _COMMON_H_
+#include <regex.h>
+#include "../cokebank.h"
+
// === CONSTANTS ===
#define DEFAULT_CONFIG_FILE "/etc/opendispense/main.cfg"
#define DEFAULT_ITEM_FILE "/etc/opendispense/items.cfg"
#define _EXPSTR(x) #x
#define EXPSTR(x) _EXPSTR(x)
+#define UNUSED(var) unused__##var __attribute__((__unused__))
+
// === STRUCTURES ===
typedef struct sItem tItem;
typedef struct sUser tUser;
{
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
{
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);
};
extern int giDebugLevel;
// === 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 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);
-
#endif