From 20a8517caf7f6ad947daccbc7c9741db01010b84 Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.maroneze@cea.fr>
Date: Tue, 8 Aug 2023 14:19:37 +0200
Subject: [PATCH] [frama-c-script] better error handling for list-files command

---
 share/analysis-scripts/list_files.py | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/share/analysis-scripts/list_files.py b/share/analysis-scripts/list_files.py
index 37e5a8bc7ff..20727d9d98f 100755
--- a/share/analysis-scripts/list_files.py
+++ b/share/analysis-scripts/list_files.py
@@ -80,13 +80,17 @@ print("")
 
 files_defining_main = set()
 re_main = re.compile(r"(int|void)\s+main\s*\([^)]*\)\s*\{")
-for fname, file_for_fcmake in files:
-    assert os.path.exists(fname), "file does not exist: %s" % fname
-    with open(fname, "r") as content_file:
-        content = content_file.read()
-        res = re.search(re_main, content)
-        if res is not None:
-            files_defining_main.add(file_for_fcmake)
+for fname, file_for_fcmake in sorted(files):
+    try:
+        with open(fname, "r") as content_file:
+            content = content_file.read()
+            res = re.search(re_main, content)
+            if res is not None:
+                files_defining_main.add(file_for_fcmake)
+    except OSError:
+        print(
+            f"warning: could not read file '{fname}', mentioned in '{arg}'. Skipping check of 'main' function."
+        )
 
 if files_defining_main != []:
     print("")
-- 
GitLab