schily Changelog

New in version 2014-01-27

January 28th, 2014
  • psmake (the bootstrap smake compile environment) again compiles on Solaris (and probably others). This has been achieved by using -DNO_FPRFORMAT -DNO_NL_ARGS to deactivate recent enhancements in printf()
  • include/schily/varargs.h now includes a new type va_lists_t that is a structure that covers va_list.
  • include/schily/getargs.h now has comment for the arguments and return code of the getargs() callback functions.
  • The schily makefilesystem now includes a new symlink ppc64le-linux-cc.rul for non-automake aware make implementations such as gmake.
  • New autoconf tests for strspn() strcspn() wcsspn() wcscspn()
  • libschily now implements strspn() strcspn() wcsspn() wcscspn()
  • libschily/format.c (the low level printf() implementation) now implements support for %n$ argument repositioning for the case that "n" is 1..30, or if larger points to an int type arg.
  • libschily/fprformat.c fixed a bug that would prevent to use stdio macros with newer OpenSolaris versions, making printf() not as fast as expected.
  • libschily/getargs.c no longer dumps core when boolean flags are combined into a single string and one or more of these flags trigger a callback function.
  • libsiconf/sic_nls.c: sic_open() no longer tries to open all characterset names as files in the current directory but only if the name contains a slash. Thanks to a report from Vladimir Marek
  • star no longer archives all files as sparse file when using star -c -sparse -force-hole but only those files that include at least one aligned block of 512 zeroed bytes.
  • cdrtools bumped to Version 3.01a22
  • Better error messages in mkisofs/apple.c
  • mkisofs now inplements a new option -legacy that allows to get back the options -H/-L/-P that have been deprecated in 2002 and disabled in 2006 in the definition from the 1990s. If you like to use this feature, write a wrapper shell script that calls:
  • mkisofs -legacy "$@"
  • Note that -H/-L/-P have been disabled in 2006 and mkisofs will soon introduce -H/-L/-P with a POSIX compatible definition as announced since 2002. So take care to convert your scripts to call:
  • -map for the old definition of -H (-H valid between 2000 and 2002) -allow-leading-dots for the old definition of -L (-L valid between 1995 and 2002) -publisher for the old definition of -P (-P valid between 1993 and 2002)
  • The mkisofs man page now correctly documents the new behavior from libsiconv
  • The mkisofs man page now mentions sfind(1) as a man page to read about the interface if the -find option.

New in version 2014-01-04 (January 6th, 2014)

  • Define DEV_NULL in include/schily/mconfig.h to address the missing /dev/null on DOS
  • New autoconf tests for: getc_unlocked getchar_unlocked putc_unlocked putchar_unlocked flockfile funlockfile ftrylockfile
  • Symlinks for armv4tl-linux-cc.rul s390x-linux-cc.rul armv5tel-linux-cc.rul new, to support non-automake aware make programs such as gmake.
  • Do not define a gethostname() prototype in schily/hostname.h for MinGW, as MinGW as a wrong prototype is in the non-standard file winsock.h
  • include/schily/stdio.h now implements code that partially unhides the FILE * data structures from the 64 bit Solaris libc. This allows to implement a getc_unlocked() macro even for 64 bit Solaris as done by libc, so libschily is able to achieve similar stdio I/O performance, which is needed to be able to implement a printf() in libschily that is faster than printf() from libc.
  • New functions xcomerr(), xcomerrno(), fxcomerr(), fxcomerrno() in libschily allow error message and exit with an exit value that differs from errno.
  • a bug in libschily/format.c that caused %.*s to be printed incorrectly has been fixed.
  • libschily/format.c has been redesigned to allow the code to be reused for fprformat() via #include.
  • libschily/fprformat.c New function fprformat() in libschily is implementing the same direct interface as doprnt() from libc and thus allows to implement printf() faster than the printf() from libc on Solaris.
  • libschily/jsprintf.c For Solaris, jsprintf() now is implemented based on fprformat(). This allows printf() from libschily to be aprox. 33% faster than printf() from libc on Solaris and aprox. 2x as fast as jsprintf() in libschily has been before. This gives another performance boost for printf() bound programs like hdump/od that is used as a OSS replacement for the closed source od(1) on OpenSolaris. This now makes the OSS od(1) on OpenSolaris typically 5x faster then the closed source version.
  • libschily/getdtablesize.c now treats MinGW the same as when compiling on Win-DOS using cl.exe.
  • libschily/mkdirat.c and libschily/mkdirs.c now take care of the fact that MinGW has a non standard compliant mkdir()
  • libschily/mkfifoat.c fixed a type from, cut/paste the file from mkdirat.c
  • cdrecord/cue.c now has a better comment related to cdrtools specific CUE enhancements.
  • Fixed a typo in cdrecord.dfl
  • Avoid a redefined xxx warning for cdda2wav/exitcodes.h
  • Added a #undef interface to cdda2wav/interface.h to make sure that the #define interface from windows.h does not cause problems even when using MinGW
  • mkisofs/mkisofs.8 fixed illegal troff sequence "\\" to "\e"
  • Try to avoid a direct string "/dev/null" in mkisofs.c to allow it to work on Win-DOS without POSIX layer.
  • readcd -c2scan now also prints the percentage of sectors with C2 errors.
  • added new HP-UX specific #defines to cpp

New in version 2013-12-24 (December 27th, 2013)

  • libschily::format.c (printf) now supports length modifiers like h hh l ll t z for the %n format.
  • libschily::format.c has been restructured for parsing the field width parameters in a way that would allow to later introduce support for %n$
  • cdda2wav now prints the number of read operations per track when in paranoia mode
  • cdda2wav now prints the read overhead (in percent) per track when in paranoia mode
  • cdda2wav adds a new paraopts= mode: "c2check" to run libparanoia in C2 mode.
  • libparanoia now implements the first stage in C2 error pointer support: it now is able to deal with input data that contains C2 pointers and it implements new callbacks to report C2 statistics back to the caller.
  • cdda2wav did get a major overhoul for libparanoia that may make the extract quality better up to a factor of 100x:
  • A new suboption "readahead=" for paraopts= allows to modify the read ahead buffer size to make it large ebough for the amount of RAM in modern drives.
  • The interpratation of "problem sectors" was changed to better deal with the fact that in case of bad areas, the libparanoia code tends to do repeated reads in those bad areas. The computaion of the percentage of bad sectors now takes care of reread sectors. Repeated reads still increase the value but no longer in a quadratical way.
  • Better documentation for the libparanoia interface in cdda2wav allows to better understand how it works and how modifying parameters could influence the extract quality.
  • Fixed some typos in cdrecord
  • Fixed a typo in the mkisofs man page (had \-max\-ISO-9660\-filenames instead of \-max\-iso9660\-filenames)
  • New Schily Makefiles rules for armv7l-linux

New in version 2013-11-25 (November 26th, 2013)

  • configure now also checks for NFSv4 ACL related library extensions from FreeBSD
  • include/schily/stdio.h now finally works to compile libshedit on Linux _and_ to pass the program "hdrchk" from OpenSolaris.
  • libschily/strstr.c and libschily/wcsstr.c now include a CDDL License hint
  • A typo in the use of the new macro: $(OSINCDIRS) was fixed in order to make things compile again on FreeBSD. Now using $(OSINCDIRS:%=-I%) instead of $(OSINCDIRS)
  • Star now gives a warning when comppiled on an old version of Solaris (that does not support NFSv4 ACLs) when NFSv4 ACLs are seen in extract mode.
  • Star now correctly frees the NFSv4 ACL structure delivered from calling acl_fromtext(path, &aclp), using acl_free() instead of just calling free().
  • Star now compiles on Solaris 10 that missed important include files for NFSv4 ACLs. Thanks to Dennis Clarke for reporting.
  • Cddda2wav now flushes stderr before asking for a specific cddb entry index. It seems that on Linux stderr may not be unbuffered as expected.
  • Cdda2wav moved the option parsing code into a separate function gargs().
  • Cdrecord/Cdda2wav/Readcd: trying to avoid to confuse users on Solaris and Linux where a fine grained privilege implementation exists. Before, fine grained privileges have been given up after initializing the program and this may result in a root user that is treated as a normal user that cannot write into directories without global write permission. The named programs now no longer give up privileges in case they have been called with the needed privileges already and thus the programs cannot be used for privilege escalations anymore.
  • Libfind now allows to check for -type P (Solaris event port). A missing "case 'P':" was added to the parser.

New in version 2013-11-08 (November 9th, 2013)

  • ACL entries no longer have arbitrary length limits in star.
  • Star now includes support for NFSv4 ACLs on Solaris. FreeBSD and Linux will follow once these platforms did agree on a uniform ACL library interface for NVSv4 support.
  • Please note that the two changes mentioned above resulted in major code rearrangements and may even cause star to fail on Linux and FreeBSD with the withdrawn POSIX.1e draft ACLs. Please test and report.
  • The rules in the Schily Makefilesystem have been restructured in order to allow to avoid problems on platforms like FreeBSD and Mac OS X:
  • FreeBSD and Mac OS X banned the not-free-enough (because GPLd) software to /usr/local, forcing us to add -I/usr/local/include and -L/usr/local/lib. Unfortunately, /usr/local/include frequently carries a _very_ outdated and thus wrong copy of "cdda_paranoia.h" which is more than 10 years old and definitely incompatible with dynamic linking on Mac OS X. This defective copy was first in the search path and prevented compilation.
  • We now have a new macro: DEFOSINCDIRS= that grants to add include directories to the end of the search PATH to allow us to find the correct "cdda_paranoia.h" first.
  • Please test and report in case of problems.
  • gmake and SunPro make include COMPILE.c with wrong content in their built-in rules. We now clear this macro un RULES/rules.top. It is still possible to provice a modified version from command line or from the environment.
  • include/schily/stdio.h was reordered, as it prevented compilation of the "bsh" on Linux. This was a problem recently introduced, when we added #ifndef NO_SCHILY_STDIO_H
  • A new autoconf test was added to detect the presence of NFSv4 ACL support on Solaris inside libsec.
  • Fixed a bug with libxtermcap::tdecode() that was introduced with release 2013-10-10 whilt trying to reduce line length via resturcturing. This resulted in all ^x esacapes in termcap entries to be expanded to '\0'.
  • The SCCS commands "sccs", "get" and "delta" now support to store and retrieve files with nanosecond timestamps when using the SCCS V6 archive format.
  • This is based on the recently introduced *at() syscall emulations in libschily. Please report problems from platforms that do not provide native *at() interfaces.

New in version 2013-10-31 (November 1st, 2013)

  • Add forgotten include/schily/err_type.h
  • New autoconf test for issetugid()
  • New autoconf test for utimens() / lutimens()
  • Fixed autoconf typo HAVE_MKNODKAT -> HAVE_MKNODAT
  • include/schily/intcvt.h is now self contained.
  • Added uname.c and include/schily/windows.h to the files that need to be copied for the smake bootstrap compilation "psmake". Thanks to Wolfram Schmid
  • Fixed the scripts "cpfiles", "lnfiles" and "rmfiles" from the bootstrap section of "smake".
  • Added uname.c to the list of files to be compiled.
  • include/schily/windows.h now includes the same type workaround for MINGW32 as fir the Microsoft C compiler, as there are the same autoconf detection problems.
  • Fixed fine grained privilege handling for cdda2wav on Linux. Thanks for Daniel Pielmeier from Gentoo for reporting and testing.
  • Bumped cdrtools to version 3.01a18
  • New files for libschily:
  • at-base.c generic implementation for *at() functions. fchownat.c fchownat() fdopendir.c fdopendir() fstatat.c fstatat() futimens.c futimens() futimesat.c futimesat() Solaris specific old for utimensat() lutimens.c lutimens() linkat.c linkat() mkdirat.c mkdirat() mkfifo.c mkfifo() mkfifoat.c mkfifoat() mknodat.c mknodat() readlinkat.c readlinkat() renameat.c renameat() symlinkat.c symlinkat() unlinkat.c unlinkat() utimens.c utimens() utimensat.c utimensat() at-base.c The base code for all single fd *at() functions. at-base2.c The base code for all double fd *at() functions.
  • contain emulations for system interfaces introduced in summer 2001 by Sun and with POSIX.1-2008.
  • New functions in libschily:
  • absfpath() resolvefpath()
  • allow to better control the behavior using flags.
  • The linker map file for libschily now adds some forgotten functions.
  • Star reordered sparse file detection and now files that contain more than DEV_BSIZE data but no st_blocks will be treated correctcly in case that the OS also supports lseek(SEEK_HOLE.
  • SCCS now is able to add nanosecond time stamps in SCCS V6 history files.
  • SCCS admin is now able to add nanosecond V6 timestamps with admin -o -i
  • Remove an unwanted C99-ism from args.c from the Bourne Shell

New in version 2013-10-10 (October 11th, 2013)

  • Many sources have been modified to deal __CYGWIN32__ like __CYGWIN__ This is neded as newer Cygwin versions that run in 64 Bit mode do no longer define __CYGWIN32__ but __CYGWIN__
  • Fixed the scripts "cpfiles", "lnfiles" and "rmfiles" from the bootstrap section of "smake".
  • Added rules for non-automake enabled make programs (like gmake) for: ppc64-linux-cc.rul and ppc64-linux-gcc.rul
  • Added new OS version ID rules for various WIN-DOS versions:
  • os-interix-nt-6.0.id os-interix-nt-6.1.id os-cygwin_nt-6.2-wow64.id os-cygwin_nt-6.2.id os-cygwin_nt-6.3-wow64.id os-cygwin_nt-6.3.id
  • Various Cstyle changes in the include/schily directory.
  • New include file: include/schily/shedit.h
  • Added defltsect() to the list of exported functions for the shared library version of libdeflt.
  • Fixed a filedesrciptor leak in libfind that hits when using -empty on empty directories.
  • Cdrecord: Typo correction in a comment
  • Cdda2wav: Typo correction in a comment
  • Readcd: Typo correction in a comment
  • Added automatic support for ARMv5 and ARMv6. This makes compilation on the RaspberryPI also possible with the non-automake aware gmake.
  • Allow "static" compilation (a compilation that does not use the dynamic defines from the Schily Makefilesystem) on Linux ARMv6 (which is used by RaspberryPI).
  • "defltsect" was added as exported global function to libdeflt.
  • libfind now calls closedir() with -empty even on empty directories.
  • New autoconf test on whether includes struct timespec
  • New autoconf tests check whether some functions (such as clock_gettime()) are in libc or need a separate library
  • New: struct timespec in schily/time.h is granted to exist on all platforms
  • New functions getnstimeofday() and setnstimeofday() have been added to libschily.
  • Star now supports to extract time stamps with nanosecond granularity on platforms that support utimensat().
  • Star now also supports to extract time stamps for symlinks using utimensat(AT_FDCWD, name, tp, AT_SYMLINK_NOFOLLOW).
  • Note that star could (on some platforms) also permit to set the file permission for symlinks using fchmodat() but this is already done using umask() since a long time and the only platform that is known to support different permissions on symlinks seems to be HP-UX. On a recent Solaris, you will not be able to set the file permissions for symlinks.
  • Star was converted to be completely timespec based. This offers nanosecond granularity for all times on platforms that support a nanosecond clock.
  • Star now may be told to modify the path name (in case of -s/o/n/ or interactive change -w) before the time stamp is compared to existing files in the filesystem. This is done by using the new option -uncond-rename
  • Star no longer creates non-conforming archives when calling:
  • star -c H=ustar dirname-with_101-chars/ > archive
  • instead of:
  • star -c H=ustar dirname-with_101-chars > archive
  • Star now rejects to create archives with an empty t_name field.
  • "tartest" now warns about non-standard compliance if the t_name field is empty but the rest of the tar header contains data.
  • New include file include/schily/shedit.h
  • Ved now starts to warn about long .vedtmp.* files if the size is > 16384. Before it warned if the size is > 8192.
  • Fixed the SYNOPSIS line for the man page sccslog.1
  • "sccs help ut4" now reminds of a probably missing SCCS directory.
  • Many Cstyle changes in bsh. Note that the related files are also used by the Bourne Shell and we want it to match the Cstyle of OpenSolaris.
  • bsh/abbrev.c now avoids js_snprintf() to allow the Bourne Shell to be created with lazy library loading, so "bosh" will not load libschily if it is only interpreting shell scripts but not running in interactive mode.
  • libshedit was restructured to support dynamic linking on Mac OS X by avoiding to link against variables (unsupported by the dump Apple linker).
  • libshedit was restructured to permit lazy library loading, so "bosh" will not load lishedit nor libxtermcap when not in interactive mode.
  • All exported funtion names from libshedit now start with 'shedit_'-
  • Cstyle changes in libshedit to permit integration into OpenSolaris
  • _Many_ Cstyle Changes to the Bourne Shell. It was not following the style rules for OpenSolaris even though it has been taken from OpenSolaris ;-)
  • The Bourne Shell now works when calling: set -o aliasowner=joerg or "bosh -o aliasowner=joerg" in order to e.g. allow to use the persistent aliases for user joerg when running bosh as root.
  • The Bourne Shell now correctly lists the alias ownwer when calling "set +o"
  • The Bourne Shell now also recognises special argv[0] when passes: "jbosh", "-jbosh", "pfbosh", "-pfbosh", "rbosh", "-rbosh"
  • The Burne Shell now allows to switch from using system include files to portable schily include files via:
  • -DSCHILY_INCLUDES
  • An now unneeded data structture "struct blk" was removed from the Bourne Shell. This could have been done when we switched from sbrk() to malloc() already.
  • Document in the man page pf the Bourne Shell that the options -c/-i/-p/-r/-s may only be set at start from command line but not later in interactive mode.

New in version 2013-07-29 (July 30th, 2013)

  • The Schily makefilesystem no longer uses $CC for internal tasks.
  • "Static" compilation is now allowed on Linux x86 and Linux on Raspberry Pi.
  • Support for ARMv5 and ARMv6 was added for non-automake aware programs like "gmake".
  • The Bourne Shell now implements -o aliasowner=name as a security feature.
  • CPP now compiles even if YACC="bison -y".
  • Star/spax no longer does a chown on extract unless -po or -pe are specified.
  • SCCS diffs now use get -o to get correct time stamps with diff -u.
  • SCCS diff no longer writes nanosecond values in the middle of a "diff -c" timestamp when in the German locale.

New in version 2013-07-08 (July 9th, 2013)

  • This version fixes a bug in the swap buffer handling of "ved" which could cause data corruption when editing multiple files, a bug in libparanoia which caused too few data to be initialized, and two memory problems in the Bourne Shell which happened on FreeBSD.
  • Ved now expands buffer filenames in commands in a way which does not introduce null bytes.
  • The "type" builtin from the Bourne Shell now reports aliases.
  • The Bourne Shell now supports alias expansion on "the next word" if an alias ends in a space character.