1New features with AN-2020-05-11:
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 newer smake
27	*** to compile this source. If your smake is too old and aborts, ensure to
28	*** use the recent smake by calling:
29
30	cd ./psmake
31	./MAKE-all
32	cd ..
33	psmake/smake
34	psmake/smake install
35
36	The new smake version mentioned above is smake-1.2.4
37	The recent smake version is smake-1.3
38
39	*** Due to the fact that schily-tools 2018-01-26 introduced
40	*** optimizations for the Schily version of SunPro Make, you
41	*** need at least the dmake version from 2018/01/11 with support
42	*** for the "export" directive to compile with this makefile system.
43
44
45	WARNING: the new version of the isoinfo program makes use of the
46		*at() series of functions that have been introduced by Sun
47		in August 2001 and added to POSIX.1-2008. For older platforms,
48		libschily now includes emulations for these functions but
49		these emulations have not yet been tested thoroughly.
50		Please report problems!
51
52	BUG WARNING: Please never report bugs only to Linux distributions as
53		they usually do not forward these bug reports upstream and as
54		the Linux distributions typically do not let skilled people
55		check the bugs. We did not hear about a FIFO problem in star
56		for a long time. Then a problem on Linux occurred once
57		every 6000-10000 tries but it did not happen on Solaris after
58		even 10 million tries, so it was not known besides Linux.
59
60	BUG WARNING: GNU make release 4.3 starts too early with parallel
61		execution (when reading Makefiles and evaluating rules for
62		"include" statements already). Since GNU make does not
63		support a concept for correct ordering of such actions,
64		you need to be prepared to see gmake-4.3 fail in parallel
65		mode. If you are interested in reliable parallel execution,
66		it is recommended to use the included "dmake" program with
67		a command line like:
68
69			dmake -j10 -f SMakefile
70
71		from the top level directory
72
73
74-	Makefile system: A new version of the BSD make (bmake) program fixed
75	a bug in pattern macro substitution, so we are now able to detect
76	BSD make and to read BSD make program specific rules.
77
78	This could in theory allow us to support BSD make in the future,
79	but...
80
81	Note that we on the other side discovered a new bug with pattern
82	macro substitution in bsd make: The substitution:
83
84		$(FOO:%=bar/%)
85
86	is replaced by "bar/" with an empty "FOO", but of course, with an
87	empty FOO, the substitution should be empty as well.
88
89	This second bug (above) was fixed on May 6th, but we do not yet have
90	all needed make rules and we do not know whether other bugs may still
91	prevent the usability of BSD make. Supporting BSD make will be hard
92	as BSD make does not support pattern matching default rules and this
93	is important for placing the .o files into a sub-directory.
94
95	Also note that the portable program source for "bmake" from "pkgsrc"
96	is 2 years old and thus currently cannot be supported at all. If
97	you like to experiment on your own, you need to get this version:
98
99		http://crufty.net/help/sjg/bmake.html
100
101	see
102
103		http://www.crufty.net/ftp/pub/sjg/bmake.tar.gz
104
105	and replace the newer files from the netbsd.org CVS tree by hand in
106	order to fix the first and second mentioned pattern macro substitution
107	bug.
108
109-	Makefile system: RULES/MKLINKS was enhanced to create a new symlink
110	RULES/r-bsdmake.tag that points to RULES/r-make.tag
111
112-	Makefile system: The archive makefiles.tar.bz2 has been added to the
113	schilytools tree to allow easy reuse of the makefile system for own
114	projects.
115
116-	Bourne Shell: The unit tests for the new ERR trap did not work on
117	Solaris because /bin/false on Solaris causes an exit code of 255.
118	We now only check for an exit code != 0.
119
120-	Bourne Shell: Some of the unit tests for the trap command are now only
121	run in case that the SUT is "bosh".
122
123-	Bourne Shell: set -- now checks the '\0' character at the end of
124	the string "--". This fixes strange behavior with argument strings that
125	start with "--".
126
127-	Bourne Shell: Added a new flag XEC_INFUNC to the xflag parameter to mark
128	the fact when inside a function.
129
130-	Bourne Shell: set -e no longer causes commands with nonzero exit code
131	to abort inside a function in case that the return code of that function
132	is evaluated by e.g. an "if" statement.
133
134	Thanks to Koichi Nakashima for reporting
135
136-	Bourne Shell: A unit test for the above bug has been added.
137
138-	Bourne Shell: $- may no longer be partially wrong (and miss the state
139	of the -e flag).
140
141	Thanks to Koichi Nakashima for reporting
142
143-	Bourne Shell: under some rare conditions, the syntax tree -> cmdline
144	converter could omit a command delimiter. This was the result of the
145	fact that a helper variable "didnl" (used for codeoutput beautifying)
146	was not reset in func.c and thus could cause
147
148		printf a ; printf b
149
150	to print "aprintf b" instead of "ab"
151
152	Thanks to Koichi Nakashima for reporting
153
154-	Bourne Shell: A unit test for the above bug has been added.
155
156-	Bourne Shell: A command like:
157
158		command | while read name; do loopcmd; done
159
160	did stop after the first loop because "read" did then read from stdin
161	instead of using the pipe file descriptor. This happened only of
162	"loopcmd" was not a shell builtin.
163
164	Thanks to Koichi Nakashima for reporting
165
166-	Bourne Shell: A unit test for the above bug has been added.
167
168-	Bourne Shell: When we added support for ${var+value with spaces}
169	4 years ago, we forgot to enhance the lexer the same way for things
170	like "${var+value with spaces}" and "${var+"value with spaces"}".
171	This has been forgotten, because a different part of the lexer is
172	used to parse that kind of quoted strings. The lexer now supports
173	looking for closing '}' in quoted text as well.
174
175	Thanks to Koichi Nakashima for reporting
176
177-	Bourne Shell: A unit test for the above bug has been added.
178
179-	Bourne Shell: The expression "${var1#"$var2"}" has been introduced by
180	ksh88 with strange rules for the way the double quotes past # are
181	handled. We now support them....
182
183	Thanks to Koichi Nakashima for reporting
184
185-	Bourne Shell: A unit test for the above bug has been added.
186
187-	Bourne Shell: Some unit tests from "mksh" (that previously have been
188	disabled) have been enabled, since the two changes above now make
189	the Bourne Shell behave like "mksh" for these 6 additional tests.
190
191-	SCCS: The "sccs" command now implements "sccsdiffs" as alias to
192	the "sccsdiff" subcommand. This helps avoid the confusion from the
193	subcommand "diffs" vs. "sccsdiff" that frequently causes people to
194	type "sccsdiffs" instead of "sccsdiff".
195
196-	SCCS: the "sccs" command is now using getopt() to parse the options
197	for the project specific subcommands.
198
199-	SCCS: the "sccs root" command now checks for too many arguments and
200	only allows zero or one path arguments.
201
202-	SCCS: An new SCCS high level library libsccs has been introduced.
203
204-	SCCS: The project oriented high level commands from sccs(1) have been
205	moved to the new libsccs.
206
207-	SCCS: several of the old low level SCCS commands now call save_args()
208	in order to be able to print the command name together with error
209	messages.
210
211-	SCCS: The "sccs istext" subcommand now uses getopt()
212
213-	SCCS: The "sccs istext" subcommand now uses off_t instead of int
214	to count line numbers.
215
216-	SCCS: Fixed a potential core dump from "sccs istext" on Linux as Linux
217	does not allow a double fclose().
218
219-	SCCS: The "sccs istext" subcommand now clearly distinguishes between
220	a line that stars with the character '\001' and one that contains a
221	null byte.
222
223-	SCCS: The error "de14" now only refers to a null byte in a file.
224	The Error "de20" exists since 2011 and is related to the other SCCSv4
225	illegal character, a '\001' at the beginning of a line.
226
227-	SCCS: The delta command no longer uses the "de14" error code in case
228	the file contains a null byte
229
230-	SCCS: The file version.h has a new date.
231
232-	SunPro Make: removed a superfluous space in the man page that appeared
233	in the pattern macro substitution description.
234
235-	mkisofs: README.eltorito has been enhanced to mention "-boot-load-size"
236	and "-eltorito-platform efi"
237
238-	mkisofs::isoinfo: For strange reasons, support for identifying an
239	EFI boot record has been forgotten when EFI boot support has been
240	added to mkisofs approx. 10 years ago. Isoinfo is now able to print
241	"efi" instead of the unexpected "Unknown arch".
242
243-	mkisofs: The diagnostic tools for mkisofs (isoinfo, ...) now all have
244	been modified to show the version date of the cdrtools version they
245	are from.
246
247
248-	SCCS TODO:
249
250	-	Convert sccs.c to use -NSCCS in the back end programs instead
251		of converting g-file names from the command line into s.file
252		names in the frontend in order to forward s.file names to the
253		backend programs. Doing it this way allows us to have the SCCS
254		history files "off tree" in a separate directory tree starting
255		with ".sccs/" at the "project root" directory, as the related
256		code to convert path names is in libcomobj::bulkprepare().
257
258	-	Add code to admin(1) and delta(1) to retrieve the list of
259		new or modified files in order to have all important code
260		for a "sccs commit" in a single program that does not need to
261		deal with ARG_MAX limitations.
262
263	-	Add code to admin(1), delta(1) and get(1) to maintain/understand
264		the changeset file.
265
266	-	Add code to libcomobj to understand the changeset file,
267		which is needed in order to e.g. know the file names and file
268		specific SIDs/state that correspond to a project global SID.
269
270	-	Add code to all programs to maintain a lock (for the file
271		$PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file
272		$PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project
273		global lock.
274
275	-	Find/verify a complete transactional model that allows to repair
276		complex changes to the set of files for a project that have
277		been aborted in the middle. The current idea is to create the
278		file $PROJECTHOME/.sccs/changeset with the deltas to the
279		changeset during a complex update operation.
280
281	-	Find a way to decide when to use SCCS V6 type history files.
282
283		For the project mode, this is needed in order to prevent
284		historic SCCS implementations to believe they could modify
285		files without knowing about project global locks.
286
287		Currently, SCCS V6 needs to be usable manually for every
288		history file using "admin".
289
290
291
292
293
294-	Bourne Shell Missing features for POSIX compliance:
295
296	- Support for $'...' quoting (this is not needed for the current
297					version of POSIX but for the next POSIX
298					version that will be named SUSv8).
299					The development of SUSv8 will start in
300					late 2016.
301
302	We are now expecting the Bourne Shell to be fully POSIX compliant.
303
304-	Bourne Shell further TODO list:
305
306	-	Finish loadable builtin support.
307
308	-	POSIX does not allow us to implement ". -h", so we will
309		add a "source" builtin to be able to implement "source -h"
310
311-	The following builtins (that are available in bsh) are still missing in
312	the Bourne Shell:
313
314	err			echo with output going to stderr
315	glob			echo with '\0' instead of ' ' between args
316	env			a builtin version of /usr/bin/env
317
318	The following bsh intrinsics are still missing in the Bourne Shell:
319
320	-			the restricted bsh has restriction features that
321				are missing in the Bourne shell.
322
323	-	source -h	read file into history but do not execute
324
325	and probably more features not yet identified to be bsh unique.
326
327
328
329Author:
330
331Joerg Schilling
332D-13353 Berlin
333Germany
334
335Email: 	joerg@schily.net, joerg.schilling@fokus.fraunhofer.de
336
337Please mail bugs and suggestions to me.
338