----------------------
./MANIFEST
./test/Makefile.in
./test/mtime.c [NEW]
Test for the modification time message.
./src/H5AC.c
./src/H5Fistore.c
Turned off printing of statistics on H5close() if H5AC_DEBUG
isn't defined.
----------------------
./MANIFEST
./doc/html/H5.format.html
./src/H5O.c
./src/H5Oprivate.h
./src/H5Omtime.c [NEW]
./src/H5private.h
./src/Makefile.in
Added the modification time message. If an object header has
this message then it's value is updated with the current time
whenever anything changes in the object header.
./acconfig.h
./configure.in
Alas, there seems to be no standard way to convert a string
time like 19980727122800 in UTC to a time_t since mktime()
only converts local times to time_t. So I've modified the
configuration to check for various ways of getting the time
zone information:
* Added checks for the `tm_gmtoff' field of `struct tm'.
* Added a check for the `timezone' global variable.
* Added a check for `struct timezone'.
* Added a check for BSDgettimeofday().
* Added a check for gettimeofday() although it doesn't
actually set the timezone argument on some systems.
* Added a check to see if `tm_zone' is a member of `struct tm'.
* Added a check to see if `tzname' is a global variable.
* Added a check to see if `struct tm' is defined in time.h
or sys/time.h.
It's not difficult to get the right UTC modification message
into the object header, but some systems might have problems
getting the right time back out (Irix64 is one) and those
systems will report zero for the H5G_stat_t.mtime from an
H5Gstat() call as if the mtime message isn't even present. It
will, however, continue to be updated as normal.
./src/H5G.c
./src/H5Gpublic.h
The H5G_stat_t struct now contains an `mtime' field which will
hold the object modification time. If the object has no
object modification time then the `mtime' will be initialized
to zero.
Fixed a bug in H5G_stat() that caused the `objno' field of the
H5G_stat_t to be set incorrectly on some machines.
./src/H5D.c
Writing to external datasets fail if the hdf5 file is not open
for writing.
A modification time message is added to the dataset object
header when it's created and H5O_touch() is called from
H5D_write() to update that message.
./src/H5T.c
Fixed a bug in H5Tget_member_dims() that caused a segmentation
fault if one of the output array arguments was the null
pointer.
Relaxed the member dimension checking in H5Tinsert_array() so
it can also be used for scalar members.
./test/Makefile.in
Added additional file names to the `mostlyclean' target.
./tools/h5dump.c
./tools/h5tools.h
Increased the temporary buffer size to 1MB.
Added support for printing compound data types with array
members.
When printing H5T_NATIVE_CHAR and H5T_NATIVE_UCHAR we escape
double quote characters.
./tools/h5ls.c
Changed the output format a little because we were starting to
get too much info to fit on a line. Without `--verbose' each
object occupies one line of output. Otherwise, additional
information is printed below the object name: object file
address, comment, and modification time. If `--dump' is given
then the data is printed after the other information.
./test/cmpd_dset.c
Changed the way the dataset is initialized to be more uniform.
----------------------
./src/H5A.c
./src/H5Apublic.h
./test/tattr.c
Switched the order of the second and third argument of
H5Aget_name() to make it consistent with other functions that
take buffers and buffer sizes.
./src/H5G.c
./src/H5Gpublic.h
./src/H5Gprivate.h
The H5Gget_comment() function returns the size of the comment
including the null terminator. If the object has no comment
then zero is returned. If an error occurs then a negative
value is returned.
./MANIFEST
./tools/Makefile.in
./tools/h5tools.h [NEW]
./tools/h5dump.c [NEW]
Created a library for printing values of datasets in a way
that looks nice. It's not done yet, but I needed it for
debugging the contents of files from Jim Reus.
./tools/h5ls.c
Added the `-d' and `--dump' options which cause the contents
of a dataset to be printed. Added `-w N' and `--width=N'
options to control how wide the raw data output should be. If
you want single-column output then say `-w1'.
Printing dataset values can now handle datasets of any integer
or floating point atomic type. As a special case, integers
which are one byte wide are treated a character strings for
now.
Sample output:
$ h5ls --dump --width=60 banana.hdf
ARCHIVE 0:0:0:744 Dataset {52/Inf}
Data:
(0) "U struct complex { double R; double I; };\012V"
(43) " double;\012"
U 0:0:0:2500 Dataset {256/512}
Data: printing of compound data types is not implemented yet
V 0:0:0:3928 Dataset {256/512}
Data:
(0) 0, 0.015625, 0.03125, 0.046875, 0.0625,
(5) 0.078125, 0.09375, 0.109375, 0.125, 0.140625,
(10) 0.15625, 0.171875, 0.1875, 0.203125, 0.21875,
(15) 0.234375, 0.25, 0.265625, 0.28125, 0.296875,
...
----------------------
./src/H5Flow.c
./src/H5Fprivate.h
./src/H5Fsplit.c
Changed the allocation size request from `size_t' to `hsize_t'
because it was overflowing for the `big' test.
./src/H5detect.c
If `long double' and `double' are the same size then we define
H5T_NATIVE_LDOUBLE to be the same as H5T_NATIVE_DOUBLE.
Similarly for `long' vs. `long long' and `unsigned long' vs.
`unsigned long long'.
./test/Makefile.in
Added `big' to the list of tests to normally run.
./test/big.c
Added a check to see if the file system supports holes and if
it doesn't then the test is skipped.
./RELEASE
Added a couple minor details details about API tracing and
symbolic links.
./src/H5public.h
Added comments about the use of hbool_t. Fixed a comment
spelling error.
./test/testhdf5.h
Changed the way the version number is printed. The old method
was `hdf5-1.2.3d' and the new method is `hdf5 version 1.2
release 3'
./tools/h5ls.c
Only prints the max dimension if it differs from the current
dimension or if verbose mode is enabled. Added switches `-?',
`-h', and `--help' to print a usage message. Added switches
`-v' and `--verbose' to generate more verbose output. Added
switches `-V' and `--version' to print the version number and
exit. The version number is printed like: This is h5ls
version 1.0 release 24'
./bin/h5vers [NEW]
This script prints, sets, and/or increments the hdf5 version
number. It can be run from the top directory or any of the
child directories like src, tools, test, etc. Some examples:
$ h5vers # Display current version
1.0.24
$ h5vers -v
version 1.0 release 24 # Display current version.
$ h5vers -s 5.2.8 # Set version and display
5.2.8
$ h5vers -s 2.1
2.1.0
$ h5vers -s hdf5-1.0.24a.tar.bz2
1.0.24
$ h5vers -s 'version 2.0 release 8'
2.0.8
$ h5vers -s 'junk 22 junk 33 more junk 66 and 99 junk'
33.66.99
$ h5vers -i major # Increment from 1.0.24
2.0.0
$ h5vers -i minor # Increment from 1.0.24
1.1.0
$ h5vers -i release # Increment from 1.0.24
1.0.25
$ h5vers ~/hdf5/src/H5public.h # Use an alternate file
1.0.24
./bin/checkapi [NEW]
Run from the src directory with arguments H5[A-Z]*.c and it
will print the locations of each place where an API function
was called from within the library. Use it as the compile or
grep command under Emacs and you can C-x ` through the list.
./bin/debug-ohdr [NEW]
Keeps track of H5O_open() and H5O_close() debugging messages
and lists the file addresses of the object headers that are
opened but never closed. You must enable the `o' debugging at
configuration time and pipe stderr into this script.
./bin/errors
Added a note to indicate that this script no longer works
because of changes in the HRETURN_ERROR() and HGOTO_ERROR()
macros.
./bin/iostats [NEW]
Watches output from the Linux strace program and accumulates
statistics about low-level access to an hdf5 file. The output
is a list of 2d data points which can be plotted by gnuplot to
show file seeking behavior.
./MANIFEST
Added new files.
----------------------
./Makefile.in
./config/commence.in
./config/conclude.in
./config/depend.in
./src/Makefile.in
./test/Makefile.in
Tests are no longer installed for `make install'. Added a new
target `make tests' that builds the tests but doesn't run them.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
Added detection of fork() and waitpid(). If present the
contants HAVE_FORK and HAVE_WAITPID will be defined in
H5config.h.
./test/dtypes.c
Minor tweaks for systems that don't have fork() or waitpid().
./MANIFEST
./tools [NEW]
./tools/Makefile.in [NEW]
./tools/h5debug.c [NEW]
./tools/h5import.c [NEW]
./tools/h5ls.c [NEW]
./tools/h5repart.c [NEW]
Added a tools directory and moved tools from the src directory
to here.
----------------------
./README
./bin/release
The first line of the README file is updated automatically
by the `release' script to associate a date with a release
number. For example:
This is hdf5-1.0.9a released on 1998-06-09 18:00 UTC
Please refer to the INSTALL file for installation instructions.
./src/H5public.h
Release number incremented. This happens automatically now if
you run the `release' script in `-batch' mode. I'll stop
documenting changes to this file unless they're something
other than a release number change.
./MANIFEST
Added Elena's new files.
----------------------
./MANIFEST
Alphabetized. `d' comes before `e' :-)
./bin/release
Added the `-batch' option which causes the script to not ask
questions and to automatically update the minor version
number and set the patch level back to `a'. This is intended
to be used for the daily snapshots:
#! /bin/sh
set -e
cd ~/hdf5
make distclean
make test
bin/release -batch tar compress gzip bzip2
mv ./releases/* /repository
./src/H5Z.c
Removed warnings about unused variables when the zlib.h header
file is present but libz.a isn't.
./INSTALL
./configure.in
./doc/html/tracing.html
Made API tracing the default (you still need to define the
HDF5_TRACE environment variable to get results) and change the
name from `--disable-tracing' to `--disable-trace' to make it
consistent with the other switches.
Changed `site config file' to `host config file' to match the
documentation.
./doc/html/H5.user.html
Added a reference to the `tracing.html' file.
----------------------
./MANIFEST
Added new files from testpar directory.
./config/commence.in
Removed -D_POSIX_SOURCE because hdf5 uses a couple of
non-Posix things when certain debugging flags are switched on.
----------------------
./MANIFEST
./configure.in
./examples/Makefile.in [NEW]
Added a Makefile.in for the examples directory. To generate
the Makefile run configure again.
----------------------
./src/H5Tbit.c
./src/H5Tpkg.h
Fixed a bug in H5T_bit_copy(). Added H5T_bit_get_d() and
H5T_bit_set_d() which treat portions of a bit vector as an
unsigned integer. Added H5T_bit_inc() that increments part of
a bit vector and returns an indication of overflow.
./src/H5Tconv.c
./src/H5Tpkg.h
./test/dtypes.c
Added a slow general floating point conversion which works so
far on Intel, MIPS, and DEC but the test is turned off because
a cast from double to float will cause a SIGFPE on some
systems if an overflow occurs.
Added fast hardware conversions between native floating point
types. This function is also subject to the SIGFPE problem.
./src/H5detect.c
Removed the exponent bias adjustment when the significand
isn't normalized. This is now handled in the conversion
functions instead.
./src/H5T.c
Register new conversion functions.
Plugged a memory leak in the library termination code.
./RELEASE
Added a list of major changes since the first alpha.
./src/H5.c
./src/H5private.h
./src/H5A.c
./src/H5AC.c
./src/H5D.c
./src/H5Ffamily.c
./src/H5Fistore.c
./src/H5G.c
./src/H5Gprivate.h
./src/H5HG.c
./src/H5O.c
./src/H5T.c
./src/H5Tbit.c
./src/H5Tconv.c
Fixed various compiler warnings on Irix64.
./src/H5MM.c
Added PABLO_MASK to this file.
./test/chunk.c
Removed a warning about memcpy().
----------------------
./html/tracing.html NEW
This entire update is to make it possible for the library to
print the name, arguments, and return value of every API call
without requiring any extra work from developers or app
programmers. This file describes how this all works.
./configure.in
Added the `--enable-tracing' switch. If you use it then the
library will include code to print API function names,
argument names and values, and function return values.
However, you must then turn on the tracing by setting the
HDF5_TRACE environment variable to a file descriptor number.
The default is `--disable-tracing' since enabling it causes a
slight increase in library size and a slowdown resulting from
an extra function call for each API function call (I couldn't
even measure the slowdown :-)
./bin/trace NEW
A perl script that synchronizes the H5TRACE() macro calls in
the *.c files with the function return type and formal
argument names and types. If you use GNU make and gcc then
this will be done automatically, otherwise just invoke this
script with the names of one or more .c files. You could do
it by hand to, but encoding argument types is a little tricky
at first.
./config/commence.in
Added the $(TRACE) macro, which defaults to the no-op.
Added -D_POSIX_SOURCE to the compiler command line.
./src/Makefile.in
Override the default for $(TRACE).
./config/depend.in
Automatically calls $(TRACE) to synchronize the H5TRACE()
macros in any source file that changed. As with makefile
dependencies, one way to force synchronization of all files is
to remove the `.depend' file.
./MANIFEST
Added new files.
./src/H5Eprivate.h
Modified HRETURN_ERROR() and HRETURN() for tracing.
./src/H5.c
./src/H5private.h
This is where the real tracing work really happens, in
H5_trace().
./src/H5A.c
./src/H5D.c
./src/H5G.c
./src/H5P.c
./src/H5S.c
./src/H5Z.c
Added H5TRACE() calls to all API functions. You don't really
need these changes if you don't want to merge your stuff
because they can be generated automatically by going to the
hdf5/src directory and saying ../bin/trace *.c
./src/H5T.c
Added H5TRACE() calls. Other stuff below.
./src/H5E.c
./src/H5Epublic.h
Added H5TRACE() calls. Created a type H5E_auto_t for the
`func' argument of H5Eset_auto() and H5Eget_auto() to make
those arguments easier to parse for tracing. It should also
make it clearer for users that don't know how to read
complicated ANSI data types.
./src/H5F.c
Added H5TRACE() calls. Changed a couple `uintn' argument
types in API functions to `unsigned int' since `uintn' part of
the API. Changed a few "can't" and "cant" error messages to
"unable to".
./src/H5Ipublic.h
Removed H5_DIRECTORY from the H5I_group_t enum. It wasn't
used anywhere.
./src/H5Tconv.c
Removed an unused label.
./src/H5Fistore.c
./src/H5Oattr.c
./src/H5Odtype.c
./src/H5T.c
./test/dsets.c
./test/dtypes.c
Fixed a warning about a variable possibly used before it's
initialized. Added __unused__ to turn off some unused
argument warnings that pop up when debugging is turned off and
optimizations are turned on.
----------------------
./src/H5Tbit.c
./MANIFEST
./test/Makefile.in
./test/bittests.c NEW
Finished the bit vector operations and added test cases.
./src/H5Tconv.c
./test/dtypes.c
Finished integer->integer general conversion and added test
cases. Overflows and underflows are handled by substituting
the closest possible value. Examples:
(unsigned)0xffff -> (unsigned) 0xff
( signed)0xffff -> (unsigned)0x0000
(unsigned)0xffff -> ( signed)0x7fff
( signed)0x7fff -> ( signed) 0x7f
( signed)0xbfff -> ( signed) 0xbf
( signed)0x8000 -> ( signed) 0x80
./src/H5private.h
Added definitions for MIN and MAX that take 3 or 4 arguments:
MIN3(), MIN4(), MAX3(), MAX4(). Also added MIN2() and MAX2()
as aliases for MIN() and MAX().
./test/tattr.c
Removed some redundant `&' operators.
./configure.in
./src/H5config.h.in [regenerated]
./src/H5.c
Fixed warnings on DEC where long double is the same as
double.
----------------------
THIS CHECKIN IS FOR QUINCEY -- NOT EVERYTHING WORKS (but it compiles)
MOST OF THE CHANGES ARE FOR BETTER TYPE CONVERSION IN THE NEXT ALPHA
./MANIFEST
./src/H5Tbit.c NEW
./src/Makefile.in
Bit vector operations (not done yet)
./configure.in
Added -lm to the library list, needed by bit-vector operations
and conversion functions.
Removed vestiges of PARALLEL_SRC no longer used by the
makefiles. Albert came up with a better way (that actually
works :-)
./src/H5D.c
No code changes. Split a couple of long lines, refilled a
couple multi-line comments.
./src/H5T.c
./src/H5Tpublic.h
Fixed a bug reported by Jim Reus regarding conversion of
compound data types whose members require conversions which
are satisfied by as-yet unregistered soft conversion
functions.
Added H5T_IEEE architecture, but the funny-looking integer
types will be changed to H5T_BE_ and H5T_LE_ architectures
with the type names changed to match the H5T_NATIVE_ integers.
Added an H5Tconvert() but it hasn't been documented or tested
yet.
./src/H5Tconv.c
./src/H5Tpkg.h
Registered conversion functions integer->integer (a general
case) and integer->float (for a specific case). The
integer->integer conversion depends on the bitvector
operations which aren't finished yet and the int->float
conversion hasn't been retested since it was borrowed from
AIO. Don't look at them yet, they're ugly :-)
./src/H5detect.c
Fixed a typo which caused the msb_pad field of an atomic type
to not be initialized.
./test/dtypes.c
Added a test for number conversions but it's commented out
until the conversion stuff is truly working.
----------------------
./html/Datasets.html
Fixed a couple of typos.
./src/H5.c
Added the `Z' modifier to HDfprintf() for `size_t' sizes. Use
it like this:
HDfprintf(stderr,"size is %Zd\n", (size_t)x);
./src/H5AC.c
./src/H5F.c
./src/H5Fprivate.h
The maximum number of meta data objects that can be cached can
be set from the application (but the library might not honor
it every time; it's a hint).
./src/H5D.c
Changed a warning message so it's not so alarming.
./src/H5Fistore.c
Chunks can be cached.
./src/H5O.c
./src/H5Oprivate.h
Added H5O_copy() and H5O_free() to copy and free messages.
./src/H5P.c
./src/H5Ppublic.h
Added H5Pset_cache() and H5Pget_cache() and changed lots of
"template" to "property list".
./src/H5Z.c
./src/H5Zpublic.h
Miscellaneous little things to clean up. Mostly just removed
H5Z_MAXVAL and added H5Z_USERDEF_MIN and H5Z_USERDEF_MAX.
./MANIFEST
./test/Makefile.in
./test/chunk.c [NEW]
Added a performance test for chunk caching. It looks at the
amount of I/O instead of timing because timing is partly
dependent on the chunk size and I wanted a measurement that
was a function of only the cache size. Run `chunk' with no
arguments and then say `gnuplot x-gnuplot' to see the plots
(press return between plots). Postscript files are created for
each plot.
./test/big.c
./test/cmpd_dset.c
./test/extend.c
./test/external.c
./test/gheap.c
Added H5F_ACC_DEBUG so we can see cache performance
statistics.
----------------------
./src/H5Bprivate.h
./src/H5F.c
./src/H5Ffamily.c
./src/H5Fprivate.h
./src/H5Gpkg.h
./src/H5MF.c
./src/H5P.c
./src/H5Ppublic.h
./test/big.c
./html/Big.html
./html/Files.html
Family members can now be any size >1kB. Got rid of some
places where we were reading a property list after it was
closed.
./MANIFEST
./src/Makefile.in
./src/h5repart.c
A program to repartition file families. The source and/or
destination may be files or file families. Examples:
testhdf5 -c -o stab
h5repart -m 1m tstab2.h5 x%05d.h5
h5repart -m 100k x%05d.h5 y%05d.h5
h5repart y%05d.h5 z.h5
diff tstab2.h5 z.h5
./src/h5ls.c
Added a usage message, replaced assertions with error
messages.
./config/linux
Made a warning message more obvious. Added better
optimization flags for Pentium-Pro's.
----------------------
./bin/release
./src/H5.c
./src/H5private.h
./src/H5public.h
./src/H5Fpublic.h
Changed the version number constants to names that begin with
H5_VERS_ and added macros that check that the version numbers
in the include files match the version number of the library.
./MANIFEST
./html/H5.user.html
./html/Version.html [NEW]
./html/version.obj [NEW]
./html/version.gif [NEW]
Documented version numbers and the macros, constants, and
functions associated with them.
./bin/versinc
A perl script that increments the minor version number and
sets the patch level back to zero. This is intended to be
invoked from the top of the source tree by a cvs commit
anywhere in the source tree. Quincey?
./src/H5O.c
./src/H5Oprivate.h
Added H5O_count() to count the number of object header
messages of a particular type. Quincey needs this for the
attribute package.
./test/dsets.c
Fixed warnings. Enabled the small strip-mine buffer test.
./config/linux
Added optimizations for the Pentium-Pro for production mode.
----------------------
This checkin completes the compression stuff almost two weeks ahead of
schedule. It should now all be working and documented.
./Makefile.in
./config/commence.in
A distclean causes the distribution makefile to be copied to
Makefile again.
./src/H5D.c
Opening a compressed dataset now works properly.
./src/H5P.c
./src/H5Ppublic.h
The H5Pset_compression() and H5Pget_compression() now work as
documented.
./src/H5T.c
Fixed a bug that causes the library to crash sometimes if
debugging is turned on for the `t' package.
./src/H5Z.c
Fixed a bug where the number of bytes attributed to
compression overruns was too low in the debugging output.
./test/dsets.c
More compression tests: reading of uninitialized data, opening
an existing dataset and reading it, partial I/O which isn't
aligned on chunk boundaries, and use of application-defined
compression methods.
./MANIFEST
Removed ./test/dspace.c.
----------------------
./html/Compression.html [NEW]
./html/Datasets.html
./html/H5.format.html
./html/H5.user.html
Documented compression. A couple of the H5P functions aren't
quite implemented yet but they're coming soon...
./src/H5Dprivate.h
./src/H5E.c
./src/H5Epublic.h
./src/H5Farray.c
./src/H5Fistore.c
./src/H5Fprivate.h
./src/H5MF.c
./src/H5MFprivate.h
./src/H5O.c
./src/H5Ocomp.c [NEW]
./src/H5Oprivate.h
./src/H5P.c
./src/H5Ppublic.h
./src/H5Sprivate.h
./src/H5Ssimp.c
./src/H5Z.c [NEW]
./src/H5Zprivate.h [NEW]
./src/H5Zpublic.h [NEW]
./src/Makefile.in
./src/hdf5.h
./test/dsets.c
./test/istore.c
Compression is now mostly working. Don't try to open a
compressed dataset though because the compression message
won't be read.
./html/Datatypes.html
./html/H5.api.html
./src/H5.c
./src/H5private.h
./src/H5D.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5Tpublic.h
Added timing support. When compiled with H5T_DEBUG defined
the library will print conversion bandwidths when the library
closes. The H5Tregister functions take a string as the first
argument so the statistics output is meaningful.
./MANIFEST
Added new files.
./configure.in
./src/H5config.h.in
Check for getrusage(). Check for compress2() in libz.a and
the zlib.h header file. Added `z' to the debug list.
./src/H5B.c
./src/H5Bprivate.h
./src/H5Gnode.c
./src/debug.c
Cleaned up some indentation and added support to print istore
B-trees. From the debugger, give the B-tree address and the
dimensionality from the layout message of the object header.
./src/h5ls.c
The oid is printed as w❌y:z where w and x are the file ID
and y and z are the OID within the file. You can give z or
y*2^32+z as an argument to the debugger to print the object
header for the object.
./src/H5AC.c
Cleaned up statistics and made them match those reported by
H5T and H5Z.
./src/H5MM.c
./src/H5MMprivate.h
./src/H5Fistore.c
Finally got rid of a couple of long-standing const cast
warnings.
----------------------
./html/H5.format.html
./src/H5E.c
./src/H5Epublic.h
./src/H5F.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5Gprivate.h
./src/h5ls.c
./test/Makefile.in
Symbolic links are now supported. The ./test/links program
will create a `links.h5' file that demonstrates hard links,
soft links, dangling links, and recursive links. A symbolic
link is a symbol table entity and doesn't have an object
header. It's format is described in H5.format.hml.
./src/H5G.c
./src/H5Gpublic.h
./src/h5ls.c
Implemented H5Gstat() and H5Gget_linkval() as documented by
Quincey. The `H5G_type_t type' field of `H5G_stat_t' was
changed to `int type' because H5G_type_t was already used and
the `type' data type should be open-ended.
./src/H5Ffamily.c
Removed an incorrect diagnostic message.
./test/big.c
Added read/write calls to test partial I/O to big contiguous
datasets. With no arguments it writes to a dataset and prints
the list of points written which should be redirected to a
file. With an argument (the name of a file containing the
stdout of a run with no arguments) values are read from the
dataset. One would typically say `big >x && big x'.
----------------------
./INSTALL
./INSTALL_MAINT
Updated installation instructions.
./html/Big.html [NEW]
A guide to using big datasets on small machines.
./MANIFEST
Added Big.html and INSTALL.ascired.
./html/Datasets.html
./html/Dataspaces.html
./html/Datatypes.html
./html/Files.html
./html/H5.api.html
./html/H5.intro.html
./html/H5.sample_code.html
./html/H5.user.html
Updated documentation by changing lots of `size_t' arguments
to `hsize_t'. Added line numbers to some examples.
./html/H5.intro.html
Perhaps someone want's to volunteer to make this file
human-readable?
----------------------
./src/H5Osdspace.c
./html/H5.format.html
In the past we were allowed to have >2GB files on a 32-bit
machine as long as no dataset within the file was larger than
4GB (or whatever sizeof(size_t) is). That's been fixed now.
All dataset size calculations are done with `hsize_t' which is
normally defined as `unsigned long long'.
./src/H5F.c
./src/H5Ffamily.c
./src/H5Fprivate.h
./src/H5P.c
./src/H5Ppublic.h
The file family member size can now be set/queried. The
default is still 64MB, but it can be set to 1GB by saying:
H5Pset_family (plist, 30, H5P_DEFAULT);
When opening an existing file family the specified
bits-per-member is ignored and the first member of the family
determines the bits-per-member, which can be retrieved with
H5Pget_family().
./acconfig.h
./configure.in
./src/H5config.h
./src/H5public.h
Added `--disable-hsizet' so that those with old GCC compilers
(<2.8.1) can still compile the code.
./src/H5.c
./src/H5private.h
Added HDfprintf() which works just like fprintf() except you
can give `H' as a size modifier for the integer conversions
and supply an `hsize_t' or `hssize_t' argument without casting
it. For instance:
hsize_t npoints = H5Sget_npoints(space);
HDfprintf(stdout,"Dataset has %Hd (%#018Hx) points\n",
npoints, npoints);
You can now give `%a' as a format to print an address, but all
formating flags are ignored and it causes the return value of
HDfprintf() to not include the characters in the address (but
who uses the return value anyway :-). Example:
H5G_t *grp;
HDfprintf(stdout, "Group object header at %a\n",
&(grp->ent.header));
Added HDstrtoll() which works exactly like [HD]strtol() except
the result is an int64.
./src/debug.c
Large addresses can now be entered from the command-line. Use
either decimal, octal (leading `0') or hexadecimal (leading
`0x') when giving the address.
./src/h5ls.c
The printf format for dataset dimensions was changed to `%Hu'
to support large datasets.
./test/big.c [NEW]
A test for big datasets on 32-bit machines. This test is not
run by default. Don't try to run it on an nfs-mounted file
system or other file system that doesn't support holes because
it creates two 32GB datasets of all zero.
----------------------
./MANIFEST
./test/Makefile.in
./test/shtype.c [NEW]
Added some tests for shared data types.
./configure.in
Removed MF and HL from the default debug list since. MF
because it hasn't been implemented yet and HL because it
produces lots of annoying messages about adjusting the size of
local heaps.
./src/H5F.c
./src/H5T.c
./src/H5Tprivate.h
Fixed a bug with opening the same file twice. The first close
on the file_id incorrectly closed shared data structs.
Closing a file now correctly unshares data types that might be
pointing into that file.
./src/H5T.c
./src/H5Tpublic.h
Added an H5Tis_shared(). The caller supplies a file and a
data type and the function returns true if the data type is
currently marked for sharing in that file.
./src/H5AC.c
./src/H5F.c
./src/H5HL.c
./src/H5HG.c
./src/H5MF.c
./src/H5O.c
We now detect errors sooner when writing to a read-only
file. In the past, the error might not show up until the
cached item was flushed, and it was sometimes possible to not
even get an error!
./src/H5I.c
./src/H5Iprivate.h
If the search function fails then H5I_search() returns
failure. Also, the first argument for the search function
isn't const anymore because we might want the search to have
side effects (like calling H5T_unshare() for all shared data
types whose file just closed).
----------------------
./MANIFEST
./src/Makefile.in
./test/Makefile.in
Added new files.
./config/linux
./src/H5HL.c
./src/H5HLprivate.h
./src/H5MF.c
./src/H5MFprivate.h
Added `-DH5HL_DEBUG -DH5MF_DEBUG' to the debug list.
./html/H5.format.html
Updated shared object message information.
./src/H5D.c
Datasets can now share data types.
./src/H5F.c
Updated a comment that referred to H5ACC_WRITE.
./src/H5HG.c
./src/H5HGprivate.h
Moved a few things around. Made debugging better so you can
now give a collection address to ./src/debug and it shows some
useful stuff.
./src/H5O.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Olayout.c
./src/H5Oname.c
./src/H5Onull.c
./src/H5Oprivate.h
./src/H5Osdspace.c
./src/H5Oshared.c [NEW]
./src/H5Ostab.c
Supports shared messages.
./src/H5T.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5Tpublic.h
The H5Tshare() function allows the user to give the library
hints about how a data type will be used.
./test/shtype.c
Tests the H5Tshare() function.
./test/gheap.c
Tests the global heap.
./configure.in
./config/BlankForm [NEW]
./config/alpha-dec
./config/freebsd2.2.1
./config/hpux10.20
./config/irix6.2
./config/irix64
./config/linux
./config/powerpc-ibm-aix4.2.1.0
./config/rs6000-ibm-aix4.1.4.0
./config/solaris2.5
Cleaned up lots of configuration stuff and made the site
configuration files lots easier and more uniform. To make a
new file grab the BlankForm and modify it.
By default, debugging is turned on for most packages. Within
a package one can use `#ifdef H5AC_DEBUG' to wrap debugging
code. Other options are:
--enable-debug
--enable-debug=yes
The default, most but not all packages.
--disable-debug
--enable-debug=no
--enable-debug=none
The symbol NDEBUG is defined and none of the package
debug symbols.
--enable-debug=all
Debugging is turned on for all packages. This might
produce lots of output.
--enable-debug=g,d
Debugging is turned on for H5G and H5D.
A compile mode is also now supported
--enable-production
--enable-production=yes
The library is compiled with optimizations turned on.
The compiler flags are augmented by adding PROD_CFLAGS
and PROD_CPPFLAGS which are defined in the site config
file.
--disable-production
--enable-production=no
The default. The library is compiled for development
by including DEBUG_CFLAGS and DEBUG_CPPFLAGS defined in
the site config file. This is usually just `-g'.
--enable-production=profile
--enable-production=pg
Builds a library for profiling by including the flags
from PROFILE_CFLAGS and PROFILE_CPPFLAGS defined in the
site config file. This is usullay just `-pg' but it
could include optimization flags as well depending on
the type of profile one wants.
In summary, configure by saying `./configure' and you'll get a
development version of the library. Configure by saying
`./configure --enable-production --disable-debug' and you'll
get a production version with no debugging code.
----------------------
./MANIFEST
./src/H5HG.c [new]
./src/H5HGprivate.h [new]
./src/H5HGpublic.h [new]
./src/Makefile.in
Added global heaps, H5HG. This compiles but is untested.
./src/H5D.c
./src/H5G.c
./src/H5Gnode.c
./src/H5Gstab.c
./src/H5HL.c [renamed from H5H.c]
./src/H5HLprivate.h [renamed from H5Hprivate.h]
./src/H5HLpublic.h [renamed from H5Hpublic.h]
./src/H5Oefl.c
./src/Makefile.in
./src/hdf5.h
./test/theap.c
Renamed local heaps from H5H to H5HL.
./src/H5AC.c
./src/H5ACprivate.h
./src/debug.c
Added debugging support for global heap collections.
./html/H5.format.html
Ripped out the old small object heap documentation and added
documentation for the new global heap.
./html/H5.api.html
./src/H5P.c
./src/H5Ppublic.h
./src/H5F.c
./src/H5Fprivate.h
./src/H5private.h
The H5Pget_version() function no longer returns a small object
heap version number. Instead, each collection of the global
heap has its own version number instead of a single number in
the file boot block.
./bin/release
Omit files marked for removal by CVS even though the removal
hasn't been committed yet.
./test/iopipe.c
Removed warnings about casting unsigned int to double on Irix64.
./MANIFEST
Removed ./test/testpar/phdf5sup.c
----------------------
./src/H5D.c
Zero element requests for H5Dread() and H5Dwrite() succeed.
./src/H5F.c
./src/H5Fprivate.h
All files will have a root group. This greatly simplifies the
library at the expense of ~1k extra bytes in files that have
only one object.
./src/H5D.c
./src/H5Dprivate.h
./html/Groups.html
Functions that used to take a file ID and an object name can
now take a group ID instead of a file ID. This doesn't change
the API, only it's documentation.
./src/H5G.c
./src/H5Gprivate.h
./src/H5O.c
./src/H5Oprivate.h
Removed extra file arguments from some internal functions
since the file pointer can be found from the group pointer or
a symbol table entry (ent->file or H5G_fileof(group)).
Besides, when we eventually implement mounting one file on
another, H5G_namei() might return a different file than what
you gave it, and that file is part of the returned symbol
table entry.
./src/H5G.c
Fixed bug with `.' appearing in a name. It used to hang the
library.
./src/Makefile.in
./src/h5ls.c [NEW]
./MANIFEST
Added `h5ls' a simple program that takes a file name and a
directory and lists the contents of that directory using
H5Giterate().
./test/istore.c
Changed an argument to H5G_create().
./test/tstab.c
Removed test_1 which was testing that files with a single
object don't have a root group. This no longer applies.
----------------------
./src/H5B.c
./src/H5Bprivate.h
./src/H5G.c
./src/H5Gnode.c
./src/H5Gpkg.h
./src/H5Gpublic.h
./src/H5Gstab.c
Implemented H5Giterate(). However, since most functions can't
take a group ID in place of a file ID yet, there's not a whole
lot that the operator can do besides print the name or something.
./test/H5O.c
Fixed writing of four uninitialized bytes to the file as part
of an object header.
./test/istore.c
For some reason, `mpirun -np 1 istore' results in extra
arguments on the command line that istore doesn't understand.
I'm probably forgetting to call some MPI function in
main(). Albert, Kim? So I commented out the `exit(1)' for the
time being.
----------------------
./config/linux
Turned on MPIO if the host name is `arborea' so I always
compile it and realize when I break something instead of
waiting for Albert or Kim to find it.
./MANIFEST
./html/H5.user.html
./html/IOPipe.html [NEW]
./html/pipe1.gif [NEW]
./html/pipe1.obj [NEW]
./html/pipe2.gif [NEW]
./html/pipe2.obj [NEW]
./html/pipe3.gif [NEW]
./html/pipe3.obj [NEW]
./html/pipe4.gif [NEW]
./html/pipe4.obj [NEW]
./html/pipe5.gif [NEW]
./html/pipe5.obj [NEW]
Documented the raw data I/O pipeline.
----------------------
./MANIFEST
./configure.in
./configure
./Makefile.in
./bin/distdep [NEW]
./config/conclude.in
./config/depend.in
./src/.distdep [NEW]
./test/.distdep [NEW]
Added some code so non-GNU systems have a list of dependencies
between the .c files and the .h files. Hopefully this works
and y'all don't have to keep saying `make clean' each time you
change a header.
On systems with GNU make, GCC, and Perl, the dependency
information is generated automatically from rules in
config/depend.in as has always been done. But now extra files
called `.distdep' (for `distributable dependencies) are left
in each directory and these are part of CVS and thus
releases. (A `make dep' will create dependencies on demand
without doing anything else.)
On systems lacking one or more of the tools above, the various
`.distdep' files are inserted into the end of the Makefiles.
If you do developement on one of these systems you'll have to
update the `.distdep' and/or Makefile by hand, or wait until
you have access to a GNU system and do a `make dep'.
----------------------
./MANIFEST
New files
./html/extern1.gif [NEW]
./html/extern1.obj [NEW]
./html/extern2.gif [NEW]
./html/extern2.obj [NEW]
./html/Datasets.html
Documented external raw data storage.
./html/Datasets.html
./html/chunk1.gif [NEW]
./html/chunk1.obj [NEW]
Added a picture and better description for chunking since it
seems that people are thinking chunks are fixed-size at the
file level instead of at the array level.
./src/H5D.c
./src/H5Dpublic.h
./test/external.c
Changed H5Dget_create_parms() to H5Dget_create_plist().
./src/H5D.c
./src/H5Farray.c
./src/H5Fprivate.h
./src/H5Oefl.c
./src/H5Oprivate.h
./src/H5Sprivate.h
./src/H5Ssimp.c
./test/external.c
./test/istore.c
External raw data file I/O for contiguous storage is now
working. The library supports segments of various sizes which
can be scattered throughout multiple files in any order.
./test/Makefile.in
Remove more temporary files.
----------------------
./html/Dataspaces.html
./html/Errors.html
./html/Files.html
./html/H5.api.html
./html/review1.html
./src/H5private.h
./src/H5public.h
./test/dsets.c
./test/dtypes.c
Removed all the types like `int32' and `intn' into private
headers since they violate the naming scheme and pollute
application name space. Besides, our test files only use them
in a handful of places and it's probably useless to export
them to the app. The app is always written in terms of
standard numeric types or its own numeric types and probably
never in terms of HDF5 numeric types. If it were, then the
user would have to copy from their type to hdf5 type for
almost every hdf5 API function call! Same goes for return
values. I also removed SUCCEED/FAIL from the API since apps
should be checking against zero anyway.
if (FAIL==(space=H5Screate_simple(...))) /*wrong*/
if ((space=H5Fcreate_simple(...)<0)) /*right*/
./src/H5.c
Changed arguments of H5version() from `uintn' to `unsigned'.
./src/H5Tpublic.h
./src/H5T.c
Changed return type of H5Tget_nmembers() from `intn' to `int'
./src/H5A.c
./src/H5Aprivate.h
./src/H5Apublic.h
Changed `H5Asearch_func_t' to `H5A_search_func_t' and moved
its definition from the public to the private header file.
./html/H5.format.html
Documented changes made to the external file list (H5O_EFL)
message.
./src/H5D.c
./src/H5Dprivate.h
./src/H5E.c
./src/H5Epublic.h
./src/H5O.c
./src/H5Oefl.c
./src/H5Oprivate.h
./src/H5P.c
./src/H5Ppublic.h
Added partial support for external raw data files. HDF5 can
now describe external raw data files by listing the file
names, offsets, and size for a dataset. However, we will
restrict a dataset to be stored "contiguously" when the
external file list is viewed as a single address space. The
current implementation is unable to read/write to external
files--that will come later this week as will documentation.
For now, take a look at ./test/external.c, particularly the
calls to H5Pset_external().
./test/Makefile.in
./test/external.c [NEW]
./MANIFEST
Added tests for external storage. Note: the read test is
supposed to fail at this point since reading external datasets
is not implemented yet. There is no write test.
./src/H5S.c
./src/H5Sprivate.h
./src/H5Ssimp.c
Added H5S_get_npoints_max() to return the maximum possible
number of data points in a data space.
Added an extra argument to H5S_get_dims() which returns the
maximum dims.
./src/H5F.c
./src/H5Fprivate.h
./src/H5Fpublic.h
./src/H5M.c [DEPRICATED]
./src/H5Mpublic.h [DEPRICATED]
Changed `template' to `property list' in lots of places.
./src/H5Osdspace.c
Removed an extra `\n' from a print statement.
./src/H5S_public.h
Changed H5S_UNLIMITED to the maximum size_t value.
./test/extend.c
"Extendable" is spelled "extendible".
./src/H5Farray.c
./src/H5V.c
./src/H5Vprivate.h
./test/hyperslab.c
Strides are now type ssize_t instead of int. These have
nothing to do with the sample granularity arguments for
hyperslabs, which are also called "strides" in the code.
./test/tstab.c
Changed assumptions about default address and length sizes.
----------------------
./html/Errors.html [NEW]
./html/H5.user.html
./MANIFEST
Documents the new error handling interface and gives examples.
./src/H5.c
./src/H5private.h
./src/H5Apublic.h
./src/H5E.c
./src/H5Eprivate.h
./src/H5Epublic.h
Rewrote error handling. Got rid of `push' overloading and
added a few API functions. The error stack is statically
allocated and not entered into H5A, simplifying error handling
within the error handler. Rudimentary support for threads.
Changed the names of some errors.
./src/H5G.c
./src/H5Gnode.c
./src/H5H.c
./src/H5O.c
./src/H5T.c
Changed H5ECLEAR to H5E_clear().
./src/Makefile.in
Alphabetized source list.
./test/dsets.c
Turned off error reporting around functions that are expected
to fail. Error messages are sent to stdout.
./test/testhdf5.c
./test/testhdf5.h
Turned off automatic error reporting since this file mostly
calls internal functions and does its own error reporting.