Move Regex functions into common code and header
[tpg/opendispense2.git] / src / cokebank_sqlite / main.c
index 34761b2..e37da05 100644 (file)
@@ -63,6 +63,8 @@ struct sAcctIterator  // Unused really, just used as a void type
  int   Bank_SetFlags(int AcctID, int Mask, int Value);
  int   Bank_GetBalance(int AcctID);
 char   *Bank_GetAcctName(int AcctID);
+ int   Bank_IsPinValid(int AcctID, int Pin);
+void   Bank_SetPin(int AcctID, int Pin);
 sqlite3_stmt   *Bank_int_MakeStatemnt(sqlite3 *Database, const char *Query);
  int   Bank_int_QueryNone(sqlite3 *Database, const char *Query, char **ErrorMessage);
 sqlite3_stmt   *Bank_int_QuerySingle(sqlite3 *Database, const char *Query);
@@ -119,7 +121,7 @@ int Bank_Initialise(const char *Argument)
 /*
  * Move Money
  */
-int Bank_Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason)
+int Bank_Transfer(int SourceUser, int DestUser, int Ammount, const char *Reason __attribute__((unused)))
 {
        char    *query;
         int    rv;
@@ -354,6 +356,34 @@ int Bank_CreateAcct(const char *Name)
        return sqlite3_last_insert_rowid(gBank_Database);
 }
 
+int Bank_IsPinValid(int AcctID, int Pin)
+{
+       char *query = mkstr("SELECT acct_id FROM accounts WHERE acct_id=%i AND acct_pin=%i LIMIT 1", AcctID, Pin);
+       sqlite3_stmt *statement = Bank_int_QuerySingle(gBank_Database, query);
+       free(query);
+       
+       if( statement ) {
+               sqlite3_finalize(statement);
+       }
+
+       return (statement != NULL);
+}
+
+void Bank_SetPin(int AcctID, int Pin)
+{
+       char *errmsg;
+       char *query = mkstr("UPDATE accounts SET acct_pin=%i WHERE acct_id=%i", Pin, AcctID);
+       int rv = Bank_int_QueryNone(gBank_Database, query, &errmsg);
+       if( rv != SQLITE_OK )
+       {
+               fprintf(stderr, "Bank_CreateAcct - SQLite Error: '%s'\n", errmsg);
+               fprintf(stderr, "Query = '%s'\n", query);
+               sqlite3_free(errmsg);
+               free(query);
+               return ;
+       }
+       free(query);
+}
 /*
  * Create an iterator for user accounts
  */
@@ -469,6 +499,7 @@ void Bank_DelIterator(tAcctIterator *It)
 int Bank_GetUserAuth(const char *Salt, const char *Username, const char *Password)
 {
        Salt = Password = Username;     // Shut up GCC
+       Password = Salt;
        // DEBUG HACKS!
        #if 0
        return Bank_GetAcctByName(Username);

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