summaryrefslogtreecommitdiff
path: root/libarchive/archive_write_set_format_mtree.c
diff options
context:
space:
mode:
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>2011-03-18 15:58:06 -0400
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>2011-03-18 15:58:06 -0400
commit511f36a504b22eac10baf343048e337b7dbf4df6 (patch)
tree3f38df867db58442c2ef38a03774d4bdf4f238d9 /libarchive/archive_write_set_format_mtree.c
parentde2299acc3c6b2a81e3a23c76f9f8451b95092bc (diff)
downloadlibarchive-511f36a504b22eac10baf343048e337b7dbf4df6.tar.gz
Do not process sum if a file is not a regular file.
Fix r3028. SVN-Revision: 3030
Diffstat (limited to 'libarchive/archive_write_set_format_mtree.c')
-rw-r--r--libarchive/archive_write_set_format_mtree.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libarchive/archive_write_set_format_mtree.c b/libarchive/archive_write_set_format_mtree.c
index c014f825..f10afe30 100644
--- a/libarchive/archive_write_set_format_mtree.c
+++ b/libarchive/archive_write_set_format_mtree.c
@@ -966,7 +966,8 @@ write_entry(struct archive_write *a, struct mtree_entry *me)
}
/* Write a bunch of sum. */
- sum_write(mtree, str, me);
+ if (me->filetype == AE_IFREG)
+ sum_write(mtree, str, me);
archive_strcat(str, "\n");
if (mtree->indent)
@@ -1012,7 +1013,8 @@ archive_write_mtree_finish_entry(struct archive_write *a)
return (ARCHIVE_OK);
mtree->mtree_entry = NULL;
- sum_final(mtree, me);
+ if (me->filetype == AE_IFREG)
+ sum_final(mtree, me);
if (mtree->set.output) {
if (!mtree->dironly) {
@@ -1072,7 +1074,8 @@ archive_write_mtree_data(struct archive_write *a, const void *buff, size_t n)
if (mtree->mtree_entry == NULL)
return (n);
- sum_update(mtree, buff, n);
+ if (mtree->mtree_entry->filetype == AE_IFREG)
+ sum_update(mtree, buff, n);
return (n);
}