Diff for /rpl/src/instructions_d4.c between versions 1.4 and 1.5

version 1.4, 2010/03/04 10:17:50 version 1.5, 2010/03/06 18:29:07
Line 50  instruction_delete(struct_processus *s_e Line 50  instruction_delete(struct_processus *s_e
   
     struct stat                 requete;      struct stat                 requete;
   
       unsigned char               *nom;
   
     unsigned long               unite;      unsigned long               unite;
   
     (*s_etat_processus).erreur_execution = d_ex;      (*s_etat_processus).erreur_execution = d_ex;
Line 94  instruction_delete(struct_processus *s_e Line 96  instruction_delete(struct_processus *s_e
   
     if ((*s_objet_argument).type == CHN)      if ((*s_objet_argument).type == CHN)
     {      {
         if (stat((unsigned char *) (*s_objet_argument).objet,          if ((nom = transliteration(s_etat_processus,
                 &requete) != 0)                  (unsigned char *) (*s_objet_argument).objet,
                   d_locale, "UTF-8")) == NULL)
           {
               liberation(s_etat_processus, s_objet_argument);
               return;
           }
   
           if (stat(nom, &requete) != 0)
         {          {
             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;
Line 106  instruction_delete(struct_processus *s_e Line 116  instruction_delete(struct_processus *s_e
   
         if (S_ISREG(requete.st_mode)) // Fichier régulier          if (S_ISREG(requete.st_mode)) // Fichier régulier
         {          {
             if ((fichier = fopen((unsigned char *)              if ((fichier = fopen(nom, "r+")) == NULL)
                     (*s_objet_argument).objet, "r+")) == 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;
Line 124  instruction_delete(struct_processus *s_e Line 134  instruction_delete(struct_processus *s_e
   
             if (fcntl(fileno(fichier), F_GETLK, &lock) == -1)              if (fcntl(fileno(fichier), F_GETLK, &lock) == -1)
             {              {
                   free(nom);
   
                 if (fclose(fichier) != 0)                  if (fclose(fichier) != 0)
                 {                  {
                     liberation(s_etat_processus, s_objet_argument);                      liberation(s_etat_processus, s_objet_argument);
Line 143  instruction_delete(struct_processus *s_e Line 155  instruction_delete(struct_processus *s_e
             if (lock.l_type != F_UNLCK)              if (lock.l_type != F_UNLCK)
             {              {
                 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;
             }              }
   
             erreur = caracteristiques_fichier(s_etat_processus,              erreur = caracteristiques_fichier(s_etat_processus, nom,
                     (unsigned char *) (*s_objet_argument).objet,  
                     &existence, &ouverture, &unite);                      &existence, &ouverture, &unite);
   
             if ((erreur != d_absence_erreur) || (ouverture == d_vrai))              if ((erreur != d_absence_erreur) || (ouverture == 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 (destruction_fichier((unsigned char *)              if (destruction_fichier(nom) == d_erreur)
                     (*s_objet_argument).objet) == d_erreur)  
             {              {
                 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;
Line 174  instruction_delete(struct_processus *s_e Line 187  instruction_delete(struct_processus *s_e
         }          }
         else // Socket          else // Socket
         {          {
             if (unlink((unsigned char *) (*s_objet_argument).objet) != 0)              if (unlink(nom) != 0)
             {              {
                 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);
     }      }
     else      else
     {      {

Removed from v.1.4  
changed lines
  Added in v.1.5


CVSweb interface <joel.bertrand@systella.fr>