diff options
author | Phil Mesnier <mesnierp@ociweb.com> | 2016-03-16 14:32:25 -0500 |
---|---|---|
committer | Phil Mesnier <mesnierp@ociweb.com> | 2016-03-16 14:32:25 -0500 |
commit | 16ad7d513096e67654e6b22ef5443960d05e1848 (patch) | |
tree | 96f2883830814625495e86df776bf97bdbad88d2 /TAO/tao/Storable_FlatFileStream.cpp | |
parent | 7c7d2672943507e49e1190ccec7d2e8b581a2c6a (diff) | |
download | ATCD-16ad7d513096e67654e6b22ef5443960d05e1848.tar.gz |
Fix for new persistence failures that appeared after earlier commits.
Diffstat (limited to 'TAO/tao/Storable_FlatFileStream.cpp')
-rw-r--r-- | TAO/tao/Storable_FlatFileStream.cpp | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/TAO/tao/Storable_FlatFileStream.cpp b/TAO/tao/Storable_FlatFileStream.cpp index c3eee6b0423..520eb3aebfb 100644 --- a/TAO/tao/Storable_FlatFileStream.cpp +++ b/TAO/tao/Storable_FlatFileStream.cpp @@ -80,44 +80,45 @@ namespace } } - int file_copy(FILE *f1, FILE *f2) + int file_copy (FILE *f1, FILE *f2) { char buffer[BUFSIZ]; size_t n_read; - bool all_read = false; - bool some_read = false; - - while (!all_read) + while (!::feof (f1)) { n_read = ACE_OS::fread(buffer, 1, sizeof(buffer), f1); if (n_read > 0) { if (ACE_OS::fwrite(buffer, 1, n_read, f2) != n_read) - return -1; - some_read = true; - } - else if (!some_read) - { - // Nothing was read - TAOLIB_ERROR ((LM_ERROR, - ACE_TEXT ("TAO: (%P|%t) ERROR: could not read from file\n"))); - - if (ferror (f1)) { - TAOLIB_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) handle = %d, %p\n"), - ACE_OS::fileno(f1), ACE_TEXT ("ACE_OS::fread"))); + ::ferror (f2); + if (TAO_debug_level > 0) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO::Storable_FlatFileStream, file_copy, f2 handle = %d, %p\n"), + ACE_OS::fileno(f2), ACE_TEXT ("ACE_OS::fwrite"))); + } + return -1; } - return -1; } else { - all_read = true; + errno = 0; + if (!::feof (f1)) + { + ::ferror (f1); + if (TAO_debug_level > 0) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO::Storable_FlatFileStream, file_copy, f1 handle = %d, %p\n"), + ACE_OS::fileno(f1), ACE_TEXT ("ACE_OS::fread"))); + } + return -1; + } } } - return 0; } @@ -552,10 +553,13 @@ TAO::Storable_FlatFileStream::create_backup () result = file_copy(this->fl_, backup); if (result != 0) { - TAOLIB_ERROR ((LM_ERROR, - ACE_TEXT ("TAO: (%P|%t) Storable_FlatFileStream::") - ACE_TEXT ("create_backup Unable to create backup ") - ACE_TEXT ("of file %s\n"), file_.c_str ())); + if (TAO_debug_level > 0) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO: (%P|%t) Storable_FlatFileStream::") + ACE_TEXT ("create_backup Unable to create backup ") + ACE_TEXT ("of file %s\n"), file_.c_str ())); + } if (errno != EBADF) { ACE_OS::fclose (backup); |