make extracted files and directories readonly
This commit is contained in:
parent
88f4ca66d7
commit
25e98489c0
|
@ -6,12 +6,13 @@ import importlib_resources as resources
|
|||
from io import BytesIO
|
||||
from pathlib import Path
|
||||
import os
|
||||
from os.path import relpath, splitext
|
||||
from os.path import relpath, splitext, join
|
||||
import random
|
||||
import re
|
||||
import readline
|
||||
import shutil
|
||||
import sqlite3
|
||||
import stat
|
||||
import textwrap
|
||||
import unicodedata
|
||||
from urllib.parse import urlparse
|
||||
|
@ -96,6 +97,9 @@ PDF_INLINE_IMAGE_REGEX = re.compile(r'(^|\s)(BI|ID|EI)($|\s)')
|
|||
|
||||
SUGGESTED_WORKS_COUNT = 10
|
||||
|
||||
READONLY_FILE = stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH
|
||||
READONLY_DIR = READONLY_FILE | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
|
||||
|
||||
debug_mode = False
|
||||
def debug(s):
|
||||
if debug_mode:
|
||||
|
@ -120,6 +124,12 @@ def open_rarfile_with_encoding(path):
|
|||
print(f'{path} contains filenames with unknown character encoding!')
|
||||
exit(1)
|
||||
|
||||
def readonly(path):
|
||||
for parentdir, dirs, files in os.walk(path, topdown=False):
|
||||
for f in files:
|
||||
os.chmod(join(parentdir, f), READONLY_FILE, follow_symlinks=False)
|
||||
os.chmod(parentdir, READONLY_DIR, follow_symlinks=False)
|
||||
|
||||
def extract(args):
|
||||
absolute_archive_paths = set(path.resolve(strict=True) for path in args.archives)
|
||||
|
||||
|
@ -136,6 +146,8 @@ def extract(args):
|
|||
work_extract_path.mkdir(parents=True)
|
||||
z.extractall(path=work_extract_path)
|
||||
|
||||
readonly(work_extract_path)
|
||||
|
||||
if args.remove:
|
||||
archive_path.unlink()
|
||||
|
||||
|
@ -154,6 +166,8 @@ def extract(args):
|
|||
work_extract_path.mkdir(parents=True)
|
||||
r.extractall(path=work_extract_path)
|
||||
|
||||
readonly(work_extract_path)
|
||||
|
||||
if args.remove:
|
||||
for vol in volumes:
|
||||
vol.unlink()
|
||||
|
|
Loading…
Reference in a new issue