summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/os2/Changes
blob: d15e74e6268859dbddd0754e5143c3d738c4c823 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
after 5.003_05:
	PERLLIB_PREFIX was not active if it matches an element of @INC
		as a whole.
	Do not need PERL_SBRK if crtdll-revision is >= 50.
	Use -Zsmall-conv if crtdll-revision is >= 50 (in static perl!).
:7: warning: #warning <dirent.h> requires <sys/types.h>
	We compile miniperl static. It cannot fork, thus there may be
		problems with pipes (since HAS_FORK is in
		place). Pipes are required by makemaker.
	We compile perl___.exe A.OUT and dynamic. It should be able to
		fork.
	If we can fork, we my_popen by popen unless "-|". Thus we
		write a cooky "-1" into the pid array to indicate
		this.
	Apparently we can fork, and we can load dynamic extensions
		now, though probably not simultaneously.
	*DB tests corrected for OS/2 one-user stat[2].
	/bin/sh is intercepted and replaced by SH_PATH.
	Note that having '\\' in the command line of one-arg `system'
		would trigger call via shell.
	Segfault with system {'ls'} 'blah'; corrected.
	Documentation of OS/2-different features added to main PODs.
	New buitins in Cwd::

		Cwd::current_drive
		Cwd::sys_chdir		- leaves drive as it is.
		Cwd::change_drive
		Cwd::sys_is_absolute	- has drive letter and is_rooted
		Cwd::sys_is_rooted	- has leading [/\\] (maybe
					  after a drive)
		Cwd::sys_is_relative	- changes with current dir
		Cwd::sys_cwd		- Interface to cwd from EMX.
		Cwd::sys_abspath(name, dir)	
					- Really really odious
					  function. Returns absolute
					  name of file which would 
					  have 'name' if CWD were 'dir'.
					Dir defaults to the current dir.
		Cwd::extLibpath [type]	- Get/set current value of extended
		Cwd::extLibpath_set	- library search path.
			path [type]
					The optional last argument redirects
					   to END-path if true,
					   default is to search BEGIN-path.
		(Note that some of these may be moved to different
		  libraries - eventually).
	Executables: 
		perl - can fork, can dynalink (but not simultaneously)
		perl_ - can fork, cannot dynalink
		perl__ - same as perl___, but PM.
		perl___ - cannot fork, can dynalink.
	The build of the first one - perl - is rather convoluted, and
	  requires a build of miniperl_.
after 5.003_05:
	PERLLIB_PREFIX was not active if it matches an element of @INC
		as a whole.
	Do not need PERL_SBRK if crtdll-revision is >= 50.
	Use -Zsmall-conv if crtdll-revision is >= 50 (in static perl!).
:7: warning: #warning <dirent.h> requires <sys/types.h>
	We compile miniperl static. It cannot fork, thus there may be
		problems with pipes (since HAS_FORK is in
		place). Pipes are required by makemaker.
	We compile perl___.exe A.OUT and dynamic. It should be able to
		fork.
	If we can fork, we my_popen by popen unless "-|". Thus we
		write a cooky "-1" into the pid array to indicate
		this.
	Apparently we can fork, and we can load dynamic extensions
		now, though probably not simultaneously.
	*DB tests corrected for OS/2 one-user stat[2].
	/bin/sh is intercepted and replaced by SH_PATH.
	Note that having '\\' in the command line of one-arg `system'
		would trigger call via shell.
	Segfault with system {'ls'} 'blah'; corrected.
	Documentation of OS/2-different features added to main PODs.
	New buitins in Cwd::

		Cwd::current_drive
		Cwd::sys_chdir		- leaves drive as it is.
		Cwd::change_drive
		Cwd::sys_is_absolute	- has drive letter and is_rooted
		Cwd::sys_is_rooted	- has leading [/\\] (maybe
					  after a drive)
		Cwd::sys_is_relative	- changes with current dir
		Cwd::sys_cwd		- Interface to cwd from EMX.
		Cwd::sys_abspath(name, dir)	
					- Really really odious
					  function. Returns absolute
					  name of file which would 
					  have 'name' if CWD were 'dir'.
					Dir defaults to the current dir.
		Cwd::extLibpath [type]	- Get/set current value of extended
		Cwd::extLibpath_set	- library search path.
			path [type]
					The optional last argument redirects
					   to END-path if true,
					   default is to search BEGIN-path.
		(Note that some of these may be moved to different
		  libraries - eventually).
	Executables: 
		perl - can fork, can dynalink (but not simultaneously)
		perl_ - can fork, cannot dynalink
		perl__ - same as perl___, but PM.
		perl___ - cannot fork, can dynalink.
	The build of the first one - perl - is rather convoluted, and
	  requires a build of miniperl_.

after 5.003_07:
	custom tmpfile and tmpname which may use $TMP, $TEMP.
	all the calls to OS/2 API wrapped so that it is safe to use
		them under DOS (may die(), though).
	Tested that popen works under DOS with modified PDKSH and RSX.
	File::Copy works under DOS.
	MakeMaker modified to work under DOS (perlmain.c.tmp and sh -c true).

after 5.003_08:
	OS2::PrfDB exports symbols as documented;
	should work on OS/2 2.1 again.
	uses reliable signals when spawing.
	do not use popen() any more - no intermediate shell unless needed.

after 5.003_11:
	Functions emx_{malloc,realloc,calloc,free} are exported from DLL.
	get_sysinfo() bugs corrected (flags were not used and wrongly defined).

after 5.003_20:
	_isterm is substituted instead of isatty, s?random instead of srand.
	`register' disabled if -DDEBUGGING and not AOUT build: stupid SD386.
	3-argument select() was stomping over memory.

after 5.003_21:
	Can start scripts by executing 'dir/script' and
	'script.sh'. Form without extension will call shell only if
	the specified file exists (will not look on path) (to prohibit
	trying to run shell commands directly). - Needed by magic.t.

after 5.003_27:
	ALTERNATE_SHEBANG="extproc " supported, thus options on this
	line are processed (possibly twice). -S is made legal on such
	a line. This -S -x is not needed any more.
	perl.dll may be used from non-EMX programs (via PERL_SYS_INIT
	- the caller should have valid variable "env" with
	environment). Known problems: $$ does not work - is 0, waitpid
	returns immediately, thus Perl cannot wait for completion of
	started programs.

after 5.004_01:
	flock emulation added (disable by setting env PERL_USE_FLOCK=0),
		thanks to Rocco Caputo;
	RSX bug with missing waitpid circomvented;
	-S bug with full path with \ corrected.

before 5.004_02:
	-S switch to perl enables a search with additional extensions 
	.cmd, .btm, .bat, .pl as well.  This means that if you have
	mycmd.pl or mycmd.bat on PATH, 
		perl -S mycmd
	will work.  Perl will also look in the current directory first.
	Moreover, a bug with \; in PATH being non-separator is fixed.

after 5.004_03:
	$^E tracks calls to CRT now.  (May break if Perl masks some
	changes to errno?)
	$0 may be edited to longer lengths (at least under OS/2).
	OS2::REXX->loads looks in the OS/2-ish fashion too.

after 5.004_04:
	Default perl.exe was built with a shorter stack than expected.
	Strip extensions DLLs too (unless debugging build).
	./os2.c being RO could stop cp.
	When starting scripts, Perl will find them on path (using the same
	  extensions as for -S command-line switch).  If it finds magic
	  `extproc ' or `#!' cookies, it will start the scripts directly.
	May use `cmd /c more <' as a pager.
	If a program could not be started, this might have been hidden.
	End of pipe was closed twice when `open'ing a pipeline.

after 5.004_53:
	Minimal thread support added.  One needs to manually move pthread.h

after 5.004_64:
	Make DLL names different if thread-enabled.
	Emit more informative internal DLL descriptions.

5.004_72:
	Updated OS2::Process (v0.2) included.
	
after 5.004_73:
	Fixed a bug with argv not NULL-terminated when starting scripts.
	Support all the forms of starting scripts.
	Support killing a child when receiving a signal during system()
	(in two stage, on first send the same signal, on the next
	send SIGKILL).
	Add the same logic for scripts as in pdksh, including 
		stripping the path from #! line if needed, 
		calling EXECSHELL or COMSPEC for magic-less scripts;
	Now pdksh is called only if one-arg system()/friends contains
	metachars, or if magic-line asks for sh, or there is no magic
	line and EXECSHELL is set to sh.
	Shell is supplied the original command line if possible.

after 5.005_02:
	Can start PM programs from non-PM sessions by plain system()
		and friends.  Can start DOS/Win programs.  Can start
		fullscreen programs from non-fullscreen sessions too.
	In fact system(P_PM,...) was broken.
	We mangle the name of perl*.DLL, to allow coexistence of different
		versions of Perl executables on the system.  Mangling of
		names of extension DLL is also changed, thus running two
		different versions of the executable with loaded
		extensions should not lead to conflicts (since 
		extension-full-name and Perl-version mangling work in the 
		same set ot 576 possible keys, this may lead to clashes).
	$^E was reset on the second read, and contained ".\r\n" at the end.
after 5.005_53:
	Would segfault system()ing non-existing program;
	AOUT build was hosed;
	warning-test for getpriority() might lock the system hard on 
		pre-fixpak22 configuration (calling getpriority() on 
		non-existing process triggers a system-wide bug).


	PrfDB was using a bug in processing XSUBs returning U32.