--- rpl/src/semaphores.c 2011/09/20 15:45:53 1.35 +++ rpl/src/semaphores.c 2011/09/20 19:28:39 1.37 @@ -144,7 +144,7 @@ sem_destroy2(sem_t *semaphore, pid_t pid return(1); } - erreur = sem_unlink(chemin); + erreur = em_unlink(chemin); free(chemin); return(erreur); @@ -297,9 +297,8 @@ sem_init_SysV(sem_t *semaphore, int shar return(-1); } - sprintf((*semaphore).path, "%s/RPL-SIGSEMAPHORE-%d-%llX", - racine_segment, pthread_self(), - (int) getpid(), pthread_self()); + sprintf((*semaphore).path, "%s/RPL-SEMAPHORE-%d-%llX-%d", + racine_segment, (int) getpid(), pthread_self(), shared); if ((desc = open((*semaphore).path, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) == -1) @@ -309,7 +308,7 @@ sem_init_SysV(sem_t *semaphore, int shar } (*semaphore).pid = getpid(); - (*semaphore).tid = pthread_slef(); + (*semaphore).tid = pthread_self(); clef = ftok((*semaphore).path, 1); close(desc); @@ -1008,15 +1007,13 @@ sem_unlink_SysV(const char *nom) { // Détruit un sémaphore nommé créé par sem_open_SysV() # ifndef OS2 // IPCS_SYSV - semctl(semget(ftok(nom_absolu, 1), 0, 0), 0, IPC_RMID); + semctl(semget(ftok(nom, 1), 0, 0), 0, IPC_RMID); - if (unlink(nom_absolu) == -1) + if (unlink(nom) == -1) { - free(nom_absolu); return(EACCES); } - free(nom_absolu); return(0); # else