4 * This code is published under the terms of the Acess licence.
5 * See the file COPYING for details.
7 * common.h - Core Header
13 #include "../cokebank.h"
16 #define DEFAULT_CONFIG_FILE "/etc/opendispense/main.cfg"
17 #define DEFAULT_ITEM_FILE "/etc/opendispense/items.cfg"
19 // === HELPER MACROS ===
21 #define UNUSED(var) unused__##var __attribute__((__unused__))
24 typedef struct sItem tItem;
25 typedef struct sUser tUser;
26 typedef struct sConfigItem tConfigItem;
27 typedef struct sHandler tHandler;
31 char *Name; //!< Display Name
33 int bHidden; //!< Hidden item?
34 int bDisabledi; //!< Disabled Item
36 tHandler *Handler; //!< Handler for the item
37 short ID; //!< Item ID
42 int ID; //!< User ID (LDAP ID)
43 int Balance; //!< Balance in cents
44 int Bytes; //!< Traffic Usage
45 char Name[]; //!< Username
57 int (*Init)(int NConfig, tConfigItem *Config);
59 * \brief Check if an item can be dispensed
60 * \return Boolean Failure
62 int (*CanDispense)(int User, int ID);
63 int (*DoDispense)(int User, int ID);
67 extern tItem *gaItems;
68 extern int giNumItems;
69 extern tHandler *gaHandlers[];
70 extern int giNumHandlers;
71 extern int giDebugLevel;
72 extern int gbNoCostMode;
75 extern void Items_UpdateFile(void);
78 extern void StartPeriodicThread(void);
79 extern void AddPeriodicFunction(void (*Fcn)(void));
80 extern void CompileRegex(regex_t *Regex, const char *Pattern, int Flags);
81 extern int RunRegex(regex_t *regex, const char *string, int nMatches, regmatch_t *matches, const char *errorMessage);
82 extern int InitSerial(const char *Path, int BaudRate);
83 extern char *mkstr(const char *Format, ...);
86 extern int DispenseItem(int ActualUser, int User, tItem *Item);
87 extern int DispenseRefund(int ActualUser, int DestUser, tItem *Item, int OverridePrice);
88 extern int DispenseGive(int ActualUser, int SrcUser, int DestUser, int Ammount, const char *ReasonGiven);
89 extern int DispenseAdd(int ActualUser, int User, int Ammount, const char *ReasonGiven);
90 extern int DispenseSet(int ActualUser, int User, int Balance, const char *ReasonGiven, int *OrigBalance);
91 extern int DispenseDonate(int ActualUser, int User, int Ammount, const char *ReasonGiven);
92 extern int DispenseUpdateItem(int User, tItem *Item, const char *NewName, int NewPrice);
96 extern void Log_Error(const char *Format, ...);
97 extern void Log_Info(const char *Format, ...);
99 #define Debug_Notice(msg, v...) fprintf(stderr, "%08llun: "msg"\n", (unsigned long long)time(NULL) ,##v)
100 #define Debug_Debug(msg, v...) fprintf(stderr, "%08llud: "msg"\n", (unsigned long long)time(NULL) ,##v)