Index: src/main.cpp =================================================================== RCS file: /usr/local/cvs/cvsnt/src/main.c,v retrieving revision 1.71.2.151.6.78 diff -c -r1.71.2.151.6.78 main.cpp *** src/main.cpp 29 Aug 2012 07:47:37 -0000 1.71.2.151.6.78 --- src/main.cpp 29 Aug 2012 10:10:39 -0000 *************** *** 1560,1574 **** strcat(base_pathbuf, "/"); strcat(base_pathbuf, "cvsproxy"); key = ftok(base_pathbuf,myppid); ! if (key>=0) semid = semget(key,1,0666); else { sem_errno = errno; sem_err = strerror(sem_errno); CServerIo::log(CServerIo::logError,"Open Semaphore failed (ftok) - cannot ensure that client terminates ok: %s\nThis may be caused by a missing file '%s'.",sem_err,base_pathbuf); CServerIo::trace(3,"Open Semaphore failed - ftok(%s) - cannot ensure client terminates OK: %s",base_pathbuf,sem_err); ! error (1, 0, "Fatal error \"cvsproxy\" not found in \"%s\".\nError cannot continue.\n",dirname(real_pathbuf)); } swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key); } --- 1560,1575 ---- strcat(base_pathbuf, "/"); strcat(base_pathbuf, "cvsproxy"); key = ftok(base_pathbuf,myppid); ! if ((unsigned long)key>=(unsigned long)0) semid = semget(key,1,0666); else { sem_errno = errno; sem_err = strerror(sem_errno); + swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key); CServerIo::log(CServerIo::logError,"Open Semaphore failed (ftok) - cannot ensure that client terminates ok: %s\nThis may be caused by a missing file '%s'.",sem_err,base_pathbuf); CServerIo::trace(3,"Open Semaphore failed - ftok(%s) - cannot ensure client terminates OK: %s",base_pathbuf,sem_err); ! error (1, 0, "Fatal error \"cvsproxy\" not found in \"%s\".\n\n(%S):\nerr %d: %s\nError cannot continue.\n",dirname(real_pathbuf),semnamew,sem_errno,sem_err); } swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key); } Index: CvsProxyUnix.cpp =================================================================== RCS file: /scotty/cvsproxy/CvsProxyUnix.cpp,v retrieving revision 1.14 diff -c -r1.14 CvsProxyUnix.cpp *** CvsProxyUnix.cpp 29 Aug 2012 09:32:55 -0000 1.14 --- CvsProxyUnix.cpp 29 Aug 2012 10:10:59 -0000 *************** *** 369,375 **** strcat(real_filename, "/"); strcat(real_filename, "cvsnt"); key = ftok(base_pathbuf,mypid); ! if (key>=0) semid = semget(key,1,0666 | IPC_CREAT); else { --- 369,375 ---- strcat(real_filename, "/"); strcat(real_filename, "cvsnt"); key = ftok(base_pathbuf,mypid); ! if ((unsigned long)key>=(unsigned long)0) semid = semget(key,1,0666 | IPC_CREAT); else { *************** *** 378,384 **** swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); CServerIo::trace(3,"Create Semaphore (%S) failed - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed (ftok) - cannot ensure that accept() is not raced (%S): %s\n",semnamew,sem_err); ! printf("Create Semaphore failed - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); } swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); } --- 378,385 ---- swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); CServerIo::trace(3,"Create Semaphore (%S) failed - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed (ftok) - cannot ensure that accept() is not raced (%S): %s\n",semnamew,sem_err); ! printf("Create Semaphore failed - cannot ensure that accept() is not raced\n(%S):\nerr %d: %s",semnamew,sem_errno,sem_err); ! return -1; } swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); } *************** *** 396,401 **** --- 397,403 ---- CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed (semget) - cannot ensure that accept() is not raced: %s\n",sem_err); CServerIo::trace(3,"Create Semaphore (%S) failed (semget) - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); printf("Create Semaphore failed (semget) - cannot ensure that accept() is not raced: %s\n",sem_err); + return -1; } CServerIo::trace(3,"Create Semaphore (%S) OK",semnamew);