Rafał Harabień
a3ab0098da
refactor: fix some lints from Clippy tool
2018-12-09 00:22:21 +01:00
Rafał Harabień
cf3256bfda
fix: clear directory returned from create_dir method
...
Previous implementation did not zero allocated cluster so created directory
could have garbage contents.
Bug exists in code since version 0.2 and all code using create_dir is
affected.
This commit also improves tests of volume formatting so a dirty partition
is used allowing to detect bugs like this.
2018-12-08 19:34:47 +01:00
Rafał Harabień
4727b170df
Add more logging on trace channel
2018-12-08 19:29:02 +01:00
Rafał Harabień
b9753248f7
Properly initialize file allocation table when formatting a volume
2018-12-05 22:31:59 +01:00
Rafał Harabień
1724a54536
Fix formatting
...
Immprovements by hand + rustfmt
2018-10-10 21:26:31 +02:00
Rafał Harabień
829b9c5f3f
Fix warnings for file entries without LFN entries
...
Fixes #12 and #14 .
2018-09-29 15:19:46 +02:00
Rafał Harabień
8c9d476c2f
Fix build
2018-08-05 17:21:08 +02:00
Rafał Harabień
dce8b32577
Simplify code dealing with LFN entries generation
2018-08-05 17:12:03 +02:00
Rafał Harabień
a503cb4562
Fix build on Rust 1.24
2018-08-05 03:09:48 +02:00
Rafał Harabień
6f10042784
Support reading volume label from root directory
2018-08-05 00:14:49 +02:00
Rafał Harabień
1f8f8365d6
Add TimeProvider trait and time_provider option
...
This functionality is very useful for embedded usage where chrono feature
cannot be enabled.
2018-06-28 18:43:02 +02:00
Rafał Harabień
30f3f96537
Improve code style using rustfmt
2018-06-28 18:13:07 +02:00
Rafał Harabień
cd7e77e1b4
Rename directory entry flags and add some internal docs
2018-06-25 00:22:34 +02:00
Rafał Harabień
a672add4e7
Remove unnecessary clone() calls
2018-06-23 14:49:16 +02:00
Rafał Harabień
04887faaea
Improve docs
2018-06-20 19:08:50 +02:00
Rafał Harabień
c4a1bc70ec
Rename methods: bytes -> as_bytes
2018-06-20 17:38:04 +02:00
Rafał Harabień
69b7675940
Fix no_std build
2018-06-20 17:28:46 +02:00
Rafał Harabień
7a53215a57
No longer return &str for short names in no_std mode
...
Instead methods returning &[u8] were added.
It is API preparation for proper OEM codepage decoding.
Previous behavior would require to store duplicated short names
(one lossy and one real).
2018-06-20 17:17:01 +02:00
Rafał Harabień
f68996925f
Make sure short name generation never fails
2018-06-17 23:21:33 +02:00
Rafał Harabień
a6b66f9434
Make errors more consistent with std::fs
2018-06-17 23:11:53 +02:00
Rafał Harabień
8995a43bc4
Allow renaming to the same name
2018-06-17 22:26:07 +02:00
Rafał Harabień
8c1dae9f0c
Do not remove source file in Dir::rename if destination already exists
...
Previous code removed source file before returning an error.
It also caused a clusters leak. Now it returns error before doing any
modifications on the partition.
2018-06-17 22:25:22 +02:00
Rafał Harabień
4afd38a150
Fix possible overflow when calculating short name checksum
...
Affects debug build only. Overflow was not handled when calculating
checksum used for short name generation when avoiding a conflict.
LFN checksum was working properly but got refactored in this commit to
use num::Wrapping as well.
2018-06-17 21:58:39 +02:00
Rafał Harabień
674d1f8182
Fix failing in Dir::create_file/dir if existing destination entry has wrong type
2018-06-17 21:46:54 +02:00
Rafał Harabień
11a39fdaae
Improve/fix API docs
2018-06-16 18:35:56 +02:00
Rafał Harabień
217b6046f1
Make disk object type generic (breaking change)
...
This change allows for moving an object ownership to FileSystem object
instead of borrowing it. It makes usage of library easier in some cases.
Unfortunately it is a breaking change.
2018-06-13 23:24:08 +02:00
Rafał Harabień
2304b13ec4
Take immutable self reference in Dir methods
...
Dir methods do not change Dir object itself. They usually clone inner
stream so no change really happens self struct. Underlying partition is
modified but it does not have to affect API. For example see
std::fs::File::set_len. This change greatly simplifies rename API usage.
2018-06-12 00:07:30 +02:00
Rafał Harabień
18b9d8c285
Do not panic if unexpected file type is found during path traversal
...
For example if in the middle of the path a file is found.
Return error in such case instead of panicking.
2018-06-07 23:26:11 +02:00
Rafał Harabień
632a371b0d
Improve code structure
2018-06-07 23:07:52 +02:00
Rafał Harabień
1656540eac
Simplify code by using Self in return type
2018-06-06 17:16:32 +02:00
Rafał Harabień
66c976bc3b
Add method for renaming/moving a file
2018-06-06 13:56:59 +02:00
Rafał Harabień
242e650626
Reduce number of pub(crate) attributes
2018-06-03 16:44:12 +02:00
Rafał Harabień
9f5f070955
Allow opening files/dirs using short name
2018-05-31 00:23:32 +02:00
Rafał Harabień
7355ac462c
Make short name generation more compatible to WinNT
2018-05-31 00:17:01 +02:00
Rafał Harabień
b53882a2ad
Fix detection of short name collisions for very short names
2018-05-31 00:11:18 +02:00
Rafał Harabień
0b22cfa0b3
Avoid building short name when traversing path
2018-05-30 17:54:03 +02:00
Rafał Harabień
282c40fad2
Implement proper short-name generation
2018-05-30 17:43:18 +02:00
Rafał Harabień
d455540707
Add more unit tests
2018-05-30 01:33:01 +02:00
Rafał Harabień
908ab61ee5
Update number of free clusters when allocating and freeing
2018-05-27 23:31:40 +02:00
Rafał Harabień
380add131d
Simplify code by using while and if let constructions
2018-05-27 18:37:33 +02:00
Rafał Harabień
35d03daae9
Support no_std without alloc
2018-05-10 15:00:59 +02:00
Rafał Harabień
11b2a3b956
Basic no_std support
2018-05-10 01:00:24 +02:00
Rafał Harabień
e9dec65318
Fix warnings in Rust 1.25
2018-05-09 15:34:00 +02:00
Rafał Harabień
cecc35033a
Add write example.
2017-11-08 20:40:36 +01:00
Rafał Harabień
5c0ad0ce18
More code refactoring.
2017-11-08 19:59:03 +01:00
Rafał Harabień
681ee56cb3
Keep only BPB in FileSystem struct instead of entire BootRecord.
2017-11-08 19:41:05 +01:00
Rafał Harabień
4366b1836d
Add more comments in code.
2017-11-08 16:47:12 +01:00
Rafał Harabień
3f581835db
Code refactoring - no functional changes.
2017-11-08 16:03:08 +01:00
Rafał Harabień
3dc524759f
WIP dir_entry module?
2017-11-08 14:09:20 +01:00
Rafał Harabień
c4e6d59492
Add set_created and set_accessed public functions in File.
...
Small code refactoring included.
2017-11-08 01:23:00 +01:00