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::array<u8, Size>& key) { | ||||||
|     const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); |     const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); | ||||||
|     std::string filename = "title.keys_autogenerated"; |     std::string filename = "title.keys_autogenerated"; | ||||||
|     if (category == KeyCategory::Standard) |     if (category == KeyCategory::Standard) { | ||||||
|         filename = dev_mode ? "dev.keys_autogenerated" : "prod.keys_autogenerated"; |         filename = dev_mode ? "dev.keys_autogenerated" : "prod.keys_autogenerated"; | ||||||
|     else if (category == KeyCategory::Console) |     } else if (category == KeyCategory::Console) { | ||||||
|         filename = "console.keys_autogenerated"; |         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); |     AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, filename, category == KeyCategory::Title); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash