File 0176-Use-a-portable-method-for-removing-a-line-from-a-fil.patch of Package erlang
From 0a09e6198c1f7df2eaf7fecb5737947635c49890 Mon Sep 17 00:00:00 2001
From: Michal Palka <michal.palka@hiq.se>
Date: Thu, 15 Apr 2021 16:26:41 +0200
Subject: [PATCH 2/3] Use a portable method for removing a line from a file
---
lib/ssl/test/make_certs.erl | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/lib/ssl/test/make_certs.erl b/lib/ssl/test/make_certs.erl
index 0efa776be2..ea655df782 100644
--- a/lib/ssl/test/make_certs.erl
+++ b/lib/ssl/test/make_certs.erl
@@ -184,17 +184,25 @@ revoke(Root, CA, User, C) ->
gencrl(Root, CA, C).
%% Remove the certificate's entry from the database. The OCSP responder
-%% will consider the certificate unknown.
+%% will consider the certificate to be unknown.
remove_entry(Root, CA, User, C) ->
Db = filename:join([Root, CA, "index.txt"]),
- Cmd = ["grep", " -v"
- " \"/CN=", User ,"/\" ", Db,
- " > ", Db, "~new"],
- cmd(Cmd, []),
- Cmd2 = ["mv ", Db, "~new ", Db],
- cmd(Cmd2, []),
+ remove_line_with_pattern(Db, "/CN=" ++ User ++ "/"),
gencrl(Root, CA, C).
+remove_line_with_pattern(File, Pattern) ->
+ {ok, Bin} = file:read_file(File),
+ AllLines = string:lexemes(Bin, [$\n,"\r\n"]),
+ MaybeRemove = fun(Line, Acc) ->
+ case string:find(Line, Pattern) of
+ nomatch -> [Line|Acc];
+ _ -> Acc
+ end
+ end,
+ RevLines = lists:foldl(MaybeRemove, [], AllLines),
+ Lines = lists:join("\n", lists:reverse(RevLines)),
+ ok = file:write_file(File, iolist_to_binary(Lines)).
+
gencrl(Root, CA, C) ->
%% By default, the CRL is valid for a week from now.
gencrl(Root, CA, C, 24*7).
--
2.26.2