File 0326-Handle-seconds-in-zip-dos_date_time_from_datetime-1.patch of Package erlang
From 0e483bb07fda7e5e13aae274f7b84bfeb6ceb57d Mon Sep 17 00:00:00 2001
From: Ivan Sokolov <ivan-p-sokolov@ya.ru>
Date: Tue, 27 Jun 2023 06:09:29 +0300
Subject: [PATCH] Handle seconds in `zip:dos_date_time_from_datetime/1`
---
lib/stdlib/src/zip.erl | 3 +++
lib/stdlib/test/zip_SUITE.erl | 13 +++++++++++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/lib/stdlib/src/zip.erl b/lib/stdlib/src/zip.erl
index 0809dbb492..4be9c78d04 100644
--- a/lib/stdlib/src/zip.erl
+++ b/lib/stdlib/src/zip.erl
@@ -1620,6 +1620,9 @@ dos_date_time_to_datetime(DosDate, DosTime) ->
{{YearFrom1980+1980, Month, Day},
{Hour, Min, Sec}}.
+dos_date_time_from_datetime(Seconds) when is_integer(Seconds) ->
+ DateTime = calendar:now_to_datetime({0, Seconds, 0}),
+ dos_date_time_from_datetime(DateTime);
dos_date_time_from_datetime({{Year, Month, Day}, {Hour, Min, Sec}}) ->
YearFrom1980 = Year-1980,
<<DosTime:16>> = <<Hour:5, Min:6, Sec:5>>,
diff --git a/lib/stdlib/test/zip_SUITE.erl b/lib/stdlib/test/zip_SUITE.erl
index 97e5c660dd..3810c0362c 100644
--- a/lib/stdlib/test/zip_SUITE.erl
+++ b/lib/stdlib/test/zip_SUITE.erl
@@ -27,7 +27,8 @@
openzip_api/1, zip_api/1, open_leak/1, unzip_jar/1,
unzip_traversal_exploit/1,
compress_control/1,
- foldl/1,fd_leak/1,unicode/1,test_zip_dir/1]).
+ foldl/1,fd_leak/1,unicode/1,test_zip_dir/1,
+ explicit_file_info/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("kernel/include/file.hrl").
@@ -40,7 +41,8 @@ all() ->
unzip_to_binary, zip_to_binary, unzip_options,
zip_options, list_dir_options, aliases, openzip_api,
zip_api, open_leak, unzip_jar, compress_control, foldl,
- unzip_traversal_exploit,fd_leak,unicode,test_zip_dir].
+ unzip_traversal_exploit,fd_leak,unicode,test_zip_dir,
+ explicit_file_info].
groups() ->
[].
@@ -1054,3 +1056,10 @@ run_command(Command, Args) ->
end
end)().
+explicit_file_info(_Config) ->
+ Epoch = {{1980,1,1},{0,0,0}},
+ FileInfo = #file_info{type=regular, size=0, mtime=Epoch},
+ Files = [{"datetime", <<>>, FileInfo},
+ {"seconds", <<>>, FileInfo#file_info{mtime=315532800}}],
+ {ok, _} = zip:zip("", Files, [memory]),
+ ok.
--
2.35.3