{"record":{"id":"03053b0791325796","repo":"tonhowtf/omniget","slug":"n-o-li-o-backup","errorCode":null,"errorMessage":"não li o backup {}: {}","messagePattern":"não li o backup (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/hosts_block.rs","lineNumber":724,"sourceCode":"    pub restored_from: Option<String>,\n    pub blocked_before: usize,\n    pub bytes: u64,\n    pub backup: Option<String>,\n    pub needs_admin: bool,\n    pub staged: Option<String>,\n    pub hint: Option<String>,\n    pub error: Option<String>,\n}\n\npub fn restore(opts: &RestoreOptions) -> anyhow::Result<RestoreResult> {\n    let path = resolve_path(&opts.path);\n    let current = std::fs::read_to_string(&path).unwrap_or_default();\n    let blocked_before = count_blocked(&current);\n\n    let (next, restored_from) = match opts.backup.as_ref().filter(|s| !s.trim().is_empty()) {\n        Some(b) => {\n            let text = std::fs::read_to_string(b.trim())\n                .map_err(|e| anyhow!(\"não li o backup {}: {}\", b.trim(), e))?;\n            (text, Some(b.trim().to_string()))\n        }\n        None => (remove_from_text(&current), None),\n    };\n\n    let mut result = RestoreResult {\n        path: path.to_string_lossy().to_string(),\n        dry_run: opts.dry_run,\n        written: false,\n        removed_block: restored_from.is_none() && has_block(&current),\n        restored_from,\n        blocked_before,\n        bytes: next.len() as u64,\n        backup: None,\n        needs_admin: false,\n        staged: None,\n        hint: None,\n        error: None,","sourceCodeStart":706,"sourceCodeEnd":742,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/hosts_block.rs#L706-L742","documentation":"Restore failure in hosts_block restore: the backup file chosen for restoration could not be read (missing, unreadable, or I/O error), so the previous hosts content cannot be recovered and the restore is refused rather than leaving an empty hosts file.","triggerScenarios":"Thrown at src-tauri/omniget-core/src/core/tools/hosts_block.rs:724 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the backup path exists and the app can read it","Restore from an alternative backup if available","Re-run the block operation to generate a fresh backup before restoring"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}