--- 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 $'
! !