1New features with AN-2011-11-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- libschily::comerr() now maps exit codes that would fold to '0' to 23 EX_CLASH which is -64 24 25- libschily::gettimeofday() now maps to time() in case that there 26 is neither a system gettimeofday() nor GetSystemTimeAsFileTime() 27 28- libschily/mkgmtime.c is now faster then previous release. 29 Make it also correct when tm_month < 0 or > 11. 30 31- libschily now includes strstr() and wcsstr() for platforms where it is 32 missing. 33 34- New files libschily/mkdirs.c and libschily/resolvepath.c 35 36- libschily::abspath() is now based on resolvepath() and thus more correct 37 in case symlinks are part of the path. 38 39- New libschily::fgetaline() and libschily::getaline() implement the 40 functionality of the POSIX violating "getline()" from POSIX.1-2008. 41 42- libfind/walk.c now uses POSIX.1-2008 O_SEARCH to open directories. 43 44- include/schily/sigset.h added new macros: blocked_sigs(), 45 block_sigs() 46 47- patch(1) now avoids to exit(0) in case that the number of failures 48 is dividable by 256. 49 50- patch(1) now also installs as /usr/ccs/bin/sccspatch 51 52- patch(1) now uses mkdirs() from libschily instead of an own 53 implementation. 54 55- Some cleanup in bsh/alloc.c 56 57- readcd(1): Better algorithm for -edc-corr 58 59- cdrecord man page corrected some small typos in the EXAMPLES section. 60 61- star/longnames.c adds more workarounds against wrong buffer overflow 62 aborts from gcc. 63 64- star/extract.c now uses access(name, F_OK) instead of access(name, 0) 65 66- The SCCS val program no longer limits command line args to 50 files 67 68- SCCS val now includes a new option -h to check SID specific checksums 69 from SCCS v6 70 71- SCCS sccscvt new program to convert between SCCS v4 and SCCS v6 history 72 file format. 73 74- SCCS sccslog now understands the enhanced time format from the 75 SCCS v6 history file format. 76 77- The "sccs" command now also supports "sccs cvt" for the command "sccscvt" 78 79- The SEE ALSO section of most man pages has been reworked 80 81- SCCS admin now computes a checksum for the file content when called 82 as admin -ifile s.file. 83 84- SCCS admin now prints full path names in warnings when a file does not 85 end in a newline or includes a line that starts qith ^A in V6 mode. 86 87- A POSIX compliance bug that also caused a deviation from all known 88 SCCS documentation ever published for prs(1) has been fixed: 89 90 prs -d:DI: s.file 91 92 Now prints again "//" in the standard case. 93 The related bug most likely has been introduced by AT&T around 1984 94 by replacing: 95 96 printf("%s",iline); 97 putchar('/'); 98 printf("%s",xline); 99 putchar('/'); 100 printf("%s",gline); 101 with: 102 printf("%s",iline); 103 if (length(xline)) 104 printf("/%s",xline); 105 if (length(gline)) 106 printf("/%s",gline); 107 108 The related bug has been discussed in the POSIX standard committee 109 and the decision was to require the documented old behavior. 110 111- The automated testing scripts related to the bug mentioned above 112 have been fixed to require/accept the correct POSIX compliant behavior. 113 Note that SCCS fom Sun/Orcale as found on Solaris as well as GNU CSSC 114 will no longer pass the tests. 115 116- SCCS delta no longer reads the new file two times before adding the delta. 117 118- SCCS delta is now more correct when checking whether a file includes 119 SCCS keywords to expand. 120 121- SCCS delta now computes a checksum for the new SID specific content of 122 the file. 123 124- New SCCS SID specific history file extension "^AS ..." 125 126- New error code "co27" allows to distinguish a general chescksum error from 127 a SID specific checksum error. 128 129- SCCS prs -d supports :SX: to print SID specific history file extension 130 131- SCCS prt now prints SID specific history file extensions 132 133- SCCS val now does not print a format error message when 134 SID specific history file extensions are seen in a SCCS v6 history file 135 136- libcomobj/date_ab.c now uses a specialized and speed up version of gN() 137 for date_ab(). 138 139- libcomobj/getline.c now uses a completely new algorithm to compute 140 the checksum with better performance. 141 142- libcomobj/putline.c now tries to avoid to compute the checksum 143 when in copy mode. 144 145- libcomobj/sidext_ab.c and libcomobj/sidext_ba.c new files to deal with 146 SID specific extensions. 147 148- libcomobj/dometa.c and libcomobj/putmeta.c new files to deal with 149 SCCS v6 extensions (such as preparing to permit file renames). 150 151- mpwlib::fixpath() now contains a warning against the limited 152 features. 153 154- mpwlib::efatal() new function printf errno information in addition 155 156- mpwlib/sethome.c new file with code to discover the project set home 157 directory. 158 159- mpwlib/urandom.c new file with code that creates meta data to be used 160 in order to allow file renames. 161 162 163SCCS-5.05 is now 20% faster than SCCS-5.03. 164 165SCCS-5.05 is 2.5x faster than Sun SCCS and consumes 4.7x less CPU time than Sun SCCS. 166SCCS-5.05 is 6x faster than RCS-5.8 and consumes 7x less CPU time than RCS-5.8. 167 For RCS files > 256 kB, add factor of 2x to CPU times when you use RCS-5.8. 168 169- SCCS help now includes one line help for all options 170 171- The SCCS sccsfile.4 man page now mentions the new SID specific checksum. 172 173- The SCCS rmdel command now implements a new option -d to fully 174 discard the delta that is going to be removed. By default, the file 175 delta is removed but the related meta data from the delta is kept in 176 the delta table. 177 178- The SCCS convert program (sccs cvt) now correctly removes the SID 179 specific extensions (like SID specific checksums) from the history 180 file if called with "-V4 -d". 181 182- SCCS help now gives a better message when calling "sccs help" with no 183 parameters 184 185- SCCS help now includes one line help for all options for all SCCS commands 186 187- The SCCS help command now gives an sccs command overview if you 188 call: "sccs help" and enter an empty line (hit RETURN) when it 189 asks: "Enter the message number or SCCS command name:" 190 191- New program "rcs2sccs" to convert RCS history files into SCCS history 192 files. This program has been originally written by someone called 193 "kenc". It was enhanced for robustness, to support dates past 1999 194 and it now supports binary files also. 195 196- New SCCS subcommand "istext" allows to check whether a file may 197 be archived as pure text file or whether encoding is needed. 198 199- The SCCS convert program (sccs cvt) now correctly converts time stamps 200 from different timezones. 201 202 For converting RCS timestamps (in GMT format) that have been converted 203 into SCCS via the script "rcs2sccs" and that still are relative to GMT 204 call the following: 205 206 sccs rcs2sccs 207 TZ=GMT sccs cvt -V6 SCCS 208 sccs cvt -V4 -d SCCS 209 210 This results in SCCS v4 history files, that are in local time. 211 212 - The first command converts all RCS history files into a SCCS v4 213 history file under the assumption that local time is GMT 214 215 - The second command converts all SCCS v4 history files in SCCS/ 216 into SCCS v6 history file 217 218- SCCS sact now supports a -s option to suppress the error meesage in 219 case a file is not under SCCS control. 220 221- The command "sccs fix" now supports to forward the -d option to the 222 SCCS rmdel command. 223 224- The command "sccs unedit" now supports a -o option to get the 225 unedited file under the timestamp that is the timestamp of the delta. 226 227- A new command "sccs editor" was implemented to allow to automatically 228 call "sccs edit" from a hook when calling the preferred editor. This 229 permits to edit SCCS controlled files in an apparent transparent way. 230 231 If your preferred editor is "ved", call: 232 233 SCCS_EDITOR=ved 234 export SCCS_EDITOR 235 alias ved='sccs editor' 236 237 Then call: ved file 238 239- Mention the -C option in the manpages for get(1) and delta(1) 240 241- SCCS admin now supports to automatically rename the original file 242 to ,file (as with "sccs create") when doing bulk enters via admin -N 243 244- The SCCS admin command now always uses resolvepath() as there now is 245 a portable user space implementaion in libschily and we no longer 246 depend on the availability of the Solaris syscall resolvepath(). 247 248This new version of SCCS implements new fundamental basic features and 249meta data that is needed in order to implement changesets. The new SCCS v6 250specific metadata tags "urandom" and "path" allow futute SCCS versions to deal 251with renames and with removing of files. To check the new feature: 252 253 - create a .sccs directory in the project set home directory. 254 - In a directory below call admin -V6 s.xx 255 - Check the content for s.xx 256 257- The CSW packaging definitions in the schily makefilesystem was 258 enhanced to permit referencing files in the package definition directory 259 260- The SCCS delta command now correctly locks the s.file _before_ opening 261 it and thus prevents that the s.file may be replaced in a way that 262 results in a possible lost delta. 263 264- A previous limitation in SCCS vc(1) to a length of max 9 characters 265 for keywords has been removed. 266 267- A previous limitation in SCCS vc(1) to max 40 keywords has been removed. 268 269- A previous limitation in SCCS vc(1) to a line length of max 1024 characters 270 has been removed. 271 272- The central library function auxf() that computes derived file names 273 from a s.filename has been rewritten to become safe against buffer 274 overflows. 275 276- The handling of programmer names in the delta table has been made safe 277 against buffer overflows. 278 279- The SCCS help text for error "co2" now also mentions the SCCS v6 file 280 header 281 282- The SCCS default help no longer gives a complete "sccs" subcommand list 283 but a subcommand overview. 284 285- The SCCS sccsfile man page now mentions the undocumented "z" flag 286 in the s.file. 287 288- The libraries comobj/cassi/mpwlib have been restructured to allow 289 shared libaries on Mac OS X with it's limited dynamic linker. 290 291 - In future, these libraries will be pooled to a single "libsccs" 292 in order to work around the problems from the Mac OS dynamic 293 linker that is unable to support full C semantics and thus does 294 not support to link a library against calling entities. 295 296 - Shared variable definitions have been moved from the programs 297 to the libs as the Mac OS dynamic linker is unable to link 298 program variable to be usable from a dynamic library. 299 300 - s. file specific shared variables have been moved to 301 struct packet whereever possible. 302 303 - s. file specific shared variables have been moved into 304 struct packet to make the library reentrant. 305 306 - The global "clean up" callback function for fatal() that is used 307 with global context is installed via set_clean_up(function). 308 309 - Callback functions that are used with s. file specific context 310 are now function pointers in struct packet. 311 312 The pooling of libcomobj, libcassi and libmpw to a new library "libsccs" 313 will be delayed to the time when the library interface is stable enough 314 for SCCS v6. After that time, libsccs can be made a dynamic library. 315 316The Mac OS X static linker is too silly to link in .o files from static libs 317if only a variable is referenced. The elegant workaround for this bug (using 318common variables) triggers a different bug in the dynamic linker from Mac OS 319that is unable to link common variables. This forces us to introduce funcs 320that need to be called from central places to enforce to link in the vars. 321 322 323- The function libcassi::error() was renamed to cmrerror() in order to avoid 324 a name conflict with the older error() function from libschily. 325 326- For operating systems with no mem*() functions, these functions are now 327 mapped to *bytes() functions from libschily. 328 329- libschily::gettimeofday() now maps to time() in case that there 330 is neither a system gettimeofday() nor GetSystemTimeAsFileTime() 331 332- libschily now includes an emulation for openat(). 333 334- include/schily/fcntl.h now includes O_SEARCH for POSIX.1-2008 compliance. 335 336 337 338 339 340Author: 341 342Joerg Schilling 343D-13353 Berlin 344Germany 345 346Email: joerg@schily.isdn.cs.tu-berlin.de, js@cs.tu-berlin.de 347 joerg.schilling@fokus.fraunhofer.de 348 349Please mail bugs and suggestions to me. 350