3 * UCC (University [of WA] Computer Club) Electronic Accounting System
4 * - Cokebank (Basic Version)
6 * bank.c - Actual bank database
8 * This file is licenced under the 3-clause BSD Licence. See the file COPYING
15 USER_FLAG_NORMAL = 0x00,
16 USER_FLAG_COKE = 0x01,
17 USER_FLAG_WHEEL = 0x02,
22 int Bank_GetUserByUnixID(int UnixUID)
24 // Expensive search :(
25 for( i = 0; i < giBank_NumUsers; i ++ )
27 if( gaBank_Users[i].UnixID == UnixID )
34 int Bank_GetUserBalance(int ID)
36 if( ID < 0 || ID >= giBank_NumUsers )
39 return gaBank_Users[ID].Balance;
42 int Bank_AlterUserBalance(int ID, int Delta)
45 if( ID < 0 || ID >= giBank_NumUsers )
49 gaBank_Users[ID].Balance += Delta;
52 fseek(gBank_File, ID*sizeof(gaBank_Users[0]), SEEK_SET);
53 fwrite(&gaBank_Users[ID], sizeof(gaBank_Users[0]), 1, gBank_File);
58 int Bank_SetUserBalance(int ID, int Value)
61 if( ID < 0 || ID >= giBank_NumUsers )
65 gaBank_Users[ID].Balance = Value;
68 fseek(gBank_File, ID*sizeof(gaBank_Users[0]), SEEK_SET);
69 fwrite(&gaBank_Users[ID], sizeof(gaBank_Users[0]), 1, gBank_File);
74 int Bank_GetMinAllowedBalance(int ID)
76 if( ID < 0 || ID >= giBank_NumUsers )
79 switch( gaBank_Users[ID].Flags & FLAG_TYPEMASK )
81 case USER_TYPE_NORMAL: return 0;
82 case USER_TYPE_COKE: return -2000;
83 case USER_TYPE_WHEEL: return -10000;
84 case USER_TYPE_GOD: return INT_MIN;
90 * \brief Create a new user in our database
92 int Bank_AddUser(int UnixID)
96 // Can has moar space plz?
97 tmp = realloc(gaBank_Users, (giBank_NumUsers+1)*sizeof(gaBank_Users[0]));
102 gaBank_Users[giBank_NumUsers].UnixID = UnixID;
103 gaBank_Users[giBank_NumUsers].Balance = 0;
104 gaBank_Users[giBank_NumUsers].Flags = 0;
107 fseek(gBank_File, giBank_NumUsers*sizeof(gaBank_Users[0]), SEEK_SET);
108 fwrite(gaBank_Users[giBank_NumUsers], sizeof(gaBank_Users[0]), 1, gBank_File);