Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/ntfs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/lib.rs b/src/lib.rs
index e32b5f0..c97cd8d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,7 +1,40 @@
// Copyright 2021 Colin Finck <colin@reactos.org>
// SPDX-License-Identifier: GPL-2.0-or-later
+//
+//! A low-level NTFS filesystem library implemented in Rust.
+//!
+//! [NTFS](https://en.wikipedia.org/wiki/NTFS) is the primary filesystem in all versions of Windows (since Windows NT 3.1 in 1993).
+//! This crate is geared towards the NTFS 3.x versions used in Windows 2000 up to the current Windows 11.
+//! However, the basics are expected to be compatible to even earlier versions.
+//!
+//! The crate is `no_std`-compatible and therefore usable from firmware level code up to user-mode applications.
+//!
+//! # Getting started
+//! 1. Create an [`Ntfs`] structure from a reader by calling [`Ntfs::new`].
+//! 2. Retrieve the [`NtfsFile`] of the root directory via [`Ntfs::root_directory`].
+//! 3. Dig into its attributes via [`NtfsFile::attributes`], go even deeper via [`NtfsFile::attributes_raw`] or use one of the convenience functions, like [`NtfsFile::directory_index`], [`NtfsFile::info`] or [`NtfsFile::name`].
+//!
+//! # Example
+//! The following example dumps the names of all files and folders in the root directory of a given NTFS filesystem.
+//! The list is directly taken from the NTFS index, hence it's sorted in ascending order with respect to NTFS's understanding of case-insensitive string comparison.
+//!
+//! ```rust,no_run
+//! let mut ntfs = Ntfs::new(&mut fs).unwrap();
+//! let root_dir = ntfs.root_directory(&mut fs).unwrap();
+//! let index = root_dir.directory_index(&mut fs).unwrap();
+//! let mut iter = index.entries();
+//!
+//! while let Some(entry) = iter.next(&mut fs) {
+//! let entry = entry.unwrap();
+//! let file_name = entry.key().unwrap();
+//! println!("{}", file_name.name());
+//! }
+//! ```
+//!
+//! Check out the [docs](https://docs.rs/ntfs), the tests, and the supplied [`ntfs-shell`](https://github.com/ColinFinck/ntfs/tree/master/examples/ntfs-shell) application for more examples on how to use the `ntfs` library.
#![cfg_attr(not(feature = "std"), no_std)]
+#![cfg_attr(docsrs, feature(doc_cfg))]
#![forbid(unsafe_code)]
extern crate alloc;
@@ -26,7 +59,7 @@ mod string;
pub mod structured_values;
mod time;
mod traits;
-mod types;
+pub mod types;
mod upcase_table;
pub use crate::attribute::*;
@@ -35,8 +68,9 @@ pub use crate::file::*;
pub use crate::file_reference::*;
pub use crate::guid::*;
pub use crate::index::*;
+pub use crate::index_entry::*;
+pub use crate::index_record::*;
pub use crate::ntfs::*;
pub use crate::string::*;
pub use crate::time::*;
pub use crate::traits::*;
-pub use crate::types::*;