1New features with AN-2019-09-22:
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-	psmake: The portable bootstrap smake compilation environment added
61	a new option "-shell path" to the shell script psmake/MAKE-sh in
62	order to permit to use a different shell to run "configure".
63
64	This helps to compile the boostrap smake binary on platforms where
65	/bin/sh is a broken shell but another (working) shell is present.
66	It may still be needed on Ultrix even though there are now work
67	arounds for various shell bugs on Ultrix.
68
69-	conf/cc-config.sh: All "eval" commands with I/O redirection need
70	to be in a subshell in order to work with a V7 shell. This change
71	was needed to support Ultrix.
72
73	Thanks to Robert Clausecker for reporting
74
75-	RULES: "configure" is now run by $SHELL instead of "sh". This allows
76	to call:
77
78		smake SHELL=path/to/shell
79
80	with a shell that is able to correctly run configure in case that
81	the default shell is buggy. Note that if you are on such a platform,
82	you need to run MAKE-sh in the directory "psmake" by hand, using the
83	right shell definition via the "-shell path" option.
84
85	Thanks to Robert Clausecker for reporting
86
87-	autoconf: Since 2011, we used
88
89		eval echo ....
90
91	in the macro AC_MSG_RESULT() in order to make looping over a group of
92	tests easier. It now turned out that on Ultrix the shell is buggy and
93	aborts
94
95		eval echo foo 1>&6
96
97	with an "illegal io" message.
98
99	In order to work around this problem, we had to expand the
100	AC_MSG_RESULT() in the AC_CHECK_DFUNC() macro to be able to
101	remove the "eval" call from AC_MSG_RESULT() in order to get the
102	previous state.
103
104	This even resulted in 5% performance win for "configure" as a side
105	effect...
106
107	Thanks to Robert Clausecker for reporting
108
109-	autoconf: AC_TRY_EVAL() in former times did call "( eval echo ... )"
110	in order to work around a problem in the UNIX V7 shell with I/O
111	redirection for builtin commands. We removed the "( ... )" in
112	March 2016, not knowing the reason why they have been used as we
113	intendedto enhance the "configure" performance. In order to be able to
114	again support the UNIX V7 shell, we now call { eval echo ... ;} since
115	that allows I/O redirection for stdout in the UNIX V7 shell. Since
116	modern shells do not create a sub-shell for this, it does not reduce
117	performance with modern shells.
118
119	The I/I redirection problem for builtin commands in the V7 shell is
120	not present with "eval ... | command" and it can be circumvented with
121	"{ eval ... ;} > ...", for stdout redirection, but with stdin
122	redirection we definitely need "( eval cat ) < file".
123
124	Thanks to Robert Clausecker for reporting
125
126-	autoconf: The test AC_PROG_CPPX no longer uses the builtin type(1) but
127	rather the old autoconf concept based on a shell for-loop since we like
128	to support the V7 Bourne Shell.
129
130	Thanks to Robert Clausecker for reporting
131
132-	autoconf: A few other cases with "eval" I/O redirection have been
133	modified to run in a subshell in order to support the UNIX V7 shell
134	as well.
135
136	Thanks to Robert Clausecker for reporting
137
138-	conf/cc-config.sh: The "eval" calls are now inside () in order to
139	create a sub-shell that is needed to support the V7 Bourne Shell.
140
141-	autoconf: Ultrix has int8_t and similar definitions in unusual
142	include files but not in inttypes.h. This tricks out the
143	autoconfiguration tests and we cannot define these types for older
144	platforms. We therfore made the definitions for int8_t and similar
145	optional (using Int8_t in our code) in order to again support Ultrix.
146
147	Thanks to Robert Clausecker for reporting
148
149-	Makefile System: Added new configuration files for Ultrix in the
150	directory RULES to support non automake aware make implementations
151	line "gmake".
152
153-	Makefile System: Added dummy "else" parts to "if" shell statements
154	in the makefiles in the RULES directory in order to work around a bug
155	in the UNIX V7 shell from 1982 used on Ultrix. The "else" part
156	now contains the dummy command ":" that sets the exit code of
157	the if statement to 0 if the condition was not taken.
158
159	Thanks to Robert Clausecker for reporting
160
161-	Makefile System: Modified the default system files temp-*cc*.rul
162	to match the new concept for "mkdir -p" emulation.
163
164-	include/schily: various include files have been modified to pass
165	"cstyle" and "hdrchk" from the OpenSolaris build system in order
166	to allow Schillix-ON integration.
167
168-	include/schily/fetchdir.h: Added more comment.
169
170-	include/schily/resource.h: Added an #include <schily/stdint.h> and
171	moved the rlim_t definition out of the #ifndef RLIMIT_CPU block.
172	This is needed for Ultrix where rlim_t is not a supported system
173	defined type.
174
175	Thanks to Robert Clausecker for reporting
176
177-	include/schily/wait.h: The W*() macros on Ultrix do not work cuurectly
178	and this is a result of an incorrect definition for union wait. The
179	Ultrix kernel uses the right bits in the status, so we
180	#undef USE_UNION_WAIT and all W*() macros from the Ultrix system
181	include files. This causes that include/schily/wait.h #define's
182	our working versions as a replacement.
183
184	Thanks to Robert Clausecker for reporting
185
186-	libschily/Targets: The indentation has been changed for an easier
187	conversion to the OpenSolaris build system for Schillix-ON integration.
188
189-	libschily/dirent.c changed uint32_t -> UInt32_t for more portability
190	to older platforms like Ultrix.
191
192-	libschily/gethostname.c changed uint32_t -> UInt32_t for more
193	portability to older platforms like Ultrix.
194
195-	libschily/kill.c changed uint32_t -> UInt32_t for more
196	portability to older platforms like Ultrix.
197
198-	libschily/uname.c changed uint32_t -> UInt32_t for more
199	portability to older platforms line Ultrix.
200
201-	libschily/format.c is now using ~(UIntptr_t)1 instead of just ~1
202	in order to make it work correctly for 64 bit systems.
203
204	Thanks to Robert Clausecker for reporting
205
206-	libschily/match.c: The pattern matcher had a problem with parsing
207	patterns like '[[]' after adding support for the POSIX '[[:alpha:]]'
208	and similar methods in August 2017. We now correctly handle the pattern
209	in case that something starts with '[' but does not continue as "[:"
210	and as a result does not seem to be something like '[[:alpha:]]'
211
212-	libschily/match.c: A while() loop has been converted to a do ... while()
213	loop in order to support the POSIX way of specifying "[]]" as a set
214	that contains the character ']' wihtout the need to use "\]".
215
216-	libschily/match.c: A bug introduced in March 2018 has been fixed
217	by removing "if (ap->Ch != LCLASS) nextitem(ap);" from the parser.
218
219-	libfind: A new interface function to the treewalk() function data
220	called walknlen() has been introduced. It returns the length of
221	the last pathname component without a need to call strlen().
222	This is used in order to be able to check in a performant way whether
223	a pathname ends in slash(es).
224
225-	libfind: The index pointer to the last pathname comonent was not
226	initialized in case the name was a command line argument. This
227	caused "find ./foo -name foo" not to match as expected.
228
229	Thanks to Tavian Barnes for reporting.
230
231-	libfind: We now call basename() with the last pathname component
232	in order to to be able to correctly deal and match with command
233	lines like:
234
235		find ./foo/// -name foo
236
237	basename() is used here to remove trailing slashes.
238
239-	libfind: If we are in the optimized mode that avoids stat() calls,
240	we are not allowed to avoid a stat() in case that the current file
241	may be a symlink and we are told to follow symlinks. If we did avoid
242	the stat() call as we did before, we would miss to follow symlinks
243	that point to directories.
244
245	This problem mainly happened on Linux, where struct dirent contains
246	a d_type member. In this case, libfind made the false assymption that
247	d_type (being a symlink) could not point to a directory.
248
249	Thanks to Tavian Barnes for reporting.
250
251-	libfind: schily/fcntl.h is always needed because we need AT_FDCWD that
252	may be missing on older platforms.
253
254	Thanks to Robert Clausecker for reporting
255
256-	libfind: find_misc.h now includes schily/time.h since Ultrix
257	is a historic UNIX that needs our definition of struct timespec
258	since that definition is not in system include files.
259
260	Thanks to Robert Clausecker for reporting
261
262-	libfind: find_list.c Now using a
263
264		#if defined(S_IFPORT) && S_IFPORT != S_IFIFO
265
266	to work around a strange definition on Ultrix where S_IFPORT == S_IFIFO
267	and where S_IFPORT is not a Solaris event port.
268
269	Thanks to Robert Clausecker for reporting
270
271-	cdda2wav/sndconfig.c changed uint32_t -> UInt32_t for better
272	portability to older platforms like Ultrix.
273
274-	patch: The order of arguments to the called "ed" command has been
275	wrong when handling "ed type" patches. This bug caused patch to
276	complain with a strange error message like:
277
278		cannot change dir to /bin/red.
279
280	The bug has been introduced when a check for "red" has been made part
281	of the autoconfiguration procedure to support OpenBSD where "red" is
282	missing.
283
284-	printf: Some minor changes to permit printf to be compiled on
285	OpenSolaris-ON without using a symlink to the bosh sources. This
286	needs some extra code to always get the right "defs.h" include
287	file.
288
289-	printf: Added support for the hexadecimal float formats %a and %A
290	when printf is compiled on OpenSolaris-ON. This helps to make the
291	resulting /usr/bin/printf to behave more similar to the printf
292	command that is built into ksh93.
293
294-	SunPro Make: Added code to support an installation in /opt/onbld
295	that is used during the compilation of OpenSolaris-ON. This is needed
296	since the binary is in /opt/onbld/bin/i386/dmake or
297	/opt/onbld/bin/sparc/dmake and thus the relative path to
298	/opt/onbld/share/lib/make/make.rules is different from what is used
299	with a typical installation where the binar is directly in the bin
300	subdirectory.
301
302-	star: star -xdev -find typically works to exclude mounted files.
303	It still does not always do what is expected, e.g. in case that /proc
304	is in the tree of scanned files, where files deep in the new mounted
305	tree suddenly have the same FS ID as other filesystems, e.g. the file
306	/proc/<pid>/path/a.out.
307
308	In such cases, "star -find -xdev" is still recommended where the
309	mounted file exclusion is done inside libfind instead of being
310	done inside star.
311
312	Before, files on other filesystems have not been honored at all when
313	using "star -xdev -find ...".
314
315-	dotfiles: bsh/dotfiles.bsh.tar.bz2 sh/dotfiles.sh.tar.bz2 and
316	ved/dotfiles.ved.tar.bz2 now have an updated file ~/.termcap that
317	includes the capability kb=\b for the terminal sun-color.
318	This enables automated mapping from backspace to delete for the
319	Solaris console device, since sun keyboards starting from approx.
320	1988 emit a backspace when typing the delete key in the letter block
321	of the keyboard.
322
323-	cal: Fixed a typo in the comment for the Gregorian switch day
324	for Prussia.
325
326-	cal: The GREGORIAN environment now also supports (besides yyyy/mm/dd)
327	the format yyy-mm-dd.
328
329-	cal: The GREGORIAN environment value now may start with a + sign in
330	order to enforce the alternate julian/gregorian switch date even
331	when being in the C locale. This helps to use the right switch date
332	even on machines that only have the C locale installed
333
334-	cpp: The yacc parser now checks for the division -2147483648 / -1
335	in order to avoid a core dump from:
336
337	#if -2147483648 / -1
338	code
339	#endif
340
341	Since that cannot be computed on a two's complement machine,
342	-2147483648 is used as the hard coded result for this statement.
343
344	Thanks to Robert Clausecker for reporting
345
346-	cpp: The man page now mentions that "cpp -C ..." passes C++ type
347	comments as well.
348
349	Thanks to Robert Clausecker for reporting
350
351-	cpp: now avoids some "static unused sccsid" warnings for its code.
352
353-	bsh: The version time stamp has been updated
354
355-	Bourne Shell: The new function isbinary() that has been introduced
356	in May and that should prevent the shell from interpreting binary
357	files as shell scripts had a problem:
358
359	In case that a disconnected TCP/IP based remote login caused a SIGTERM
360	followed by the read() function on stdin returning EIO, the shell
361	could go into a complex endless loop as the failing read() with
362	"trapnote" set caused a longjmp() before the next prompt without first
363	clearing "trapnote". As a result, the shell did hang endlessly around
364	while just consuming CPU time.
365
366	The shell now avoids to call the read() routine inside isbinary()
367	when "trapnote" is set and this way is able to avoid the longjmp() on
368	error.
369
370-	Bourne Shell: Fixed some typos in comment
371
372	Thanks to Robert Clausecker for reporting
373
374-	Bourne Shell: print.c: Changed err++ for a BOOL typed variable
375	into err = TRUE.
376
377	Thanks to Robert Clausecker for reporting
378
379-	Bourne Shell, with obosh compilation type: Avoid an "unused" warning
380	with word.c
381
382-	Bourne Shell: defs.h now includes an "extern int optopt;" in order
383	to support Ultrix where this delcaration is missing in unistd.h.
384
385	Thanks to Robert Clausecker for reporting
386
387-	bsh/Bourne Shell: test.c Now using a
388
389		#if defined(S_IFPORT) && S_IFPORT != S_IFIFO
390
391	to work around a strange definition on Ultrix
392
393	Thanks to Robert Clausecker for reporting
394
395-	Bourne Shell: New version date
396
397-	SCCS changed some uint32_t -> UInt32_t for more portability to
398	older platforms like Ultrix.
399
400-	SCCS: diff.c now checks whether file decriptors f1 & f2 are >= 0,
401	becore calling close() in order to avoid thousands of unneeded
402	close() syscalls in case the "files" used to compare are directories.
403
404-	SCCS: diff.c Now using a
405
406		#if defined(S_IFPORT) && S_IFPORT != S_IFIFO
407
408	to work around a strange definition on Ultrix
409
410	Thanks to Robert Clausecker for reporting
411
412-	SCCS: Using a new version date.
413
414-	ved: Changed the pattern "[[\\]]" into "[\\[\\]]" since the
415	pattern matcher supports [[:alpha:]] since 2017. This caused
416	ved to no longer be able to seach for a matching square bracket.
417
418	With the fixes in libschily/match.c (see above), this change was
419	not needed anymore but it does not harm...
420
421
422-	SCCS TODO:
423
424	-	Convert sccs.c to use -NSCCS in the back end programs instead
425		of converting g-file names from the command line into s.file
426		names in the frontend in order to forward s.file names to the
427		backend programs. Doing it this way allows us to have the SCCS
428		history files "off tree" in a separate directory tree starting
429		with ".sccs/" at the "project root" directory, as the related
430		code to convert path names is in libcomobj::bulkprepare().
431
432	-	Add code to admin(1) and delta(1) to retrieve the list of
433		new or modified files in order to have all important code
434		for a "sccs commit" in a single program that does not need to
435		deal with ARG_MAX limitations.
436
437	-	Add code to admin(1), delta(1) and get(1) to maintain/understand
438		the changeset file.
439
440	-	Add code to libcomobj to understand the changeset file,
441		which is needed in order to e.g. know the file names and file
442		specific SIDs/state that correspond to a project global SID.
443
444	-	Add code to all programs to maintain a lock (for the file
445		$PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file
446		$PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project
447		global lock.
448
449	-	Find/verify a complete transactional model that allows to repair
450		complex changes to the set of files for a project that have
451		been aborted in the middle. The current idea is to create the
452		file $PROJECTHOME/.sccs/changeset with the deltas to the
453		changeset during a complex update operation.
454
455	-	Find a way to decide when to use SCCS v6 type history files.
456		For the project mode, this is needed in order to prevent
457		historic SCCS implementations to believe they could modify
458		files without knowing about project global locks.
459
460
461
462
463
464-	Bourne Shell Missing features for POSIX compliance:
465
466	- Support for $'...' quoting (this is not needed for the current
467					version of POSIX but for the next POSIX
468					version that will be named SUSv8).
469					The development of SUSv8 will start in
470					late 2016.
471
472	We are now expecting the Bourne Shell to be fully POSIX compliant.
473
474-	Bourne Shell further TODO list:
475
476	-	Finish loadable builtin support.
477
478	-	POSIX does not allow us to implement ". -h", so we will
479		add a "source" builtin to be able to implement "source -h"
480
481-	The following builtins (that are available in bsh) are still missing in
482	the Bourne Shell:
483
484	err			echo with output going to stderr
485	glob			echo with '\0' instead of ' ' between args
486	env			a builtin version of /usr/bin/env
487
488	The following bsh intrinsics are still missing in the Bourne Shell:
489
490	-			the restricted bsh has restriction features that
491				are missing in the Bourne shell.
492
493	-	source -h	read file into history but do not execute
494
495	and probably more features not yet identified to be bsh unique.
496
497
498
499Author:
500
501Joerg Schilling
502D-13353 Berlin
503Germany
504
505Email: 	joerg@schily.net, joerg.schilling@fokus.fraunhofer.de
506
507Please mail bugs and suggestions to me.
508