Diff for /rpl/src/sql.c between versions 1.34 and 1.56

version 1.34, 2012/01/17 14:44:13 version 1.56, 2015/02/19 11:01:30
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.6    RPL/2 (R) version 4.1.21
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2015 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 38 Line 38
 struct_objet *  struct_objet *
 parametres_sql(struct_processus *s_etat_processus, struct_objet *s_parametres)  parametres_sql(struct_processus *s_etat_processus, struct_objet *s_parametres)
 {  {
 #if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT)  
     struct_liste_chainee            *l_element_courant;      struct_liste_chainee            *l_element_courant;
   
     struct_objet                    *s_connecteur;      struct_objet                    *s_connecteur;
Line 46  parametres_sql(struct_processus *s_etat_ Line 45  parametres_sql(struct_processus *s_etat_
     unsigned char                   *locale;      unsigned char                   *locale;
     unsigned char                   *type_base;      unsigned char                   *type_base;
     unsigned char                   *serveur;      unsigned char                   *serveur;
   #   if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT)
     unsigned char                   *base;      unsigned char                   *base;
     unsigned char                   *utilisateur;      unsigned char                   *utilisateur;
     unsigned char                   *mot_de_passe;      unsigned char                   *mot_de_passe;
Line 54  parametres_sql(struct_processus *s_etat_ Line 54  parametres_sql(struct_processus *s_etat_
 #   endif  #   endif
   
     unsigned int                    port;      unsigned int                    port;
   #   endif
   
     if ((*s_parametres).type != LST)      if ((*s_parametres).type != LST)
     {      {
Line 75  parametres_sql(struct_processus *s_etat_ Line 76  parametres_sql(struct_processus *s_etat_
         return(NULL);          return(NULL);
     }      }
   
     if ((type_base = conversion_majuscule((unsigned char *)      if ((type_base = conversion_majuscule(s_etat_processus, (unsigned char *)
             (*(*l_element_courant).donnee).objet)) == NULL)              (*(*l_element_courant).donnee).objet)) == NULL)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 95  parametres_sql(struct_processus *s_etat_ Line 96  parametres_sql(struct_processus *s_etat_
      */       */
   
     if ((strcmp(type_base, "MYSQL") != 0) &&      if ((strcmp(type_base, "MYSQL") != 0) &&
             (strcmp(type_base, "POSTGRESQL") != 0))              (strcmp(type_base, "POSTGRESQL") != 0) &&
               (strcmp(type_base, "SQLITE") != 0))
     {      {
         (*s_etat_processus).erreur_execution = d_ex_argument_invalide;          (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
         return(NULL);          return(NULL);
Line 158  parametres_sql(struct_processus *s_etat_ Line 160  parametres_sql(struct_processus *s_etat_
   
     serveur = (unsigned char *) (*(*l_element_courant).donnee).objet;      serveur = (unsigned char *) (*(*l_element_courant).donnee).objet;
   
       // Dans le cas d'une base de données SQLite, seul le nom du fichier
       // importe.
   
       if (strcmp(type_base, "SQLITE") == 0)
       {
           if ((*l_element_courant).suivant != NULL)
           {
               liberation(s_etat_processus, s_connecteur);
               (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
               return(NULL);
           }
   
           (*((struct_connecteur_sql *) (*s_connecteur).objet)).descripteur.sqlite
                   = NULL;
   
           if (sqlite3_open_v2(serveur, &((*((struct_connecteur_sql *)
                   (*s_connecteur).objet)).descripteur.sqlite),
                   SQLITE_OPEN_READWRITE, NULL) != SQLITE_OK)
           {
               if ((*((struct_connecteur_sql *) (*s_connecteur).objet))
                       .descripteur.sqlite != NULL)
               {
                   sqlite3_close((*((struct_connecteur_sql *)
                           (*s_connecteur).objet)).descripteur.sqlite);
               }
   
               liberation(s_etat_processus, s_connecteur);
               (*s_etat_processus).erreur_execution = d_ex_erreur_sql;
               return(NULL);
           }
   
           return(s_connecteur);
       }
       else
       {
   #       if !(defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT))
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Attention : Support de %s non compilé !\n", type_base);
           }
           else
           {
               printf("+++Warning : %s support not available !\n", type_base);
           }
   #       endif
       }
   
   #   if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT)
     // Recherche du nom de la base de données      // Recherche du nom de la base de données
   
     l_element_courant = (*l_element_courant).suivant;      l_element_courant = (*l_element_courant).suivant;
Line 292  parametres_sql(struct_processus *s_etat_ Line 342  parametres_sql(struct_processus *s_etat_
         }          }
   
         fflush(stdout);          fflush(stdout);
   
           (*s_etat_processus).erreur_execution = d_ex_instruction_indisponible;
 #       endif  #       endif
     }      }
     else if (strcmp((*((struct_connecteur_sql *) (*s_connecteur).objet)).type,      else if (strcmp((*((struct_connecteur_sql *) (*s_connecteur).objet)).type,
Line 341  parametres_sql(struct_processus *s_etat_ Line 393  parametres_sql(struct_processus *s_etat_
         }          }
   
         fflush(stdout);          fflush(stdout);
   
           (*s_etat_processus).erreur_execution = d_ex_instruction_indisponible;
 #       endif  #       endif
     }      }
     else      else
Line 349  parametres_sql(struct_processus *s_etat_ Line 403  parametres_sql(struct_processus *s_etat_
         (*s_etat_processus).erreur_execution = d_ex_argument_invalide;          (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
         return(NULL);          return(NULL);
     }      }
   #   endif
   
     return(s_connecteur);      return(s_connecteur);
 #else  
     return(NULL);  
 #endif  
 }  }
   
 // vim: ts=4  // vim: ts=4

Removed from v.1.34  
changed lines
  Added in v.1.56


CVSweb interface <joel.bertrand@systella.fr>