# User preserve list (`preserve.ini`) **Update mode only.** During OmniNX update cleanup (selective deletion), any path listed here with a truthy value is **not** deleted. Paths that would remove a preserved path (parent directory) are skipped as well. - **File:** `sd:/config/omninx/preserve.ini` - If missing or invalid, behavior is unchanged (full update deletion list applies). ## Format Section **`[Preserve]`** (case-sensitive). Each line is **path as key**, **enable flag as value**: ```ini [Preserve] 'sd:/ROMs'=1 sd:/switch/MyHomebrewFolder=0 sd:/backup/tools=1 ``` ### Path (key) - Must start with **`sd:/`** (after optional quoting). - **Optional** matching **single** or **double** quotes around the key are stripped (helps Ultrahand `set-ini-val` and readability). - Trailing slashes are normalized away (except the volume root). - **`sd:/` alone** is rejected (too broad). - Minimum useful length after `sd:/` is enforced (at least one more character). ### Value (enable) **On** if the value starts with `1`, `t`, `T`, `y`, or `Y` (e.g. `1`, `true`, `yes`). Anything else is **off** (path ignored). ### Limits - Up to **96** preserved paths; longer keys truncated internally (~224 bytes per path). - Duplicate paths after normalization are skipped. - The list is allocated on the **heap** only while update cleanup runs (not a large static buffer in IPL IRAM), to avoid crowding hardware-adjacent memory used by Joy-Con UART and similar peripherals. ## Overlap rules For each delete candidate from `deletion_lists_update.h`, deletion is skipped if it **overlaps** any enabled preserve path: - Same path, or - Delete target is **inside** a preserved tree (preserved path is a prefix), or - Delete target is an **ancestor** of a preserved path (deleting it would remove the preserved data). So preserving `sd:/ROMs` also blocks deleting `sd:/ROMs/title` if that were on the delete list, and blocks deleting `sd:/` if `sd:/ROMs` is preserved. ## Ultrahand You can toggle entries with: ```text set-ini-val sd:/config/omninx/preserve.ini Preserve 'sd:/ROMs' 1 ``` and `0` to disable. Use the same quoted path in the key argument as in your INI. ## Clean install **Not used** in clean install mode. `preserve.ini` is only read for **update** cleanup (`update_mode_cleanup`).