X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fcokebank_basic%2Fmain.c;h=6bbc3f29a2fa748366b3e3a754fc2eab9cf36da6;hb=a3b265fadf5761d8e8a14357db5402d04d65796e;hp=fbc8f6e40fab4013399eeeebdd701815fcab61cf;hpb=05918a67e8509a2b2df6509039a801affd3444eb;p=tpg%2Fopendispense2.git diff --git a/src/cokebank_basic/main.c b/src/cokebank_basic/main.c index fbc8f6e..6bbc3f2 100644 --- a/src/cokebank_basic/main.c +++ b/src/cokebank_basic/main.c @@ -9,23 +9,10 @@ */ #include #include -#include #include +#include #include "common.h" -#define HACK_TPG_NOAUTH 1 - -// === IMPORTS === -extern int Bank_GetMinAllowedBalance(int ID); -extern int Bank_GetUserBalance(int ID); -extern int Bank_AlterUserBalance(int ID, int Delta); -extern int Bank_GetUserByUnixID(int UnixID); -extern int Bank_GetUserUnixID(int ID); -extern int Bank_AddUser(int UnixID); -extern FILE *gBank_File; -extern tUser *gaBank_Users; -extern int giBank_NumUsers; - // === PROTOTYPES === void Init_Cokebank(const char *Argument); int Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason); @@ -34,6 +21,9 @@ char *GetUserName(int User); int GetUserID(const char *Username); int GetUserAuth(const char *Username, const char *Password); +// === GLOBALS === +FILE *gBank_LogFile; + // === CODE === /** * \brief Load the cokebank database @@ -48,6 +38,9 @@ void Init_Cokebank(const char *Argument) perror("Opening coke bank"); } + gBank_LogFile = fopen("cokebank.log", "a"); + if( !gBank_LogFile ) gBank_LogFile = stdout; + fseek(gBank_File, 0, SEEK_END); giBank_NumUsers = ftell(gBank_File) / sizeof(gaBank_Users[0]); fseek(gBank_File, 0, SEEK_SET); @@ -65,12 +58,16 @@ void Init_Cokebank(const char *Argument) */ int Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason) { - if( Bank_GetUserBalance(SourceUser) - Ammount < Bank_GetMinAllowedBalance(SourceUser) ) + int srcBal = Bank_GetUserBalance(SourceUser); + int dstBal = Bank_GetUserBalance(DestUser); + if( srcBal - Ammount < Bank_GetMinAllowedBalance(SourceUser) ) return 1; - if( Bank_GetUserBalance(DestUser) + Ammount < Bank_GetMinAllowedBalance(DestUser) ) + if( dstBal + Ammount < Bank_GetMinAllowedBalance(DestUser) ) return 1; Bank_AlterUserBalance(DestUser, Ammount); Bank_AlterUserBalance(SourceUser, -Ammount); + fprintf(gBank_LogFile, "ACCT #%i{%i} -= %ic [to #%i] (%s)\n", SourceUser, srcBal, Ammount, DestUser, Reason); + fprintf(gBank_LogFile, "ACCT #%i{%i} += %ic [from #%i] (%s)\n", DestUser, dstBal, Ammount, SourceUser, Reason); return 0; } @@ -79,7 +76,7 @@ int Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason) */ int GetBalance(int User) { - return 0; + return Bank_GetUserBalance(User);; } /** @@ -87,19 +84,7 @@ int GetBalance(int User) */ char *GetUserName(int User) { - struct passwd *pwd; - int unixid = Bank_GetUserUnixID(User); - - if( unixid == -1 ) - return strdup(">sales"); - - if( unixid == -2 ) - return strdup(">liability"); - - pwd = getpwuid(unixid); - if( !pwd ) return NULL; - - return strdup(pwd->pw_name); + return Bank_GetUserName(User); } /** @@ -107,41 +92,14 @@ char *GetUserName(int User) */ int GetUserID(const char *Username) { - int ret, uid; - - if( strcmp(Username, ">sales") == 0 ) { // Pseudo account that sales are made into - uid = -1; - } - else if( strcmp(Username, ">liability") == 0 ) { // Pseudo acount that money is added from - uid = -2; - } - else { - struct passwd *pwd; - // Get user ID - pwd = getpwnam(Username); - if( !pwd ) return -1; - uid = pwd->pw_uid; - } + int ret; // Get internal ID (or create new user) - ret = Bank_GetUserByUnixID(uid); + ret = Bank_GetUserByName(Username); if( ret == -1 ) { - ret = Bank_AddUser(uid); + ret = Bank_AddUser(Username); } return ret; } -/** - * \brief Authenticate a user - * \return User ID, or -1 if authentication failed - */ -int GetUserAuth(const char *Username, const char *Password) -{ - #if HACK_TPG_NOAUTH - if( strcmp(Username, "tpg") == 0 ) - return GetUserID("tpg"); - #endif - return -1; -} -