summaryrefslogtreecommitdiff
path: root/src/archive.c
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-07-30 09:07:35 +0300
committerTimo Teras <timo.teras@iki.fi>2009-07-30 09:07:35 +0300
commit8e4075e6b1911679ae3da837b5f13fb85c8f01f5 (patch)
treeacf7959f6c590f7bb7dcbd6c49981690f08d397a /src/archive.c
parent49420239c2269971dd09e60b2ded496136a775e7 (diff)
downloadapk-tools-8e4075e6b1911679ae3da837b5f13fb85c8f01f5.tar.gz
apk-tools-8e4075e6b1911679ae3da837b5f13fb85c8f01f5.tar.bz2
apk-tools-8e4075e6b1911679ae3da837b5f13fb85c8f01f5.tar.xz
apk-tools-8e4075e6b1911679ae3da837b5f13fb85c8f01f5.zip
io: fix mmap writing to actually work
apparently it needs to have both PROT_READ and PROT_WRITE. and it needs to be MAP_SHARED for the writing to be effective. oh, and the data needs to be preallocated with ftruncate; otherwise, one gets SIGBUS.
Diffstat (limited to 'src/archive.c')
-rw-r--r--src/archive.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/archive.c b/src/archive.c
index dca99fd..31c0909 100644
--- a/src/archive.c
+++ b/src/archive.c
@@ -331,7 +331,7 @@ int apk_archive_entry_extract(const struct apk_file_info *ae,
break;
case S_IFREG:
if (ae->link_target == NULL) {
- fd = open(fn, O_WRONLY | O_CREAT, ae->mode & 07777);
+ fd = open(fn, O_RDWR | O_CREAT, ae->mode & 07777);
if (fd < 0) {
r = -1;
break;