Commit Graph

394 Commits

Author SHA1 Message Date
Vailin Choi
5ad99f2c31 [svn-r14794] Use putenv() instead of setenv() in test/links.c
(solaris did not support setenv() and unsetenv())
2008-04-03 23:16:53 -05:00
Vailin Choi
04c174bde0 [svn-r14789] Add handling for external link:
1. src/H5F.c, src/H5system.c: formulate path for mainfile
2. src/H5Lexternal.c: add search for target file
3. configure.in: add H5_HAVE_WINDOW_PATH
4. test/links.c: add tests for external link
2008-04-02 13:29:17 -05:00
Quincey Koziol
6878261a43 [svn-r14353] Description:
- Add hash value for skip list string types, to reduce # of string
        comparisons.
    - Fixed bug with metadata/small data block aggregator adding size == 0
        block into file free space list.
    - Refactored metadata/small data block aggregator code into single set of
        common routines.
    - Changed block aggregator code to be smarter about releasing space in the
        'other' block when the 'other' block has aggregated enough data.

Tested on:
        FreeBSD/32 6.2 (duty) in debug mode
        FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
        Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
                                in debug mode
        Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
                                in production mode
        Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
                                in production mode
        Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
                                w/szip filter, in production mode
        Mac OS X/32 10.4.10 (amazon) in debug mode
        Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2007-12-20 15:36:08 -05:00
Quincey Koziol
2f36ea99d4 [svn-r14284] Description:
Add H5Lvisit_by_name() API routine to library.

	Eliminated all (five!) other group traversal routines and changed them
all to use the new API routine.

	Cleaned up output of h5ls & h5stat:
		- Issue error when requesting recursive traversal of a file
			with the "group info" flag, but no group given
		- Print info about root group in all(?) appropriate situations
		- Don't print "verbose" information about root group until the
			root group is in the list of objects to display
	(mostly because h5ls & h5stat had a different twist on traversing the
groups in a file that the other utilities)

Tested on:
        FreeBSD/32 6.2 (duty) in debug mode
        FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
        Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
                                in debug mode
        Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
                                in production mode
        Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
                                in production mode
        Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
                                w/szip filter, in production mode
        Mac OS X/32 10.4.10 (amazon) in debug mode
        Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2007-11-24 11:49:36 -05:00
Quincey Koziol
579284f422 [svn-r14144] Description:
Move H5Gget_objinfo() to deprecated symbols section and retarget
internal usage to H5Lget_info()/H5Oget_info().

	Misc. other code cleanups...

Tested on:
	FreeBSD/32 6.2 (duty)
	FreeBSD/64 6.2 (liberty)
	Linux/32 2.6 (kagiso)
	Linux/64 2.6 (smirom)
	AIX/32 5.3 (copper)
	Solaris/32 2.10 (linew)
	Mac OS X/32 10.4.10 (amazon)
2007-09-13 10:44:56 -05:00
Scott Wegner
21134e48e1 [svn-r13916] Purpose: Fix MinGW inconsistency
Description:
Windows does not accept the buffer size parameter of setvbuf to be less than 2.  Previously, we had our fix split between two files, H5private.h and the Windows H5pubconf.h.  This was a problem for MinGW, because it generates its own H5private.h.  This moves the fix out of H5pubconf.h and into H5private.h.

This shouldn't affect other platforms.

Tested:
MinGW on WinXP
2007-06-26 11:23:59 -05:00
Scott Wegner
87a41d4286 [svn-r13766] In Visual Studio 2005 for 64-bit, _WIN32 is defined, but not WIN32, so I've standardized all #ifdef's to use _WIN32. This should not affect any other platform.
Tested:
Visual Studio (32- and 64-bit) on Win XP
2007-05-18 10:14:43 -05:00
Elena Pourmal
c0d407a481 [svn-r13754] VMS port:
Updated command files; added "extern "C"" for HDremove_all function.

Platforms tested:

VMS server; kagiso - very minor and affects only VMS
2007-05-15 17:14:10 -05:00
Raymond Lu
156f8bc690 [svn-r13694] 1. changed the HDlseek to be lseek64 and HDfseek to be fseeko if available, to support big
files.  2. added a check in test/big.c to make sure the system supports big file.

Tested on smirom because already tested the same changes for v1.6 on liberty, smirom, 
copper, and sol.
2007-04-23 13:57:51 -05:00
Elena Pourmal
e43364f036 [svn-r13435] Changed prototype of HDremove_all function to use const char * instead of char *
This function is only used on VMS

Platforms tested:
	kagiso, VMS is still going.
2007-02-28 17:15:27 -05:00
Quincey Koziol
6b12e9769f [svn-r13419] Description:
Fix error introduced into driver info block size computation, which caused
the test/big test to fail.

Tested on:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
2007-02-27 12:48:57 -05:00
Quincey Koziol
552bb205b9 [svn-r13413] Description:
Further cleanups to superblock code:
		- Move most of the ISOHM-specific code into the H5SM module
		- Make only one checksum, for combined superblock & driver info
			block

	Minor other cleanups, etc.

Tested on:
	Mac OS X/32 10.4.8 (amazon)
	FreeBSD/32 6.2 (duty)
2007-02-27 10:57:04 -05:00
Albert Cheng
ed7d456e51 [svn-r13253] Updated all C and C++ style source code files with the THG copyright notice.
Tested platform:
Kagiso only since it is only a comment block change.  If it works in one
machine, it should work in all, I hope.  Still need to check the parallel
build on copper.
2007-02-07 09:56:24 -05:00
James Laird
4c62c0aa8a [svn-r13252] Moved definition of uint32_t from H5private.h to H5public.h, since it's now
used in H5Opublic.h.

This should fix build errors on Windows.

Tested on kagiso; will test on Windows immediately after checkin.
2007-02-07 09:22:34 -05:00
Quincey Koziol
dc41c73711 [svn-r13167] Description:
Get rid of two different types of fill value struct (merge H5O_fill_t
and H5O_fill_new_t) and clean up & simplify dataset initialization code.
        (In preparation for shared object header message method call
refactoring).

Tested on:
        FreeBSD/32 6.2 (duty)
        Mac OS X/32 10.4.8 (amazon)
2007-01-22 16:07:54 -05:00
James Laird
26fc682d8d [svn-r13153] Added checksum to superblock and driver info block (in latest version of
superblock).
Tried to standardize sizes and added #defines to H5Fpkg.h so that hopefully
the code is a little easier to read.
Of course this is a file format change.

Tested on Windows, juniper, smirom, kagiso.
2007-01-18 10:27:14 -05:00
Quincey Koziol
0bd83631d5 [svn-r12990] Description:
When using the latest version of the file format, move the "modification
time" information into the object header prefix, which is more efficient.
Also add "access time" and "change time" (for metadata) fields, all of which
take about the same space as the previous modification time header message.

Tested on:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
2006-11-28 12:43:54 -05:00
Quincey Koziol
2f694358c4 [svn-r12972] Description:
Move the definition of the typedef for uint64_t from H5private.h to
H5public.h (to fix Windows builds)

Tested on:
    None - just eyeballed.
2006-11-22 13:20:15 -05:00
James Laird
b6c317f27c [svn-r12902] Checkin of Shared Object Header Message work.
This feature is still in progress; Shared Object Header Messages are not
complete as a feature and are not thoroughly tested.  There are still
"TODO" comments in the code (comments with the word "JAMES" in them,
so as not to be confused with other TODO comments).

Hopefully this checkin will reduce the liklihood of conflicts as I finish
implementing this feature.

All current tests pass on juniper, copper (parallel), heping, kagiso, and mir.
2006-11-13 15:41:36 -05:00
Quincey Koziol
2355d25955 [svn-r12894] Description:
Add H5Lget_name_by_idx routine & tests

    Move more H5G routines to deprecated API file

Tested on:
    FreeBSD/32 4.11 (sleipnir) w/threadsafe
    Linux/32 2.4 (heping) C++ & FORTRAN
    Linux/64 2.4 (mir) w/build-all & enable_compat1.6
    AIX/32 5.? (copper) w/parallel & FORTRAN
2006-11-12 06:56:10 -05:00
Quincey Koziol
0a2cdffb0b [svn-r12868] Description:
Make API routines that don't initialize the library more consistent, to
help with future internal library changes.

Tested on:
    Linux/64 2.6 (chicago2)
2006-11-06 14:22:33 -05:00
Raymond Lu
0f84d2fb15 [svn-r12841] Bug fix. The mechanism to handle interupted system call or partial I/O for reading data
may not work well for Direct I/O because of the requirement for data alignment.  Took it out.
2006-11-01 16:01:14 -05:00
Quincey Koziol
16a95636a3 [svn-r12768] Description:
Add 'initval' parameter to "lookup3" checksum routine (and implicitly to
the metadata checksum routine), to allow chaining several checksums together
easily (which isn't used by these modules, but will be used in my next checkin)

Tested on:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
2006-10-16 17:57:56 -05:00
James Laird
79bc4a9b03 [svn-r12703] Using int64_t in H5Lpublic.h caused errors on Windows, where int64_t is only
defined in H5private.h.

Moved definition of int64_t from H5private.h to H5public.h as a temporary
solution.

Tested on heping and Windows (windows also needed H5Gdense.c and H5Gbtree2.c
to be added to hdf5 project).
2006-10-02 12:08:28 -05:00
Quincey Koziol
d3a12e1058 [svn-r12661] Description:
Add 'loookup3' checksum routine and switch to using it for metadata
checksums - it's just as "strong" as the CRC32 and about 40% faster in general
(with some compiler optimizations, it's nearly as fast as the fletcher-32
algorithm).

Tested on:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
2006-09-12 10:25:35 -05:00
Quincey Koziol
46467e91b0 [svn-r12649] Description:
Add a CRC algorithm to the library, initially for "small" (<256 byte)
metadata blocks.

    Update checksum tests to verify it's working correctly.

Tested:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
    (Will be testing on more platforms after checkin)
2006-09-05 18:06:54 -05:00
Quincey Koziol
5c5f9e8e28 [svn-r12612] Description:
Provide more abstract internal routine for computing checksums on metadata
in a file.  This will allow a unified policy on which algorithm to choose and
under what criteria (length probably) to be more easily maintained.

Tested On:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
2006-08-22 12:50:25 -05:00
Quincey Koziol
5fe34046c0 [svn-r12605] Description:
Break out a bunch of the misc. routines that were in src/H5.c into more
specific modules.

    Add optimized fletcher32 checksum routine, for checksumming metadata as
well as raw data.

Tested On:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
    Will test further after checkin...
2006-08-21 18:27:11 -05:00
James Laird
3e755623cb [svn-r12528] Added User-Defined links to the library.
Users can create external links using H5L_create_external().  These links
point to an object in another HDF5 file.  Users can alter the behavior of
external links or create new kinds of links by registering callbacks
using the H5L interface.

Added tests, tools support, etc.

Also a number of other, minor changes have been made (some restructuring of
the H5L interface, for instance).

Additional documentation and examples are forthcoming.
2006-08-02 18:41:53 -05:00
Quincey Koziol
7be3afb278 [svn-r12440] Purpose:
Code cleanup

Description:
    Trim trailing whitespace in Makefile.am and C/C++ source files to make
diffing changes easier.

Platforms tested:
    None necessary, whitespace only change
2006-06-27 09:45:06 -05:00
Quincey Koziol
7b6db1046b [svn-r12349] Purpose:
Code checkpoint

Description:
    Checkpoint fractal heap improvements, as well as move the free space
manager code that it's using into a separate package.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Linux 2.4/64 (mir) w/C++ & FORTRAN
    Linux 2.4/32 (heping)
    Solaris 2.9 (shanti)
    AIX 5.? (copper) w/FORTRAN & parallel
2006-05-14 23:35:53 -05:00
Albert Cheng
84b03a51c7 [svn-r12348] Purpose:
Bug fix.

Description:
Some machines (e.g., HPUX) will have off64_t defined but no support
for stat64 unless certain LargeFile macro is turned on.  This caused
the last fix on H5private not quite right which caused compiling failures.

Solution:
Added stat64 and fstat64 tests and then will use them only if they
are supported.

Platforms tested:
Tested on kelgia, copper and heping (pll).
(Compiling alright but tests for kelgia and heping are not done.
expect no problems.)
2006-05-14 00:09:25 -05:00
Albert Cheng
b415a49c9e [svn-r12342] Purpose:
bug fix.

Description:
Previous H5private.h would attempt to use the off64_t/stat64/etc
by checking just sizeof __INT64 being 8.  This caused errors in
some machines like alpha cluster which is a 64bit machine.  Its
compiler supports the type __int64 but it does not support
off64_t since its off_t is already 64bits big.  The above code
casued the compiler to complain about the unknown off64_t and
such.

Solution:
H5private.h:
Changed the code to use the pseudo standard of off64_t/stat64/etc
only if sizeof(off_t) is not 64 bits AND sizeof(off64_t) exists
and is 64 bits.  This assumes if off64_t is defined, all those
stat64, fstat64, etc are supported too.

configure.in:
configure:
Added the testing of sizeof(off64_t) to support the above solution.

Platforms tested:
h5committested.  Also tested at LANL QSC.
2006-05-10 17:29:25 -05:00
Quincey Koziol
c6e532afb9 [svn-r12320] Purpose:
code cleanup

Description:
    Finish H5FS->H5CS internal API name changes...

Platforms tested:
    FreeBSD 4.11 (sleipnir) w/ & w/o --enable-codestack
2006-05-01 22:17:49 -05:00
Binh-Minh Ribler
7e5de2473b [svn-r12286] Purpose: Fix bug
Description:
    The file size test in C++ library failed on Copper because the
    value returned by h5_get_file_size was intepreted incorrectly
    due to different interger sizes.

Solution:
    H5private.h: Added check to use stat64 and off64_t where appropriate.
    h5test.c and h5test.h: used h5_stat_size_t in place of off_t.
    tattr.cpp: used h5_stat_size_t in place of off_t.

Platforms tested:
    Linux 2.4 (heping)
    AIX 5.1 (copper)
    SunOS 5.8 64-bit (sol) - still on going
2006-04-20 01:09:51 -05:00
MuQun Yang
54f02fdaf2 [svn-r12139] Purpose:
portibility issue to windows
Description:
setvbuf on visual studio 2005 needs the size to be greater or equal to 2.
<description of setvbuf from msdn library>
Buffer size in bytes. Allowable range: 2 <= size <=
INT_MAX (2147483647). Internally, the value supplied
for size is rounded down to the nearest multiple of 2.

h5import used linebuffer option of setvbuf for stderr and stdout and the size is
0 by default. This causes core dump with visual 2005 on windows 64-bit.

Solution:
1. Use HDsetvbuf inside h5import.c,
2. Define HDsetvbuf inside windows H5pubconf.h for windows to work around
   the core dump of h5import test. This is probably a bug inside visual studio 2005.

Platforms tested:
h5committest
windows 6.0 at XP
visual 2005 at XP-64bit

Misc. update:
2006-03-22 21:20:12 -05:00
Elena Pourmal
391e474379 [svn-r12138] Purpose: VMS port
Description: Unix remove function removes only the latest version of a file
             on VMS. Some of our tests create multiple versions of the testfiles
             and as a result, test programs may be confused, give false negative result,
             etc.

Solution: Created HDremove_all function for VMS that removes all versions of the files.
          HDremove on VMS is an alias to HDremove_all.

Platforms tested: VMS server and heping (to check that nothing is borken on UNIX side)

Misc. update:
2006-03-22 17:52:07 -05:00
Quincey Koziol
2db47ff504 [svn-r12125] Purpose:
Code checkpoint

Description:
    Update fractal heap code to insert & read heaps up to 64MB in size
(with my current configuration paramaters) and add initial support for
iteratively walking down nested indirect blocks.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Linux 2.4 (chicago)
    Solaris 9 (shanti)
    Linux 2.4 (mir) w/64-bit
2006-03-20 21:59:06 -05:00
Quincey Koziol
3597bbd700 [svn-r12114] Purpose:
Code cleanup

Description:
    Re-alphabetize the POSIX routines (again).  Also, add proper prototype
to HDrand() definition.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2006-03-17 14:54:40 -05:00
Leon Arber
11a590c02b [svn-r12113] Purpose:
Bug fix

Description:
There was a duplicate definition for HDsrandom and HDsrand left over in H5private.h

Solution:
Removed the two duplicate definitions.

Platforms tested:
heping (minor change)

Misc. update:
2006-03-17 12:24:35 -05:00
Leon Arber
bac394c495 [svn-r12110] Purpose:
Optimization

Description:
Get rid of unnecessary function call for systems that don't have rand_r.

Solution:
If rand_r isn't present on a system, then macros can be used to simply call
the underlying random function instead of calling the HDrand/HDsrand functions
that keep track of the random seed within the library.


Platforms tested:
heping (minor change)

Misc. update:
2006-03-16 16:35:32 -05:00
Quincey Koziol
58db790d25 [svn-r12104] Purpose:
Code cleanup

Description:
    Re-alphabetize POSIX macros.

Platforms tested:
    None, just eyeballed, too minor.
2006-03-16 13:49:29 -05:00
Quincey Koziol
81e95888f1 [svn-r12082] Purpose:
Bug fix

Description:
    Clean up a few code mis-matches that crept in during the last checkin.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5commitest
2006-03-11 21:02:50 -05:00
Quincey Koziol
2501750f5e [svn-r12081] Purpose:
New feature

Description:
    Update "power of two" macro and add "general" log2() routine.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2006-03-11 17:04:30 -05:00
Elena Pourmal
3f791d1b06 [svn-r12054] Purpose: VMS port
Description: Made small changes to sec2 driver to reflect that VMS systems ino_t is 1dim array
             of size 3; all changes are marked with H5_VMS variable.
             Defined HDremove macro for VMS to remove multiple versions of the files.

Solution:

Platforms tested: heping, VMS server

Misc. update:
2006-03-09 16:30:19 -05:00
Fang Guo
de56ebab0e [svn-r12035] Purpose:
Description:
Two functions (HDsrand and HDrand) are not declared. They caused
compiling errors on Windows.  Declare these two functions:
 H5_DLL int HDrand();
 H5_DLL void HDsrand(unsigned int seed);

Solution:

Platforms tested:
Windows XP and heping
Misc. update:
2006-03-07 15:40:47 -05:00
Leon Arber
840bcbe9ef [svn-r12019] Purpose:
Bug fix/Feature

Description:
Modify the library to use rand_r, when available, instead of srand.  If
rand_r is not available, it will try to use srandom/random, and then finally
fall back to srand/rand.

Solution:
A couple places in the library use the srand() function to seed the random
number generator.  This can cause problems on certain platforms and could theoretically
cause problems for users who expect a certain sequence of random numbers following their
own call to srand().

Most platforms have an implementation of rand_r, which is identical to rand, except that
it allows for explicit storage of the seed value.  The configure script will now check
for the existence of rand_r to facilitate its use in the library.

Two new functions are added, to replace the macros HDsrand/HDrand.  These functions are HDrand and
HDsrand.  HDrand will call rand_r, if available, or random(), if available, and fall back to rand() if neither
of those is available.  HDsrand will store the seed value locally, if rand_r is available.  Otherwise, it will call
srandom if available, and fall back to srand otherwise.


Platforms tested:
heping, mir.  Really need to test on Red Storm, since that platform motivated this fix, but the machine
is currently not available.

Misc. update:
2006-03-06 23:23:24 -05:00
Quincey Koziol
dfbf976509 [svn-r12004] Purpose:
New feature & code cleanup

Description:
    Update fractal heap to be able to insert objects into a direct block
hanging off the header.

    Extract "octal dump" code into separate routine so that both the local
heaps & fractal heaps can use it.

    Other code cleanups & support to get this far.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Linux 2.4
2006-03-04 17:56:44 -05:00
Quincey Koziol
83929ea716 [svn-r11838] Purpose:
Bug fix

Description:
    Retrieving an object's name could fail (in various ways) under certain
circumstances (mostly having to do with mounted files).

Solution:
    Re-write & simplify "get object name" code to fix error in a better way
than adding yet another hack to the previous pile of hacks... :-)

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    h5committest
2005-12-26 00:28:18 -05:00
Quincey Koziol
8d344f96bc [svn-r11758] Purpose:
New feature

Description:
    Add in a combination of Peter's & my code to support copying
variable-length data from one file to another, although currently only
supported with contiguous data storage.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    h5committest
2005-12-03 21:27:37 -05:00