# $Id: Changes,v 1.12 1997/01/04 22:27:53 chip Exp $ *** version 3.9 - Sat Jan 4 16:11:42 CST 1997 Notice change in version nomenclature. After three years, it's hard to consider this an "alpha test". Allow preferred blocksize to be specified in an environment parameter. The parameter name is defined by ENVIRON_BLKSIZE. The distribution value is "BLOCKSIZE". See "options.h". Added for STATFSTYPE_BSD hosts since at least some of them (BSD/OS V2.0) seem to require it. Use P_() rather than __ARGS() for function prototypes. Renamed "install.sh" to "install-sh". Converted source tree from SCCS to RCS. Thrilling, eh? Upgraded autoconf from 2.1 to 2.10. ------------------------------------------------------------------------------ Version: 3.0-alpha08 Severity: moderate Fixed bug in expanding symlinks with relative pathnames. The symlink "/sys -> usr/src/sys" for example would expand to "usr/src/sys" where it should really be "/usr/src/sys". Reported by pete@rayleigh.AFTAC.GOV (Pete Geenhuizen). Re-instituted this Changes file (used to be called Whats_New). ------------------------------------------------------------------------------ Version: 3.0-alpha07 Severity: moderate Fixed attempt to realloc() a null pointer. This was causing dusort to fail on some platforms (SunOS and ISC). Thanks to Gary Casterline and jon@halsp.hitachi.com (Jonathan Ryshpan) for finding it. ------------------------------------------------------------------------------ Version: 3.0-alpha06 Severity: moderate Resolve a name collision in duscan.c. Work around a SunOS sed(1) bug in dutest.sh. ------------------------------------------------------------------------------ Version: 3.0-alpha05 Severity: high Note: If you are updating from 3.0-alpha04, please delete the file "test_statfs.c". It is no longer used. Also note that the first "make" after installing the patch will cause the configuration to be re-run. More major changes to the internal structure. More symlink hackery. Made fs_getinfo() symlink aware, which allowed all sorts of cleanups to "duentry.c". The limitations on dereferencing multiple levels of symlinks should now be gone. Fixed bug that printed "//whatever" instead "/whatever". Merged statfs() test code into "configure" and dropped external "test_statfs.c" file. Changed comments to use consistent terminology: "status" refers to system data structures (e.g. stat(2) and statfs(2)) and "info" refers to our higher-level data structures (e.g. (struct fsinfo)). Internal reorganizations to clean things up, such as the new common.h header file and (struct dusage) handling. Added some sanity checks to "dutest.sh", as suggested by Jonathan Ryshpan . General final cleanups in preparation for a release. Changed Makefile.in to use OPTIM instead of DEBUG. ------------------------------------------------------------------------------ Version: 3.0-alpha04 Severity: high Substantial changes since -alpha03 release. Converted to autoconf-2.1. You will need to rebuild from scratch. Added "README.conf" to document the configure process and provide assistance when it doesn't run right. Significant overhaul of symlink handling. No longer munges printed pathnames into dereferenced names. Added new FOLLOW_INITIAL_SYMLINKS feature to dereference symlinks specified on the command line without having to say -S. Filesystem info for symlinks is now retrieved from the proper place -- depending upon whether or not symlinks are being dereferenced. Entries will not be duplicated in the usage stats due to symlink dereferencing. Totally rewrote the way pathnames are managed as we descend into the filesystem hierarchy. One side effect of the above is pathconf() is no longer called, thus all the angst over the SunOS CD-ROM panic is washed away forever. The THIS_MAY_CRASH_MY_SYSTEM setting has been dropped from "options.h". Stopped du_entry() from trying to scribble on a constant string (as reported by thousands of gcc users...). Two fsinfo.c fixes in the last patch introduced (signed) casts, which are an ANSIsm. Introduce a SIGNED definition so these coercions can be done portably (as reported by thousands of pre-ANSI C users...). Take getwd() in preference to getcwd() when both are available. I'm told the former tends to be more efficient. Cast off dynamic memory routines to xmalloc.c, to be shared between "du" and "dusort". Dumped a bunch of "configure" tests rendered unnecessary by the above cleanups. Modified "dusort' to deal with non-traditional outputs, such as that produces by the MKS Toolkit "du". Fixed "dutest.sh" to ignore "./du" in its $PATH search for the system "du". and . Makefile cleanups. BUG: There is a bug in the "-S" (dereference symlinks) option when symlinks point to symlinks (foo -> bar -> ... -> baz). For the purposes of determining filesystem info, we only dereference the first link (i.e. to "bar") instead of all the way to the eventual target (to "baz"). If "baz" is on a different filesystem, we will be using the wrong fsinfo. I know the messy answer to this problem. I'm still trying to figure out a clean one. [improved, but not totally fixed in 3.0-alpha05] ------------------------------------------------------------------------------ Version: 3.0-alpha03 Severity: high "configure" now looks for a "config.over" file, and that may be used to override the normal definitions. That's right -- we won't force you to use gcc if you really don't want to. :-) Significant overhaul of "dutest.sh" script. Added "zero" program for use by "dutest.sh". Take getwd() in preference to getcwd(). I've been told that on systems that have both, getwd() tends to be better (avoids a popen()). Added TRIM_TRAILING_SLASH (defaule enabled) to "options.h" to prevent "du foo/" from displaying "foo//bar". Some vendors' du work this way, some don't. In fs_loadinfo(), cast st_dev to signed before checking for remote device. Apparently Linux uses an unsigned datatype for dev_t. This prevents a compiler warning under Linux. In fs_loadinfo(), cast f_files to signed when checking for valid inode count. Apparently Solaris 2.X returns (unsigned long)-1L for NFS mounts (or maybe just for automounter volumes...). This prevents attempts to malloc absurdly long inode bit vectors. ISC complains that err_mssg() is prototyped. SunOS complains if it isn't. Added an ifdef on __STDC__ to (hopefully) resolve this conflict. Redo "check" target block in the Makefile to avoid running autoconf/autoheader. Rewrite diagnostic message in max_name_len() to note that pathconf() failure is only a warning. ------------------------------------------------------------------------------ Version: 3.0-alpha02 Severity: high Highlights: Created new "dufuncs.c" file and gathered misc functions there. Stuff was pulled out of "du.c" and "duentry.c". Created preliminary "dutest.sh" script to verify program. BUG: The "dutest.sh" script still needs work. As discussed in the script, it needs to be setup properly to get the "expected results" to work, and to have it correctly pick out the "stress points" for testing. [fixed in 3.0-alpha03] Have "configure" look for strerror() and use that in preference to sys_errlist[]. Have "configure" look for -lseq to (hopefully) resolve getopt() on Dynix. Have "configure" distinguish between SunOS 4.1 and 5.X. The pathconf() panic bug has been spotted only on the former. Fix big problem with max_name_len(). The _PC_NAME_MAX is undefined for anything other than a dir. (On HPUX, it was causing EINVAL diagnostics.) Modified the procedure to note that, and changed fs_getinfo() to ensure it passes in a dir name. Since fs_calcbsize() has to operate on a dir, it could now be simplified to assume it was passed one. BUG: There are probably subtle problems with these fs_getinfo() changes if you pass in a dereferenced symlink that crosses filesystems. Need to look at this closer. [fixed in 3.0-alpha04] BUG: Need to take a closer look at includes for "dufuncs.c". In particular, we might need to pull in some header files to get the constants referred to in max_name_len(). [fixed in 3.0-alpha04] Fix syntax errors in fs_calcbsize(). It obviously was never tested for PL0. Sorry. Drop the "cache last lookup" from fs_loadinfo(). If that was what we wanted, we wouldn't be calling the routine! Use "false" instead of "/bin/false" in "Makefile" to force termination. Have "configure" chmod +x all of the scripts. Also have "Makefile" "tar" target fixup perms. General reorganization, cleanups, and commenting of "fsinfo.c". Reorganized decls in "du.h". ------------------------------------------------------------------------------ Version: 3.0-alpha01 Severity: n/a Highlights: New release. Now uses GNU "autoconf" for configuration. Rewrote filesystem information handling to load filesys info as needed rather than scanning mount table and preloading everything at startup. Handle wierd NFS case where "cd .." fails because you can't read directory but don't get EPERM. ------------------------------------------------------------------------------ Patch: 2 Version: from 2.1 to 2.2 Severity: critical for SPARC users, important for Coherent users, low for others Highlights: Documented workaround for SunOS system bug that would cause panic. Port to Coherent. Installation: Apply this patch to the distributed enh-du2 v2.1 sources. NEW INSTALLATION - If this is a new installation, delete the "config.h" distributed in the base package. If there are additional updates, apply those patches. Otherwise, read and follow the instructions in the README file. UPDATE INSTALLATION - Rebuild your "config.h" from the updated "config-dist". Unless you are running SunOS, you should be able to use the same exact configuration setup as you did for the v2.1 release. SunOS users, read the *important* new instructions on the USE_PATHCONF definition. Document workaround to SunOS panic. Fix USE_GETCWD_GETWD typo based upon report from Pat Myrto . Ported to Coherent based upon report from Fred Smith . Removed inappropriate use of MAXNAMLEN. Updated list of tested systems in README based upon report from Jim Davis . ------------------------------------------------------------------------------ Patch: 1 Version: from 2.0 to 2.1 Severity: critical for SPARC users, moderate for others Highlights: Document critical bug on multi-processor SPARC systems. Added option to dereference symlinks. "dusort" now handles files with embedded spaces. Several portability improvements. Installation: Apply this patch to the distributed enh-du2 v2.0 sources. NEW INSTALLATION - If this is a new installation, delete the "config.h" distributed in the base package. If there are additional updates, apply those patches. Otherwise, read and follow the instructions in the README file. UPDATE INSTALLATION - This patch creates a new file called "config-dist" to avoid stepping on changes you made to "config.h". You must recreate your "config.h" file from "config-dist". You should be able to use the same exact configuration setup as you did for the v2.0 release. Modified README with notes on *major* problem with multi-processor SPARC. This patch does NOT fix the problem, it just documents it. Based upon reports from Bob Wakehouse , Keith Thompson , and Szymon Sokol . Added "-S" option to dereference symlinks. Thanks to John Henders for the suggestion. Renamed "config.h" to "config-dist" to avoid stomping on user's changes. Ported to Ultrix based upon report from John Stoffel . Ported to NeXT based upon report from Vince DeMarco . Added USE_GETCWD_xxxx definitions for systems that don't have getcwd(). Fix type of Curr_time from long to time_t. Removed obsolete "-d" option as threatened. Display pathconf() failure diagnostic when compiled with DEBUG. Modified "dusort" to make field delimiter the tab character instead of any set of whitespace characters. This allows filenames with embedded spaces. Based upon bug report from Kevin Ruland . Added "-f" option to "dusort" to allow specification of field seperator. Updated list of tested systems in README based upon reports from Shabtai Lerner , Juha Laiho , Fred Smith , Matthew Costello , Hans de Graaff , and . Fixed some typos in the README file. Introduced (this) Update-Notes file with information on patch changes. ------------------------------------------------------------------------------ [end of update information]