1 | after 5.003_05: |
---|
2 | PERLLIB_PREFIX was not active if it matches an element of @INC |
---|
3 | as a whole. |
---|
4 | Do not need PERL_SBRK if crtdll-revision is >= 50. |
---|
5 | Use -Zsmall-conv if crtdll-revision is >= 50 (in static perl!). |
---|
6 | :7: warning: #warning <dirent.h> requires <sys/types.h> |
---|
7 | We compile miniperl static. It cannot fork, thus there may be |
---|
8 | problems with pipes (since HAS_FORK is in |
---|
9 | place). Pipes are required by makemaker. |
---|
10 | We compile perl___.exe A.OUT and dynamic. It should be able to |
---|
11 | fork. |
---|
12 | If we can fork, we my_popen by popen unless "-|". Thus we |
---|
13 | write a cooky "-1" into the pid array to indicate |
---|
14 | this. |
---|
15 | Apparently we can fork, and we can load dynamic extensions |
---|
16 | now, though probably not simultaneously. |
---|
17 | *DB tests corrected for OS/2 one-user stat[2]. |
---|
18 | /bin/sh is intercepted and replaced by SH_PATH. |
---|
19 | Note that having '\\' in the command line of one-arg `system' |
---|
20 | would trigger call via shell. |
---|
21 | Segfault with system {'ls'} 'blah'; corrected. |
---|
22 | Documentation of OS/2-different features added to main PODs. |
---|
23 | New buitins in Cwd:: |
---|
24 | |
---|
25 | Cwd::current_drive |
---|
26 | Cwd::sys_chdir - leaves drive as it is. |
---|
27 | Cwd::change_drive |
---|
28 | Cwd::sys_is_absolute - has drive letter and is_rooted |
---|
29 | Cwd::sys_is_rooted - has leading [/\\] (maybe |
---|
30 | after a drive) |
---|
31 | Cwd::sys_is_relative - changes with current dir |
---|
32 | Cwd::sys_cwd - Interface to cwd from EMX. |
---|
33 | Cwd::sys_abspath(name, dir) |
---|
34 | - Really really odious |
---|
35 | function. Returns absolute |
---|
36 | name of file which would |
---|
37 | have 'name' if CWD were 'dir'. |
---|
38 | Dir defaults to the current dir. |
---|
39 | Cwd::extLibpath [type] - Get/set current value of extended |
---|
40 | Cwd::extLibpath_set - library search path. |
---|
41 | path [type] |
---|
42 | The optional last argument redirects |
---|
43 | to END-path if true, |
---|
44 | default is to search BEGIN-path. |
---|
45 | (Note that some of these may be moved to different |
---|
46 | libraries - eventually). |
---|
47 | Executables: |
---|
48 | perl - can fork, can dynalink (but not simultaneously) |
---|
49 | perl_ - can fork, cannot dynalink |
---|
50 | perl__ - same as perl___, but PM. |
---|
51 | perl___ - cannot fork, can dynalink. |
---|
52 | The build of the first one - perl - is rather convoluted, and |
---|
53 | requires a build of miniperl_. |
---|
54 | after 5.003_05: |
---|
55 | PERLLIB_PREFIX was not active if it matches an element of @INC |
---|
56 | as a whole. |
---|
57 | Do not need PERL_SBRK if crtdll-revision is >= 50. |
---|
58 | Use -Zsmall-conv if crtdll-revision is >= 50 (in static perl!). |
---|
59 | :7: warning: #warning <dirent.h> requires <sys/types.h> |
---|
60 | We compile miniperl static. It cannot fork, thus there may be |
---|
61 | problems with pipes (since HAS_FORK is in |
---|
62 | place). Pipes are required by makemaker. |
---|
63 | We compile perl___.exe A.OUT and dynamic. It should be able to |
---|
64 | fork. |
---|
65 | If we can fork, we my_popen by popen unless "-|". Thus we |
---|
66 | write a cooky "-1" into the pid array to indicate |
---|
67 | this. |
---|
68 | Apparently we can fork, and we can load dynamic extensions |
---|
69 | now, though probably not simultaneously. |
---|
70 | *DB tests corrected for OS/2 one-user stat[2]. |
---|
71 | /bin/sh is intercepted and replaced by SH_PATH. |
---|
72 | Note that having '\\' in the command line of one-arg `system' |
---|
73 | would trigger call via shell. |
---|
74 | Segfault with system {'ls'} 'blah'; corrected. |
---|
75 | Documentation of OS/2-different features added to main PODs. |
---|
76 | New buitins in Cwd:: |
---|
77 | |
---|
78 | Cwd::current_drive |
---|
79 | Cwd::sys_chdir - leaves drive as it is. |
---|
80 | Cwd::change_drive |
---|
81 | Cwd::sys_is_absolute - has drive letter and is_rooted |
---|
82 | Cwd::sys_is_rooted - has leading [/\\] (maybe |
---|
83 | after a drive) |
---|
84 | Cwd::sys_is_relative - changes with current dir |
---|
85 | Cwd::sys_cwd - Interface to cwd from EMX. |
---|
86 | Cwd::sys_abspath(name, dir) |
---|
87 | - Really really odious |
---|
88 | function. Returns absolute |
---|
89 | name of file which would |
---|
90 | have 'name' if CWD were 'dir'. |
---|
91 | Dir defaults to the current dir. |
---|
92 | Cwd::extLibpath [type] - Get/set current value of extended |
---|
93 | Cwd::extLibpath_set - library search path. |
---|
94 | path [type] |
---|
95 | The optional last argument redirects |
---|
96 | to END-path if true, |
---|
97 | default is to search BEGIN-path. |
---|
98 | (Note that some of these may be moved to different |
---|
99 | libraries - eventually). |
---|
100 | Executables: |
---|
101 | perl - can fork, can dynalink (but not simultaneously) |
---|
102 | perl_ - can fork, cannot dynalink |
---|
103 | perl__ - same as perl___, but PM. |
---|
104 | perl___ - cannot fork, can dynalink. |
---|
105 | The build of the first one - perl - is rather convoluted, and |
---|
106 | requires a build of miniperl_. |
---|
107 | |
---|
108 | after 5.003_07: |
---|
109 | custom tmpfile and tmpname which may use $TMP, $TEMP. |
---|
110 | all the calls to OS/2 API wrapped so that it is safe to use |
---|
111 | them under DOS (may die(), though). |
---|
112 | Tested that popen works under DOS with modified PDKSH and RSX. |
---|
113 | File::Copy works under DOS. |
---|
114 | MakeMaker modified to work under DOS (perlmain.c.tmp and sh -c true). |
---|
115 | |
---|
116 | after 5.003_08: |
---|
117 | OS2::PrfDB exports symbols as documented; |
---|
118 | should work on OS/2 2.1 again. |
---|
119 | uses reliable signals when spawing. |
---|
120 | do not use popen() any more - no intermediate shell unless needed. |
---|
121 | |
---|
122 | after 5.003_11: |
---|
123 | Functions emx_{malloc,realloc,calloc,free} are exported from DLL. |
---|
124 | get_sysinfo() bugs corrected (flags were not used and wrongly defined). |
---|
125 | |
---|
126 | after 5.003_20: |
---|
127 | _isterm is substituted instead of isatty, s?random instead of srand. |
---|
128 | `register' disabled if -DDEBUGGING and not AOUT build: stupid SD386. |
---|
129 | 3-argument select() was stomping over memory. |
---|
130 | |
---|
131 | after 5.003_21: |
---|
132 | Can start scripts by executing 'dir/script' and |
---|
133 | 'script.sh'. Form without extension will call shell only if |
---|
134 | the specified file exists (will not look on path) (to prohibit |
---|
135 | trying to run shell commands directly). - Needed by magic.t. |
---|
136 | |
---|
137 | after 5.003_27: |
---|
138 | ALTERNATE_SHEBANG="extproc " supported, thus options on this |
---|
139 | line are processed (possibly twice). -S is made legal on such |
---|
140 | a line. This -S -x is not needed any more. |
---|
141 | perl.dll may be used from non-EMX programs (via PERL_SYS_INIT |
---|
142 | - the caller should have valid variable "env" with |
---|
143 | environment). Known problems: $$ does not work - is 0, waitpid |
---|
144 | returns immediately, thus Perl cannot wait for completion of |
---|
145 | started programs. |
---|
146 | |
---|
147 | after 5.004_01: |
---|
148 | flock emulation added (disable by setting env PERL_USE_FLOCK=0), |
---|
149 | thanks to Rocco Caputo; |
---|
150 | RSX bug with missing waitpid circomvented; |
---|
151 | -S bug with full path with \ corrected. |
---|
152 | |
---|
153 | before 5.004_02: |
---|
154 | -S switch to perl enables a search with additional extensions |
---|
155 | .cmd, .btm, .bat, .pl as well. This means that if you have |
---|
156 | mycmd.pl or mycmd.bat on PATH, |
---|
157 | perl -S mycmd |
---|
158 | will work. Perl will also look in the current directory first. |
---|
159 | Moreover, a bug with \; in PATH being non-separator is fixed. |
---|
160 | |
---|
161 | after 5.004_03: |
---|
162 | $^E tracks calls to CRT now. (May break if Perl masks some |
---|
163 | changes to errno?) |
---|
164 | $0 may be edited to longer lengths (at least under OS/2). |
---|
165 | OS2::REXX->loads looks in the OS/2-ish fashion too. |
---|
166 | |
---|
167 | after 5.004_04: |
---|
168 | Default perl.exe was built with a shorter stack than expected. |
---|
169 | Strip extensions DLLs too (unless debugging build). |
---|
170 | ./os2.c being RO could stop cp. |
---|
171 | When starting scripts, Perl will find them on path (using the same |
---|
172 | extensions as for -S command-line switch). If it finds magic |
---|
173 | `extproc ' or `#!' cookies, it will start the scripts directly. |
---|
174 | May use `cmd /c more <' as a pager. |
---|
175 | If a program could not be started, this might have been hidden. |
---|
176 | End of pipe was closed twice when `open'ing a pipeline. |
---|
177 | |
---|
178 | after 5.004_53: |
---|
179 | Minimal thread support added. One needs to manually move pthread.h |
---|
180 | |
---|
181 | after 5.004_64: |
---|
182 | Make DLL names different if thread-enabled. |
---|
183 | Emit more informative internal DLL descriptions. |
---|
184 | |
---|
185 | 5.004_72: |
---|
186 | Updated OS2::Process (v0.2) included. |
---|
187 | |
---|
188 | after 5.004_73: |
---|
189 | Fixed a bug with argv not NULL-terminated when starting scripts. |
---|
190 | Support all the forms of starting scripts. |
---|
191 | Support killing a child when receiving a signal during system() |
---|
192 | (in two stage, on first send the same signal, on the next |
---|
193 | send SIGKILL). |
---|
194 | Add the same logic for scripts as in pdksh, including |
---|
195 | stripping the path from #! line if needed, |
---|
196 | calling EXECSHELL or COMSPEC for magic-less scripts; |
---|
197 | Now pdksh is called only if one-arg system()/friends contains |
---|
198 | metachars, or if magic-line asks for sh, or there is no magic |
---|
199 | line and EXECSHELL is set to sh. |
---|
200 | Shell is supplied the original command line if possible. |
---|
201 | |
---|
202 | after 5.005_02: |
---|
203 | Can start PM programs from non-PM sessions by plain system() |
---|
204 | and friends. Can start DOS/Win programs. Can start |
---|
205 | fullscreen programs from non-fullscreen sessions too. |
---|
206 | In fact system(P_PM,...) was broken. |
---|
207 | We mangle the name of perl*.DLL, to allow coexistence of different |
---|
208 | versions of Perl executables on the system. Mangling of |
---|
209 | names of extension DLL is also changed, thus running two |
---|
210 | different versions of the executable with loaded |
---|
211 | extensions should not lead to conflicts (since |
---|
212 | extension-full-name and Perl-version mangling work in the |
---|
213 | same set ot 576 possible keys, this may lead to clashes). |
---|
214 | $^E was reset on the second read, and contained ".\r\n" at the end. |
---|
215 | |
---|
216 | after 5.005_53: |
---|
217 | Would segfault system()ing non-existing program; |
---|
218 | AOUT build was hosed; |
---|
219 | warning-test for getpriority() might lock the system hard on |
---|
220 | pre-fixpak22 configuration (calling getpriority() on |
---|
221 | non-existing process triggers a system-wide bug). |
---|
222 | |
---|
223 | |
---|
224 | PrfDB was using a bug in processing XSUBs returning U32. |
---|
225 | |
---|
226 | Variable $OS2::emx_rev implemented (string and numberic values |
---|
227 | are the same as C variables _emx_rev and _emx_vprt). |
---|
228 | Variable $OS2::emx_env implemented (same as C variable _emx_env). |
---|
229 | Variable $OS2::os_ver implemented (_osmajor + 0.001 * _osminor). |
---|
230 | |
---|
231 | Improved centralized management of HAB and HMQ. To get Perl's |
---|
232 | HAB, call perl_hab_GET(). (After the initial call one |
---|
233 | can use Perl_hab instead.) To require Perl's HMQ, |
---|
234 | call perl_hmq_GET(), to release it call perl_hmq_UNSET(), |
---|
235 | to obtain it between these calls use Perl_hmq. |
---|
236 | HMQ management is refcounted, and the program will morph |
---|
237 | itself into/from PM if required. |
---|
238 | If perl.h cannot be included, hab may be obtained by Perl_hab_GET(). |
---|
239 | |
---|
240 | New function OS2::Error(do_harderror,do_exception). Returns |
---|
241 | undef if it was not called yet, otherwise bit 1 is |
---|
242 | set if on previous call do_harderror was enabled, bit |
---|
243 | 2 is set if if on previous call do_exception was enabled. |
---|
244 | This function enables/disables error popups associated with |
---|
245 | hardware errors (Disk not ready etc.) and software exceptions. |
---|
246 | |
---|
247 | New function OS2::Errors2Drive(drive). Returns undef if it was |
---|
248 | not called yet, otherwise return false if Errors were |
---|
249 | not requested to be written to a hard drive, or the |
---|
250 | drive letter if this was requested. |
---|
251 | This function may redirect error popups associated with |
---|
252 | hardware errors (Disk not ready etc.) and software exceptions |
---|
253 | to the file POPUPLOG.OS2 at the root directory of the |
---|
254 | specified drive. Overrides OS2::Error() specified by |
---|
255 | individual programs. Given argument undef will |
---|
256 | disable redirection. Has global effect, persists |
---|
257 | after the application exits. |
---|
258 | |
---|
259 | New function OS2::SysInfo(). Returns a hash with system information. |
---|
260 | The keys of the hash are |
---|
261 | |
---|
262 | MAX_PATH_LENGTH, MAX_TEXT_SESSIONS, MAX_PM_SESSIONS, |
---|
263 | MAX_VDM_SESSIONS, BOOT_DRIVE, DYN_PRI_VARIATION, |
---|
264 | MAX_WAIT, MIN_SLICE, MAX_SLICE, PAGE_SIZE, |
---|
265 | VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, |
---|
266 | MS_COUNT, TIME_LOW, TIME_HIGH, TOTPHYSMEM, TOTRESMEM, |
---|
267 | TOTAVAILMEM, MAXPRMEM, MAXSHMEM, TIMER_INTERVAL, |
---|
268 | MAX_COMP_LENGTH, FOREGROUND_FS_SESSION, |
---|
269 | FOREGROUND_PROCESS |
---|
270 | |
---|
271 | New function OS2::BootDrive(force). Returns a letter without colon. |
---|
272 | |
---|
273 | New functions OS2::MorphPM(serve)/OS2::UnMorphPM(serve). Transforms |
---|
274 | the current application into a PM application and back. |
---|
275 | The argument true means that a real message loop is |
---|
276 | going to be performed. |
---|
277 | OS2::MorphPM() returns the PM message queue handle as an integer. |
---|
278 | |
---|
279 | New function OS2::Serve_Messages(force). Fake on-demand |
---|
280 | retrieval of outstanding PM messages. If force is false, |
---|
281 | will not dispatch messages if a real message loop is known to |
---|
282 | be present. Returns number of messages retrieved. |
---|
283 | Dies with "QUITing..." if WM_QUIT message is obtained. |
---|
284 | |
---|
285 | New function OS2::Process_Messages(force [, cnt]). Retrieval |
---|
286 | of PM messages until window creation/destruction. |
---|
287 | If force is false, will not dispatch messages |
---|
288 | if a real message loop is known to be present. |
---|
289 | Returns change in number of windows. If cnt is given, |
---|
290 | it is incremented by the number of messages retrieved. |
---|
291 | Dies with "QUITing..." if WM_QUIT message is obtained. |
---|
292 | |
---|
293 | after 5.005_54: |
---|
294 | Opening pipes from/to processes could fail if (un)appropriate |
---|
295 | combination of STDIN/STDOUT was closed. |
---|
296 | |
---|
297 | If the only shell-metachars of a command are ' 2>&1' at the |
---|
298 | end of a command, it is executed without calling the external shell. |
---|
299 | |
---|
300 | after 5.005_57: |
---|
301 | Make UDP sockets return correct caller address (OS2 API bug); |
---|
302 | Enable TCPIPV4 defines (works with Warp 3 IAK too?!); |
---|
303 | Force Unix-domain sockets to start with "/socket", convert |
---|
304 | '/' to '\' in the calls; |
---|
305 | Make C<system 1, $cmd> to treat $cmd as in C<system $cmd>; |
---|
306 | Autopatch Configure; |
---|
307 | Find name and location of g[nu]patch.exe; |
---|
308 | Autocopy perl????.dll to t/ when testing; |
---|
309 | |
---|
310 | after 5.005_62: |
---|
311 | Extract a lightweight DLL access module OS2::DLL from OS2::REXX |
---|
312 | which would not load REXX runtime system; |
---|
313 | Allow compile with os2.h which loads os2tk.h instead of os2emx.h; |
---|
314 | Put the version of EMX CRTL into -D define; |
---|
315 | Use _setsyserror() to store last error of OS/2 API for $^E; |
---|
316 | New macro PERL_SYS_INIT3(argvp, argcp, envp); |
---|
317 | Make Dynaloader return info on the failing module after failed dl_open(); |
---|
318 | OS2::REXX test were done for interactive testing (were writing |
---|
319 | "ok" to stderr); |
---|
320 | system() and friends return -1 on failure (was 0xFF00); |
---|
321 | Put the full name of executable into $^X |
---|
322 | (alas, uppercased - but with /); |
---|
323 | t/io/fs.t was failing on HPFS386; |
---|
324 | Remove extra ';' from defines for MQ operations. |
---|