]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Able to chose data-base according binary used
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 20:15:48 +0000 (16:15 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 20:15:48 +0000 (16:15 -0400)
conf/mailleur.conf.dvl
lib/devsql.c
lib/subrou.h
lib/unimar.c
lib/unimar.h
lib/unipos.c
lib/unipos.h
lib/unisql.h

index bdd0ffb30a6c554b0973490b5251ce0315019e4d..f834b3eada1df3098095eee2ad5c8b67e9293453 100644 (file)
@@ -41,11 +41,11 @@ CA_VERIFY_CLT=0     #to check PEER/server remote certificate
 #------------------------------------------------
 #Configured for Postgresql database
 #DB_TYPE can be either POSTGRESQL,MYSQL, default POSTGRESQL
-DB_NAME=mailleur
-DB_HOST=localhost
-DB_LANG="UTF-8"
-DB_TYPE=POSTGRESQL
-DB_PORT=5432
+#DB_NAME=mailleur
+#DB_HOST=localhost
+#DB_LANG="UTF-8"
+#DB_TYPE=POSTGRESQL
+#DB_PORT=5432
 #DB_TYPE=MYSQL
 #DB_PORT=3306
 
index bf68dc4fbe01065eafa765f517f057b9e5cff2e1..9fa6c81c72b23f53ada7132a3aa20bac75b787ce 100644 (file)
@@ -217,7 +217,7 @@ PUBLIC SQLPTR *sql_opensql()
 static const char *dbenv[]={"DB_TYPE","DB_HOST","DB_PORT","DB_NAME"};
 
 SQLTYP *sql;
-const char *db[sizeof(dbenv)/sizeof(char *)];
+const char *db[SQLENV];
 int phase;
 _Bool proceed;
 
@@ -228,23 +228,38 @@ proceed=true;
 while (proceed==true) {
   //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
   switch (phase) {
-    case 0      :       //get database parameters
-      for (int i=0;i<(sizeof(dbenv)/sizeof(char *));i++) {
-        db[i]=getenv(dbenv[i]);
-        if (db[i]==(char *)0) {
-          (void) rou_alert(0,"%s Missing <%s> environment variable (config?)",
-                              OPEP,dbenv[i]);
-          phase=999;    //missing database information
+    case 0      :       //get the preset sql env variable
+      for (int i=0;i<2;i++) {
+        switch (i)      {
+          case 0        :       //Postgresql
+            if (posenv[0]!=(char *)0)
+              (void) memcpy(db,posenv,sizeof(db));
+            break;
+          case 1        :       //MySQL/Mariadb
+            if (marenv[0]!=(char *)0)
+              (void) memcpy(db,marenv,sizeof(db));
+            break;
+          default       :       //Trouble trouble
+            break;
           }
         }
       break;
-    case 1      :       //getting dbtype
+    case 1      :       //get database parameters
+      for (int i=0;i<(sizeof(dbenv)/sizeof(char *));i++) {
+        char *ptr;
+
+        ptr=getenv(dbenv[i]);
+        if (ptr!=(char *)0)
+          db[i]=ptr;    //Variable overwrite
+        }
+      break;
+    case 2      :       //getting dbtype
       if ((sql=gettyp(db[0]))==(SQLTYP *)0) {
         (void) rou_alert(0,"%s %s type unknown (config?)",OPEP,dbenv[0]);
         phase=999;    //missing database information
         }
       break;
-    case 2      :       //opening specific database
+    case 3      :       //opening specific database
       switch (sql->sqldb) {
         case db_postgres        :
           sql->db.psql=pos_opensql(db[1],db[2],db[3]);
@@ -258,7 +273,7 @@ while (proceed==true) {
           break;
         }
       break;
-    case 3      :       //checking if the database is properly open
+    case 4      :       //checking if the database is properly open
       _Bool isok;
 
       isok=false;
index 298d7a8c17fdab720b546bda628ea49abfe21587..d66f26dd9232ba60d5fd8a27fc2ded9b92921931 100644 (file)
@@ -22,6 +22,9 @@
 #define USE_POSTGRESQL  1
 #define USE_MYSQL       2
 
+#define SQLENV          5       //number of ENV parameters for 
+                                //SQL definition
+                        
 typedef void (*genfree_t)(void *);
 
 typedef struct timespec TIMESPEC;
index 2c817c2805407e3a39ea0df9a8175a30c326a9fb..f296c21dee995a426e7ee29fe9eb2bdf899c0dfe 100644 (file)
   #define DB_MYSQL
 #endif
 
+#ifdef  DB_MYSQL
+char *marenv[SQLENV]= {
+                      "MYSQL",
+                      "localhost",
+                      "3306",
+                      "mailleur",
+                      (char *)0
+                      };
+#else
+char *marenv[SQLENV]= {
+                      (char *)0,
+                      (char *)0,
+                      (char *)0,
+                      (char *)0,
+                      (char *)0
+                };
+#endif
+
 /*
 \f
 */
@@ -92,7 +110,7 @@ PUBLIC char *mar_caldate(char *expression,int second)
 char *seq;
 
 seq=(char *)0;
-(void) rou_asprintf(&seq,"(addtime(%s,%d)",expression,second);
+(void) rou_asprintf(&seq,"(addtime(%s,%d))",expression,second);
 return seq;
 }
 /*
index ff70733800ac6f14a377c91cb5e1c5fc8d68342e..613ace931afc002ae526395a2b3737c6b8e58042 100644 (file)
@@ -14,6 +14,9 @@ typedef void MARPTR;
 //reference to a MariaDB result
 typedef void MARRES;
 
+//Database env variable
+extern  char *marenv[SQLENV];
+
 //Procedure to detect and 'clean' any single quote within a string
 extern char *mar_cleanquote(char *sequence);
 
index bb73b21ae82b2dabf97d301446ade8d63c9d45fd..b972bc2cc2b5d360a568ba82edadc6b47a58a6c0 100644 (file)
 #include        "subrou.h"
 #include        "unipos.h"
 
+
+
 //checking if MYSQL database need to compiled
 #if DATABASE==USE_POSTGRESQL
-  #define DB_POSTGRESQL
+  #define       DB_POSTGRESQL
+#endif
+
+#ifdef          DB_POSTGRESQL
+char *posenv[SQLENV]= {
+                      "POSTGRESQL",
+                      "localhost",
+                      "5432",
+                      "mailleur",
+                      (char *)0
+                      };
+#else
+char *posenv[SQLENV]= {
+                      (char *)0,
+                      (char *)0,
+                      (char *)0,
+                      (char *)0,
+                      (char *)0
+                };
 #endif
+
 /*
 \f
 */
index 89dc2a9382c747d47a37b5aef01baf63c563b574..5a5ffcd714195217b91fa14cc34e595f62d47a1f 100644 (file)
@@ -14,6 +14,9 @@ typedef void POSPTR;
 //reference to a POSTGRESQL result
 typedef void POSRES;
 
+//Database env variable
+extern  char *posenv[SQLENV];
+
 //Procedure to detect and 'clean' any single quote within a string
 extern char *pos_cleanquote(char *sequence);
 
index 379bdd75e1797d3b1e8ee1a39483e361f714ef26..6254cf6b4cdfa878e5c4b130536841c930025af1 100644 (file)
@@ -9,6 +9,9 @@
 
 #include        <sys/types.h>
 
+#define SQLENV  5       //number of ENV parameters for 
+                        //SQL definition
+                        
 typedef enum    {
         sql_select,     //select a record
         sql_insert,     //create a record