Index: src/main.cpp
===================================================================
RCS file: /usr/local/cvs/cvsnt/src/main.c,v
retrieving revision 1.71.2.151.6.77
diff -c -r1.71.2.151.6.77 main.cpp
*** src/main.cpp	28 Aug 2012 08:54:48 -0000	1.71.2.151.6.77
--- src/main.cpp	29 Aug 2012 08:29:08 -0000
***************
*** 1563,1577 ****
  		if (key>=0)
  			semid = semget(key,1,0666);
  		else
! 			CServerIo::trace(3,"ftok failed - no path %s",base_pathbuf);
  		swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key);
  	}
  	if(semid < 0)
  	{
  		sem_errno = errno;
  		sem_err = strerror(sem_errno);
! 		CServerIo::log(CServerIo::logError,"Open Semaphore failed - cannot ensure that client terminates ok: %s\nThis may be caused by a person trying to run 'cvsnt' rather than 'cvs'.",sem_err);
! 		CServerIo::trace(3,"Open Semaphore failed - cannot ensure client terminates OK: %s",sem_err);
  		error (1, 0, "Please run \"cvs\" not \"cvsnt\".\nError cannot continue.\n");
  	}
  	else
--- 1563,1583 ----
  		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);
  	}
  	if(semid < 0)
  	{
  		sem_errno = errno;
  		sem_err = strerror(sem_errno);
! 		CServerIo::log(CServerIo::logError,"Open Semaphore failed (semget) - cannot ensure that client terminates ok: %s\nThis may be caused by a person trying to run 'cvsnt' rather than 'cvs'.",sem_err);
! 		CServerIo::trace(3,"Open Semaphore failed (semget) - cannot ensure client terminates OK: %s",sem_err);
  		error (1, 0, "Please run \"cvs\" not \"cvsnt\".\nError cannot continue.\n");
  	}
  	else
Index: cvstools/ServerInfo.cpp
===================================================================
RCS file: /usr/local/cvs/cvsnt/cvstools/ServerInfo.cpp,v
retrieving revision 1.1.2.7.4.8
diff -c -r1.1.2.7.4.8 ServerInfo.cpp
*** cvstools/ServerInfo.cpp	31 May 2012 02:47:30 -0000	1.1.2.7.4.8
--- cvstools/ServerInfo.cpp	29 Aug 2012 04:51:47 -0000
***************
*** 74,80 ****
  	sockptr = new CSocketIO();
  	if(!sockptr->create(remote,(remotep)?remotep+1:"2401",false,true,rtimeout,stimeout))
  	{
! 		CServerIo::error("Couldn't create socket: %s",sockptr->error());
  		delete sockptr;
  		return false;
  	}
--- 74,80 ----
  	sockptr = new CSocketIO();
  	if(!sockptr->create(remote,(remotep)?remotep+1:"2401",false,true,rtimeout,stimeout))
  	{
! 		CServerIo::error("Couldn't create socket: %s\n",sockptr->error());
  		delete sockptr;
  		return false;
  	}
***************
*** 87,93 ****
  		// otherwise if this is the first return - just give the message
  		if (retry_connect_count>1)
  		{
! 		CServerIo::error("Couldn't connect to remote server: %s",sockptr->error());
  		delete sockptr;
  		return false;
  		}
--- 87,94 ----
  		// otherwise if this is the first return - just give the message
  		if (retry_connect_count>1)
  		{
! 		CServerIo::trace(3,"Couldn't connect to remote server: %s",sockptr->error());
! 		CServerIo::error("Couldn't connect to remote server: %s\n",sockptr->error());
  		delete sockptr;
  		return false;
  		}
Index: CvsProxyUnix.cpp
===================================================================
RCS file: /scotty/cvsproxy/CvsProxyUnix.cpp,v
retrieving revision 1.12
diff -c -r1.12 CvsProxyUnix.cpp
*** CvsProxyUnix.cpp	28 Aug 2012 09:55:09 -0000	1.12
--- CvsProxyUnix.cpp	29 Aug 2012 08:24:11 -0000
***************
*** 354,359 ****
--- 354,362 ----
  
  		wcscpy(semnamew,L"\0");
  
+ 		int sem_errno;
+ 		const char *sem_err;
+ 		
  		if (strlen(real_pathbuf)>0)
  		{
  			char *bundle_id;
***************
*** 366,378 ****
  			strcat(real_filename, "/");
  			strcat(real_filename, "cvsnt");
  			key = ftok(base_pathbuf,mypid);
  			semid = semget(key,1,0666 | IPC_CREAT);
  			swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key);
  		}
  
- 		int sem_errno;
- 		const char *sem_err;
- 		
  		if(semid < 0)
  		{
  			if (strlen(base_pathbuf)>0)
--- 369,389 ----
  			strcat(real_filename, "/");
  			strcat(real_filename, "cvsnt");
  			key = ftok(base_pathbuf,mypid);
+ 			if (key>=0)
+ 				semid = semget(key,1,0666);
+ 			else
+ 			{
+ 				sem_errno = errno;
+ 				sem_err = strerror(sem_errno);
+ 				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);
+ 			}
  			semid = semget(key,1,0666 | IPC_CREAT);
  			swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key);
  		}
  
  		if(semid < 0)
  		{
  			if (strlen(base_pathbuf)>0)
***************
*** 383,391 ****
  			else
  				sem_err=strdup("** no real path **");
  			
! 			CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed - cannot ensure that accept() is not raced: %s\n",sem_err);
! 			CServerIo::trace(3,"Create Semaphore (%S) failed - cannot ensure that accept() is not raced (%s): %s",semnamew,sem_err);
! 			printf("Create Semaphore failed - cannot ensure that accept() is not raced: %s\n",sem_err);
  		}
  		CServerIo::trace(3,"Create Semaphore (%S) OK",semnamew);
  		
--- 394,402 ----
  			else
  				sem_err=strdup("** no real path **");
  			
! 			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);
  		}
  		CServerIo::trace(3,"Create Semaphore (%S) OK",semnamew);