Quickier thread-specific data on OS/2
[p5sagit/p5-mst-13.2.git] / dosish.h
index f18771b..57b21b6 100644 (file)
--- a/dosish.h
+++ b/dosish.h
@@ -7,28 +7,45 @@
 #ifdef DJGPP
 #  define BIT_BUCKET "nul"
 #  define OP_BINARY O_BINARY
-void Perl_DJGPP_init();
-#  define PERL_SYS_INIT(argcp, argvp) STMT_START {        \
-    Perl_DJGPP_init();    } STMT_END
+#  define PERL_SYS_INIT(c,v) Perl_DJGPP_init(c,v)
+#  include <signal.h>
+#  define HAS_UTIME
+#  define HAS_KILL
+   char *djgpp_pathexp (const char*);
+#  if (DJGPP==2 && DJGPP_MINOR < 2)
+#    define NO_LOCALECONV_MON_THOUSANDS_SEP
+#  endif
+#  ifdef USE_THREADS
+#    define OLD_PTHREADS_API
+#  endif
 #else  /* DJGPP */
 #  ifdef WIN32
 #    define PERL_SYS_INIT(c,v) Perl_win32_init(c,v)
 #    define BIT_BUCKET "nul"
 #  else
-#    define PERL_SYS_INIT(c,v)
-#    define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
+#    ifdef CYGWIN32
+       extern struct _reent *__imp_reent_data; /* global impure pointer */
+#      define PERL_SYS_INIT(c,v)       \
+               MALLOC_INIT; impure_setup(__imp_reent_data);
+#      define OP_BINARY O_BINARY
+#      define BIT_BUCKET "nul"
+#      define HAS_IOCTL
+#      define HAS_UTIME
+#      define HAS_KILL
+#      define HAS_WAIT
+#      define HAS_CHOWN
+#      define HAS_GROUP
+#    else
+#      define PERL_SYS_INIT(c,v)
+#      define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
+#    endif
 #  endif
 #endif /* DJGPP */
 
-#define PERL_SYS_TERM()
+#define PERL_SYS_TERM() MALLOC_TERM
 #define dXSUB_SYS
 #define TMPPATH "plXXXXXX"
 
-#ifdef WIN32
-#define HAS_UTIME
-#define HAS_KILL
-#endif
-
 /*
  * 5.003_07 and earlier keyed on #ifdef MSDOS for determining if we were 
  * running on DOS, *and* if we had to cope with 16 bit memory addressing 
@@ -54,6 +71,14 @@ void Perl_DJGPP_init();
  */
 #undef USEMYBINMODE
 
+/* Stat_t:
+ *     This symbol holds the type used to declare buffers for information
+ *     returned by stat().  It's usually just struct stat.  It may be necessary
+ *     to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
+ *     information.
+ */
+#define Stat_t struct stat
+
 /* USE_STAT_RDEV:
  *     This symbol is defined if this system has a stat structure declaring
  *     st_rdev
@@ -94,11 +119,18 @@ void Perl_DJGPP_init();
 #ifndef WIN32
 #  define Stat(fname,bufptr) stat((fname),(bufptr))
 #else
+#  define HAS_IOCTL
+#  define HAS_UTIME
+#  define HAS_KILL
+#  define HAS_WAIT
+#  define HAS_CHOWN
 /*
  * This provides a layer of functions and macros to ensure extensions will
  * get to use the same RTL functions as the core.
  */
-#ifndef HASATTRIBUTE
-#  include <win32iop.h>
-#endif
+#  ifndef HASATTRIBUTE
+#    ifndef PERL_OBJECT
+#      include <win32iop.h>
+#    endif
+#  endif
 #endif /* WIN32 */