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