mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 20:59:03 -05:00
fix: search past a folder this user cannot open
One closed folder under HOME (~/.config/EmuDeck at 000) made the whole detection return nothing: a RetroArch whose retroarch.cfg was readable was lost and the run fell back to a folder it does not read. Every detection probe now goes through _exists, _is_dir or _is_file, which count a refused place as absent, name the closed folder once, and let the other probes go on. The decorator stays as the last net. The refusal is an unsearched event before detect. The interface keeps the line above the list of setups. At HOME or a drive root A goes into a visible subfolder, never a card or drive row nor .cache, and with none it stays on Use this folder and says where it is. A default folder taken because the platform was not found is no longer called detected.
This commit is contained in:
1 parent
fd33ad0d96
commit
d2ba7e18ba
7 files changed
+387
-83
No files matched your search
+8
-1
@@ -1288,6 +1288,7 @@ other schemas under `api/v1/schemas/`.
|
||||
| Kind | Keys | When |
|
||||
|------|------|------|
|
||||
| `start` | `schema`, `installer`, `mode` | First line. `schema` is 1, `installer` the identity `--version` prints, `mode` one of `install`, `check`, `dry-run`, `list` |
|
||||
| `unsearched` | `folder`, `reason`, `message` | Before `detect`, once for each folder the search for setups could not look in, this user being refused it. What it would hold counts as absent, and the other places are still searched: `detect` then lists what they hold, and an empty `platforms` after an `unsearched` line means nothing was found where the installer could look. `reason` says why in words (`Permission denied`), `message` says it in a sentence |
|
||||
| `detect` | `os`, `os_name`, `platforms` | Once the platforms are known. `os_name` comes from `/etc/os-release`. `platforms` lists `{platform, name, bios_dir}`, and is empty when nothing supported was found |
|
||||
| `error` | `stage`, `reason`, `platform`, `message` | The file list could not be read (`stage` is `manifest`): `reason` is `network`, `not_found` or `invalid`, `clock` when the server's certificate was refused and the system clock reads a date before the installer was written, `no_ca` when the machine holds no list of trusted certificates (`SSL_CERT_FILE` names one), or `offline` when `--offline` forbids the request. A folder named with `--from` cannot be read (`stage` is `from`, `reason` `not_found`, `not_a_folder` for a file that is no ZIP, `unreadable`, or `system` for the root of the system, `/proc`, `/sys` or `/dev`). The BIOS folder sits under a folder this user cannot open (`stage` is `dest`, `reason` `unreadable`), and the run ends with code 1 before anything is written. Two systems are detected on one machine and no `--dest` names the folder (`stage` is `detect`, `reason` `conflict`). `message` says it in words |
|
||||
| `scanned` | `folder`, `files`, `truncated`, `other_drives` | Each folder named with `--from`, once read and before `detect`. `files` counts the files found, `truncated` is true when the search stopped at 200,000 of them, and `other_drives` lists the folders below it on another drive, which were not entered |
|
||||
@@ -1306,7 +1307,7 @@ other schemas under `api/v1/schemas/`.
|
||||
| `summary` | `mode`, `installed`, `up_to_date`, `pending`, `failed`, `skipped`, `left_out`, `kept`, `interrupted` | The outcome. `pending` counts what a next run would still fetch, `failed` lists `{dest, reason}`, `skipped` lists `{reason, label, files, required}` for the files the collection cannot supply, `left_out` lists `{category, label, files, dests}` for what `--no-game-data` left out, and is empty without it. `kept` lists `{folder, files, bytes}`, one per backup folder, for the files in place the run moved aside before replacing them (with `--dry-run`, would move), and is empty when none. Not written for a listing |
|
||||
| `end` | `code` | Last line, with the exit status the process returns (see [Exit status](#exit-status)) |
|
||||
|
||||
Schema 1 can gain a kind (`found` came with `--from`, `declared` with `--declared-only`), never a key of an
|
||||
Schema 1 can gain a kind (`found` came with `--from`, `declared` with `--declared-only`, `unsearched` with the search that goes on past a closed folder), never a key of an
|
||||
existing kind: a reader skips a kind it does not know. An option refused
|
||||
before the run starts (`install.py: error:`, code 2) writes
|
||||
no event at all. A program reads a missing `end` as that case, or as a
|
||||
@@ -1388,6 +1389,12 @@ starts: `this user cannot open /root (Permission denied), which holds
|
||||
/root/.config/retroarch/system`. The full-screen interface says the same on
|
||||
the folder screen and asks for another folder.
|
||||
|
||||
A folder the search for setups cannot open (`~/.config/EmuDeck` left to root
|
||||
by a `sudo` run) is named once, `Could not look for setups: this user cannot
|
||||
open ...`, and the search goes on everywhere else: a RetroArch whose
|
||||
`retroarch.cfg` is readable is still found at the folder it reads. The
|
||||
full-screen interface keeps that line above the list of setups.
|
||||
|
||||
A file system mounted read-only refuses root too, so the installer does not
|
||||
suggest `sudo` for it. Linux remounts a card or drive read-only after an error,
|
||||
an unclean removal for one: check it (`fsck`, or `chkdsk` on Windows) and
|
||||
|
||||
Reference in new issue
Block a user