1New features with AN-2018-07-25:
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. If your smake is too old and aborts, ensure this
28	*** by calling:
29
30	cd ./psmake
31	./MAKE-all
32	cd ..
33	psmake/smake
34	psmake/smake install
35
36	*** Due to the fact that schily-tools 2014-01-26 introduced
37	*** optimizations for the Schily version of SunPro Make, you
38	*** need at least the dmake version from 2018/01/11 with support
39	*** for the "export" directive to compile with this makefile system.
40
41
42	WARNING: the new version of the isoinfo program makes use of the
43		*at() series of functions that have been introduced by Sun
44		in August 2001 and added to POSIX.1-2008. For older platforms,
45		libschily now includes emulations for these functions but
46		these emulations have not yet been tested thoroughly.
47		Please report problems!
48
49	The new smake version mentioned above is smake-1.2.4
50
51-	include/schily/stdint.h: the TYPE_MINVAL() macro is now using a
52	specialized macro TYPE_MSBVAL() that avoids a so called "signed
53	integer overflow" on two's complement machines in case it detects a
54	two's complement machine. This helps to avoid compiler warnings with
55	some newer compilers. The portability has not been degraded since
56	for non-two's complement machines, the old methid is used.
57
58-	libschily: None of the *at() emulation functions did not work in case
59	of an ENAMETOOLONG error on a platform that does not implement /proc
60	(e.g. HP-UX-10.20). The code has now been changed to make sure that the
61	fallback to the fchdir() method is used in such a case.
62
63-	libschily: New functions openat64() and fstatat64(). They were missing
64	and now have been implemented.
65
66	This affects the large file ability for:
67
68	-	bsh
69	-	Bourne Shell
70	-	libshedit
71	-	libfind
72	-	star
73
74	on platforms that do not include support for openat() and fstatat()
75	in libc already. Recent platforma are not affected by this enhancement.
76
77-	Bourne Shell: HP-UX-10.20 is in conflict with POSIX and returns
78	ENAMETOOLONG with getcwd(). We now verify the current PWD value whether
79	it refers to "." and contains no symlinks. In this case we pretend that
80	getcwd() worked and the current $PWD value is correct.
81
82	The reliability of the value is the same as with a working getcwd() in
83	such a case.
84
85-	SunPro Make: Make/include/mksh/defs.h included <wchar.h> but older
86	platforms do not have it. Use <schily/wchar.h> instead.
87
88	Thanks to Robert Clausecker for reporting.
89
90-	SunPro Make: Old FreeBSD neither has O_SYNC, nor O_DSYNC, so we use
91	O_FSYNC here.
92
93-	star: new functions lchdir() & lgetcwd() have been added for dealing
94	with very long path names with the -C option.
95
96-	star: the option list= is now implemented using getdelim() and thus
97	supports to read arbitrary path name length from files or stdin.
98
99-	star: volhdrs are now without a PATH_MAX limit.
100
101-	star: added a new function _lgetinfo() that always does an lstat()
102	independent of -L and -h. This is needed in order to check whether
103	a filesystem object exists and needs to be deleted before extraction.
104
105-	star: line reading functions that deal with the inode database in
106	"star-symtable" in the incremental restore code now support arbitrary
107	line length.
108
109-	star: the "remove" code now supports to remove file system trees of
110	arbitrary depth and path length.
111
112-	star: incremental restores, in case they are not run as root, could
113	under some rare cases (nearly full target filesystem) when inode
114	numbers are reused faster than usual, result in "permission denied"
115	errors while extracting files.
116
117	This happened when such a reused inode has no write permission for
118	the owner. A similar case with changing file type has been fixed
119	in February 2005 as the only bug that ever appeared in star's
120	incremental backup/restore system fater incrementals have been
121	introduced in September 2004. Since February 2005, we remove files
122	with a different type before we create new ones.
123
124	As we previously assumed that incremental restores are always run
125	as root, this permission problem did never cause any harm in the
126	past. This is since root is allowed to create files in readonly
127	directories and since root can write into readonly files.
128
129	We now first run a chmod() +w on directories and files with no
130	write permissions before we extract the content.
131
132	This modification now allows star to be used for private backups
133	and restores without the need to become root for the task.
134
135-	star_sym: Added a new function osmode() because restore.c now
136	needs this function because of the above change and we do not like
137	to add star_unix.c to star_sym.
138
139-	star: Previously, star needed the option -force-restore in order to
140	restore partial dumps. A new option -partial now allows partial
141	restores without at the same time permitting dump level mismatches
142	or reference date mismatches.
143
144-	star: star -Hgnutar now also creates long path names. GNU tar-1.30
145	started to create ong path names under some conditions, even though
146	it is unable to extract archives with long path names. Our archives
147	thus are not more challenging to GNU tar than archives created
148	by GNU tar itself ;-)
149
150-	star: mention the GNU tar long path name problem in the man page.
151
152-	star: mktemp() destroys it's argument even when it fails because
153	of ENAMETOOLONG. We need to save and restore the original name
154	argument to make our long path workaround working.
155
156-	star: "star -x -install ..." now works with very long path names
157	as we have a mktemp() workaround for long path names.
158
159-	star: Long names using the pre-POSIX long pathname header method now
160	works since the related extraction routine in longname.c now manages
161	dynamic path store as well.
162
163-	star: extraction with symlink emulation (that creates copies) now also
164	supports long path names.
165
166-	star: incremental restores now support long path names.
167
168-	star: "star -c" (without "-find") is now able to handle long
169	path names. This is the final change to make star a fully long path
170	name supporting program.
171
172-	star: star_unix.c: a new function getinfoat() has been added.
173	It uses fstatat() if this function supported by the current platform
174	and not emulated in libschily.
175
176-	star: "star -c" now uses fstatat() via getinfoat() if possible.
177	This causes a 30% performance win in case of "star -c -onull" and
178	makes "star -c" now nearly as fast as "star -c -find".
179
180-	star: pathname.c: New function clear_pspace()
181
182-	star: star -xattr now aborts with an error message that -xattr
183	is reserved for NFSv4 xattrs and that Linux needs -xattr-linux
184
185-	star long path name state report:
186
187	-	All known places that previously used static path name store
188		or system calls directly have been converted to use dynamic
189		path storage and long path name aware functions. This has been
190		extended to any place (even those locations that never reach
191		ENAMETOOLONG) in order to be able to verify the correctness
192		of the change via "nm".
193
194	-	Most long path name features work even on older platforms if
195		at least fchdir() is supported, so this does not need a very
196		recent platform.
197
198	-	Hard links between long path names only work on platforms
199		that natively support the linkat() system call.
200
201	-	The code is not yet optimized for good performance and is
202		currently approx. 30% slower when long paths (> PATH_MAX) are
203		actually used.
204
205-	star TODO:
206
207	-	implement support for NFSv4 xattr
208
209	-	implement support for NFSv4 system attributes
210
211	-	implement support for Trusted Solaris
212
213-	Bourne Shell: strexpr.c no longer contains a #define fprintf(...)
214	since varadic macros do not exist in C89 but require C99.
215
216-	Bourne Shell: The dotfiles.tar.bz2 archive now contains abetter code
217	in $HOME/.shrc that no longer results in error messages from the
218	FreeBSD "ash" that seems to use our file name even though it is not
219	based on the Bourne Shell.
220
221
222
223-	Bourne Shell Missing features for POSIX compliance:
224
225	- Support for $'...' quoting (this is not needed for the current
226					version of POSIX but for the next POSIX
227					version that will be named SUSv8).
228					The development of SUSv8 will start in
229					late 2016.
230
231	We are now expecting the Bourne Shell to be fully POSIX compliant.
232
233-	Bourne Shell further TODO list:
234
235	-	Finish loadable builtin support.
236
237	-	POSIX does not allow us to implement ". -h", so we will
238		add a "source" builtin to be able to implement "source -h"
239
240-	The following builtins (that are available in bsh) are still missing in
241	the Bourne Shell:
242
243	err			echo with output going to stderr
244	glob			echo with '\0' instead of ' ' between args
245	env			a builtin version of /usr/bin/env
246
247	The following bsh intrinsics are still missing in the Bourne Shell:
248
249	-			the restricted bsh has restriction features that
250				are missing in the Bourne shell.
251
252	-	source -h	read file into history but do not execute
253
254	and probably more features not yet identified to be bsh unique.
255
256
257
258Author:
259
260Joerg Schilling
261D-13353 Berlin
262Germany
263
264Email: 	joerg@schily.net, js@cs.tu-berlin.de
265	joerg.schilling@fokus.fraunhofer.de
266
267Please mail bugs and suggestions to me.
268