summaryrefslogtreecommitdiffstats
path: root/lib/libarchive
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2008-02-19 06:10:48 +0000
committerkientzle <kientzle@FreeBSD.org>2008-02-19 06:10:48 +0000
commitfa2b3c3128ef280a166cb83f6f709fd75993e13c (patch)
tree92afef9d76e78df9fb637ce09bff271ef620755e /lib/libarchive
parentefdcbf021b88988e96988ec6094912262831f32d (diff)
downloadFreeBSD-src-fa2b3c3128ef280a166cb83f6f709fd75993e13c.zip
FreeBSD-src-fa2b3c3128ef280a166cb83f6f709fd75993e13c.tar.gz
Include O_BINARY in open() calls on platforms that support it.
Diffstat (limited to 'lib/libarchive')
-rw-r--r--lib/libarchive/archive_read_open_filename.c6
-rw-r--r--lib/libarchive/archive_read_support_format_mtree.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/libarchive/archive_read_open_filename.c b/lib/libarchive/archive_read_open_filename.c
index fa3563a..be3cc9b 100644
--- a/lib/libarchive/archive_read_open_filename.c
+++ b/lib/libarchive/archive_read_open_filename.c
@@ -47,6 +47,10 @@ __FBSDID("$FreeBSD$");
#include "archive.h"
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
struct read_file_data {
int fd;
size_t block_size;
@@ -113,7 +117,7 @@ file_open(struct archive *a, void *client_data)
return (ARCHIVE_FATAL);
}
if (mine->filename[0] != '\0')
- mine->fd = open(mine->filename, O_RDONLY);
+ mine->fd = open(mine->filename, O_RDONLY | O_BINARY);
else
mine->fd = 0; /* Fake "open" for stdin. */
if (mine->fd < 0) {
diff --git a/lib/libarchive/archive_read_support_format_mtree.c b/lib/libarchive/archive_read_support_format_mtree.c
index e6ac99f..d7afb8c 100644
--- a/lib/libarchive/archive_read_support_format_mtree.c
+++ b/lib/libarchive/archive_read_support_format_mtree.c
@@ -50,6 +50,10 @@ __FBSDID("$FreeBSD$");
#include "archive_read_private.h"
#include "archive_string.h"
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
struct mtree_entry {
struct mtree_entry *next;
char *name;
@@ -371,7 +375,8 @@ read_header(struct archive_read *a, struct archive_entry *entry)
* the contents file on disk.)
*/
if (archive_strlen(&mtree->contents_name) > 0) {
- mtree->fd = open(mtree->contents_name.s, O_RDONLY);
+ mtree->fd = open(mtree->contents_name.s,
+ O_RDONLY | O_BINARY);
if (mtree->fd < 0) {
archive_set_error(&a->archive, errno,
"Can't open content=\"%s\"",
@@ -380,7 +385,8 @@ read_header(struct archive_read *a, struct archive_entry *entry)
}
} else {
/* If the specified path opens, use it. */
- mtree->fd = open(mtree->current_dir.s, O_RDONLY);
+ mtree->fd = open(mtree->current_dir.s,
+ O_RDONLY | O_BINARY);
/* But don't fail if it's not there. */
}
OpenPOWER on IntegriCloud