Diff for /rpl/src/semaphores.c between versions 1.75 and 1.76

version 1.75, 2016/03/18 12:43:48 version 1.76, 2016/03/22 09:22:23
Line 76  sem_init2(unsigned int valeur, pid_t pid Line 76  sem_init2(unsigned int valeur, pid_t pid
     sem_t                       *semaphore;      sem_t                       *semaphore;
   
     unsigned char               *chemin;      unsigned char               *chemin;
       unsigned char               *langue;
   
     if ((chemin = nom_segment_semaphore(pid, ordre)) == NULL)      if ((chemin = nom_segment_semaphore(pid, ordre)) == NULL)
     {      {
         return(SEM_FAILED);          return(SEM_FAILED);
     }      }
   
     semaphore = sem_open(chemin, O_RDWR | O_CREAT /*| O_EXCL*/,      if ((semaphore = sem_open(chemin, O_RDWR | O_CREAT | O_EXCL,
             S_IRUSR | S_IWUSR, valeur);              S_IRUSR | S_IWUSR, valeur)) == SEM_FAILED)
       {
           if (errno == EEXIST)
           {
               if ((langue = getenv("LANG")) != NULL)
               {
                   if (strncmp(langue, "fr", 2) == 0)
                   {
                       uprintf("+++Attention : Le sémaphore %s préexiste !\n",
                               chemin);
                   }
                   else
                   {
                       uprintf("+++Warning: %s semaphore preexists!\n", chemin);
                   }
               }
               else
               {
                   uprintf("+++Warning: %s semaphore preexists!\n", chemin);
               }
   
               semaphore = sem_open(chemin, O_RDWR | O_CREAT,
                       S_IRUSR | S_IWUSR, valeur);
           }
       }
   
     sys_free(chemin);      sys_free(chemin);
   
     return(semaphore);      return(semaphore);
Line 96  sem_init3(unsigned int valeur, pid_t pid Line 122  sem_init3(unsigned int valeur, pid_t pid
     sem_t                       *semaphore;      sem_t                       *semaphore;
   
     unsigned char               *chemin;      unsigned char               *chemin;
       unsigned char               *langue;
   
     if ((chemin = nom_segment_semaphore_thread(pid, tid, ordre)) == NULL)      if ((chemin = nom_segment_semaphore_thread(pid, tid, ordre)) == NULL)
     {      {
         return(SEM_FAILED);          return(SEM_FAILED);
     }      }
   
     semaphore = sem_open(chemin, O_CREAT | /*O_EXCL | */ O_RDWR,      if ((semaphore = sem_open(chemin, O_RDWR | O_CREAT | O_EXCL,
             S_IRUSR | S_IWUSR, valeur);              S_IRUSR | S_IWUSR, valeur)) == SEM_FAILED)
       {
           if (errno == EEXIST)
           {
               if ((langue = getenv("LANG")) != NULL)
               {
                   if (strncmp(langue, "fr", 2) == 0)
                   {
                       uprintf("+++Attention : Le sémaphore %s préexiste !\n",
                               chemin);
                   }
                   else
                   {
                       uprintf("+++Warning: %s semaphore preexists!\n", chemin);
                   }
               }
               else
               {
                   uprintf("+++Warning: %s semaphore preexists!\n", chemin);
               }
   
               semaphore = sem_open(chemin, O_RDWR | O_CREAT,
                       S_IRUSR | S_IWUSR, valeur);
           }
       }
   
     sys_free(chemin);      sys_free(chemin);
   
     return(semaphore);      return(semaphore);
Line 277  sem_init_SysV(sem_t *semaphore, int shar Line 329  sem_init_SysV(sem_t *semaphore, int shar
   
         union semun     argument;          union semun     argument;
   
           unsigned char   *langue;
   
         if (shared == 0)          if (shared == 0)
         {          {
             // Sémaphore privé              // Sémaphore privé
Line 301  sem_init_SysV(sem_t *semaphore, int shar Line 355  sem_init_SysV(sem_t *semaphore, int shar
                     (long long unsigned) pthread_self(),                      (long long unsigned) pthread_self(),
                     (long long unsigned) semaphore);                      (long long unsigned) semaphore);
   
             if ((desc = open((*semaphore).path, O_RDWR | O_CREAT /*| O_EXCL*/,              if ((desc = open((*semaphore).path, O_RDWR | O_CREAT | O_EXCL,
                     S_IRUSR | S_IWUSR)) == -1)                      S_IRUSR | S_IWUSR)) == -1)
             {              {
                 sys_free((*semaphore).path);                  if (errno != EEXIST)
                 return(-1);                  {
                       sys_free((*semaphore).path);
                       return(-1);
                   }
   
                   if ((langue = getenv("LANG")) != NULL)
                   {
                       if (strncmp(langue, "fr", 2) == 0)
                       {
                           uprintf("+++Attention : Le sémaphore %s préexiste !\n",
                                   (*semaphore).path);
                       }
                       else
                       {
                           uprintf("+++Warning: %s semaphore preexists!\n",
                                   (*semaphore).path);
                       }
                   }
                   else
                   {
                       uprintf("+++Warning: %s semaphore preexists!\n",
                               (*semaphore).path);
                   }
   
                   if ((desc = open((*semaphore).path, O_RDWR | O_CREAT,
                           S_IRUSR | S_IWUSR)) == -1)
                   {
                       sys_free((*semaphore).path);
                       return(-1);
                   }
             }              }
   
             (*semaphore).pid = getpid();              (*semaphore).pid = getpid();
Line 701  sem_t Line 784  sem_t
         key_t           clef;          key_t           clef;
   
         union semun     argument;          union semun     argument;
   
           unsigned char   *langue;
 #   endif  #   endif
   
     unsigned char       *nom_absolu;      unsigned char       *nom_absolu;
Line 888  sem_t Line 973  sem_t
         va_end(liste);          va_end(liste);
   
 #       ifndef OS2 // IPCS_SYSV  #       ifndef OS2 // IPCS_SYSV
             if ((desc = open(nom_absolu, O_CREAT | /*O_EXCL |*/ O_RDWR,              if ((desc = open(nom_absolu, O_CREAT | O_EXCL | O_RDWR,
                     S_IRUSR | S_IWUSR)) == -1)                      S_IRUSR | S_IWUSR)) == -1)
             {              {
                 sys_free(semaphore);                  if (errno != EEXIST)
                 sys_free(nom_absolu);                  {
                       sys_free(semaphore);
                       sys_free(nom_absolu);
                       return(SEM_FAILED);
                   }
   
                 return(SEM_FAILED);                  if ((langue = getenv("LANG")) != NULL)
                   {
                       if (strncmp(langue, "fr", 2) == 0)
                       {
                           uprintf("+++Attention : Le sémaphore %s préexiste !\n",
                                   nom_absolu);
                       }
                       else
                       {
                           uprintf("+++Warning: %s semaphore preexists!\n",
                                   nom_absolu);
                       }
                   }
                   else
                   {
                       uprintf("+++Warning: %s semaphore preexists!\n",
                               nom_absolu);
                   }
   
                   if ((desc = open(nom_absolu, O_CREAT | O_RDWR,
                           S_IRUSR | S_IWUSR)) == -1)
                   {
                       sys_free(semaphore);
                       sys_free(nom_absolu);
                       return(SEM_FAILED);
                   }
             }              }
   
             if ((clef = ftok(nom_absolu, 1)) == -1)              if ((clef = ftok(nom_absolu, 1)) == -1)

Removed from v.1.75  
changed lines
  Added in v.1.76


CVSweb interface <joel.bertrand@systella.fr>