1New features with AN-2015-08-03:
2
3This is the first localization step for the schily source consolidation. Many
4programs now (hopefully) call gettext() for all strings that need localization.
5
6-	The next step will include dgettext() calls for the libraries and the
7	missing programs
8
9-	The following step will include the extracted strings
10
11-	The last step will include German translations and install support
12	for the resulting binary message object files.
13
14----------> Please test and report compilation problems! <---------
15
16***** NOTE: As mentioned since 2004, frontends to the tools should *****
17*****		call all programs in the "C" locale		   *****
18*****		by e.g. calling: LC_ALL=C cdrecord ....		   *****
19*****		unless these frontends support localized strings   *****
20*****		used by the cdrtools with NLS support.		   *****
21
22		*** WARNING        ***
23		*** Need new smake ***
24
25	*** Due to the fact that schily-tools 2014-04-03 introduced to use new macro
26	*** expansions and a related bug fix in smake, you need a new smake
27	*** to compile this source. To ensure this, call:
28
29	cd ./psmake
30	./MAKE-all
31	cd ..
32	psmake/smake
33	psmake/smake install
34
35
36	WARNING: the new version of the isoinfo program makes use of the
37		*at() series of functions that have been introduced by Sun
38		in August 2001 and added to POSIX.1-2008. For older platforms,
39		libschily now includes emulations for these functions but
40		these emulations have not yet been tested thoroughly.
41		Please report problems!
42
43	The new smake version mentioned above is smake-1.2.4
44
45-	Cdrtools bumped to version 3.01a30. This is the current release
46	candidate for 3.01-final. We have some minor fixes added here
47	in the schily snapshot, see below:
48
49-	README.compile now includes an example on how to cross compile
50	on Linux for Android.
51
52-	include/schily/find.h modified to avoid a GCC warning from
53	using libfind in the Bourne Shell.
54
55-	include/schily/dlfcn.h modified to avoid a GCC warning from
56	the new builtin management code in the Bourne Shell.
57
58-	libschily/resolvepath.c now #define's lstat stat if lstat()
59	is missing.
60
61-	libschily/error.c now allows to be compiled without weak
62	symbols by using -DNO_WEAK_SYMBOLS
63
64-	libshedit: work around a name space problem in libshedit that
65	occurs with static linking. The name space problem exists since
66	there are variants of functions in libshedit that exist in
67	libschily with a "FILE *" parameter and in libshedit with "int *"
68	parameter to support the stdio-less Bourne Shell. We now use
69	a "shell_" prefix for all non-local functions in libshedit.
70	The dynamic library variant of libshedit uses a mapfile to make
71	those functions invisible to code outside libshedit.
72
73-	mkisofs/diag/isoinfo.c now test for HAVE_MKNOD in order to avoid
74	calling mknod() on MINGW32.
75
76-	SCCS: diff now uses strftime() for diff -u where cftime() is
77	missing. Thanks to David Clissold from IBM for reporting the
78	wrong time format from the ctime() fallback.
79
80-	SCCS: diff now includes a workaround for HP/UX strftime() that
81	returns the %Z string for both %z and %Z.
82
83-	bsh version was increased to 6.14
84
85-	bsh now also prints the time stamp seen with "bsh -version"
86	when typing a '#' in interactive mode.
87
88-	bsh: limit(1) now supports new [gs]etrlimit() parameters for "limit"
89
90	-	RLIMIT_NPTS	FreeBSD # of pty's
91
92	-	RLIMIT_SWAP	FreeBSD Swap to be used
93
94	-	RLIMIT_RTTIME	Linux max real time quantum
95
96-	Bourne Shell: now supports new [gs]etrlimit() parameters for "ulimit"
97
98	-	RLIMIT_AS	Address space (usually the same as RLIMIT_VMEM)
99
100	-	RLIMIT_NICE	Linux nice priority limit
101
102	-	RLIMIT_SIGPENDING number of pending signals
103
104	-	RLIMIT_MSGQUEUE	number of POSIX message queues
105
106	-	RLIMIT_RTPRIO	Linux maximum real time priority
107
108	-	RLIMIT_RTTIME	Linux max real time quantum
109
110	-	RLIMIT_LOCKS	Maximum number of file locks
111
112	-	RLIMIT_NPTS	FreeBSD # of pty's
113
114	-	RLIMIT_SWAP	FreeBSD Swap to be used
115
116-	bsh and Bourne Shell: The alias code no longer calls fstat()
117	followed by an unnecessary stat() on the .gloals and .locals
118	file.
119
120-	Bourne Shell: The global and local alias files are no longer
121	read three times at shell startup.
122
123-	Bourne Shell: added a new builtin command "builtin" to manage
124	builtin commands. This command was taken from ksh. Note that
125	the new command is not yet fully complete. The commands:
126
127	builtin		list all builtins
128
129	builtin -i	list all shell intrinsic commands
130
131	builtin -s	list all special builtins
132
133	already work. More is planned for the near future.
134
135	Note that the -i option is not in ksh93, but we recently
136	restructured POSIX for POSIX.1-issue-7-tc2 to mention
137	a new class of shell builtins that will be a base for a further
138	shell restructuring with POSIX.1-issue-8.
139
140-	Bourne Shell: added a new builtin command "find" similar to
141	what is available in "bsh" since April 2007. This builtin could
142	or could not stay statically linked in the Bourne Shell. We need
143	to decide this when loadable builtins are implemented. In
144	the latter case, it may be converted into a dynamically loaded
145	builtin in the near future. It may however be sufficient, to
146	mark libfind a "lazy load" library. Note that lazy-loading
147	only works with the AT&T UNIX linker (e.g. available in the
148	UNIX "ld" on OpenSolaris) but not with "gld" on Linux.
149
150	The current implementation however allows to check whether
151	e.g. interrupt handling works between the Bourne Shell and
152	libfind. We did already identify a name space problem with
153	libshedit and the Bourne Shell as a result of includind the
154	find(1) builtin based on libfind.
155
156	The main reason for making it a builtin is that a
157	shell builtin can call shell procedures without a need
158	to fork()/exec(). I plan to add a new find(1) primary "-call"
159	to libfind that allows to call other shell builtins from libfind.
160
161	Another reason is to have a modern find(1) implementation
162	available by default, e.g. an implementation that supports a
163	fine grained file time stamp search that is missing in Solaris
164	find and GNU find.
165
166-	Bourne Shell: several instances of plain numbers have been changed
167	towards O_RDONLY/O_WRONLY and STDIN_FILENO for better readability.
168
169-	Bourne Shell: the struct namnod flags have been documented.
170
171-	Bourne Shell: the hash code has been documented. This helps
172	to make this code maintainable, e.g. for introducing PATH
173	tagged builtin commands. The concept of PATH tagged shell
174	builtins was designed by Sun Microsystems and David Korn
175	before ksh93 was integrated into OpenSolaris in August 2007.
176	This concept was recently chosen to become the official
177	POSIX.1-issue-8 method for adding shell builtins bejond the
178	list of shell builtins documented by POSIX today.
179
180-	Bourne Shell: a new #define FORCE_WAITID allows to enforce
181	using waitid() even on platforms that fail to pass the
182	related autoconf test. This helps to test the Bourne Shell on
183	non-POSIX platforms that like to make their waitid() implementation
184	POSIX compliant, such as Linux or Mac OS X.
185
186-	Bourne Shell: struct sysnod added a new struct member "sysflg"
187	that allows to implement the builtin command "builtin" and to
188	mark different types of builtin commands.
189
190-	Bourne Shell: "struct sysnod commands" now sets BLT_SPC for special
191	builtin commands.
192
193-	Bourne Shell: "struct sysnod commands" now sets BLT_INT for intrinsic
194	shell commands. Intrinsic commands have been recently defined by
195	POSIX.
196
197-	Bourne Shell: some messages are no longer compiled into msg.c if the
198	related error codes are not available on the actual compile platform.
199
200-	Bourne Shell: the POSIX exit codes 126/127 for $? are now supported
201	for non-executable existing file and non-existing file.
202
203-	Bourne Shell: new codes for .sh.codename have been introduced:
204
205	NOTFOUND	an executable file could not be found
206
207	NOEXEC		an executable file could be found but not executed
208
209	Note that these error codes in ${.sh.codename} need shared memory,
210	e.g. via vfork() for the non-hash case of PATH search to be reliable
211	as the standard does not allow to report more than a single value (an
212	exit code) to the parent and an exit code from the forked (but not
213	exec'd) shell cannot be distinguished from an exit code that was used
214	by the expected child process.
215
216-	Bourne Shell: A bug in the code to generate the "$-" string (specific to
217	the Shily Burne Shell) was fixed and $- now contains the 'i' for
218	interactive shells as expected and recently changed in the source when
219	introducing support for $ENV and /etc/shrc & ~/.shrc.
220
221-	Bourne Shell: the "type" builtin is now POSIX compliant and reports
222	keywords as well.
223
224-	Bourne Shell: the "type" builtin now distincts between builtins,
225	special builtins and shell intrinsics.
226
227	In preparation of the upcoming POSIX.1-issue-7-tc2 we distinct
228	non-special builtins from "intrinsic commands"; a new category that
229	was introduced recently for builtins that need to be a builtin command
230	but without "special" treatment.
231
232-	Bourne Shell: A new builtin command "@" was added similar to existing
233	implementations in bsh and csh. This helps to speed up loops. Use
234	something like:
235
236	i=0
237	while [ $i -lt 1000 ]; do
238		doit $i
239		@ i++
240	done
241
242	Such a loop now typically takes 20 usecs per iteration. A conservative
243	implementation using "i=`expr $i + 1`" instead of "@ i++" would take
244	3 milliseconds per iteration.
245
246-	Bourne Shell: A new builtin command "sync" was added similar to what
247	is in bsh since 1982 and what has been recently added to ksh93.
248
249-	Bourne Shell: A new builtin command "pgrp" was added similar to what
250	is in bsh since 1985.
251
252-	bsh and Bourne Shell: the pgrp builtin command now also prints information
253	about session groups. This helps to identify session group leaders.
254
255-	Bourne Shell: A new builtin command "errstr" was added similar to what
256	is in bsh since 1985.
257
258-	Bourne Shell: A new builtin command "killpg" was added similar to what
259	is in bsh since 1985.
260
261-	Bourne Shell: The builtin command "suspend" is now able to suspend the
262	shell even in case it was started by a debugger (e.g. truss) or by sudo.
263	To do so, it always reverted to the saved process group but this did
264	suffer from ESRCH. Now, it reverts to the saved process group and stops
265	that saved group.
266
267	********************
268	Please report if the current implementation causes any unexpected
269	problems.
270	********************
271
272-	Bourne Shell: Support for tilde expansion was added.
273	Currently, there is not yet support for tilde expansion in the
274	parameter expansion and for tilde's that appear after an colon (:),
275	e.g. in
276		PATH=/bin:~/bin
277
278-	bsh and Bourne Shell now support tilde auto-completion via ^C
279	(and TAB for bash compatibility) in the history editor. The expansion
280	is done the same way, the Bourne Shell expands '~' in the parser:
281
282	~	expands to the users home directory $(HOME)
283
284	~+	expands to $PWD
285
286	~-	expands to $OLDPWD
287
288	~user	expands to the home directory for "user" from the passwd file
289
290-	Bourne Shell: Support for up to 120 flag bits has been added. This allows
291	to introduce a sufficient amount of new set(1) -o options in the future.
292
293-	Bourne Shell: Support for pipes from arbitrary other file descriptors
294	than #1 (stdout) was added. This feature is enabled via "set -o fdpipe"
295	and allows to precede the pipe symbol by a digit that describes file
296	descriptor # to use instead of stdout, e.g. 2| for a pipe from stderr.
297	This feature is based on a feature from bsh introduced in 1991.
298
299	This feature permits to use a pager for messages from stderr. As
300	"mkisofs -help" prints a lot of messages to stderr, one might call:
301
302		set -o fdpipe
303		mkisofs -help 2| more
304
305	to be able to decently read the long help text from stderr.
306
307-	Bourne Shell: a new option "set -o fullexitcode" has been added. It permits
308	to tell the shell not to mask $? with 0xFF and to return the full 32 Bits
309	from the exit code from child processes on operating systems that support
310	waitid(2). Platforms that do not implement waitid(2), mask the exit code
311	in the kernel and give no way access the full exit code.
312
313	Note that even with that setup, the historic namespace clash with the exit
314	codes 126/126 and 128+signal-number remains. It however gives an easier to
315	type method for most cases. Call:
316
317		set -o fullexitcode
318		bosh -c "exit 1234567890"; echo $?	# some shells limit exit
319		1234567890
320
321	to check this feature.
322
323	*******
324	As this setup is reverted before calling shell scripts, it can be used
325	without problems for interactive shells and set up from inside $HOME/.shrc
326	*******
327
328-	Bourne Shell: The builtin command "times" now uses getrusage(2) instead of
329	times(2) and thus gets a microsecond resolution (at least on OpenSolaris,
330	you really get that resolution) instead of just 10ms.
331
332-	Bourne Shell: a new option "set -o time" enables automatic timing for
333	commands. The current implementation only supports basic test code for
334	external commands and built-ins. TIMEFORMAT does not yet work, the output
335	format is based in the shell builtin times(1) but the minutes are omitted
336	in case that they are zero; future versions will allow to configure the
337	output format via $TIMEFORMAT
338
339-	Bourne Shell: The shell variable TIMEFORMAT= was introduced in preparation
340	of the future configurable time format.
341
342
343-	The following builtins (that are available in bsh) are still missing in
344	the Bourne Shell:
345
346	err			echo with output going to stderr
347	glob			echo with '\0' instead of ' ' between args
348	env			a builtin version of /usr/bin/env
349
350	The following bsh intrinsics are still missing in the Bourne Shell:
351
352	-			A method to add matching aliases to the history
353				in order to allow to edit them via the command
354				line history editor.
355
356	-			the restricted bsh has restriction features that
357				are missing in the Bourne shell.
358
359	-			bsh by default uses the prompt:
360
361					"<hostname> <username> >"
362
363	and probably more features not yet identified to be bsh unique.
364
365
366
367Author:
368
369Joerg Schilling
370D-13353 Berlin
371Germany
372
373Email: 	joerg@schily.net, js@cs.tu-berlin.de
374	joerg.schilling@fokus.fraunhofer.de
375
376Please mail bugs and suggestions to me.
377