/* */
/********************************************************/
#include <ctype.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
{
#define OPEP "devsql.c:dropresult,"
-switch(sql->sqldb) {
- case db_postgres :
- rs=(SQLRES *)pos_dropresult((POSRES *)rs);
- break;
- case db_maria :
- rs=(SQLRES *)pos_dropresult((MARRES *)rs);
- break;
- default :
- (void) rou_alert(0,"%s Unexpected type='%d' (BUG!?)",
- OPEP,(int)sql->sqldb);
- rs=(SQLRES *)0;
- break;
+if (rs!=(SQLRES *)0) {
+ switch(sql->sqldb) {
+ case db_postgres :
+ rs=(SQLRES *)pos_dropresult((POSRES *)rs);
+ break;
+ case db_maria :
+ rs=(SQLRES *)pos_dropresult((MARRES *)rs);
+ break;
+ default :
+ (void) rou_alert(0,"%s Unexpected type='%d' (BUG!?)",
+ OPEP,(int)sql->sqldb);
+ rs=(SQLRES *)0;
+ break;
+ }
}
return rs;
#undef OPEP
OPEP,(int)sql->sqldb);
break;
}
+if (value==(char *)0) {
+ (void) rou_alert(0,"%s value is NULL for field=<%s> (BUG!?)",OPEP,fieldname);
+ value="00000"; //force value!
+ }
return value;
#undef OPEP
}
+#ifdef JMPDBG
/*
\f
*/
return value;
#undef OPEP
}
+#endif
/*
\f
*/
#define OPEP "devsql.c:sql_getuser,"
#define SELUSR "%s %s WHERE email='%s'"
+//field avalable in table "EMAILS"
+const char *usrfield[]={
+ "email",
+ "space",
+ "mxspace",
+ (char *)0
+ };
+
USRTYP *usr;
SQLTYP *sql;
SQLRES *rs;
usr=(USRTYP *)0;
sql=(SQLTYP *)sqlptr;
+rs=(SQLRES *)0;
phase=0;
proceed=true;
while (proceed==true) {
phase=999; //Trouble trouble
}
break;
- case 4 : //getting user information
+ case 4 : //do we have a user information?
int nbr;
- if ((nbr=nbrtupple(sql,rs))==1) {
- char *rcpt;
+ nbr=nbrtupple(sql,rs);
+ switch (nbr) {
+ case 0 : //No user email found
+ phase=999;
+ break;
+ case 1 : //we have only one record
+ break;
+ default : {
+ char cmt[200];
- rcpt=getvalue(sql,rs,0,"email");
- (void) rou_alert(0,"%s JMPDBG db_rcpt=<%s>",OPEP,rcpt);
+ (void) memset(cmt,'\000',sizeof(cmt));
+ (void) snprintf(cmt,sizeof(cmt)-1,SELUSR,SELFROM,EMAILS,email);
+ (void) rou_alert(0,"<%s> return '%d' record %s (Database corrupted?)",
+ cmt,nbr,"while only 1 is expected");
+ }
+ phase=999;
+ break;
+ }
+ break;
+ case 5 : //extracting user data
+ usr=(USRTYP *)calloc(1,sizeof(USRTYP));
+ for (int i=0;usrfield[i]!=(char *)0;i++) {
+ char *locval;
+
+ if ((locval=getvalue(sql,rs,0,usrfield[i]))==(char *)0)
+ continue;
+ switch (i) {
+ case 0 :
+ usr->email=strdup(locval);
+ break;
+ case 1 :
+ usr->space=atoi(locval);
+ break;
+ case 2 :
+ usr->mxspace=atoi(locval);
+ break;
+ default :
+ (void) rou_alert(0,"%s field <%s> not used (Bug?)",OPEP,usrfield[i]);
+ break;
+ }
}
- rs=dropresult(sql,rs);
break;
default :
+ rs=dropresult(sql,rs);
proceed=false;
break;
}