diff --git a/newfol b/newfol index 7dcc4fb..7fa43dc 100755 --- a/newfol +++ b/newfol @@ -13,6 +13,7 @@ import locale import os import os.path import re +import shutil import subprocess import tempfile import urwid @@ -899,6 +900,17 @@ class MenuView(ListView): self.OPTIONS.keys()]) return self._render_listview("Main Menu", self.OPTIONS.keys(), content) +def display_read_only(name): + """Display this file read-only. + + Try very hard to ensure the user does not modify it. + """ + tempdir = tempfile.TemporaryDirectory() + temp = os.path.join(tempdir.name, "view") + shutil.copyfile(name, temp) + os.chmod(temp, 0o400) + subprocess.call(["sensible-editor", temp]) + def display_cheat_sheet(name, loop): if name is None: mbox = MessageBox("No cheat sheet was registered in the schema file.") @@ -908,8 +920,7 @@ def display_cheat_sheet(name, loop): mbox = MessageBox("The cheat sheet file doesn't exist.") mbox.render(loop) return - os.chmod(name, 0o400) - subprocess.call(["sensible-editor", name]) + display_read_only(name) def render_previous_view(loop): if len(DatabaseData().views) > 1: