mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	key_manager: Make use of IOFile in WriteKeyToFile()
This properly handles unicode-based paths on Windows, while opening a raw stream doesn't out-of-the-box. Prevents file creation from potentially failing on Windows PCs that make use of unicode characters in their save paths (e.g. writing to a user's AppData folder, where the user has a name with non-ASCII characters).
This commit is contained in:
		
							parent
							
								
									8714d40a77
								
							
						
					
					
						commit
						64cbebc58f
					
				| @ -668,23 +668,27 @@ void KeyManager::WriteKeyToFile(KeyCategory category, std::string_view keyname, | ||||
|                                 const std::array<u8, Size>& key) { | ||||
|     const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); | ||||
|     std::string filename = "title.keys_autogenerated"; | ||||
|     if (category == KeyCategory::Standard) | ||||
|     if (category == KeyCategory::Standard) { | ||||
|         filename = dev_mode ? "dev.keys_autogenerated" : "prod.keys_autogenerated"; | ||||
|     else if (category == KeyCategory::Console) | ||||
|     } else if (category == KeyCategory::Console) { | ||||
|         filename = "console.keys_autogenerated"; | ||||
|     const auto add_info_text = !FileUtil::Exists(yuzu_keys_dir + DIR_SEP + filename); | ||||
|     FileUtil::CreateFullPath(yuzu_keys_dir + DIR_SEP + filename); | ||||
|     std::ofstream file(yuzu_keys_dir + DIR_SEP + filename, std::ios::app); | ||||
|     if (!file.is_open()) | ||||
|         return; | ||||
|     if (add_info_text) { | ||||
|         file | ||||
|             << "# This file is autogenerated by Yuzu\n" | ||||
|             << "# It serves to store keys that were automatically generated from the normal keys\n" | ||||
|             << "# If you are experiencing issues involving keys, it may help to delete this file\n"; | ||||
|     } | ||||
| 
 | ||||
|     file << fmt::format("\n{} = {}", keyname, Common::HexToString(key)); | ||||
|     const auto path = yuzu_keys_dir + DIR_SEP + filename; | ||||
|     const auto add_info_text = !FileUtil::Exists(path); | ||||
|     FileUtil::CreateFullPath(path); | ||||
|     FileUtil::IOFile file{path, "a"}; | ||||
|     if (!file.IsOpen()) { | ||||
|         return; | ||||
|     } | ||||
|     if (add_info_text) { | ||||
|         file.WriteString( | ||||
|             "# This file is autogenerated by Yuzu\n" | ||||
|             "# It serves to store keys that were automatically generated from the normal keys\n" | ||||
|             "# If you are experiencing issues involving keys, it may help to delete this file\n"); | ||||
|     } | ||||
| 
 | ||||
|     file.WriteString(fmt::format("\n{} = {}", keyname, Common::HexToString(key))); | ||||
|     AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, filename, category == KeyCategory::Title); | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash