//! File system related system calls.

/// Temporary representation of a file path
pub type Path = *const u8;

/// Remove a Directory from the filesystem
///
/// # Arguments
/// * `full_path` - The full path of the directory to remove
/// * `force` - Whether to remove the directory even if it is not empty
#[no_mangle]
pub extern "C" fn remove_directory(path: Path, force_delete: bool) {
    unimplemented!();
}

/// Create a new directory at the given path
///
/// # Arguments
/// * `full_path` - The full path of the directory to create
#[no_mangle]
pub extern "C" fn create_directory(path: Path) -> Result<(), FileErrors> {
    unimplemented!();
}

#[repr(C)]
/// Errors that can occur when messing with files
pub enum FileErrors {
    /// The directory can not be created
    DirectoryCouldNotBeCreated,
    /// The directory could not be removed
    DirectoryCouldNotBeRemoved,
    ///
    FileCouldNotBeCreated,
    ///
    FileCouldNotBeRemoved,
    /// The file could not be opened
    FileCouldNotBeOpened,
    ///
    FileCouldNotBeClosed,
}