summaryrefslogtreecommitdiffstats
path: root/tools/h5recover/h5recover.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2008-07-20 02:32:47 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2008-07-20 02:32:47 (GMT)
commitd08619bfe1a3cbc593bdaae5a5bd393e1d33f150 (patch)
tree57ec6ef4e2167462f2a10b5739b0f79f2299584d /tools/h5recover/h5recover.c
parent90497050b818e914ab814e40811b1c0ff98384ea (diff)
downloadhdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.zip
hdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.tar.gz
hdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.tar.bz2
[svn-r15388] Description:
Convert object header cache client to use the new metadata journaling cache, which included adding a new client for handling continuation chunks. Added "real" protect calls around modifying chunks in object headers. Switched a few more metadata cache library API routines to drop the file pointer, when it is not needed (pinning/unpinning entries, etc.) Fixed bug in journaling cache handling of 'image_len' callbacks and also changed cache to retry deserializing entries when the entry's size is larger than the speculative size initially tried. Retrying for 'image_len' callbacks has problems with the 'multi' VFD, so the h5dump and FORTRAN 'multi' tests are commented out, until the changes to the 'multi' VFD from the file free space branch are brought back into the trunk. Currently, the 'h5recover' tool has a bug which requires it to be run twice before replaying the journal "sticks". However, this is from an earlier checkin, since the code in the branch already has this behavior... :-( 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.5.4 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'tools/h5recover/h5recover.c')
-rw-r--r--tools/h5recover/h5recover.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/tools/h5recover/h5recover.c b/tools/h5recover/h5recover.c
index 0dfb421..f47abcd 100644
--- a/tools/h5recover/h5recover.c
+++ b/tools/h5recover/h5recover.c
@@ -19,6 +19,7 @@
#include "h5tools.h"
#include "h5tools_utils.h"
#include "H5private.h"
+#include "H5Iprivate.h"
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
@@ -103,8 +104,9 @@ leave(int ret)
*
*-------------------------------------------------------------------------
*/
-int
-file_copy(char * file_from, char * file_to){
+static int
+file_copy(char * file_from, char * file_to)
+{
FILE * from;
FILE * to;
@@ -191,7 +193,7 @@ main (int argc, const char *argv[])
int last_trans_found = 0; /* bool */
char * tok[11]; /* string tokens */
int i; /* iterator */
- haddr_t address; /* address to write to */
+ off_t address; /* address to write to */
haddr_t eoa; /* end of address of file */
uint8_t * body; /* body of journal entry */
size_t size; /* size of journal entry body */
@@ -623,9 +625,9 @@ main (int argc, const char *argv[])
/* do a quick string compare on two items */
if (HDstrcmp((const char *)body, (const char *)compare_buf) != 0) {
error_msg(progname, "Entry incorrectly written into HDF5 file. Exiting.\n");
- printf("Address %llx:\n", address);
- printf(" -- from journal: %llx\n", body);
- printf(" -- from HDF5 file: %llx\n", compare_buf);
+ printf("Address %llx:\n", (unsigned long_long)address);
+ printf(" -- from journal: '%s'\n", body);
+ printf(" -- from HDF5 file: '%s'\n", compare_buf);
leave( EXIT_FAILURE );
} /* end if */
@@ -633,7 +635,7 @@ main (int argc, const char *argv[])
for (i=0; i<size; i++) {
if (body[i] != compare_buf[i]) {
error_msg(progname, "Entry incorrectly written into HDF5 file. Exiting.\n");
- printf("Address %d\n", address + i);
+ printf("Address %llx\n", (unsigned long_long)(address + i));
printf(" -- from journal: %d\n", body[i]);
printf(" -- from HDF5 file: %d\n", compare_buf[i]);
leave( EXIT_FAILURE );
@@ -737,5 +739,3 @@ main (int argc, const char *argv[])
} /* end main */
-
-