git.ucc.asn.au
/
tpg
/
opendispense2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Misc changes - Fixed coke, shut up boot, fixed disabled users dispensing
[tpg/opendispense2.git]
/
src
/
server
/
dispense.c
diff --git
a/src/server/dispense.c
b/src/server/dispense.c
index
4c6bd51
..
b0a5936
100644
(file)
--- a/
src/server/dispense.c
+++ b/
src/server/dispense.c
@@
-8,6
+8,7
@@
int _GetMinBalance(int Account);
int _CanTransfer(int Source, int Destination, int Ammount);
int _Transfer(int Source, int Destination, int Ammount, const char *Reason);
int _GetMinBalance(int Account);
int _CanTransfer(int Source, int Destination, int Ammount);
int _Transfer(int Source, int Destination, int Ammount, const char *Reason);
+ int _GetSalesAcct(tItem *Item);
// === CODE ===
/**
// === CODE ===
/**
@@
-21,7
+22,9
@@
int DispenseItem(int ActualUser, int User, tItem *Item)
tHandler *handler;
char *username, *actualUsername;
tHandler *handler;
char *username, *actualUsername;
- salesAcct = Bank_GetAcctByName(COKEBANK_SALES_ACCT);
+ handler = Item->Handler;
+
+ salesAcct = _GetSalesAcct(Item);
// Check if the user can afford it
if( Item->Price && !_CanTransfer(User, salesAcct, Item->Price) )
// Check if the user can afford it
if( Item->Price && !_CanTransfer(User, salesAcct, Item->Price) )
@@
-29,9
+32,7
@@
int DispenseItem(int ActualUser, int User, tItem *Item)
return 2; // 2: No balance
}
return 2; // 2: No balance
}
- handler = Item->Handler;
-
- // KNOWN HACK: Naming a slot "dead" disables it
+ // HACK: Naming a slot "dead" disables it
if( strcmp(Item->Name, "dead") == 0 )
return 1;
if( strcmp(Item->Name, "dead") == 0 )
return 1;
@@
-49,7
+50,7
@@
int DispenseItem(int ActualUser, int User, tItem *Item)
ret = handler->DoDispense( User, Item->ID );
if(ret) {
Log_Error("Dispense failed (%s dispensing %s:%i '%s')",
ret = handler->DoDispense( User, Item->ID );
if(ret) {
Log_Error("Dispense failed (%s dispensing %s:%i '%s')",
- username, Item->
Name, Item->Handler->Name, Item->ID
);
+ username, Item->
Handler->Name, Item->ID, Item->Name
);
free( username );
return -1; // 1: Unknown Error again
}
free( username );
return -1; // 1: Unknown Error again
}
@@
-86,7
+87,7
@@
int DispenseRefund(int ActualUser, int DestUser, tItem *Item, int OverridePrice)
int src_acct, price;
char *username, *actualUsername;
int src_acct, price;
char *username, *actualUsername;
- src_acct =
Bank_GetAcctByName(COKEBANK_SALES_ACCT
);
+ src_acct =
_GetSalesAcct(Item
);
if( OverridePrice > 0 )
price = OverridePrice;
if( OverridePrice > 0 )
price = OverridePrice;
@@
-119,6
+120,10
@@
int DispenseGive(int ActualUser, int SrcUser, int DestUser, int Ammount, const c
char *actualUsername;
char *srcName, *dstName;
char *actualUsername;
char *srcName, *dstName;
+ // HACK: Naming a slot "dead" disables it (catch for snack)
+ if( strcmp(ReasonGiven, "dead") == 0 )
+ return 1;
+
if( Ammount < 0 ) return 1; // Um... negative give? Not on my watch!
ret = _Transfer( SrcUser, DestUser, Ammount, ReasonGiven );
if( Ammount < 0 ) return 1; // Um... negative give? Not on my watch!
ret = _Transfer( SrcUser, DestUser, Ammount, ReasonGiven );
@@
-187,9
+192,9
@@
int DispenseAdd(int ActualUser, int User, int Ammount, const char *ReasonGiven)
char *dstName, *byName;
#if DISPENSE_ADD_BELOW_MIN
char *dstName, *byName;
#if DISPENSE_ADD_BELOW_MIN
- ret = _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Ammount, ReasonGiven );
+ ret = _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT
,1
), User, Ammount, ReasonGiven );
#else
#else
- ret = Bank_Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Ammount, ReasonGiven );
+ ret = Bank_Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT
,1
), User, Ammount, ReasonGiven );
#endif
if(ret) return 2;
#endif
if(ret) return 2;
@@
-211,7
+216,7
@@
int DispenseSet(int ActualUser, int User, int Balance, const char *ReasonGiven)
int curBal = Bank_GetBalance(User);
char *byName, *dstName;
int curBal = Bank_GetBalance(User);
char *byName, *dstName;
- _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Balance-curBal, ReasonGiven );
+ _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT
,1
), User, Balance-curBal, ReasonGiven );
byName = Bank_GetAcctName(ActualUser);
dstName = Bank_GetAcctName(User);
byName = Bank_GetAcctName(ActualUser);
dstName = Bank_GetAcctName(User);
@@
-236,7
+241,7
@@
int DispenseDonate(int ActualUser, int User, int Ammount, const char *ReasonGive
if( Ammount < 0 ) return 2;
if( Ammount < 0 ) return 2;
- ret = _Transfer( User, Bank_GetAcctByName(COKEBANK_D
EBT_ACCT
), Ammount, ReasonGiven );
+ ret = _Transfer( User, Bank_GetAcctByName(COKEBANK_D
ONATE_ACCT,1
), Ammount, ReasonGiven );
if(ret) return 2;
byName = Bank_GetAcctName(ActualUser);
if(ret) return 2;
byName = Bank_GetAcctName(ActualUser);
@@
-314,9
+319,12
@@
int _GetMinBalance(int Account)
/**
* \brief Check if a transfer is possible
/**
* \brief Check if a transfer is possible
+ * \return Boolean success
*/
int _CanTransfer(int Source, int Destination, int Ammount)
{
*/
int _CanTransfer(int Source, int Destination, int Ammount)
{
+ if( Bank_GetFlags(Source) & USER_FLAG_DISABLED )
+ return 0;
if( Ammount > 0 )
{
if( Bank_GetBalance(Source) - Ammount < _GetMinBalance(Source) )
if( Ammount > 0 )
{
if( Bank_GetBalance(Source) - Ammount < _GetMinBalance(Source) )
@@
-336,3
+344,11
@@
int _Transfer(int Source, int Destination, int Ammount, const char *Reason)
return 1;
return Bank_Transfer(Source, Destination, Ammount, Reason);
}
return 1;
return Bank_Transfer(Source, Destination, Ammount, Reason);
}
+
+int _GetSalesAcct(tItem *Item)
+{
+ char string[sizeof(COKEBANK_SALES_PREFIX)+strlen(Item->Handler->Name)];
+ strcpy(string, COKEBANK_SALES_PREFIX);
+ strcat(string, Item->Handler->Name);
+ return Bank_GetAcctByName(string, 1);
+}
UCC
git Repository :: git.ucc.asn.au