source: trunk/third/perl/os2/Changes @ 14545

Revision 14545, 13.2 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
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_.
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).
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.
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).
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.
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.
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.
146
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
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.
160
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.
166
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
178after 5.004_53:
179        Minimal thread support added.  One needs to manually move pthread.h
180
181after 5.004_64:
182        Make DLL names different if thread-enabled.
183        Emit more informative internal DLL descriptions.
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.
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.
215
216after 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
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.
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.
Note: See TracBrowser for help on using the repository browser.