Diff for /rpl/src/gestion_fichiers.c between versions 1.29 and 1.39

version 1.29, 2011/06/22 13:26:58 version 1.39, 2012/01/17 14:44:05
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.0.prerelease.3    RPL/2 (R) version 4.1.6
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 348  caracteristiques_fichier(struct_processu Line 348  caracteristiques_fichier(struct_processu
                 l_element_courant = (*l_element_courant).suivant;                  l_element_courant = (*l_element_courant).suivant;
             }              }
         }          }
           else if (errno == EACCES)
           {
               // Le répertoire n'est pas accessible en écriture. On tente
               // l'ouverture du fichier.
   
               if ((descripteur = open(nom, O_RDONLY, S_IRUSR | S_IWUSR)) == -1)
               {
                   // Le fichier n'existe pas.
                   close(descripteur);
                   erreur = d_absence_erreur;
               }
               else
               {
                   erreur = d_absence_erreur;
                   (*existence) = d_vrai;
   
                   // On chercher à savoir si le fichier est ouvert.
                   // S'il est ouvert, on renvoie son unité de rattachement.
   
                   l_element_courant = (*s_etat_processus).s_fichiers;
   
                   while(l_element_courant != NULL)
                   {
                       if (strcmp((*((struct_descripteur_fichier *)
                               (*l_element_courant).donnee)).nom, nom) == 0)
                       {
                           if (((*((struct_descripteur_fichier *)
                                   (*l_element_courant).donnee)).pid == getpid())
                                   && (pthread_equal(
                                   (*((struct_descripteur_fichier *)
                                   (*l_element_courant).donnee)).tid,
                                   pthread_self()) != 0))
                           {
                               (*ouverture) = d_vrai;
   
                               (*unite) = (unsigned long)
                                       fileno((*((struct_descripteur_fichier *)
                                       (*l_element_courant).donnee))
                                       .descripteur_c);
                               break;
                           }
                       }
   
                       l_element_courant = (*l_element_courant).suivant;
                   }
               }
           }
         else          else
         {          {
             erreur = d_erreur;              erreur = d_erreur;

Removed from v.1.29  
changed lines
  Added in v.1.39


CVSweb interface <joel.bertrand@systella.fr>