Commit | Line | Data |
4633a7c4 |
1 | #include <signal.h> |
2 | |
3 | /* HAS_IOCTL: |
4 | * This symbol, if defined, indicates that the ioctl() routine is |
5 | * available to set I/O characteristics |
6 | */ |
7 | #define HAS_IOCTL /**/ |
8 | |
9 | /* HAS_UTIME: |
10 | * This symbol, if defined, indicates that the routine utime() is |
11 | * available to update the access and modification times of files. |
12 | */ |
13 | #define HAS_UTIME /**/ |
14 | |
15 | #define HAS_KILL |
16 | #define HAS_WAIT |
17 | |
18 | #ifndef SIGABRT |
19 | # define SIGABRT SIGILL |
20 | #endif |
21 | #ifndef SIGILL |
22 | # define SIGILL 6 /* blech */ |
23 | #endif |
24 | #define ABORT() kill(getpid(),SIGABRT); |
25 | |
c07a80fd |
26 | #define BIT_BUCKET "/dev/null" /* Will this work? */ |
27 | |
365eb7b5 |
28 | void Perl_OS2_init(); |
29 | |
30 | #define PERL_SYS_INIT(argcp, argvp) STMT_START { \ |
eacfb5f1 |
31 | _response(argcp, argvp); \ |
c0c09dfd |
32 | _wildcard(argcp, argvp); \ |
365eb7b5 |
33 | Perl_OS2_init(); } STMT_END |
34 | |
35 | #define PERL_SYS_TERM() |
36 | |
37 | #define dXSUB_SYS int fake = OS2_XS_init() |
eacfb5f1 |
38 | |
c0c09dfd |
39 | #define TMPPATH tmppath |
40 | #define TMPPATH1 "plXXXXXX" |
41 | extern char *tmppath; |
eacfb5f1 |
42 | |
4633a7c4 |
43 | /* |
44 | * fwrite1() should be a routine with the same calling sequence as fwrite(), |
45 | * but which outputs all of the bytes requested as a single stream (unlike |
46 | * fwrite() itself, which on some systems outputs several distinct records |
47 | * if the number_of_items parameter is >1). |
48 | */ |
49 | #define fwrite1 fwrite |
50 | |
51 | #define my_getenv(var) getenv(var) |
52 | |
53 | /*****************************************************************************/ |
54 | |
55 | #include <stdlib.h> /* before the following definitions */ |
56 | #include <unistd.h> /* before the following definitions */ |
57 | |
58 | #define chdir _chdir2 |
59 | #define getcwd _getcwd2 |
60 | |
61 | /* This guy is needed for quick stdstd */ |
62 | |
63 | #if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) && defined(STDIO_CNT_LVALUE) |
64 | # define _filbuf _fill |
65 | /* Perl uses ungetc only with successful return */ |
66 | # define ungetc(c,fp) \ |
67 | (FILE_ptr(fp) > FILE_base(fp) && c == (int)*(FILE_ptr(fp) - 1) \ |
68 | ? (--FILE_ptr(fp), ++FILE_cnt(fp), (int)c) : ungetc(c,fp)) |
69 | #endif |
70 | |
71 | #define OP_BINARY O_BINARY |
72 | |
73 | #define OS2_STAT_HACK 1 |
74 | #if OS2_STAT_HACK |
75 | |
76 | #define Stat(fname,bufptr) os2_stat((fname),(bufptr)) |
77 | #define Fstat(fd,bufptr) fstat((fd),(bufptr)) |
365eb7b5 |
78 | #define Fflush(fp) fflush(fp) |
4633a7c4 |
79 | |
80 | #undef S_IFBLK |
81 | #undef S_ISBLK |
82 | #define S_IFBLK 0120000 |
83 | #define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) |
84 | |
85 | #else |
86 | |
87 | #define Stat(fname,bufptr) stat((fname),(bufptr)) |
88 | #define Fstat(fd,bufptr) fstat((fd),(bufptr)) |
365eb7b5 |
89 | #define Fflush(fp) fflush(fp) |
4633a7c4 |
90 | |
91 | #endif |
365eb7b5 |
92 | |
93 | /* Our private OS/2 specific data. */ |
94 | |
95 | typedef struct OS2_Perl_data { |
96 | unsigned long flags; |
97 | unsigned long phab; |
98 | int (*xs_init)(); |
99 | } OS2_Perl_data_t; |
100 | |
101 | extern OS2_Perl_data_t OS2_Perl_data; |
102 | |
103 | #define hab ((HAB)OS2_Perl_data->phab) |
104 | #define OS2_Perl_flag (OS2_Perl_data->flag) |
105 | #define Perl_HAB_set_f 1 |
106 | #define Perl_HAB_set (OS2_Perl_flag & Perl_HAB_set_f) |
107 | #define set_Perl_HAB_f (OS2_Perl_flag |= Perl_HAB_set_f) |
108 | #define set_Perl_HAB(h) (set_Perl_HAB_f, hab = h) |
109 | #define OS2_XS_init() (*OS2_Perl_data.xs_init)() |