Add fallback to tmpfile for use in cases where user's relying on
[p5sagit/p5-mst-13.2.git] / os2 / Changes
CommitLineData
867988ae 1after 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_.
54after 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_.
55497cff 107
108after 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).
72ea3524 115
116after 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.
df3ef7a9 121
122after 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).
44a8e56a 125
126after 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.
e29f6e02 130
131after 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.
aa689395 136
137after 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.
d8c2d278 146
367f3c24 147after 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
d8c2d278 153before 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.
84902520 160
fb73857a 161after 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.
dd96f567 166
91643db9 167after 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
dd96f567 178after 5.004_53:
179 Minimal thread support added. One needs to manually move pthread.h
3aefca04 180
181after 5.004_64:
182 Make DLL names different if thread-enabled.
183 Emit more informative internal DLL descriptions.
2c2e0e8c 184
1855.004_72:
186 Updated OS2::Process (v0.2) included.
187
188after 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.
017f25f1 201
202after 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.
4bfbfac5 215
216after 5.005_53:
e96326af 217 Would segfault system()ing non-existing program;
218 AOUT build was hosed;
4bfbfac5 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
4e3d4845 223
224 PrfDB was using a bug in processing XSUBs returning U32.
225
4bfbfac5 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
5838269b 293after 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.
146174a9 299
300after 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
310after 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.