1New features with AN-2020-06-09:
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
75-	Schily Makefilesystem: When configured not to compile project internal
76	libraries into shared libraries, an informational message has been
77	changed from:
78
79		" ==> NO shared libs on this platform (yet)"
80
81	to:
82
83		" ==> MAKING no shared libs on this platform (LINKMODE=static)"
84
85	This is expected to be less confusing.
86
87-	libboshcmd: For unknown reasons, an update from August 2018 has not
88	been published yet.
89
90	The update contains the support to the -call feature in the loadable
91	builtin find command.
92
93-	hdump/od: The starting address specification on the commandline did
94	not work for strings like 0xaaa but only for xaaa. This was caused
95	by the fact of not incrementing the input string by 2 charatcers
96	since the string->int conversion accepts a 0x prefix only with
97	expected "radix" 0.
98
99-	spax: the man page now includes the text for point 1 .. 5 related
100	to the "listformat" option.
101
102-	star: A new option -one-file has been added that causes star to exit
103	after a single file has been extracted as a result from a pattern match
104	or command line argument match.
105
106-	star: The FIFO error message "Sync pipe read error..." is no longer
107	printed in case that one side of the FIFO did intentionally set
108	the exit flag before reading/consuming the complete input.
109
110	This permits to avoid this message when star exits
111	(e.g. via -one-file) without reading the whole FIFO data.
112
113	This also prevents the same confusing message when listing or
114	extracting some cpio typed archives where the reader reads less than
115	the cpio block size (5 kB) .
116
117-	star: A new option iskip=# has been introduced. The argument is the
118	number of bytes to skip before looking for the first archive header
119	in the first tape block read after star started.
120
121	The value must be less than the tape block size.
122
123	The purpose of this option is to permit to read tapes from a different
124	offset than the beginning, after e.g. a "mt fsr xxx" command has been
125	issued.
126
127-	star: A new option mtskip=# has been introduced. This option causes
128	star to issue a "mt fsr xxx" equivalent on a tape archive.
129
130	 The argument is the number of 512 byte blocks to skip from the
131	beginning of the archive.
132
133	This option is a complement to the block number printed from
134
135		star -c -v -block-number ...
136
137	and if the argument to mtskip= is given the number from the
138	-block-number output, it fast forwards the archive to the position
139	where the related file starts in the archive.
140
141	If the archive is a plain file, this is done via lseek().
142
143	If the archive is a tape archive, this is done by first positioning
144	the tape via mtioctl(MTFSR) and then to do an implicit iskip=# for
145	the computed remainder of bytes resulting from the mtskip= argument.
146
147	Note that star must be called with the correct tape block size if
148	the archive is on a tape. Otherwise, this option does not work
149	correctly.
150
151-	SCCS: libcomobj::bulk.c now avoids double slashes when generating
152	the path to the off-tree history files.
153
154-	SCCS: libcomobj::bulk.c now has a new mode that allows to to translate
155	the a directory path in the source tree into a directory path within
156	the SCCS history tree. This is needed in case the repository is a
157	NewMode repository with an off-tree history.
158
159-	SCCS: sccs.c the SCCS_NMODE= environment now has a new meaning for
160	future feature debugging:
161
162	-	SCCS_NMODE=TRUE	New Mode is forced to be active
163
164	-	SCCS_NMODE=FALSE New Mode is forced to be disabled
165
166	-	SCCS_NMODE=	New Mode depends on $PROJECTHOME/.sccs/
167
168	-	SCCS_NMODE=i	New Mode depends on $PROJECTHOME/.sccs/
169				with intentional intree handling
170
171	-	SCCS_NMODE=o	New Mode depends on $PROJECTHOME/.sccs/
172				with intentional offtree handling
173
174	See below for the changes in SCCS admin about the consequences of
175	using this environment.
176
177-	SCCS: sccs: the simple forwarding to SCCS base low level commands
178	now always works in NewMode.
179
180-	SCCS: "sccs print" now supports the options -a -A -n -r to give
181	better annotation using new annotation features from get(1) related
182	to the option -A.
183
184-	SCCS: "sccs delget" and "sccs deledit" now work in NewMode since
185	getNsid() now uses bulkprepare() to get the path name for the p.
186	file when in NewMode.
187
188-	SCCS: "sccs enter" and "sccs create" now work in NewMode
189
190-	SCCS: "sccs init" now rescans the tree after the .sccs directory has
191	been created in order to get correct values in the sethome structures.
192
193	This is e.g. needed in orer to be able to compute the path for the
194	SCCS changeset file.
195
196-	SCCS: "sccs unedit" now works in NewMode
197
198-	SCCS: "sccs diffs" now works in NewMode
199
200-	SCCS: "sccs tell" now works in NewMode - however not yet in -R mode
201
202-	SCCS: "sccs help" no longer prints
203
204		"Unrecognized locale... setting to English\n"
205
206	but rather
207
208		"No help for locale '%s' ... setting to English.\n"
209
210	in hope that people no longer believe that the current locale
211	is incorrect but just a translation for the current locale is not yet
212	available.
213
214-	SCCS: The help text for "ad15" has been enhanced to mention a possible
215	usage problem. Calling:
216
217		admin -i xxx.c s.xxx.c
218
219	Now prints:
220
221	ad15:
222	"more than one file"
223	You are trying to create more than one SCCS file, and you supplied
224	the 'i' keyletter. You can only create one file when you supply
225	the 'i' keyletter. A possible reason for the problem is that you
226	have a space between the 'i' keyletter and the input filename.
227
228	and helps people to understand the superfluous space between -i
229	and xxx.c
230
231-	SCCS: "sccs help" added a new error message "cm20"
232
233		"non directory specified as argument"
234
235	It been introduced to support the enhanced "sccs tell" command.
236
237-	SCCS: various typos in the help texts have been fixed.
238
239-	SCCS: sccs: several strdup() calls with error check have been changed
240	to use a new function xstrdup() for unified handling.
241
242-	SCCS: sccs: an unclean malloc handling in "sccs unedit" has been
243	reworked.
244
245-	SCCS: sccsdiff now uses "$@" instead of $@ in order to support
246	arguments with spaces inside.
247
248-	SCCS: sccsdiff now sets IFS= on a separate line to make it work. The
249	old command:
250
251		IFS= get ....
252
253	unfortunately first expands the macros in argument list and then
254	processes the IFS= instruction. So it does not work for our purpose.
255
256-	SCCS: sccsdiff now works in sccs(1) NewMode, when the file arguments
257	are not in SCCS/s.* form.
258
259-	SCCS: get now reinitalizes the programmer hash table to avoid a core
260	dump from corrupt memory caused by e.g. calling "get" with three file
261	arguments like:
262
263		get -p -A -m -n -r1.10 file1 file2 file3
264
265	with:
266
267	-	First file OK
268
269	-	Second file e.g. causes "invalid sid (co8)"
270
271	-	Third file OK, but causes core dump
272
273-	SCCS: admin has a new default for deciding whether new a SCCS history
274	file is created as V4 or V6 file.
275
276	If there is a correctly populated directory .sccs in the project home
277	directory and "admin" is called with the option -N, it creates new
278	SCCS history files ac SCCSv6 files.
279
280	If you do nothing, this is not enabled yet, but if you set up the
281	enviromnent SCCS_NMODE (see above), sccs(1) calls SCCS low level
282	commands with the -N option and causes admin to create V6 history
283	files if "projecthome/.sccs" exists.
284
285	To already use a SCCSv6 based history and the off-tree repository,
286	do the following:
287
288	-	call "sccs init -s" in the project home directory to
289		mark this directory as a NewMode repository with single
290		files (no project mode yet).
291
292	-	Setup your environment:
293
294		SCCS_NMODE=o
295		export SCCS_NMODE
296
297	This tells sccs to manage an off-tree repository. If you setup
298	SCCS_NMODE=i, you have a SCCSv6 based history in in-tree mode as
299	it is in use with sccs(1) since 1980.
300
301	Be careful and report problems...
302
303-	SCCS: the admin(1) man page now mentions the option -V4 and the new
304	default that may be SCCSv6, see above.
305
306-	SCCS: admin and comb in bulk mode now call sclose()/sfree()/ffreeall()
307	between files and in error case.
308
309-	SCCS: libcomobj::ffree() now is a bit more conservative about
310	managing active malloc()ed pointers.
311
312-	SCCS: The unit tests now contain a special collection for the
313	"sccs" frontend that checks various commands in three different
314	ways:
315
316	-	traditional mode
317
318	-	NewMode with in-tree SCCS history
319
320	-	NewMode with off-tree SCCS history
321
322	This helps to verify correctness for the NewMode that is needed for
323	the upcomming project mode.
324
325-	sdd: The option sectorsize= is now only needed together with -noerror.
326	This fixed a bug introduced in 2018 when sectorsize has been introduced.
327
328
329
330-	SCCS TODO:
331
332	-	Convert sccs.c to use -NSCCS in the back end programs instead
333		of converting g-file names from the command line into s.file
334		names in the frontend in order to forward s.file names to the
335		backend programs. Doing it this way allows us to have the SCCS
336		history files "off tree" in a separate directory tree starting
337		with ".sccs/" at the "project root" directory, as the related
338		code to convert path names is in libcomobj::bulkprepare().
339
340		*** This is mostly done for now ***
341
342	-	Add code to admin(1) and delta(1) to retrieve the list of
343		new or modified files in order to have all important code
344		for a "sccs commit" in a single program that does not need to
345		deal with ARG_MAX limitations.
346
347	-	Add code to admin(1), delta(1) and get(1) to maintain/understand
348		the changeset file.
349
350	-	sccs -R tell does not yet work in NewMode
351
352	-	Add code to libcomobj to understand the changeset file,
353		which is needed in order to e.g. know the file names and file
354		specific SIDs/state that correspond to a project global SID.
355
356	-	Add code to all programs to maintain a lock (for the file
357		$PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file
358		$PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project
359		global lock.
360
361	-	Find/verify a complete transactional model that allows to repair
362		complex changes to the set of files for a project that have
363		been aborted in the middle. The current idea is to create the
364		file $PROJECTHOME/.sccs/changeset with the deltas to the
365		changeset during a complex update operation.
366
367	-	Find a way to decide when to use SCCS V6 type history files.
368
369		For the project mode, this is needed in order to prevent
370		historic SCCS implementations to believe they could modify
371		files without knowing about project global locks.
372
373		Currently, SCCS V6 needs to be usable manually for every
374		history file using "admin".
375
376
377
378
379
380-	Bourne Shell Missing features for POSIX compliance:
381
382	- Support for $'...' quoting (this is not needed for the current
383					version of POSIX but for the next POSIX
384					version that will be named SUSv8).
385					The development of SUSv8 will start in
386					late 2016.
387
388	We are now expecting the Bourne Shell to be fully POSIX compliant.
389
390-	Bourne Shell further TODO list:
391
392	-	Finish loadable builtin support.
393
394	-	POSIX does not allow us to implement ". -h", so we will
395		add a "source" builtin to be able to implement "source -h"
396
397-	The following builtins (that are available in bsh) are still missing in
398	the Bourne Shell:
399
400	err			echo with output going to stderr
401	glob			echo with '\0' instead of ' ' between args
402	env			a builtin version of /usr/bin/env
403
404	The following bsh intrinsics are still missing in the Bourne Shell:
405
406	-			the restricted bsh has restriction features that
407				are missing in the Bourne shell.
408
409	-	source -h	read file into history but do not execute
410
411	and probably more features not yet identified to be bsh unique.
412
413
414
415Author:
416
417Joerg Schilling
418D-13353 Berlin
419Germany
420
421Email: 	joerg@schily.net, joerg.schilling@fokus.fraunhofer.de
422
423Please mail bugs and suggestions to me.
424