File tree Expand file tree Collapse file tree 4 files changed +27
-1
lines changed
app/src/main/kotlin/org/fossify/filemanager Expand file tree Collapse file tree 4 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ### Fixed
11+
12+ - Preserve modified date when unzip files ([ #176 ] )
13+
1014## [ 1.1.0] - 2025-05-21
1115
1216### Added
@@ -66,3 +70,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6670[ #120 ] : https://github.com/FossifyOrg/File-Manager/issues/120
6771[ #149 ] : https://github.com/FossifyOrg/File-Manager/issues/149
6872[ #150 ] : https://github.com/FossifyOrg/File-Manager/issues/150
73+ [ #176 ] : https://github.com/FossifyOrg/File-Manager/issues/176
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ import org.fossify.filemanager.R
2626import org.fossify.filemanager.adapters.DecompressItemsAdapter
2727import org.fossify.filemanager.databinding.ActivityDecompressBinding
2828import org.fossify.filemanager.extensions.config
29+ import org.fossify.filemanager.extensions.setLastModified
2930import org.fossify.filemanager.models.ListItem
3031import java.io.BufferedInputStream
3132import java.io.File
@@ -171,7 +172,9 @@ class DecompressActivity : SimpleActivity() {
171172 continue
172173 }
173174
174- val isVulnerableForZipPathTraversal = ! File (newPath).canonicalPath.startsWith(parent)
175+ val outputFile = File (newPath)
176+
177+ val isVulnerableForZipPathTraversal = ! outputFile.canonicalPath.startsWith(parent)
175178 if (isVulnerableForZipPathTraversal) {
176179 continue
177180 }
@@ -187,6 +190,7 @@ class DecompressActivity : SimpleActivity() {
187190 fos!! .write(buffer, 0 , count)
188191 }
189192 fos!! .close()
193+ outputFile.setLastModified(entry)
190194 }
191195
192196 toast(R .string.decompression_successful)
Original file line number Diff line number Diff line change @@ -101,6 +101,7 @@ import org.fossify.filemanager.extensions.config
101101import org.fossify.filemanager.extensions.isPathOnRoot
102102import org.fossify.filemanager.extensions.isZipFile
103103import org.fossify.filemanager.extensions.setAs
104+ import org.fossify.filemanager.extensions.setLastModified
104105import org.fossify.filemanager.extensions.sharePaths
105106import org.fossify.filemanager.extensions.toggleItemVisibility
106107import org.fossify.filemanager.extensions.tryOpenPathIntent
@@ -693,6 +694,7 @@ class ItemsAdapter(
693694 val fos = activity.getFileOutputStreamSync(newPath, newPath.getMimeType())
694695 if (fos != null ) {
695696 zipInputStream.copyTo(fos)
697+ File (newPath).setLastModified(entry)
696698 }
697699 }
698700 }
Original file line number Diff line number Diff line change 1+ package org.fossify.filemanager.extensions
2+
3+ import net.lingala.zip4j.model.LocalFileHeader
4+ import java.io.File
5+
6+ fun File.setLastModified (localFileHeader : LocalFileHeader ) {
7+ setLastModified(localFileHeader.lastModifiedOrCurrentTimeMillis)
8+ }
9+
10+ private val LocalFileHeader .lastModifiedOrCurrentTimeMillis
11+ get() = if (lastModifiedTimeEpoch == 0L ) {
12+ System .currentTimeMillis()
13+ } else {
14+ lastModifiedTimeEpoch
15+ }
You can’t perform that action at this time.
0 commit comments