many others, a complete list can be found in the file AUTHORS.
This program is Free Software; you can redistribute it and/or
modify it under the terms of version two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ License as published by the Free Software Foundation and included
+ in the file LICENSE.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
#include <sys/paths.h>
#endif
+#if !defined(HAVE_FDATASYNC)
+#define fdatasync(fd)
+#endif
+
+
/* ===============================================================
*
* U N I X AND W I N D O W S
static char buf[20];
switch (stream) {
- case STREAM_GZIP_DATA:
- return _("GZIP data");
- case STREAM_SPARSE_GZIP_DATA:
- return _("GZIP sparse data");
- case STREAM_WIN32_DATA:
- return _("Win32 data");
- case STREAM_WIN32_GZIP_DATA:
- return _("Win32 GZIP data");
case STREAM_UNIX_ATTRIBUTES:
- return _("File attributes");
+ return _("Unix attributes");
case STREAM_FILE_DATA:
return _("File data");
case STREAM_MD5_DIGEST:
return _("MD5 digest");
+ case STREAM_GZIP_DATA:
+ return _("GZIP data");
case STREAM_UNIX_ATTRIBUTES_EX:
return _("Extended attributes");
case STREAM_SPARSE_DATA:
return _("Sparse data");
+ case STREAM_SPARSE_GZIP_DATA:
+ return _("GZIP sparse data");
case STREAM_PROGRAM_NAMES:
return _("Program names");
case STREAM_PROGRAM_DATA:
return _("Program data");
case STREAM_SHA1_DIGEST:
return _("SHA1 digest");
+ case STREAM_WIN32_DATA:
+ return _("Win32 data");
+ case STREAM_WIN32_GZIP_DATA:
+ return _("Win32 GZIP data");
case STREAM_MACOS_FORK_DATA:
- return _("HFS+ resource fork");
+ return _("MacOS Fork data");
case STREAM_HFSPLUS_ATTRIBUTES:
- return _("HFS+ Finder Info");
+ return _("HFS+ attribs");
+ case STREAM_UNIX_ATTRIBUTES_ACCESS_ACL:
+ return _("Standard Unix ACL attribs");
+ case STREAM_UNIX_ATTRIBUTES_DEFAULT_ACL:
+ return _("Default Unix ACL attribs");
case STREAM_SHA256_DIGEST:
return _("SHA256 digest");
case STREAM_SHA512_DIGEST:
return _("Signed digest");
case STREAM_ENCRYPTED_FILE_DATA:
return _("Encrypted File data");
- case STREAM_ENCRYPTED_FILE_GZIP_DATA:
- return _("Encrypted GZIP data");
case STREAM_ENCRYPTED_WIN32_DATA:
return _("Encrypted Win32 data");
+ case STREAM_ENCRYPTED_SESSION_DATA:
+ return _("Encrypted session data");
+ case STREAM_ENCRYPTED_FILE_GZIP_DATA:
+ return _("Encrypted GZIP data");
case STREAM_ENCRYPTED_WIN32_GZIP_DATA:
return _("Encrypted Win32 GZIP data");
case STREAM_ENCRYPTED_MACOS_FORK_DATA:
- return _("Encrypted HFS+ resource fork");
+ return _("Encrypted MacOS fork data");
default:
sprintf(buf, "%d", stream);
return (const char *)buf;
}
}
bfd->berrno = errno;
+ bfd->m_flags = flags;
Dmsg1(400, "Open file %d\n", bfd->fid);
errno = bfd->berrno;
bfd->win32DecompContext.liNextHeader = 0;
#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED)
- if (bfd->fid != -1) {
+ if (bfd->fid != -1 && flags & O_RDONLY) {
int stat = posix_fadvise(bfd->fid, 0, 0, POSIX_FADV_WILLNEED);
Dmsg2(400, "Did posix_fadvise on %s stat=%d\n", fname, stat);
}
if (bfd->fid == -1) {
return 0;
}
+#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
+ if (bfd->m_flags & O_RDONLY) {
+ fdatasync(bfd->fid); /* sync the file */
+ /* Tell OS we don't need it any more */
+ posix_fadvise(bfd->fid, 0, 0, POSIX_FADV_DONTNEED);
+ }
+#endif
/* Close normal file */
stat = close(bfd->fid);