Forgot the patch about jthread on hpux

evenh at pvv.ntnu.no evenh at pvv.ntnu.no
Sat Jul 25 05:36:30 PDT 1998


I forgot to add the patch to my last mail, I try again...

Regards,
Even Holen
-- 
<><   Even Holen, evenh at pvv.ntnu.no, http://www.pvv.ntnu.no/~evenh/   :-)
-------------- next part --------------
*** systems/unix-jthreads/jthread.c	Sat Jul 25 14:12:19 1998
--- /store/store/stash/kaffe/src-1.0.b1/kaffe/kaffevm/systems/unix-jthreads/jthread.c	Tue Jul 14 06:34:20 1998
*************** jthreadedFileDescriptor(int fd)
*** 1451,1457 ****
  	 * Apparently, this can fail, for instance when we stdout is 
  	 * redirected to /dev/null. (On FreeBSD)
  	 */
! 	r = fcntl(fd, F_SETFL, r | O_NONBLOCK 
  #if defined(O_ASYNC)
  		| O_ASYNC
  #elif defined(FASYNC)
--- 1451,1457 ----
  	 * Apparently, this can fail, for instance when we stdout is 
  	 * redirected to /dev/null. (On FreeBSD)
  	 */
! 	fcntl(fd, F_SETFL, r | O_NONBLOCK 
  #if defined(O_ASYNC)
  		| O_ASYNC
  #elif defined(FASYNC)
*************** jthreadedFileDescriptor(int fd)
*** 1461,1501 ****
  
  #if defined(FIOSSAIOSTAT)
  	/* on hpux */
! 	if ( (r = ioctl(fd, FIOSSAIOSTAT, &on)) < 0 && errno !=ENOTTY) {
! 		/* Defines ENOTTY to be an acceptable error */
! 		perror("Failed doing FIOSSAIOSTAT");
!  		return (r);
! 	}
  #elif defined(FIOASYNC)
  	/* 
  	 * On some systems, this will not work if a terminal fd is redirected.
  	 * (Solaris sets errno to ENXIO in this case.
  	 */
! 	if (r = ioctl(fd, FIOASYNC, &on)) < 0 && errno != ENXIO) {
! 		/* Defines ENXIO to be an acceptable error */
! 		perror("Failed doing FIOASYNC");
! 		return (r);
!         }
  #endif
  
  #if !(defined(O_ASYNC) || defined(FIOASYNC) ||  \
        defined(FASYNC) || defined(FIOSSAIOSTAT))
  #error	Could not put socket in async mode
  #endif
! 
! 
! #if defined(FIOSSAIOOWN)
! 	r=ioctl(fd, FIOSSAIOOWN, &pid);
!         if (r==-1 && errno != ENOTTY) {
! 		perror("Error doing FIOSSAIOWN");
! 	}
! 	
! #elif defined(F_SETOWN)
  	/* Allow socket to signal this process when new data is available */
  	/* On some systems, this will flag an error if fd is not a socket */
! 	if ((r=fcntl(fd, F_SETOWN, pid)) < 0) {
! 		perror("Error doing F_SETOWN");
! 	}
  #endif
  	return (fd);
  }
--- 1461,1485 ----
  
  #if defined(FIOSSAIOSTAT)
  	/* on hpux */
! 	if ((r = ioctl(fd, FIOSSAIOSTAT, &on)) < 0)
! 		return (r);
! 
  #elif defined(FIOASYNC)
  	/* 
  	 * On some systems, this will not work if a terminal fd is redirected.
  	 * (Solaris sets errno to ENXIO in this case.
  	 */
! 	ioctl(fd, FIOASYNC, &on);
  #endif
  
  #if !(defined(O_ASYNC) || defined(FIOASYNC) ||  \
        defined(FASYNC) || defined(FIOSSAIOSTAT))
  #error	Could not put socket in async mode
  #endif
! #if defined(F_SETOWN)
  	/* Allow socket to signal this process when new data is available */
  	/* On some systems, this will flag an error if fd is not a socket */
! 	fcntl(fd, F_SETOWN, pid);
  #endif
  	return (fd);
  }


More information about the kaffe mailing list