diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | beos/beos.c | 16 | ||||
-rw-r--r-- | beos/beosish.h | 13 | ||||
-rw-r--r-- | hints/beos.sh | 2 | ||||
-rw-r--r-- | perl.h | 5 |
5 files changed, 38 insertions, 0 deletions
@@ -3,6 +3,8 @@ Artistic The "Artistic License" AUTHORS Contact info for contributors av.c Array value code av.h Array value header +beos/beosish.h BeOS port +beos/beos.c BeOS port beos/nm.c BeOS port bytecode.pl Produces ext/ByteLoader/byterun.h, ext/ByteLoader/byterun.c and ext/B/Asmdata.pm cc_runtime.h Macros need by runtime of compiler-generated code diff --git a/beos/beos.c b/beos/beos.c new file mode 100644 index 0000000000..f0e8147109 --- /dev/null +++ b/beos/beos.c @@ -0,0 +1,16 @@ +#undef waitpid + +#include <sys/wait.h> + +/* In BeOS 5.0 the waitpid() seems to misbehave in that the status + * is _not_ shifted left by eight (multiplied by 256), as it is in + * POSIX/UNIX. To undo the surpise effect to the rest of Perl we + * need this wrapper. (The rest of BeOS might be surprised because + * of this, though.) */ + +pid_t beos_waitpid(pid_t process_id, int *status_location, int options) { + pid_t got = waitpid(procedd_is, status_location, options); + if (status_localtion) + *status_location <<= 8; + return got; +} diff --git a/beos/beosish.h b/beos/beosish.h new file mode 100644 index 0000000000..4c999daa0d --- /dev/null +++ b/beos/beosish.h @@ -0,0 +1,13 @@ +#ifndef PERL_BEOS_BEOSISH_H +#define PERL_BEOS_BEOSISH_H + +#include "unixish.h" + +#undef waitpid +#define waitpid beos_waitpid + +/* This seems to be protoless. */ +char *gcvt(double value, int num_digits, char *buffer); + +#endif + diff --git a/hints/beos.sh b/hints/beos.sh index c106775ed5..bfe2ee89f5 100644 --- a/hints/beos.sh +++ b/hints/beos.sh @@ -55,3 +55,5 @@ case "$ldlibpthname" in '') ldlibpthname=LIBRARY_PATH ;; esac +# the waitpid() wrapper +archobjs="beos/beos.o" @@ -1800,6 +1800,11 @@ typedef struct clone_params CLONE_PARAMS; # define ISHISH "macos classic" #endif +#if defined(__BEOS__) +# include "beos/beosish.h" +# define ISHISH "beos" +#endif + #ifndef ISHISH # include "unixish.h" # define ISHISH "unix" |