home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / dosish.h < prev    next >
C/C++ Source or Header  |  2003-11-07  |  6KB  |  190 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. #define Stat_t struct _stati64
  87. #else
  88. #if defined(UNDER_CE)
  89. #define Stat_t struct xcestat
  90. #else
  91. #define Stat_t struct stat
  92. #endif
  93. #endif
  94.  
  95. /* USE_STAT_RDEV:
  96.  *    This symbol is defined if this system has a stat structure declaring
  97.  *    st_rdev
  98.  */
  99. #define USE_STAT_RDEV     /**/
  100.  
  101. /* ACME_MESS:
  102.  *    This symbol, if defined, indicates that error messages should be 
  103.  *    should be generated in a format that allows the use of the Acme
  104.  *    GUI/editor's autofind feature.
  105.  */
  106. #undef ACME_MESS    /**/
  107.  
  108. /* ALTERNATE_SHEBANG:
  109.  *    This symbol, if defined, contains a "magic" string which may be used
  110.  *    as the first line of a Perl program designed to be executed directly
  111.  *    by name, instead of the standard Unix #!.  If ALTERNATE_SHEBANG
  112.  *    begins with a character other then #, then Perl will only treat
  113.  *    it as a command line if it finds the string "perl" in the first
  114.  *    word; otherwise it's treated as the first line of code in the script.
  115.  *    (IOW, Perl won't hand off to another interpreter via an alternate
  116.  *    shebang sequence that might be legal Perl code.)
  117.  */
  118. /* #define ALTERNATE_SHEBANG "#!" / **/
  119.  
  120. /*
  121.  * fwrite1() should be a routine with the same calling sequence as fwrite(),
  122.  * but which outputs all of the bytes requested as a single stream (unlike
  123.  * fwrite() itself, which on some systems outputs several distinct records
  124.  * if the number_of_items parameter is >1).
  125.  */
  126. #define fwrite1 fwrite
  127.  
  128. #define Fstat(fd,bufptr)   fstat((fd),(bufptr))
  129. #ifdef DJGPP
  130. #   define Fflush(fp)      djgpp_fflush(fp)
  131. #else
  132. #   define Fflush(fp)      fflush(fp)
  133. #endif
  134. #define Mkdir(path,mode)   mkdir((path),(mode))
  135.  
  136. #ifndef WIN32
  137. #  define Stat(fname,bufptr) stat((fname),(bufptr))
  138. #else
  139. #  define HAS_IOCTL
  140. #  define HAS_UTIME
  141. #  define HAS_KILL
  142. #  define HAS_WAIT
  143. #  define HAS_CHOWN
  144. #endif    /* WIN32 */
  145.  
  146. /*
  147.  * <rich@phekda.freeserve.co.uk>: The DJGPP port has code that converts
  148.  * the return code of system() into the form that Unixy wait usually
  149.  * returns:
  150.  *
  151.  * - signal number in bits 0-6;
  152.  * - core dump flag in bit 7;
  153.  * - exit code in bits 8-15.
  154.  *
  155.  * Bits 0-7 are always zero for DJGPP, because it uses system().
  156.  * See djgpp.c.
  157.  *
  158.  * POSIX::W* use the W* macros from <sys/wait.h> to decode
  159.  * the return code. Unfortunately the W* macros for DJGPP use
  160.  * a different format than Unixy wait does. So there's a mismatch
  161.  * and, say, WEXITSTATUS($?) will return bogus values.
  162.  *
  163.  * So here we add hack to redefine the W* macros from DJGPP's <sys/wait.h>
  164.  * to work with our return-code conversion.
  165.  */
  166.  
  167. #ifdef DJGPP
  168.  
  169. #include <sys/wait.h>
  170.  
  171. #undef WEXITSTATUS
  172. #undef WIFEXITED
  173. #undef WIFSIGNALED
  174. #undef WIFSTOPPED
  175. #undef WNOHANG
  176. #undef WSTOPSIG
  177. #undef WTERMSIG
  178. #undef WUNTRACED
  179.  
  180. #define WEXITSTATUS(stat_val) ((stat_val) >> 8)
  181. #define WIFEXITED(stat_val)   0
  182. #define WIFSIGNALED(stat_val) 0
  183. #define WIFSTOPPED(stat_val)  0
  184. #define WNOHANG               0
  185. #define WSTOPSIG(stat_val)    0
  186. #define WTERMSIG(stat_val)    0
  187. #define WUNTRACED             0
  188.  
  189. #endif
  190.