Diff for /rpl/src/instructions_c4.c between versions 1.6 and 1.7

version 1.6, 2010/03/05 11:20:08 version 1.7, 2010/03/06 18:29:07
Line 753  instruction_convert(struct_processus *s_ Line 753  instruction_convert(struct_processus *s_
 void  void
 instruction_close(struct_processus *s_etat_processus)  instruction_close(struct_processus *s_etat_processus)
 {  {
     file                        *descripteur;      const char                  *queue;
   
     int                         socket;      int                         socket;
   
     logical1                    socket_connectee;      logical1                    socket_connectee;
   
       sqlite3_stmt                *ppStmt;
   
       struct_descripteur_fichier  *descripteur;
   
     struct_liste_chainee        *l_element_courant;      struct_liste_chainee        *l_element_courant;
     struct_liste_chainee        *l_element_precedent;      struct_liste_chainee        *l_element_precedent;
   
Line 836  instruction_close(struct_processus *s_et Line 840  instruction_close(struct_processus *s_et
                         (*((struct_descripteur_fichier *) (*l_element_courant)                          (*((struct_descripteur_fichier *) (*l_element_courant)
                         .donnee)).tid) != 0))                          .donnee)).tid) != 0))
                 {                  {
                     descripteur = (*((struct_descripteur_fichier *)                      descripteur = (struct_descripteur_fichier *)
                             (*l_element_courant).donnee)).descripteur;                              (*l_element_courant).donnee;
   
                     if (l_element_precedent == NULL)                      if (l_element_precedent == NULL)
                     {                      {
Line 856  instruction_close(struct_processus *s_et Line 860  instruction_close(struct_processus *s_et
   
                     free((*((struct_descripteur_fichier *)                      free((*((struct_descripteur_fichier *)
                             (*l_element_courant).donnee)).nom);                              (*l_element_courant).donnee)).nom);
                     free((*l_element_courant).donnee);  
                     free(l_element_courant);                      free(l_element_courant);
   
                     break;                      break;
Line 879  instruction_close(struct_processus *s_et Line 882  instruction_close(struct_processus *s_et
          * Fermeture du fichier           * Fermeture du fichier
          */           */
   
         if (fclose(descripteur) != 0)          if (fclose((*descripteur).descripteur_c) != 0)
         {          {
               free(descripteur);
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
   
             (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;              (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
             return;              return;
         }          }
   
           if ((*descripteur).type != 'C')
           {
               if (sqlite3_prepare_v2((*descripteur).descripteur_sqlite,
                       "vacuum", 7, &ppStmt, &queue) != SQLITE_OK)
               {
                   free(descripteur);
                   liberation(s_etat_processus, s_objet_argument);
   
                   (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   return;
               }
   
               if (sqlite3_step(ppStmt) != SQLITE_DONE)
               {
                   free(descripteur);
                   liberation(s_etat_processus, s_objet_argument);
   
                   (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   return;
               }
   
               if (sqlite3_finalize(ppStmt) != SQLITE_OK)
               {
                   free(descripteur);
                   liberation(s_etat_processus, s_objet_argument);
   
                   (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   return;
               }
   
               if (sqlite3_close((*descripteur).descripteur_sqlite) != SQLITE_OK)
               {
                   free(descripteur);
                   liberation(s_etat_processus, s_objet_argument);
   
                   (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   return;
               }
   
               free(descripteur);
           }
   
         if ((*((struct_fichier *) (*s_objet_argument).objet)).ouverture == 'S')          if ((*((struct_fichier *) (*s_objet_argument).objet)).ouverture == 'S')
         {          {
             if (destruction_fichier((*((struct_fichier *)              if (destruction_fichier((*((struct_fichier *)
Line 1023  instruction_create(struct_processus *s_e Line 1069  instruction_create(struct_processus *s_e
   
     struct_objet                *s_objet_argument;      struct_objet                *s_objet_argument;
   
       unsigned char               *nom;
   
     unsigned long               unite;      unsigned long               unite;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
Line 1067  instruction_create(struct_processus *s_e Line 1115  instruction_create(struct_processus *s_e
   
     if ((*s_objet_argument).type == CHN)      if ((*s_objet_argument).type == CHN)
     {      {
         erreur = caracteristiques_fichier(s_etat_processus, (unsigned char *)          if ((nom = transliteration(s_etat_processus, (unsigned char *)
                 (*s_objet_argument).objet, &existence, &ouverture, &unite);                  (*s_objet_argument).objet, d_locale, "UTF-8")) == NULL)
           {
               liberation(s_etat_processus, s_objet_argument);
               return;
           }
   
           erreur = caracteristiques_fichier(s_etat_processus, nom,
                   &existence, &ouverture, &unite);
   
         if ((erreur != d_absence_erreur) || (existence == d_vrai))          if ((erreur != d_absence_erreur) || (existence == d_vrai))
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
               free(nom);
   
             (*s_etat_processus).erreur_execution =              (*s_etat_processus).erreur_execution =
                     d_ex_erreur_acces_fichier;                      d_ex_erreur_acces_fichier;
             return;              return;
         }          }
   
         if ((fichier = fopen((unsigned char *) (*s_objet_argument).objet, "w"))          if ((fichier = fopen(nom, "w")) == NULL)
                 == NULL)  
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);
               free(nom);
   
             (*s_etat_processus).erreur_execution =              (*s_etat_processus).erreur_execution =
                     d_ex_erreur_acces_fichier;                      d_ex_erreur_acces_fichier;
             return;              return;
         }          }
   
           free(nom);
   
         if (fclose(fichier) != 0)          if (fclose(fichier) != 0)
         {          {
             liberation(s_etat_processus, s_objet_argument);              liberation(s_etat_processus, s_objet_argument);

Removed from v.1.6  
changed lines
  Added in v.1.7


CVSweb interface <joel.bertrand@systella.fr>