home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _7991706f148f9ac0063166994e79ae7a < prev    next >
Text File  |  2004-06-01  |  6KB  |  195 lines

  1. /*    dosish.h
  2.  *
  3.  *    Copyright (C) 1993, 1994, 1996, 1997, 1998, 1999,
  4.  *    2000, 2001, 2002, by Larry Wall and others
  5.  *
  6.  *    You may distribute under the terms of either the GNU General Public
  7.  *    License or the Artistic License, as specified in the README file.
  8.  *
  9.  */
  10. #define ABORT() abort();
  11.  
  12. #ifndef SH_PATH
  13. #define SH_PATH "/bin/sh"
  14. #endif
  15.  
  16. #ifdef DJGPP
  17. #  define BIT_BUCKET "nul"
  18. #  define OP_BINARY O_BINARY
  19. #  define PERL_SYS_INIT(c,v) MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v)
  20. #  define init_os_extras Perl_init_os_extras
  21. #  include <signal.h>
  22. #  define HAS_UTIME
  23. #  define HAS_KILL
  24.    char *djgpp_pathexp (const char*);
  25.    void Perl_DJGPP_init (int *argcp,char ***argvp);
  26. #  if (DJGPP==2 && DJGPP_MINOR < 2)
  27. #    define NO_LOCALECONV_MON_THOUSANDS_SEP
  28. #  endif
  29. #  ifdef USE_5005THREADS
  30. #    define OLD_PTHREADS_API
  31. #  endif
  32. #  define PERL_FS_VER_FMT    "%d_%d_%d"
  33. #else    /* DJGPP */
  34. #  ifdef WIN32
  35. #    define PERL_SYS_INIT(c,v)    MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v)
  36. #    define PERL_SYS_TERM()    Perl_win32_term()
  37. #    define BIT_BUCKET "nul"
  38. #  else
  39. #     ifdef NETWARE
  40. #      define PERL_SYS_INIT(c,v)    MALLOC_CHECK_TAINT2(*c,*v) Perl_nw5_init(c,v)
  41. #      define BIT_BUCKET "nwnul"
  42. #    else
  43. #      define PERL_SYS_INIT(c,v)    MALLOC_CHECK_TAINT2(*c,*v)
  44. #      define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
  45. #    endif /* NETWARE */
  46. #  endif
  47. #endif    /* DJGPP */
  48.  
  49. #ifndef PERL_SYS_TERM
  50. #  define PERL_SYS_TERM() OP_REFCNT_TERM; MALLOC_TERM
  51. #endif
  52. #define dXSUB_SYS
  53.  
  54. /*
  55.  * 5.003_07 and earlier keyed on #ifdef MSDOS for determining if we were 
  56.  * running on DOS, *and* if we had to cope with 16 bit memory addressing 
  57.  * constraints, *and* we need to have memory allocated as unsigned long.
  58.  *
  59.  * with the advent of *real* compilers for DOS, they are not locked together.
  60.  * MSDOS means "I am running on MSDOS". HAS_64K_LIMIT means "I have 
  61.  * 16 bit memory addressing constraints".
  62.  *
  63.  * if you need the last, try #DEFINE MEM_SIZE unsigned long.
  64.  */
  65. #ifdef MSDOS
  66. #  ifndef DJGPP
  67. #    define HAS_64K_LIMIT
  68. #  endif
  69. #endif
  70.  
  71. /* USEMYBINMODE
  72.  *    This symbol, if defined, indicates that the program should
  73.  *    use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
  74.  *    that a file is in "binary" mode -- that is, that no translation
  75.  *    of bytes occurs on read or write operations.
  76.  */
  77. #undef USEMYBINMODE
  78.  
  79. /* Stat_t:
  80.  *    This symbol holds the type used to declare buffers for information
  81.  *    returned by stat().  It's usually just struct stat.  It may be necessary
  82.  *    to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
  83.  *    information.
  84.  */
  85. #if defined(WIN64) || defined(USE_LARGE_FILES)
  86. # if defined(__BORLANDC__) /* buk */
  87. #  include <sys\stat.h>
  88. #  define Stat_t struct stati64
  89. # else
  90. #define Stat_t struct _stati64
  91. # endif
  92. #else
  93. #if defined(UNDER_CE)
  94. #define Stat_t struct xcestat
  95. #else
  96. #define Stat_t struct stat
  97. #endif
  98. #endif
  99.  
  100. /* USE_STAT_RDEV:
  101.  *    This symbol is defined if this system has a stat structure declaring
  102.  *    st_rdev
  103.  */
  104. #define USE_STAT_RDEV     /**/
  105.  
  106. /* ACME_MESS:
  107.  *    This symbol, if defined, indicates that error messages should be 
  108.  *    should be generated in a format that allows the use of the Acme
  109.  *    GUI/editor's autofind feature.
  110.  */
  111. #undef ACME_MESS    /**/
  112.  
  113. /* ALTERNATE_SHEBANG:
  114.  *    This symbol, if defined, contains a "magic" string which may be used
  115.  *    as the first line of a Perl program designed to be executed directly
  116.  *    by name, instead of the standard Unix #!.  If ALTERNATE_SHEBANG
  117.  *    begins with a character other then #, then Perl will only treat
  118.  *    it as a command line if it finds the string "perl" in the first
  119.  *    word; otherwise it's treated as the first line of code in the script.
  120.  *    (IOW, Perl won't hand off to another interpreter via an alternate
  121.  *    shebang sequence that might be legal Perl code.)
  122.  */
  123. /* #define ALTERNATE_SHEBANG "#!" / **/
  124.  
  125. /*
  126.  * fwrite1() should be a routine with the same calling sequence as fwrite(),
  127.  * but which outputs all of the bytes requested as a single stream (unlike
  128.  * fwrite() itself, which on some systems outputs several distinct records
  129.  * if the number_of_items parameter is >1).
  130.  */
  131. #define fwrite1 fwrite
  132.  
  133. #define Fstat(fd,bufptr)   fstat((fd),(bufptr))
  134. #ifdef DJGPP
  135. #   define Fflush(fp)      djgpp_fflush(fp)
  136. #else
  137. #   define Fflush(fp)      fflush(fp)
  138. #endif
  139. #define Mkdir(path,mode)   mkdir((path),(mode))
  140.  
  141. #ifndef WIN32
  142. #  define Stat(fname,bufptr) stat((fname),(bufptr))
  143. #else
  144. #  define HAS_IOCTL
  145. #  define HAS_UTIME
  146. #  define HAS_KILL
  147. #  define HAS_WAIT
  148. #  define HAS_CHOWN
  149. #endif    /* WIN32 */
  150.  
  151. /*
  152.  * <rich@phekda.freeserve.co.uk>: The DJGPP port has code that converts
  153.  * the return code of system() into the form that Unixy wait usually
  154.  * returns:
  155.  *
  156.  * - signal number in bits 0-6;
  157.  * - core dump flag in bit 7;
  158.  * - exit code in bits 8-15.
  159.  *
  160.  * Bits 0-7 are always zero for DJGPP, because it uses system().
  161.  * See djgpp.c.
  162.  *
  163.  * POSIX::W* use the W* macros from <sys/wait.h> to decode
  164.  * the return code. Unfortunately the W* macros for DJGPP use
  165.  * a different format than Unixy wait does. So there's a mismatch
  166.  * and, say, WEXITSTATUS($?) will return bogus values.
  167.  *
  168.  * So here we add hack to redefine the W* macros from DJGPP's <sys/wait.h>
  169.  * to work with our return-code conversion.
  170.  */
  171.  
  172. #ifdef DJGPP
  173.  
  174. #include <sys/wait.h>
  175.  
  176. #undef WEXITSTATUS
  177. #undef WIFEXITED
  178. #undef WIFSIGNALED
  179. #undef WIFSTOPPED
  180. #undef WNOHANG
  181. #undef WSTOPSIG
  182. #undef WTERMSIG
  183. #undef WUNTRACED
  184.  
  185. #define WEXITSTATUS(stat_val) ((stat_val) >> 8)
  186. #define WIFEXITED(stat_val)   0
  187. #define WIFSIGNALED(stat_val) 0
  188. #define WIFSTOPPED(stat_val)  0
  189. #define WNOHANG               0
  190. #define WSTOPSIG(stat_val)    0
  191. #define WTERMSIG(stat_val)    0
  192. #define WUNTRACED             0
  193.  
  194. #endif
  195.