----------------------
./tools/h5tools.c
Finished code which prints references (object and dataset
region). Patrick, if you tell me how h5dump should (or might
want to) print references I can make some changes to support
various formats...
You can try it out with:
cd test
env HDF5_NOCLEANUP=yes ./testhdf5
../tools/h5ls -dvr trefer1.h5
../tools/h5ls -dvr trefer2.h5
(run h5ls with no arguments if you forgot what the switches do)
./test/trefer.c
Call calloc instead of malloc in one place to prevent
uninitialized data from being written into the file.
----------------------
./tools/h5ls.c
./tools/h5tools.c
./tools/h5tools.h
Finished the `-x' or `--hexdump' switch, which causes all data
to be printed in hexadecimal format with no translation from
file to memory data type.
----------------------
./doc/html/Datatypes.html
./test/dtypes.c
Added documentation and tests for opaque types.
./tools/h5ls.c
Added a `-x' or `--hexdump' argument which is not fully
implemented (because I want to synchronize h5tools.c first)
but which will eventually print raw data in hexadecimal format
without any translation from disk. This would be useful for
debugging references and VL types.
./tools/h5tools.c
Added support for references (not quite finished yet, but
compiles -- I wanted to sync up this file before Patrick and I
got too far apart...)
./src/H5R.c
Checked for error return value from H5R_get_object_type()
./src/H5A.c
./src/H5D.c
Changed error return values from NULL to FAIL
./test/Makefile.in
./test/trefer.c
Creates trefer1.h5 and trefer2.h5 so that the second test
doesn't clobber the first file since the files might be useful
for debugging.
added the programtype variable and modified certain functions so they would use
this variable. started combinin h5dump_simple and h5dump_simple_dset into 1 function.
added an extra parameter to the h5dump_simple_dset function that because the
h5dump_simple function uses a var that isn't present in the dump_simple_dset
added a new variable to the tools lib that keeps track of what program is using
the library. h5ls.c and h5dump.c needed to init the variable to the correct
value for the programtype variable. this variable will hopefully only be temporary
until the lib gets combined farther
fixed the last bug with the repeating in the tstr.h5 test
added an extra parameter to the h5dump_sprint function. it was for the repeat_threshold
before it was hardcoded as 8 but now i let it be a parameter so that if it is set to
a negative number then it will not count the repeats and print all the values out.
fixed the null pad error and the extra quotes that were appearing in the strings.
still need to get rid of the part where it will say something repeats x amount of
times
changing the display_numeric_data abd the display_string to use the h5dump_sprint
from the tools lib.
added a section to initialize the h5dump_t variable in both these functions.
in the display_string had to remove the extra quotes that gets displayed when
printing.
in h5dump_sprint i changed the for loop in the case of the string.
I added a check to see if the last character is a \0. it was being printed
before.
the constants and from dumputil to to the tools lib and merged h5dump_fixtype
together. I had to add an extra parameter to the function to specify what action
should be taken when it hits H5T_STRING in the case statement. if the parameter
(strDUAction) is true then it does what it use to do in dumputil but if it is false
then it will do what it originally did in this file.
I also put the h5dump_sprint functions into the same file. it isn't really merged yet.
i just wanted to get everything into a file and then worry about the merging of this
function. The toolslib way of h5dump_sprint takes an extra parameter. If this
parameter is set to NULL then it will do the dumputil's version of this function.
like i said this is just the first step i am taking. it will be merged better later.
the rest of the changes to the other files were related to the above changes.
----------------------
./tools/h5ls.c
Added a `--address' (`-a') switch which causes h5ls to display
file addresses for raw data. For contiguous datasets it's just
a nice simple number, but for chunked datasets it's a list of
logical dataset coordinates, file addresses, filter masks, and
storage sizes.
Changed `--dump' switch to `--data'.
./src/H5D.c
./src/H5F.c
./src/H5Fprivate.h
Enhanced the indexed-storage B-tree iterator so it can dump
raw data addresses (and other info) to the standard error
stream.
Added H5Ddebug() so h5ls has a way to dump addresses for
datasets. I'm not sure what else this API function should do,
so I think we should discuss it before we document it. So far,
h5ls is the only thing that uses it, and we can easily change
that.
./src/H5Tconv.c
./test/dtypes.c
Finally had a chance to verify Paul's H5T_conv_s_s (general
string to string conversions) bug fixes and incorporate them
into H5T_conv_f_f (general floating-point to floating-point
conversions) and H5T_conv_i_i (general integer to integer
conversons). Thanks Paul.
./src/H5D.c
./src/H5S.c
./src/H5Sprivate.h
Added performance timers around data space read and write
callbacks. They were already there for the gather/scatter
callbacks.
The timings for read/write callbacks are displayed along with
gather/scatter when data space debugging is turned on.
./bin/iostats
Updated to print totals. Added a `--fast' option that doesn't
do any output except the totals and is much faster.
./bin/trace
Changed __unused__ to UNUSED to match source code.
./config/gnu-flags
Updated error message for pgcc. I've sent bug reports to the
pgcc people but the new version still has the same bug.
./configure.in
./config/conclude.in
./config/depend.in
Fixed dependencies for non-GNU makes when run in a directory
other than the hdf5 source tree.
Updated GNU `make dep' rules to copy the distributed
dependencies for non-GNU makes into the source tree when run
in some other directory.
Bug fix
Description:
dumper repeated output after the 1st 4 rows.
The bug was because the dumper was reading just a small slice a time
from the file dataset but did not adjust the offset in the file-space.
So, it just kept reading the same first slice.
Solution:
Stole the offset-adjustion code from the routine that h5ls uses.
Platform Tested:
O2K.
----------------------
./tools/h5tools.c
./tools/h5tools.h
Finally fixed a long-standing bug that caused core dumps if
a compound datum rendered to more than some number of
characters (we kept bumping up the limit at the risk of
violating stack size limits on some machines). The fix works
only on systems that have the vsnprintf() function (otherwise
a 4kB limit is imposed, which if violated probably dumps
core). If vsnprintf() is present then the library dynamically
allocates space for the output string.
Also made it possible to control how compound data is rendered
across multiple lines of output by allowing the caller to
specify where optional line-breaks get inserted. The output
functions split up the value at one or more optional
line-breaks to prevent it from wrapping around the screen.
If a datum doesn't fit on the current line but would fit on
the next line then it is printed on the next line regardless
of whether optional line-breaks would have prevent wrapping
around the screen. This makes it easier to find the beginnings
of compound data values. This feature is disabled by default
but can be enabled by the application.
If a datum doesn't fit on the current line and the previous
datum also occupied more than one line then we move to the
next line before printing. This makes it easier to find the
beginnings of compound data values but prevents the output
from looking fragmented if there are only a few long values
among mostly short values. This feature is disabled by
default but can be enabled by the application.
The application can control the printf() formats used for all
the native data types. The defaults are what the library used
to use: %g, %ld, %lu, %d, and %u
./tools/h5ls.c
Compound datatype values can now be split across multiple
lines of output instead of just wrapping. Also, when lots of
compound values are too long they all start at the beginning
of a line. This only required about 10 lines of changes in the
setup for tools library calls (I didn't modify the h5dump
program because it uses its own version of the tools library
that forked off long ago).
Added code for Win32 which is unable to cast `unsigned long
long' to `double'. If the dataset size exceeds (2^63)-1 then
the percent utilization is not displayed (this is easily
possible with chunked datasets). This is untested yet.
./configure.in
./src/H5config.h.in
./src/H5.c
./src/H5private.h
Check for vsnprintf() and provide a simple, stupid definition
if it isn't available. The stupid definition just calls
vsprintf() and ignores the second argument. This can result in
buffer overflows in h5ls and h5dump since vsprintf() is an
unsafe function (and anyone can create an hdf5 file that runs
an arbitrary command from h5ls and h5dump in that case)!
./config/conclude.in
Remove more *.o files for `make clean'
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
Cleaned up a memory leak during H5_term_library() by allowing
H5I_clear_group() to skip items that couldn't be freed. This
allows the item to remain in the group until we can free it
later.
./src/H5F.c
The H5F_close_all() function fails if a file cannot be closed.
----------------------
./config/commence.in
./examples/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
Fixed some dependency problems in Makefiles. If the library
version is updated then everything gets recompiled.
./src/H5G.c
./src/H5R.c
Failure return value for object type functions is now
H5G_UNKNOWN as documented.
./src/H5Shyper.c
./src/H5Spoint.c
Fixed an unused argument warning.
./tools/h5debug.c
Fixed a call to H5F_block_read() since the 4th argument is
different now.
./tools/h5ls.c
Added a space between the object name and class to make the
output readable when the object name is longer than 24
characters.
C
----------------------
./config/depend.in
Fixed automatic dependencies. We were storing dependencies for
*.o files instead of *.lo files after shared libraries were
added.
./config/gnu-flags
./config/linux-gnulibc1
Moved `-march=pentiumpro -mcpu=pentiumpro -malign-double' from
the linux file to this file and caused it to depend on the CPU
name. This fixes one of Elena's bugs.
./src/H5B.c
./src/H5Bprivate.h
./src/H5D.c
./src/H5Dprivate.h
./src/H5Dpublic.h
./src/H5F.c
./src/H5Farray.c
./src/H5Fistore.c
./src/H5Fmpio.c
./src/H5Fprivate.h
./src/H5Fpublic.h
./src/H5Gnode.c
./src/H5P.c
./src/H5RA.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Spoint.c
./src/H5Sprivate.h
./src/H5Tpublic.h
./test/istore.c
Added an H5Dget_storage_size() function that reports the
amount of storage allocated for raw data in a dataset.
Changed H5D_xfer_* to H5F_xfer_* because these properties are
more general than datasets. This also allows some of the
lower-level I/O functions to get this information easier.
./src/H5S.c
./src/H5Sall.c
Added two new functions H5S_all_read() and H5S_all_write()
which are optimizations that copy data directly between file
and memory without having to go through the scatter gather
step. This knocks quite a bit of time off the I/O and
reading/writing entire datasets is a fairly common operation.
./tools/h5ls.c
Reports the logical size of data, the allocated size of data,
and the percent utilization.
./MANIFEST
Removed old pablo files, added new files. Snapshots should now
start to work again.
./src/H5D.c
./src/H5Fmpio.c
Removed two warnings signed vs. unsigned comparisons and check
for overflow.
----------------------
./config/commence.in
./config/conclude.in
./test/Makefile.in
./tools/Makefile.in
Fixed so private libraries are not installed publicly.
The installation directories `bin', `include', and `lib' are
created mode 755.
./src/H5.c
./src/H5A.c
./src/H5F.c
./src/H5Fcore.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fsec2.c
./src/H5Fstdio.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Ocomp.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Ofill.c
./src/H5Olayout.c
./src/H5Omtime.c
./src/H5Oname.c
./src/H5Osdspace.c
./src/H5Oshared.c
./src/H5Ostab.c
./src/H5R.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Snone.c
./src/H5Spoint.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Vprivate.h
./src/H5Z.c
./src/H5detect.c
./src/H5private.h
./test/chunk.c
./test/dsets.c
./test/dtypes.c
./test/h5test.c
./test/overhead.c
./test/ragged.c
./test/tattr.c
./tools/h5dump.c
./tools/h5findshd.c
./tools/h5ls.c
Changed `__unused__' to `UNUSED' to fix a conflict with GNU
header files.
./src/H5Tpkg.h
./test/h5test.h
Removed __unused__ from forward function declarations.
./src/H5P.c
Removed a comment about restrictions for the type conversion
temporary buffers. Thanks to Quincey, the comment no longer
applied.
./src/H5T.c
Relaxed the H5Tpack() a little so it would pack compound data
structures that had non-transient atomic members.
./tools/h5ls.c
Added a `-g' (or `--group') flag that causes information to be
printed about the specified group instead of the group's
contents. (sort of like Unix's `ls -d'). The `-g' can be used
in combination with `-r' to print information about the group
and its contents.
New feature
Problem:
The h5toh4 converter tester - testh5toh4, is set up to place output
files in same directory as input files. A difficulty comes up when
the input files come off a write-protected media, such-as CDROM.
Solution:
Rather than using "cd" to change directory and referencing files by
short filename only, "input directory" and "output directory" are
defined explicitly, and files are always referenced with pathnames
included. For cases when the converter generates the output filename,
a copy of the input file is first placed in the "output directory".
The copied input file is used by h5toh4 and then removed.
On Solaris2.5, the following sequence of commands seemed to work fine:
$ gunzip < hdf5-1.1.72.tar.gz | tar xf -
$ chmod -R ugo-w hdf5-1.1.72
$ mkdir build
$ cd build
$ ../hdf5-1.1.72/configure --enable-production --disable-debug \
$ --with-hdf4=... --with-zlib=...
$ make check
This change should allow the tester to be used when the hdf5 source
is on a read only media like a CDROM.
Platform tested:
Solaris2.5
./configure [REGENERATED]
./src/H5D.c
./src/H5O.c
Removed H5AC, H5B, and H5T from the default list of packages
to debug (because they're pretty expensive debugging), and
added H5O. Also fixed a bug for undefined variable in H5D when
H5S debugging is turned on but H5T debugging is turned off.
./config/conclude.in
Fixed installation of header files for building in a directory
other than the source directory. This fixes a bug where
H5config.h wasn't being installed.
./src/H5.c
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
./src/H5Tprivate.h
./src/H5Z.c
./src/H5detect.c
./src/H5private.h
Changed the way the library shuts down again. Now it handles
cycles between packages and isn't so sensitive to dependencies
between packages. A package might shut down only to be
restarted to process a request from some other package being
shut down. Loops are detected after 100 iteractions and the
shutdown is aborted with a message on standard error. This
also makes it a lot easier to debug.
./src/H5A.c
Fixed H5A_write() and H5A_read() so they pass a non-null
background buffer to the conversion functions. This is
necessary when an attribute has a compound data type.
./src/H5Flow.c
./src/H5Fprivate.h
./src/H5Fsec2.c
Reindented new Win32 stuff.
./src/H5Odtype.c
Fixed a bug when enumeration types are used in a compound data
type. The byte pointer wasn't incremented after the type
information was written.
./tools/h5ls.c
Compound data types display their total size because it's not
always obvious from looking at the members.
Scalar attributes show their space as `scalar' instead of
`{}'.
The index value is not printed for attributes that have only a
few values. Instead the word `Data:' is printed on the first
line of attribute data.
Named types display their data type only if verbose output was
requested.
----------------------
./configure.in
./configure [REGENERATED]
./config/commence.in
A few tweaks to the makefile rules for rebuilding makefiles.
./src/H5detect.c
Fixed a really stupid mistake: resetting the signal handler
after a longjmp(). This should fix Bob's SIGBUS on Solaris.
----------------------
./Makefile.in
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./config/commence.in
./config/conclude.in
./config/dec-osf4.x
./config/depend.in
./config/freebsd
./config/linux-gnu
./config/linux-gnulibc1
./config/linux-gnulibc2
./config/solaris2.x
./examples/Makefile.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
./tools/testh5dump.sh
Changes that allow hdf5 to be configured and compiled in a
directory other than the source directory. This is especially
useful if you want to concurrently compile with different
compilers and/or compile flags, or if the hdf5 source is on
read-only media like a CDROM. The changes were surprisingly
easy ;-) Here's what you can do now...
$ mkdir /tmp/build1 # or something
$ cd /tmp/build1
$ /cdrom/hdf5/configure # where ever the source is
$ make
Paul, you'll have to change the testh5toh4 script similar to
the way I changed testh5dump.sh. I started working on it but
then gave up because of a number of problems: (1) I had to
comment out all the tests that let h5toh4 choose the output
file name because it always tried to put the output file in
the same directory as the input file, (2) if path names are
used during the h4 dump then they interfere with the
diff. The test works fine when run in the source directory,
but try this instead:
$ gunzip <hdf5-1.1.67.tar.gz |tar xf -
$ chmod -R ugo-w hdf5-1.1.67
$ mkdir build
$ cd build
$ ../hdf5-1.1.67/configure
$ make check
Dan, I didn't modify the pablo/Makefile.in because I have no
way to test it. I think all you need to do is add a couple
lines before the @COMMENCE@ line and add a couple search
directories for header files. Anyway, it seems like almost an
exact duplicate of the src/Makefile.in, so it shouldn't be a
problem...
./Makefile.in
Removes a few more temporary files during make clean and
distclean.
./configure.in
I fixed the creation of the time-stamp files so that the
initial make doesn't have to regenerated all the makefiles
(only GNU make users will see any change).
./src/H5R.c
Changed a return type from `intn' to `int' for an API
function.
./src/H5detect.c
Added the volatile qualifier to a couple more variables.
./tools/h5tools.c
Fixed a compiler warning about an unused local.
./tools/h5toh4.c
Initialized `optind' to 1 because it's zero on my system. It
should always be one on a unix system.
./tools/testh5toh4
Redirected "broken pipe" messages to /dev/null so outut is
formatted correctly.
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5private.h
Temporarily commented out the code that tries to link a simple
MPI-IO application because I'm not sure how to pass $LDFLAGS
and $LIBS to the compiler.
Removed the `--enable-parallel=ibm' switch because the library
we link with is either -lmpcc or -lmpcc_r but not both. The
only way to tell is to see what compiler was specified (mpcc
or mpcc_r) but if that compiler is specified then we don't
need any libraries (the compiler script supplies them). That
leaves just two choices: the user must use a compiler script:
CC=mpcc ./configure
or the user must state which library is desired:
LDFLAGS='-lmpcc' ./configure --enable-parallel
Checks for <setjmp.h>, longjmp(), and signal(). We don't check
for setjmp() because it could be a macro (in fact, Posix
requires it to be a macro) and if longjmp() is present then
setjmp() is probably present too ;-)
./src/H5detect.c
The alignment detection loop uses SIGBUS and setjmp/longjmp
instead of fork/wait in order to get around bugs with forking
in conjunction with mpich. This hasn't been tested on the
SP-2 yet but it does work on the DEC Alpha.
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
Changed the order that libraries are linked so -lhdf5 is
always before $LDFLAGS.
----------------------
./configure.in
./configure [REGENERATED]
The path for a command is calculated explicitly the hard way
because `type -path' isn't portable.
./config/freebsd
./config/linux-gnu
./config/linux-gnulibc2
Changed the way files reference each other.
./config/gnu-flags [NEW]
./config/dec-flags [NEW]
These files figure out what flags to pass to certain compilers
so we can reuse code in more than one config/* file. They
also have better warning messages when old compilers are used.
./config/linux-gnulibc1
./config/dec-osf4.x
These files use the new *-flags files.
./src/H5D.c
./src/H5Onull.c
./src/H5Tconv.c
./tools/h5ls.c
Fixed a compiler warning.
./src/H5detect.c
Added a better comment to the top of the generated file.
----------------------
./INSTALL
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
Improvements for parallel library. If you have a properly
working mpicc you should be able to just say:
$ CC=mpicc ./configure
and you will see
checking for mpirun... /usr/local/mpi/bin/mpirun
checking for parallel support files... skipped
checking how to run on one processor...
/usr/local/mpi/bin/mpirun -np 1
checking how to run in parallel...
/usr/local/mpi/bin/mpirun -np $$NPROCS
To quote from the INSTALL file....
*** Parallel vs. serial library
The HDF5 library can be configured to use MPI and MPI-IO for
parallelizm on a distributed multi-processor system. The easy
way to do this is to have a properly installed parallel
compiler (e.g., MPICH's mpicc or IBM's mpcc) and supply that
executable as the value of the CC environment variable:
[NOTE: mpcc is not tested yet]
$ CC=mpcc ./configure
$ CC=/usr/local/mpi/bin/mpicc ./configure
If no such wrapper script is available then you must specify
your normal C compiler along with the distribution of
MPI/MPI-IO which is to be used (values other than `mpich' will
be added at a later date):
$ ./configure --enable-parallel=mpich
If the MPI/MPI-IO include files and/or libraries cannot be
found by the compiler then their directories must be given as
arguments to CPPFLAGS and/or LDFLAGS:
$ CPPFLAGS=-I/usr/local/mpi/include \
LDFLAGS=-L/usr/local/mpi/lib/LINUX/ch_p4 \
./configure --enable-parallel=mpich
If a parallel library is being built then configure attempts
to determine how to run a parallel application on one
processor and on many processors. If the compiler is mpicc
and the user hasn't specified values for RUNSERIAL and
RUNPARALLEL then configure chooses `mpirun' from the same
directory as `mpicc':
RUNSERIAL: /usr/local/mpi/bin/mpirun -np 1
RUNPARALLEL: /usr/local/mpi/bin/mpirun -np $${NPROCS:=2}
The `$${NPROCS:=2}' will be substituted with the value of the
NPROCS environment variable at the time `make check' is run
(or the value 2).
./testpar/Makefile.in
Saying `make check' (or `make test') will run the tests on two
processors by default. If you define NPROCS then that many
processors are used instead:
$ NPROCS=4 make check
./configure.in
Fixed (hopefully) bugs with detecting whether __attribute__
and __FUNCTION__ are special keywords for the compiler.
./Makefile.in
Saying `make install' from the top level directory shows
instructions for using shared libraries.
./config/commence.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
Moved the @top_srcdir@ into the makefiles because it was
expanded too early and had the wrong value.
./INSTALL
Added a warning that if the wrong version of hdf4 tools are
installed then `make check' will fail in the tools directory.
----------------------
./INSTALL
Reorganized and added some additional examples.
./MANIFEST
./aclocal.m4 [NEW]
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./bin/ltconfig [NEW]
./bin/ltmain.sh [NEW]
Added tests to determine how to compile shared libraries and
how to link programs with them before the libraries are
installed. Also how to install and uninstall shared
libraries. The configure step also prints the names of the
config files it's trying to load for easier debugging.
./bin/config.guess
./bin/config.sub
Replaced with a newer version from GNU. The changes we made
to that file to report `irix6.x' and `FreeBSD' without version
numbers have been incorporated into configure.in instead. In
the future, do not change these two files (see the top of
configure.in instead). By the way, this update was required to
get shared libraries working.
./config/linux [REMOVED]
./config/linux-gnulibc1 [NEW]
./config/linux-gnu [NEW]
./config/alpha-dec [REMOVED]
./config/alpha-dec-osf4.0 [REMOVED]
./config/dec-osf4.x [NEW]
./config/irix5.3 [REMOVED]
./config/irix5.x [NEW]
./config/irix64 [REMOVED]
./config/freebsd
Moved config files around to agree with output from the new
config.guess. The linux file was split into gnu (RedHat),
gnulibc1, and gnulibc2 versions. The alpha-dec file was
removed (I think it was unused) and the alpha-dec-osf4.0 was
changed to dec-osf4.x. The irix5.3 file renamed to irix5.x and
the irix64 file was renamed to irix6.x. The freebsd file was
changed to point to linux-gnulibc1. These changes were tested
on:
Linux 2.0
Linux 2.1
FreeBSD 3.2
Irix 5.3
Irix64 6.2
Irix64 6.4
HP/UX 10.20
OSF1 4.0
./config/alphaev56-dec-osf4.x
./config/irix64
Added warnings similar to linux/freebsd about using compilers
with known bugs.
./config/commence.in
./config/conclude.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
Added definitions for shared libraries. This has been tested
on the following systems:
Linux 2.0
Linux 2.1
FreeBSD 3.2
Irix 5.3
Irix64 6.2
Irix64 6.4
HP/UX 10.20 static only
OSF1 4.0
If you want to disable use of shared libraries (you probably
do for development purposes since it takes a lot longer to
compile and because you have to run dynamically linked
programs in a special way if the library hasn't been
installed) then add `--disable-shared' to the configure
command line. This is all documented in the INSTALL file.
./bin/release
Temprarily commented out the MANIFEST checking when running
under svf since svf is about to be replaced by a newer
version. This change only affects error checking during the
release process.
./Makefile.dist
./Makefile.in
Added `make check' which does the same thing as `make _test'
since the former is endorsed by the GNU coding style and
people are used to it. The old `make _test' still works too
(and so does `make test' if you use GNU make).
----------------------
./config/irix64
The old (-32) compiler is now supported by setting envrionment
CC='cc -32'. The -64 compiler is the default or you can set
CC='cc -64'.
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5G.c
./src/H5I.c
./src/H5Ocomp.c
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5T.c
./src/H5Tbit.c
./src/H5Tconv.c
./src/H5Z.c
./src/H5detect.c
./test/big.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/enum.c
./test/mtime.c
./test/ohdr.c
./tools/h5ls.c
Fixed lots of warnings on Irix64. Mailed a few remaining
warnings in H5S to Quincey and a few in the dumper to
Ruey-Hsia.
Bug Fixes
Problem:
Warnings given during compilation on some machines.
Solution:
Take care of various Compiler Warnings such as:
1) uninitialized variables;
2) unreachable statements.
Platforms tested:
Solaris2.5, Linux, Irix6.5
----------------------
./configure.in
./acconfig.h
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5public.h
./src/H5Omtime.c
Check for <stddef.h>
Checks for `__tm_gmtoff' in `struct tm' because old versions
of GNU libc are different than recent versions. This fixes the
failing mtime test.
./bin/config.guess
./config/freebsd2.2.7 [REMOVED]
./config/freebsd [ADDED]
Changed the name so it works with all versions of FreeBSD.
./src/H5.c
Moved H5F after H5T and H5G in H5_term_library() to satisfy
dependencies.
./src/H5G.c
Fixed a bug that caused H5Gcreate() to fail if the group name
had trailing slashes.
./src/H5Gpublic.h
Changed `group_name' to `name' in a prototype.
./src/Makefile.in
Dynamic library on Linux, but needs for work to be generally
useful.
./src/H5HG.c
./src/H5HGprivate.h
Fixed alignment problems when using old GCC compilers (like
the one shipped with RedHad Linux).
./tools/h5ls.c
Fixed a bug where the contents of the root group could be
listed twice if there was a link back to the root
group. Similarly for groups that are mentioned on the command
line.
Fixed a bug where unknown types were printed with a random
type class number.
./src/H5T.c
./src/H5Tconv.c
./src/H5Tprivate.h
Fixed O(log N) conversion bugs.
Bug fix
Problem:
Did a H5get_type() on a dataset of committed type without doing
the associated H5Tclose(). This caused an abort to occur during the
atexit() phase of the h5toh4 converter.
Solution:
Execute the associated H5Tclose().
Platform tested:
Solaris2.5
Bug fix
Problem:
The hdp dumper output files used in the h5toh4 converter test
program have the result of the latest changes to the HDF4 library,
but the converter was to maintain compatability with HDF4.1r2.
Solution:
Regenerate the HDF4.1r2 version of the hdp dumper ouput files to
be used for the h5toh4 converter test program.
Platform tested:
Solaris2.5
New feature
Solution:
Modified h5dumptst.c to generate more single dimension
datasets of H5T_STRING type held in file tstr2.h5.
Platform tested:
Solaris2.5
New feature
Solution:
Changes to support conversion of 1-dimensional HDF5 datasets of
H5T_STRING type into HDF4 Vdatas. Also, support conversion of
HDF5 attribute of string type into HDF4 attribute of INT8 type.
Dimensional information is lost.
Platform tested:
Solaris2.5
----------------------
./tools/h5tools.c
Strings are not converted to null-padding before being
printed; they are printed with whatever byte values appear in
the file.
./tools/h5ls.c
Now able to display attribute data type and data.
Added a `-f' or `--full' switch which causes the full name of
each object to be displayed instead of just the base name.
Added a `-r' or `--recursive' switch that recursively prints
the contents of groups, avoiding cycles.
More bulletproofing for non-printable characters in things
like object names, attribute names, and comment strings. We
don't want listing a file to send termal escape sequences
because it's sometimes possible to execute commands that way.
Since h5ls doesn't usually use quotes around object names we
must sometimes escape space characters.
External files are listed in a table to make the output less
confusing.
./tools/h5tools.c
./tools/h5tools.h
Changed h5dump() to h5dump_dset() and added h5dump_mem(). Also
make h5dump_fixtype() public.
./test/dtypes.c
Wrote some data to an attribute to test h5ls attribute
printing.
./src/H5ACprivate.h
./src/H5Apublic.h
./src/H5Dprivate.h
./src/H5Dpublic.h
./src/H5Epublic.h
./src/H5Fprivate.h
./src/H5Fpublic.h
./src/H5Gprivate.h
./src/H5HLprivate.h
./src/H5Oprivate.h
./src/H5Ppublic.h
./src/H5RApublic.h
./src/H5Rpublic.h
./src/H5Spublic.h
./src/H5Tpkg.h
./src/H5Tpublic.h
./src/H5Vprivate.h
./src/H5Zpublic.h
./src/H5private.h
./src/H5public.h
Reindented function prototypes after `HDF5API' was added. Also
rewrapped long lines.
./src/H5Flow.c
Added an `#ifdef WIN32' around an unused variable.
./src/H5api_adpt.h
Removed extra carriage returns inserted by "broken" operating
system.
./src/H5Dprivate.h
./src/H5Oprivate.h
./src/H5Vprivate.h
./src/H5private.h
Removed extraneous inclusion of H5api_adpt.h since it's
included in H5public.h which is included by everything.
./src/Makefile.in
Added H5api_adpt.h to the list of public header files to fix
broken `make install'.
----------------------
./tools/h5tools.c
Strings are not converted to null-padding before being
printed; they are printed with whatever byte values appear in
the file.
Bug fix
Problem:
Segmentation fault when attempting to free NULL or uninitialized pointers.
Problem noticed on Linux and HPUX10.20 platforms.
Solution:
Initialialize the pointer to NULL. Execute the "free" statement
upon the condition that the pointer is not equal to NULL (i.e. after the
allocation has taken place.)
Platform tested:
Linux, HPUX10.20, Solaris2.5
Conform closer to other test print-out.
Solution:
Added "All h5dump tests passed." statement to output
of testh5dump.sh when appropriate. Similarly, added
"All h5toh4 tests passed." statement to output of
testh5toh4 when appropriate.
Also, added the testing of converting H5 files with
loop pathways into H4 files with recursive references.
Platforms tested:
Solaris2.5, Digital Unix 4.0
Conform closer to other test print-out.
Problem:
Multiple "PASSED" statements for single test results when test involves
conversion of multiple files. Should be single "PASSED" statement for
test results.
Solution:
"*FAILED*" statement given if conversion fails for any file. Differences
given between expected results and actual results for each file that fails.
"PASSED" statement given when conversion is successful for all files.
Platform tested:
Solaris2.5
New feature, Documentation
Solution:
Changed h5toh4 testing output to more closely resemble other HDF5
testing output.
Also added documentation to describe the puposes of the
conversion test files.
Platform tested:
Solaris2.5
Features of this version of dumper
* loop detection
* data type
** atomic type
-> H5T_INTEGER (H5T_STD_XXXXX)
-> H5T_FLOAT (H5T_IEEE_XXXXX)
-> H5T_STRING (H5T_C_S1, H5T_FORTRAN_S1)
** committed/transient/unamed compound type
* data space
** scalar space
** simple space
* dataset
dumper can display dataset's
** attribute
** type
** space
** data
* group
dumper can display group attributes and group members which include
** named/unamed data type
** group
** dataset
** softlink
* attribute
dumper can display attribute's
** type
** space
** data
* hard link
* soft link
* format of data
** fit on 80 columns
** end of line after each row
(more work will be done on data.)
Problems:
There were three separate bugs in the h5toh4 converter worked on.
They were:
1) When a loop was detected, the H4 file was missing references
to paths which were available in the H5 file.
2) When an H4 SDS or Vdata was created from a H5 dataset, the H4
object was referenced in the root group, instead of the correct
Vgroup.
3) The FIRST path taken to an object for the h5toh4 conversion
could not involve a SOFTLINK.
Solutions:
The bug fixes were:
1) All of the associated references to available paths which
occur in the H5 file, now appear in the H4 file.
2) After an H4 SDS or Vdata is created from a H5 dataset, the H4
object is tag/ref'ed in the appropriate Vgroup.
3) The FIRST path taken to an H5 object for the H5toh4 conversion
may involve a HARDLINK, a SOFTLINK, or neither. The same is
true of any additional paths to the same object.
Platform tested:
Solaris2.5
New feature
Solution:
Added some new new tests to show that paths involving HARDLINKS
and paths involving SOFTLINKS convert existing objects from H5 to
H4 the same way that paths involving no links does.
Platform tested:
Solaris2.5
----------------------
./INSTALL
Added warning that enabling debugging code can adversely
affect performance even when the debugging isn't turned on at
run-time. Performance testing shows that under certain
circumstances (like data type conversions of compound types)
the H5_timer functions, although only a few lines each,
contribute a fairly large percent to the execution time.
./src/H5T.c
./src/H5Tpkg.h
./src/H5Tpublic.h
Improved the H5Tunregister() function to make unregistering
more flexible. It takes the same arguments as H5Tregister()
but also accepts wild cards. All conversion functions that
match the H5Tunregister() search criteria are removed from the
global type conversion table.
The H5Tregister_hard() and H5Tregister_soft() were combined
into a single function called H5Tregister() which is the
counterpart to H5Tunregister(). A new `persistence' argument
was added to differentiate between the two types of conversion
functions.
The application is allowed to register a hard conversion
function for the no-op conversion path although the library
isn't obligated to call it (it usually does). This is mostly
for completeness, but the application might use it to help
determine if the raw data pipeline was able to use the
optimized path for the case when no type conversion is
necessary. The library doesn't allow this path to be
unregistered although the application can redefine it as often
as it likes.
Fixed the type conversion tables in preparation for MT-safety
and to fix previosly-known design bugs wrt. unregistering
conversion functions or changing the C function associated
with a conversion path. The MT-safety stuff is documented in a
separate white paper.
Increased the conversion function debugging name from 9
characters to 31 characters so the output can be more
descriptive.
Moved conversion path statistics from the H5T_cdata_t member
into the conversion path itself. This makes H5T_cdata_t
contain only application-visible data structures.
./src/H5A.c
./src/H5D.c
./src/H5Ofill.c
./src/H5P.c
./src/H5T.c
Improved the way type conversion functions are called so the
caller doesn't have to check for data type debugging and
increment type conversion timers and statistics.
Changed check for no-op conversion since it is now
application-definable and there may even be more than one
definition at a time in a multi-threaded application (one
thread might be using the no-op conversion path when some
other thread changes its definition -- the first thread still
sees the original defintion until it's done with the
operation).
./doc/html/Datatypes.html
Updated the user guide to reflect the changes to data type
conversion registration functions.
./bin/trace
./src/H5.c
Added tracing support for the new H5T_pers_t data type.
./test/dtypes.c
Added printf to display alignment value if non-aligned data
types are being tested.
./test/h5test.c
Modified the H5Tunregister() calls to use the new
arguments. All 94 of those calls can be replaced by a single
call to the new H5Tunregister() function.
./src/H5.c
Added HAVE_GETTIMEOFDAY around an auto variable and
initialized the elapsed time to zero when gettimeofday() is
not available.
./src/H5F.c
./src/H5Fprivate.h
./src/H5P.c
Added an H5*_init() functions which do the same thing as
H5*_init_interface() but can be called from other packages and
don't do anything if the interface is already initialized.
This fixes a couple memory leaks in applications that
repeatedly close and open the library with H5close().
./src/H5Tconv.c
Optimized some data alignment code in the hardware conversion
functions.
Hardware conversions accumulate statistics about source and
destination data alignment and print that information when the
conversion function is unregistered (usually when the
application exits) if data type debugging is compiled into the
library and enabled at run-time.
The conversion caching was cleaned up for the compound data
type conversion function. It now caches conversion paths in a
manner that will be MT-safe and is much simpler than the old
method. Also cleaned up some array index maps.
./src/H5detect.c
Fixd mispelling of alingemnt.
./src/H5private.h
Changed `TRUE' to `1' in assignment to interface_initialize_g
in FUNC_ENTER macro definition.
./tools/testh5dump.sh
Completely rewritten to make it shorter, better documented,
and conforming to most of the other test outputs.
The comparison of the actual output with the expected output
is insensitive to differences in white space. The test now
passes for the first time on Linux where the output width
wasn't as expected but the output was otherwise correct.
./tools/testfiles/tall-1.ddl
./tools/testfiles/tall-2.ddl
./tools/testfiles/tall-3.ddl
./tools/testfiles/tattr-1.ddl
./tools/testfiles/tattr-2.ddl
./tools/testfiles/tattr-3.ddl
./tools/testfiles/tattr-4.ddl
./tools/testfiles/tcomp-1.ddl
./tools/testfiles/tcomp-2.ddl
./tools/testfiles/tcomp-3.ddl
./tools/testfiles/tcomp-4.ddl
./tools/testfiles/tdset-1.ddl
./tools/testfiles/tdset-2.ddl
./tools/testfiles/tdset-3.ddl
./tools/testfiles/tdset-4.ddl
./tools/testfiles/tgroup-1.ddl
./tools/testfiles/tgroup-2.ddl
./tools/testfiles/tgroup-3.ddl
./tools/testfiles/tlink-1.ddl
./tools/testfiles/tlink-2.ddl
./tools/testfiles/tlink-3.ddl
./tools/testfiles/tlink-4.ddl
./tools/testfiles/tlink-5.ddl
./tools/testfiles/tslink-1.ddl
./tools/testfiles/tslink-2.ddl
Changed `../h5dump' to just `h5dump'.
./config/alpha-dec-osf4.0
Added more warning and optimization switches to the native
compiler.
New feature
Solution:
Testing of Extendable Dataset support in h5toh4 converter when
extendable dimension is first dimension.
Platform tested:
Solaris2.5
----------------------
./doc/html/Datatypes.html
./src/H5.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tpublic.h
./src/H5detect.c
./test/chunk.c
./test/dtypes.c
./test/h5test.c
./test/mtime.c
./test/tattr.c
./test/th5s.c
./tools/h5dump.c
./tools/h5dumputil.c
./tools/h5import.c
./tools/h5ls.c
./tools/h5toh4.c
./tools/h5tools.c
Renamed the old H5T_NATIVE_CHAR type to H5T_NATIVE_SCHAR to
denote that it is always signed.
Added a new H5T_NATIVE_CHAR type which has the same range,
representation, and behavior as either H5T_NATIVE_SCHAR or
H5T_NATIVE_UCHAR depending on the compiler and its
command-line switches for the application source file which
references H5T_NATIVE_CHAR. If source files are compiled with
different switches then each source file will resolve
H5T_NATIVE_CHAR appropriately so it matches the C type `char'
in that source file.
NOTE: THERE ARE OTHER DOCUMENTATION FILES THAT I DIDN'T CHANGE
BECAUSE I CAN'T MODIFY THE SOURCE.
./test/extend.c
Swapped two lines to prevent diagnostic messages from messing
up the formatted output.
New Feature
SOLUTION:
h5toh4 is an H5 utility which converts HDF5 files into
HDF4 files. It converts only those H5 objects which have
have mappings into H4 objects.
Some H5 objects that may be converted into H4 objects are:
1) H5 group objects may be converted into H4 Vgroup objects.
2) H5 dataset objects of integer or floating point datatype
may be converted into H4 SDS objects.
3) H5 dataset objects of compound datatype and rank 1 may
be converted into H4 Vdata objects. Field members of the
compound datatype are constrained to be single dimensional.
Platforms tested:
Solaris2.5, HP10.20
New feature
Solution:
This file contains routines to find all shared objects and
committed types and store them in tables. These routines
are made available in the library hdf5/tools/libh5tools.a
Platform tested:
Solaris2.5, HP10.20
New Feature
Solution:
These files are the expected results of the HDF4 hdp dumper,
which has been executed in the following order:
hdp dumpvg file.hdf > file.dmp
hdp dumpvd file.hdf >> file.dmp
hdp dumpsds file.hdf >> file.dmp
Platform tested:
Solaris2.5, HP10.20
New Feature
Solution:
This is a tester for the h5toh4 converter. It is implemented
on different HDF5 files to produce HDF4 files. After each HDF4
file is produced, the file is run through the HDF4 dumper hdp.
The dumper results are compared with expected results and any
differences are noted.
Note: The "/hdf4/bin" directory needs to be part of the tester's
$PATH.
Platform tested:
Solaris2.5, HP10.20
----------------------
./test/flush2.c
./test/overhead.c
Removed carriage-returns inserted by a broken operating system.
./test/big.c
./test/mtime.c
./test/ragged.c
./tools/h5ls.c
Removed inclusion of <H5config.h>, system header files, and definition
of __unused__ since this all happens in <H5private.h>.
./test/chunk.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/external.c
./test/fillval.c
./test/flush1.c
./test/flush2.c
./test/iopipe.c
./test/links.c
./test/mount.c
./test/overhead.c
./test/shtype.c
./test/unlink.c
./tools/h5import.c
./tools/h5repart.c
Removed inclusion of <H5config.h> since <hdf5.h> includes it.
./test/flush1.c
Includes <stdlib.h>, protects inclusion of <unistd.h> by using
HAVE_UNISTD_H instead of STDC_HEADERS.
----------------------
./src/H5.c
./src/H5Smpio.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpublic.h
./src/H5detect.c
./src/H5private.h
./src/H5public.h
./test/big.c
The `long long' type isn't quite as prevalent as we had hoped;
there is at least one system that defines `__int64' but not
`long long'. Therefore, I've temporarily changed all
occurrences of `long long' to `long_long' and then #define
that in H5private.h based on the existence of `long long' or
`__int64'. This gets rid of some #ifdef's in other parts of the code.
The semantics of the hdf5 types are:
*int8_t Exactly one byte
*int16_t At least two bytes. We favor 32-bit integers over
16-bit integers if the 16-bit integer is 4-bytes wide
(Cray)
*int32_t At least four bytes.
*int64_t At least eight bytes
long_long The widest integral integer type
The H5Smpio.c contains debugging code which is non-portable.
./tools/h5ls.c
Changed the order native types are detected so we favor the name `int'
over `short' or `long' if two of them are the same.
./config/conclude.in
Added a rule to make test programs depend on the hdf5 library. This
fixes a minor bug where changing H5detect.c and then running `make
test' caused H5Tinit.c to not be recompiled and therefore the test
files are not relinked.
----------------------
./INSTALL.parallel [NEW]
We're beginning to unify some of the parallel installation
steps. This file will contain general information for
installing the parallel library. It's not complete yet.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
Check for xdr_int() in libnsl required on Solaris when linking
with hdf4. It's found on the Irix system I tested which
complains that `-lnsl' didn't resolve any symbols. Oh well.
Fixed the order of searching for libdf and libmfhdf for hdf4
linking.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5Z.c
Check for compress() in libz in order to find older versions
of the library that will still work for hdf4. Added a
separate check for compress2() that hdf5 will use.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5.c
./src/H5private.h
./src/H5A.c
./src/H5B.c
./src/H5Bprivate.h
./src/H5D.c
./src/H5F.c
./src/H5Farray.c
./src/H5Fcore.c
./src/H5Ffamily.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fprivate.h
./src/H5Fsec2.c
./src/H5Fsplit.c
./src/H5Fstdio.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5Gpkg.h
./src/H5Gprivate.h
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Ocomp.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Ofill.c
./src/H5Olayout.c
./src/H5Omtime.c
./src/H5Oname.c
./src/H5Oprivate.h
./src/H5Osdspace.c
./src/H5Oshared.c
./src/H5Ostab.c
./src/H5R.c
./src/H5RA.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Snone.c
./src/H5Spoint.c
./src/H5Sprivate.h
./src/H5Sselect.c
./src/H5T.c
./src/H5Tbit.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5V.c
./test/bittests.c
./test/gheap.c
./test/hyperslab.c
./test/istore.c
./test/tmeta.c
./test/trefer.c
./test/tselect.c
./tools/h5debug.c
./tools/h5tols.c
Added checks for Posix.1g types like `int8_t'. If not defined
then H5private.h defines them. Changed all `int8' etc. to
`int8_t'.
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5I.c
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
./src/H5Z.c
Calling H5*_term_interface() resets interface_initialize_g to
FALSE so a subsequent call to H5open() (implied or explicit)
reinitializes global variables properly.
./src/H5private.h
./src/H5Oefl.c
./src/H5S.c
Changed MAX_SIZET, MAX_SSIZET, MAX_HSIZET, and MAX_HSSIZET to
SIZET_MAX, SSIZET_MAX, HSIZET_MAX, and HSSIZE_MAX to they
match the Posix.1 constants in <limits.h>.
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5detect.c
Added 36 more integer hardware conversion functions to the
type conversion table for conversions to/from `long long' and
`unsigned long long'. The `long long' names will be changed
shortly to make them portable to Win32.
Changed H5T_init() to H5T_native_open() and added an
H5T_native_close() to open and close the predefined native
data types.
Increased the initial size of the type conversion table from
64 to 128 entries.
Reordered the 90 new integer conversion functions so the names
that are printed favor `int' over `short' or `long' when two
of them are the same.
./test/dtypes.c
Added hardware and software integer conversion tests for the
56 functions I added recently but not the additional 36
checked in this time. That will come next.
Call H5close() after each test so type conversion statistics
are easier to follow. Try this: $ HDF5_DEBUG=t ./dtypes
Added more debugging output for when things go wrong.
./src/H5private.h
Removed trailing carriage-returns inserted by broken operating
system ;-)
----------------------
./config/conclude.in
./test/Makefile.in
./tools/Makefile.in
The Makefile $TESTS variable has finally been split into
$TEST_PROGS and $TEST_SCRIPTS with the latter being the names
of shell scripts that need to be run with `/bin/sh'. Now we
don't have to copy each shell script before we run it. NOTE:
THIS CHANGE DOES NOT AFFECT THE PABLO MAKEFILE SINCE THAT FILE
IS A COPY OF A PREVIOUSLY GENERATED MAKEFILE.
./src/Makefile.in
Added H5Snone.c to the source list.
./src/H5G.c
Plugged a memory leak by emptying the object type "isa" table
when the library is closed.
./src/H5Tconv.c
./src/H5Tpkg.h
Added 48 new type functions to take advantage of hardware for
integer type conversions. These functions are not registered
in the conversion table yet because I haven't fully tested
them.
./src/H5Tpkg.h
Removed __unused__ qualifiers from prototypes.
----------------------
./INSTALL
Added instructions about specifying a path for GNU zlib and
HDF4 headers and library.
Added comments for each of the tool names. Added h5toh4 as a
tool name.
./configure.in
./conigure [REGENERATED]
./src/H5config.h.in [REGENERATED]
The config/* scripts get invoked with $CC_BASENAME set the
base name of the compiler in order to make it easier to handle
setting compiler flags for different compilers in a big case
statement. For instance, if $CC has the value
/usr/local/mpi/bin/mpicc -ansi -64
then $CC_BASENAME will be `mpicc'. The $CC_BASENAME is not
set if $CC is not set.
Fixed alignment in `configure --help'.
An include and/or library path can be specified for GNU zlib
if configure can't find it in normal places. The "normal"
means wherever your compiler normally searches, including
search paths you've added through environment variables like
CPPFLAGS and LDFLAGS. The INSTALL file has instructions.
The `-ljpeg' library is detected.
If `ssize_t' is not found then a #define is added to
H5config.h similar to what we already do for `size_t'.
We detect the hdf5 header file `mfhdf.h' and libraries
`-lmfhdf' and `-ldf' and if found define the H5TOH4 and
TESTH5TOH4 Makefile variables. The user can specify an
include and/or library path. The INSTALL file has
instructions.
The `RUNTEST' variable has been split into `RUNSERIAL' and
`RUNPARALLEL' because these are different commands. The
makefile still uses `RUNTEST', which defaults to the RUNSERIAL
value. The new testpar/Makefile.in sets RUNTEST to the
RUNPARALLEL value. The default RUNSERIAL value is empty and
the default RUNPARALLEL value is `mpirun -np 2'. These can
both be overridden in the config/* files. To make the value
the empty string set it like `RUNPARALLEL=none' in the
config/* file.
The new testpar/Makefile is generated from testpar/Makefile.in
./config/commence.in
Added the RUNSERIAL and RUNPARALLEL makefile definitions.
./src/Makefile.in
The `H5detect' program is run with RUNSERIAL, which is empty
on all platforms except intel-osf1 (ASCI/Red)
./config/conclude.in
Removed the `.c.a:' implicit rule -- we don't use it any more.
./config/BlankForm
./config/alpha-dec
./config/alpha-dec-osf4.0
./config/freebsd2.2.7
./config/hpux10.20
./config/hpux9.03
./config/intel-osf1
./config/irix5.3
./config/irix6.2
./config/irix64
./config/linux
./config/powerpc-ibm-aix4.2.1.0
./config/rs6000-ibm-aix4.1.4.0
./config/solaris2.5
All of these files have been updated to hande multiple
compilers. Most of them assume `cc' if CC is not set. The
documentation in `BlankForm' has been updated and
documentation in the other files refer to `BlankForm'.
The intel-osf1 uses LDFLAGS instead of LIBS to specify the extra
library search paths.
./examples/Makefile.in
./test/Makefile.in
./tools/Makefile.in
Simplified by grouping some dependency information together
more succinctly.
The tools Makefile.in has been modified to work with the
`h5toh4' and `testh5toh4' programs. Until Paul checks these
in you may have problems compiling. If so, just create files
h5toh4.c and testh5toh4.c that contain:
#include <stdio.h>
int main(int argc, char *argv[]) {
fprintf(stderr, "%s: not implemented\n", argv[0]);
return 1;
}
./src/H5public.h
Removed definition for `ssize_t' since this is now handled by
configure in H5config.h with a #define.
./MANIFEST
./testpar/Makefile.in [NEW]
Added a makefile for parallel tests. As soon as we get this
working properly we can remove the other four makefiles in
that directory and maintain just one.
----------------------
./tools/h5ls.c
The chunk dimensions and total size is printed for chunked datasets.
./examples/h5_attribute.c
./examples/h5_select.c
./test/chunk.c
./test/iopipe.c
./test/ragged.c
./src/H5.c
./src/H5private.h
./src/H5public.h
Removed extra carriage-return characters inserted by a broken
OS :-)
Reformatted strange-looking comments.
Removed C++ comments.
Wrapped long lines.
./examples/h5_attribute.c
./examples/h5_select.c
Removed inclusion of private headers.
Changed `uint32' (originally `uint') to `unsigned' because
`int32' is not exported as part of the API.
./src/H5Fmpio.h
Removed includes for <sys/types.h> and <sys/stat.h> since
they're already included by H5private.h. All system include
files should be included in H5private.h so we can wrap them
with appropriate feature macros.
./tools/h5import.c
./tools/h5repart.c
Included header files like all other programs in that
directory.
./tools/h5tools.c
Better type checking for `hsize_t' and `hssize_t'.
----------------------
./configure.in
./acconfig.h
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
Added checks for functions, structs, constants, and header
files used in h5ls.c to determine the output width with
various Windows compilers and Unix variants.
Added check for <sys/stat.h> and defined
HAVE_SYS_STAT_H. Included <sys/stat.h> in H5private.h outside
the Posix.1 #include's section.
./src/H5RA.c
Less aggressive about failing -- rather returns false, which
allows type detection to continue.
./src/h5ls.c
Data types are displayed for datasets and named data types when
`-v' or `--verbose' is specified on the command-line. The
algorithm is a little different than the dumper because we're
trying to be human-friendly, not necessarily machine-friendly.
* Any data type which matches a native C type gets printed
something like `native double'.
* A floating point type that matches one of the IEEE standard
types but not one of the native types gets printed like `IEEE
64-bit big-endian float'.
* Other floating point values have information about sign bit
location; exponent size, location, and bias; and significand
size, location, and normalization.
* Padding and offsets are displayed for types that have
padding (precision != size), including internal padding for
some floating point data types.
* Non-native integer types are displayed like `32-bit
little-endian unsigned integer'.
* Compound data types have each member displayed including the
member name, byte offset within the struct, dimensions, index
permutation, and data type.
* String types are displayed like `256-byte null-terminated
ASCII string'.
* References are displayed like `8-byte unknown reference'
until the reference interface stabilizes a little.
* All other types including types not yet defined will be
printed like `4-byte class-9 unknown'.
The dimensionality of scalar datasets is printed like `{SCALAR}'
instead of just `{}'.
If external raw files are used to store a dataset then the offsets,
sizes, and file names of each are printed if `-v' or `--verbose'
was given on the command-line.
If an object is found and h5ls can't determine the object type then
it still tries to print the number of hard links, the OID, and any
comment that might be present if `-v' or `--verbose' was specified.
If the `-d' or `--dump' switch is turned on then ragged arrays will
report that the data can only be dumped by dumping the component
datasets explicitly. I'm not planning to implement this since
we're going to eventually change the whole way ragged arrays are
stored.
Compound data values do not have the component names displayed by
default when `-v' or `--verbose' is turned on. Instead, the names
can be displayed with `-l' or `--label'.
The output width is determined by the first rule that applies:
* If the `-wN', `-w N' or `--width=N' switch appeared on
the command line then use N for the output width.
* Query the OS for the tty width in a highly unportable way
borrowed from GNU `less' depending on what functions and
data structures were found during configuration (if any):
_getvideoconfig(), gettextinfo(), _srcsize(), ioctl(),
GetConsoleScreenBufferInfo(), struct videoconfig, struct
text_info, the TIOCGWINSZ ioctl, the TIOCGETD ioctl.
* If the `COLUMNS' environment variable is set then use
its value.
* Use the value 80.
Just for kicks, run Mark and Jim's test_vbt and then say `h5ls -dlsv
test.vbt'. You can also try it on the various *.h5 files in the
test/example directories.
./config/linux
Removed turning on parallel by default on Robb's macine.
----------------------
./bin/snapshot
Made same fix as for the release script yesterday.
./src/H5D.c
./src/H5Dprivate.h
./src/H5G.c
./src/H5Gprivate.h
./src/H5Gpublic.h
./src/H5O.c
./src/H5Oprivate.h
./src/H5RA.c
./src/H5RAprivate.h
./src/H5T.c
./src/H5Tprivate.h
Improved object type checking. Instead of determining the
object type by trying to open each of the possible types, we
keep a table of associations between object type number (like
H5G_GROUP, H5G_DATASET, H5D_TYPE, and H5D_RAGGED) and an `isa'
function that returns true if the object header has the right
messages to make the object a particular type. This mechanism
also allows specialization of object types by permitting an
object to satisfy more than one `isa' function.
Added `isa' functions for groups, datasets, ragged arrays, and
committed data types.
./src/H5config.h.in
Added HAVE_STAT_ST_BLOCKS. I thought this had already been
added, but apparently not.
./tools/h5ls.c
Removed system include files since they're already included by
H5private.h and since I wasn't including them portably anyway.
By default, 1-byte integer types are printed as integer values
instead of ASCII characters. However, the `-s' or `--string'
command-line switch causes the data to be interpretted as
ASCII. String data types are always printed as character
data.
Ragged arrays are now identified as ragged arrays and h5ls
doesn't descend into the group automatically. This uses the
new object type specialization stuff.
./tools/h5tools.c
./tools/h5tools.h
Added the ability to print 1-byte integer types as either
ASCII or numeric data instead of always ASCII. The default is
to print as numeric data.
----------------------
./MANIFEST
Added new Pablo files HDF5record_RT.h and ProcIDs.h
./acconfig.h
./configure [REGENERATED]
./configure.in
./src/H5.c
./src/H5Vprivate.h
./src/H5config.h.in [REGENERATED]
./src/H5private.h
./src/H5public.h
./test/big.c
Added more configuration stuff for the Win32 environment. Removed all
the #ifdef WIN32 from the source and replaced them with OS-independent
stuff. Specifics follow:
Check for non-Posix.1 `st_blocks' field in `struct stat' which is used
by the big file test to decide if the file system supports holes. If
the st_blocks field isn't present then we just skip the test.
Configure checks for <io.h> <sys/resource.h> <sys/time.h> and
<winsock.h> and defines HAVE_IO_H, HAVE_SYS_RESOURCE_H,
HAVE_SYS_TIME_H and HAVE_WINSOCK_H when they're found.
Configure checks whether both <sys/time.h> and <time.h> can be
included and defines SYS_TIME_WITH_TIME if so. Otherwise include only
<sys/time.h> or <time.h> even if both exist.
Configure checks sizeof(__int64) and defines SIZEOF___INT64 to the
result or to zero if __int64 isn't defined. The source uses `long
long' in preference to `__int64'.
Removed null WIN32 definition for `inline' since such a definition
already exists in H5config.h
Protected gettimeofday() calls in debugging code with
HAVE_GETTIMEOFDAY instead of WIN32.
./src/H5F.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fsec2.c
./src/H5Fstdio.h
./src/H5P.c
./src/H5Tconv.c
./src/H5private.h
Removed #include of system files from library source files and
consolodated them into H5private.h where they're protected by various
configuration macros (most of them were duplicated there already
anyway).
./test/big.c
./test/chunk.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/external.c
./test/fillval.c
./test/flush1.c
./test/flush2.c
./test/iopipe.c
./test/links.c
./test/mount.c
./test/mtime.c
./test/overhead.c
./test/ragged.c
./test/shtype.c
./test/unlink.c
Protected system #include's with #ifdef's from H5config.h.
Undefined NDEBUG since some of the tests rely on assert() to check
return values.
Removed WIN32 definitions for __unused__ since this can be controlled
by the definition of HAVE_ATTRIBUTE in H5config.h
./test/testhdf5.h
Removed the CLEAN_CMD definition because we no longer use it.
Albert's cleanup() functions replaced it.
./test/fillval.c
Initialized auto hid_t variables to fix warnings in error recovery
code when data flow analysis is turned on in compilers.
./test/h5tools.c
Initialized an auto variable to fix a compiler warning.
./test/chunk.c
./test/ragged.c
The WIN32 had some unsigned variables changed to signed because the
compiler generates warnings when coercing unsigned to double(?). I
changed them back to unsigned because they really are unsigned
quantities. If this the change was just to shut up extraneous warnings
then perhaps a compiler flag can do the same; otherwise if the
compiler generates bad code then we should supply a patch file instead
messing up source code with bug work-arounds.
./src/H5detect.c
Protected system #include's with #ifdef's from H5config.h thereby
removing a WIN32.
If getpwuid() doesn't exist (HAVE_GETPWUID) then we assume that
`struct passwd' doesn't exist either (we don't really need it in that
case).
The H5T_NATIVE_LLONG and H5T_NATIVE_ULLONG are defined in terms of
`long long' or else `__int64' or else `long' depending on what's
available.
./src/H5Flow.c
./src/H5Ofill.c
Added __unused__ to some function arguments that aren't used when
assertions are turned off.
./src/H5V.c
Changed an auto variable name in some hand-inlined code to get rid of
a warning about the variable shadowing a previous auto.
----------------------
./MANIFEST
./test/th5s.h5 [NEW]
./test/th5s.c
Added a test to make sure that creating a data space with too
large a rank fails.
Added a test to make sure that reading a file that has a
dataset with a space with too large a rank fails. Actually,
this one is a little weird: the code that reads the data space
message assumes the space is scalar if the message cannot be
read. Fortunately the layout message fails also, preventing
the dataset from being opened. However, since the data type
message is still visible h5ls will report that the object is a
named data type.
./test/space_overflow.c [NEW]
This is the little program that makes the th5s.h5 file.
./src/H5A.c
./src/H5R.c
./src/H5Sselect.c
Updated trace info.
./src/H5Olayout.c
./src/H5Osdspace.c
Added code to fail if the dimensionality is too large when
decoding a layout or simple data space message.
./src/H5Oprivate.h
Redefined H5O_LAYOUT_NDIMS in terms of H5S_MAX_RANK.
./src/H5P.c
./src/H5S.c
Check for ndims>H5S_MAX_RANK in API function calls, added
assert to internal functions.
./src/H5V.c
Changed a `<' to an `<=' in an assert.
./test/flush2.c
Includes stdlib.h for getenv().
./tools/h5tools.c
Able to handle up to H5S_MAX_RANK dimensions during output.
----------------------
./src/H5F.c
./src/H5Fprivate.h
./src/H5G.c
./src/H5Gpkg.h
./src/H5Gprivate.h
./src/H5Gpublic.h
./test/istore.c
./test/tstab.c
Removed CWG functionality.
./tools/Makefile.in
Added `_test' where I added `test' last week. Maybe now the
snapshots will start up again...
----------------------
./src/H5D.c
Fill values are working for contiguous datasets now except
there are two things that need more support from the data
space layer, specifically the ability to form a selection from
the difference of two selections. They are (1) extending an
external contiguous dataset, (2) optimization by delaying the
fill until after the first H5Dwrite().
Renamed H5D_allocate() to H5D_init_storage() since allocation
is only part of the story. Added a data space argument so it
doesn't have to query the space from the object header -- the
space is always available in the caller anyway.
Removed `#ifdef HAVE_PARALLEL' from a few places where it
wasn't necessary. We don't need it around code that doesn't
compile anything from mpi.h or mpio.h.
./src/H5Fistore.c
Uncommented H5F_istore_alloc() for non-parallel and moved the
`#ifdef HAVE_PARALLEL' just around Kim's barrier.
./src/H5Fmpio.c
Wrapped a couple long lines.
Got rid of two signed vs. unsigned comparison warnings.
./MANIFEST
./test/Makefile.in
./test/fillval.c [NEW]
Added tests for fill values. The contiguous dataset extend
test is disabled until H5S_SELECT_DIFF is implemented.
./tools/Makefile.in
Fixed a bug where `make test' didn't build the executables
first. This should cause the snapshots to start up again.
./Makefile.in
Changed to build in `test' directory before `tools'
directory. We want the library tests to pass before we even
start considering the tools. You can still build and/or test
the tools independent of the library tests passing.
----------------------
./src/H5D.c
./src/H5Fistore.c
./src/H5Fprivate.h
Fixed a couple things for parallel hdf5 that I broke with the
last checkin.
./src/H5Ofill.c
If no fill value is specified it isn't added to the object
header.
./tools/h5ls.c
Added a line-feed after `Unknown object' is printed.
./tools/h5tools.c
Fixed printing of scalar values. Need to still track down a
failed assertion when H5Sselect_hyperslab() is called with a
zero size....