blob: 3f5608b3ae58db16efb88b1d412f533fb1aa5776 [file] [log] [blame]
From 16cbe7582987dc3c6b27bfb7c2648bbf5f8dc268 Mon Sep 17 00:00:00 2001
From: Jeremie Boulic <jboulic@chromium.org>
Date: Wed, 24 Jun 2020 14:29:03 +1000
Subject: [PATCH] Treat file nodes with zero file type bits as regular files
Fixes issue https://bitbucket.org/agalanin/fuse-zip/issues/67
Partial port of https://bitbucket.org/agalanin/fuse-zip/commits/d2d7ec655a5bc0e6f7bec9ac31e75a1334609245
---
lib/fuseZipData.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/lib/fuseZipData.cpp b/lib/fuseZipData.cpp
index 64fdd5d..5391259 100644
--- a/lib/fuseZipData.cpp
+++ b/lib/fuseZipData.cpp
@@ -1,5 +1,5 @@
////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 2008-2019 by Alexander Galanin //
+// Copyright (C) 2008-2020 by Alexander Galanin //
// al@galanin.nnov.ru //
// http://galanin.nnov.ru/~al //
// //
@@ -161,8 +161,14 @@ mode_t FuseZipData::getEntryAttributes(zip_uint64_t id, const char *name, bool &
// force is_dir value
if (is_dir) {
mode = (mode & static_cast<unsigned>(~S_IFMT)) | S_IFDIR;
- } else if ((mode & S_IFMT) == S_IFDIR) {
- mode = (mode & static_cast<unsigned>(~S_IFMT)) | S_IFREG;
+ } else {
+ if ((mode & S_IFMT) == S_IFDIR) {
+ mode = (mode & static_cast<unsigned>(~S_IFMT)) | S_IFREG;
+ }
+ if ((mode & S_IFMT) == 0) {
+ // treat unknown file types as regular
+ mode = (mode & static_cast<unsigned>(~S_IFMT)) | S_IFREG;
+ }
}
isHardlink = (attr & FZ_ATTR_HARDLINK) != 0;
if (isHardlink) {
--
2.27.0.111.gc72c7da667-goog