UnixOperatingSystem.st
changeset 18256 70138be99d04
parent 18226 444c446c1592
child 18261 22bdfc405bca
child 18278 a6bb05f48a1d
--- a/UnixOperatingSystem.st	Tue Apr 21 21:41:11 2015 +0200
+++ b/UnixOperatingSystem.st	Tue Apr 21 21:41:36 2015 +0200
@@ -1855,9 +1855,9 @@
 	RETURN ( __mkSmallInteger(SIGINFO) );
     }
 #endif
-
-    RETURN ( __mkSmallInteger(0) );
-%}
+%}.
+    ^ 0
+
     "
      OperatingSystem signalNamed:#SIGABRT
      OperatingSystem signalNamed:#SIGCHLD
@@ -5858,18 +5858,28 @@
      Use only for fully debugged stand alone applications."
 
 %{  /* NOCONTEXT */
-
+#ifdef __SCHTEAM__
+    if (signalNumber.isSmallInteger()) {
+	int sigNo = signalNumber.intValue();
+
+	if (sigNo != 0) {
+	    System.err.println("ignored disable-signal: "+sigNo);
+	}
+	return context._RETURN(self);
+    }
+#else
     if (__isSmallInteger(signalNumber)) {
 	int sigNo = __intVal(signalNumber);
 
 	if (sigNo == 0) {
 	    RETURN (self);
 	}
-#ifdef SIG_IGN
+# ifdef SIG_IGN
 	signal(sigNo, SIG_IGN);
 	RETURN (self);
-#endif
-    }
+# endif
+    }
+#endif
 %}.
     "
      this error is triggered on non-integer argument
@@ -6043,171 +6053,181 @@
      a signal."
 
 %{  /* NOCONTEXT */
-
-#ifdef NSIG
-# define SIG_LIMIT NSIG
+#ifdef __SCHTEAM__
+    if (signalNumber.isSmallInteger()) {
+	int sigNo = signalNumber.intValue();
+
+	if (sigNo != 0) {
+	    System.err.println("ignored enable-signal: "+sigNo);
+	}
+	return context._RETURN(self);
+    }
 #else
-# ifdef SIGUSR2
-#  define SIG_LIMIT SIGUSR2
+
+# ifdef NSIG
+#  define SIG_LIMIT NSIG
 # else
-#  ifdef SIGUSR
-#   define SIG_LIMIT SIGUSR
-#  endif
-# endif
-#endif
-
-#if defined(SIGPOLL) && !defined(SIGIO)
-# define SIGIO SIGPOLL
-#endif
-
-#ifdef SIGCHLD
-# define CHILD_SIGNAL   SIGCHLD
-#else
-# ifdef SIGCLD
-#  define CHILD_SIGNAL  SIGCLD
-# endif
-#endif
+#  ifdef SIGUSR2
+#   define SIG_LIMIT SIGUSR2
+#  else
+#   ifdef SIGUSR
+#    define SIG_LIMIT SIGUSR
+#   endif
+#  endif
+# endif
+
+# if defined(SIGPOLL) && !defined(SIGIO)
+#  define SIGIO SIGPOLL
+# endif
+
+# ifdef SIGCHLD
+#  define CHILD_SIGNAL   SIGCHLD
+# else
+#  ifdef SIGCLD
+#   define CHILD_SIGNAL  SIGCLD
+#  endif
+# endif
 
     int sigNr;
-#if defined(SIGINT) || defined(SIGQUIT)
-# ifndef __signalUserInterrupt
+# if defined(SIGINT) || defined(SIGQUIT)
+#  ifndef __signalUserInterrupt
     extern void __signalUserInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGFPE
-# ifndef __signalFpExceptionInterrupt
+#  endif
+# endif
+# ifdef SIGFPE
+#  ifndef __signalFpExceptionInterrupt
     extern void __signalFpExceptionInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGIO
-# ifndef __signalIoInterrupt
+#  endif
+# endif
+# ifdef SIGIO
+#  ifndef __signalIoInterrupt
     extern void __signalIoInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef CHILD_SIGNAL
-# ifndef __signalChildInterrupt
+#  endif
+# endif
+# ifdef CHILD_SIGNAL
+#  ifndef __signalChildInterrupt
     extern void __signalChildInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGPIPE
-# ifndef __signalPIPEInterrupt
+#  endif
+# endif
+# ifdef SIGPIPE
+#  ifndef __signalPIPEInterrupt
     extern void __signalPIPEInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGBUS
-# ifndef __signalBUSInterrupt
+#  endif
+# endif
+# ifdef SIGBUS
+#  ifndef __signalBUSInterrupt
     extern void __signalBUSInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGSEGV
-# ifndef __signalSEGVInterrupt
+#  endif
+# endif
+# ifdef SIGSEGV
+#  ifndef __signalSEGVInterrupt
     extern void __signalSEGVInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#if defined(SIGILL) || defined(SIGEMT)
-# ifndef __signalTrapInterrupt
+#  endif
+# endif
+# if defined(SIGILL) || defined(SIGEMT)
+#  ifndef __signalTrapInterrupt
     extern void __signalTrapInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGALRM
-# ifndef __signalTimerInterrupt
+#  endif
+# endif
+# ifdef SIGALRM
+#  ifndef __signalTimerInterrupt
     extern void __signalTimerInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifdef SIGABRT
-# ifndef __signalAbortInterrupt
+#  endif
+# endif
+# ifdef SIGABRT
+#  ifndef __signalAbortInterrupt
     extern void __signalAbortInterrupt(SIGHANDLER_ARG);
-# endif
-#endif
-#ifndef __signalInterrupt
+#  endif
+# endif
+# ifndef __signalInterrupt
     extern void __signalInterrupt(SIGHANDLER_ARG);
-#endif
+# endif
     void (*handler)(SIGHANDLER_ARG);
 
     if (__isSmallInteger(signalNumber)
      && ((sigNr = __intVal(signalNumber)) >= 0)
-#ifdef SIG_LIMIT
+# ifdef SIG_LIMIT
      &&  (sigNr <= SIG_LIMIT)
-#endif
+# endif
     ) {
 	/*
 	 * standard signals are forced into standard handlers
 	 * - all others go into general signalInterrupt
 	 */
-#if defined(SIGPOLL) && defined(SIGIO)
+# if defined(SIGPOLL) && defined(SIGIO)
 	if (sigNr == SIGPOLL)
 	    sigNr = SIGIO;
-#endif
+# endif
 	switch (sigNr) {
 	    case 0:
 		/* enabling a non-supported signal */
 		RETURN (self);
 
-#ifdef SIGBREAK
+# ifdef SIGBREAK
 	    case SIGBREAK:
-#endif
-#ifdef SIGINT
+# endif
+# ifdef SIGINT
 	    case SIGINT:
-#endif
-#ifdef SIGQUIT
+# endif
+# ifdef SIGQUIT
 	    case SIGQUIT:
-#endif
-#if defined(SIGINT) || defined(SIGQUIT) || defined(SIGBREAK)
+# endif
+# if defined(SIGINT) || defined(SIGQUIT) || defined(SIGBREAK)
 		handler = __signalUserInterrupt;
 		break;
-#endif
-#ifdef SIGFPE
+# endif
+# ifdef SIGFPE
 	    case SIGFPE:
 		handler = __signalFpExceptionInterrupt;
 		break;
-#endif
-
-#ifdef SIGPIPE
+# endif
+
+# ifdef SIGPIPE
 	    case SIGPIPE:
 		handler = __signalPIPEInterrupt;
 		break;
-#endif
-#ifdef SIGBUS
+# endif
+# ifdef SIGBUS
 	    case SIGBUS:
 		handler = __signalBUSInterrupt;
 		break;
-#endif
-#ifdef SIGSEGV
+# endif
+# ifdef SIGSEGV
 	    case SIGSEGV:
 		handler = __signalSEGVInterrupt;
 		break;
-#endif
-#ifdef SIGABRT
+# endif
+# ifdef SIGABRT
 	    case SIGABRT:
 		handler = __signalAbortInterrupt;
 		break;
-#endif
-#ifdef SIGILL
+# endif
+# ifdef SIGILL
 	    case SIGILL:
 		handler = __signalTrapInterrupt;
 		break;
-#endif
-#ifdef SIGEMT
+# endif
+# ifdef SIGEMT
 	    case SIGEMT:
 		handler = __signalTrapInterrupt;
 		break;
-#endif
-#ifdef SIGIO
+# endif
+# ifdef SIGIO
 	    case SIGIO:
 		handler = __signalIoInterrupt;
 		break;
-#endif
-
-#ifdef CHILD_SIGNAL
+# endif
+
+# ifdef CHILD_SIGNAL
 	    case CHILD_SIGNAL:
 		handler = __signalChildInterrupt;
 		break;
-#endif
-#ifdef SIGALRM
+# endif
+# ifdef SIGALRM
 	    case SIGALRM:
 		handler = __signalTimerInterrupt;
 		break;
-#endif
+# endif
 
 	    default:
 		handler = __signalInterrupt;
@@ -6215,7 +6235,7 @@
 	}
 
 	{
-#ifdef HAS_SIGACTION
+# ifdef HAS_SIGACTION
 	    struct sigaction act;
 
 	    /*
@@ -6229,18 +6249,18 @@
 	    sigemptyset(&act.sa_mask);
 	    act.sa_handler = handler;
 	    sigaction(sigNr, &act, 0);
-#else
-# ifdef HAS_SIGVEC
+# else
+#  ifdef HAS_SIGVEC
 	    struct sigvec vec;
 
 	    vec.sv_flags = SV_INTERRUPT;
 	    sigemptyset(&vec.sv_mask);
 	    vec.sv_handler = handler;
 	    sigvec(sigNr, &vec, NULL);
-# else
+#  else
 	    (void) signal(sigNr, handler);
-# endif
-#endif
+#  endif
+# endif
 	}
 
 	/*
@@ -6249,8 +6269,8 @@
 	 */
 	RETURN (self);
     }
-%}.
-
+#endif /* not SCHTEAM */
+%}.
     "
      this error is triggered on non-integer argument, or
      if the signal number is not in the valid range (1..NSIG)
@@ -6262,44 +6282,52 @@
     "setup for a timerInterrupt, to be signalled after some (real) time."
 
 %{  /* NOCONTEXT */
+#ifdef __SCHTEAM__
+    if (milliSeconds.isSmallInteger()) {
+	long millis = milliSeconds.longValue();
+
+	System.err.println("ignored enable-timer");
+	return context._RETURN(self);
+    }
+#else
     int millis;
 
     millis = __intVal(milliSeconds);
 
-#ifdef SIGALRM
+# ifdef SIGALRM
     {
 	static int firstCall = 1;
-# ifndef __signalTimerInterrupt
+#  ifndef __signalTimerInterrupt
 	extern void __signalTimerInterrupt(SIGHANDLER_ARG);
-# endif
+#  endif
 
 	if (firstCall) {
-# ifdef HAS_SIGACTION
+#  ifdef HAS_SIGACTION
 	    struct sigaction act;
 
 	    act.sa_flags = SA_SIGINFO; /* <- if you add more, remember dummys at the top */
 	    sigemptyset(&act.sa_mask);
 	    act.sa_handler = __signalTimerInterrupt;
 	    sigaction(SIGALRM, &act, 0);
-# else
-#  ifdef HAS_SIGVEC
+#  else
+#   ifdef HAS_SIGVEC
 	    struct sigvec vec;
 
 	    vec.sv_flags = SV_INTERRUPT;
 	    sigemptyset(&vec.sv_mask);
 	    vec.sv_handler = __signalTimerInterrupt;
 	    sigvec(SIGALRM, &vec, NULL);
-#  else /* neither SIGACTION nor SIGVEC */
+#   else /* neither SIGACTION nor SIGVEC */
 	    signal(SIGALRM, __signalTimerInterrupt);
-#  endif /* stupid system  */
-# endif
+#   endif /* stupid system  */
+#  endif
 	    firstCall = 0;
 	}
     }
-#endif /* SIGALRM */
-
-
-#if defined(ITIMER_REAL) && !defined(NO_SETITIMER)
+# endif /* SIGALRM */
+
+
+# if defined(ITIMER_REAL) && !defined(NO_SETITIMER)
     {
 	struct itimerval dt;
 
@@ -6310,9 +6338,9 @@
 	setitimer(ITIMER_REAL, &dt, 0);
 	RETURN (true);
     }
-#else /* no ITIMER_REAL */
-
-# ifdef USE_SLOW_ALARM
+# else /* no ITIMER_REAL */
+
+#  ifdef USE_SLOW_ALARM
     {
 	/*
 	 * last fallback - use alarm (which only gives 1 second resolution).
@@ -6323,8 +6351,9 @@
 	alarm(1);
 	RETURN(true);
     }
-# endif
-#endif /* ITIMER_REAL */
+#  endif
+# endif /* ITIMER_REAL */
+#endif /* not SCHTEAM */
 %}.
     ^ false
 !
@@ -7057,7 +7086,20 @@
     "get an environment string"
 
 %{  /* NOCONTEXT */
-
+#ifdef __SCHTEAM__
+    {
+	java.lang.String val = System.getenv( aStringOrSymbol.asString() );
+	STObject retVal;
+
+	if (val == null) {
+	    retVal = STObject.Nil;
+	} else {
+	    retVal = new STString( val );
+	}
+	return context._RETURN( retVal );
+	/* NOTREACHED */
+    }
+#else
     extern char *getenv();
 
     if (__isStringLike(aStringOrSymbol)) {
@@ -7067,6 +7109,7 @@
 	}
 	RETURN ( nil );
     }
+#endif /* not SCHTEAM */
 %}.
     ^ self primitiveFailed
 
@@ -14202,11 +14245,11 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.435 2015-04-19 09:43:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.436 2015-04-21 19:41:36 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.435 2015-04-19 09:43:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.436 2015-04-21 19:41:36 cg Exp $'
 ! !