Skip to main content

qpak_lib/
error.rs

1// SPDX-License-Identifier: MIT
2
3/// Pak library errors
4#[derive(thiserror::Error, Debug)]
5pub enum Error {
6    #[error("I/O error: {0}")]
7    IO(#[from] std::io::Error),
8    #[error("Invalid magic number: {0:?}")]
9    InvalidMagicNumber([u8; 4]),
10    #[error("Invalid file table offset: {0}")]
11    InvalidTableOffset(i32),
12    #[error("Invalid file table size: {0}")]
13    InvalidTableSize(i32),
14    #[error("Invalid file offset: {0}")]
15    InvalidFileOffset(i32),
16    #[error("Invalid file size: {0}")]
17    InvalidFileSize(i32),
18    #[error("File name too long: {0}")]
19    FilenameTooLong(String),
20    #[error("Non-UTF-8 file name: {0}")]
21    NonUtf8Filename(#[from] std::string::FromUtf8Error),
22    #[error("Non-UTF-8 file name: {0}")]
23    NonUtf8Path(std::path::PathBuf),
24     #[error("No such file in PAK archive: {0}")]
25    NoSuchFile(String),
26    #[error("Not a directory: {0}")]
27    NotDirectory(String),
28    #[error("Pak path already exists: {0}")]
29    PakPathExists(String),
30    #[error("Failed to create directory: {0}")]
31    CreateDirectory(std::io::Error),
32    #[error("Failed to read directory: {0} :: {1}")]
33    ReadDirectory(std::path::PathBuf, String),
34    #[error("Failed to open PAK file: {0}")]
35    OpenPak(std::io::Error),
36    #[error("Failed to write to PAK file: {0}")]
37    WritePak(std::io::Error),
38    #[error("Failed to read from PAK file: {0} :: {1}")]
39    ReadPak(std::path::PathBuf, String),
40}
41
42/// Pak library result with Pak [Error]
43pub type Result<T> = std::result::Result<T, Error>;