(bugfix) Insufficient warning level to catch that bug
[tpg/opendispense2.git] / src / client / common.h
1 /*
2  * OpenDispense 2 
3  * UCC (University [of WA] Computer Club) Electronic Accounting System
4  * - Dispense Client
5  *
6  * common.h
7  * - Shared definitions
8  *
9  * This file is licenced under the 3-clause BSD Licence. See the file
10  * COPYING for full details.
11  */
12 #ifndef _CLIENT__COMMON_H_
13 #define _CLIENT__COMMON_H_
14
15 #include <regex.h>
16
17 typedef struct sItem {
18         char    *Type;
19          int    ID;
20          int    Status; // 0: Availiable, 1: Sold out, -1: Error
21         char    *Desc;
22          int    Price;
23 }       tItem;
24
25 enum eUI_Modes
26 {
27         UI_MODE_BASIC,  // Non-NCurses
28         UI_MODE_STANDARD,
29         UI_MODE_DRINKSONLY,
30         UI_MODE_ALL,
31         NUM_UI_MODES
32 };
33
34 enum eReturnValues
35 {
36         RV_SUCCESS,
37         RV_BAD_ITEM,
38         RV_INVALID_USER,
39         RV_PERMISSIONS,
40         RV_ARGUMENTS,
41         RV_BALANCE,
42         RV_SERVER_ERROR,        // Generic for 5xx codes
43         RV_UNKNOWN_ERROR = -1,
44         RV_SOCKET_ERROR = -2,
45         RV_UNKNOWN_RESPONSE = -3,
46 };
47
48 extern regex_t  gArrayRegex;
49 extern regex_t  gItemRegex;
50 extern regex_t  gSaltRegex;
51 extern regex_t  gUserInfoRegex;
52 extern regex_t  gUserItemIdentRegex;
53
54 extern int      gbDryRun;
55 extern int      gbDisallowSelectWithoutBalance;
56 extern int      giMinimumBalance;
57 extern int      giMaximumBalance;
58 extern enum eUI_Modes   giUIMode;
59
60 extern int      gbIsAuthenticated;
61 extern char     *gsEffectiveUser;
62 extern char     *gsUserName;
63 extern int      giUserBalance;
64 extern char     *gsUserFlags;
65
66 extern int      giNumItems;
67 extern tItem    *gaItems;
68
69 extern int      RunRegex(regex_t *regex, const char *str, int nMatches, regmatch_t *matches, const char *errmsg);
70
71 extern int      ShowNCursesUI(void);
72
73 extern int      OpenConnection(const char *Host, int Port);
74 extern int      Authenticate(int Socket);
75 extern int      GetUserBalance(int Socket);
76 extern void     PopulateItemList(int Socket);
77 extern int      Dispense_ItemInfo(int Socket, const char *Type, int ID);
78 extern int      DispenseItem(int Socket, const char *Type, int ID);
79 extern int      Dispense_AlterBalance(int Socket, const char *Username, int Ammount, const char *Reason);
80 extern int      Dispense_SetBalance(int Socket, const char *Username, int Balance, const char *Reason);
81 extern int      Dispense_Give(int Socket, const char *Username, int Ammount, const char *Reason);
82 extern int      Dispense_Refund(int Socket, const char *Username, const char *Item, int PriceOverride);
83 extern int      Dispense_Donate(int Socket, int Ammount, const char *Reason);
84 extern int      Dispense_EnumUsers(int Socket);
85 extern int      Dispense_ShowUser(int Socket, const char *Username);
86 extern void     _PrintUserLine(const char *Line);
87 extern int      Dispense_AddUser(int Socket, const char *Username);
88 extern int      Dispense_SetUserType(int Socket, const char *Username, const char *TypeString, const char *Reason);
89 extern int      Dispense_SetItem(int Socket, const char *Type, int ID, int NewPrice, const char *NewName);
90 extern int      DispenseCheckPin(int Socket, const char *Username, const char *Pin);
91 extern int      DispenseSetPin(int Socket, const char *Pin);
92
93 #endif
94

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