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ń
7c5541c2a9
Add test for lowercase SFN (short LFN encoded in SFN)
2018-05-30 01:39:34 +02:00
Rafał Harabień
d455540707
Add more unit tests
2018-05-30 01:33:01 +02:00
Rafał Harabień
0e96b05054
Add support for LFN encoding in SFN entries on WinNT
...
New Windows does not create LFN entries if name fits in 8.3 format and
letters in both basename and ext parts are all uppercase or all lowercase.
This commit fixes handling of lowercase letters.
2018-05-30 01:17:24 +02:00
Rafał Harabień
b4be13823c
Cache free clusters count
2018-05-28 00:03:42 +02:00
Rafał Harabień
945612f042
Do not write FSInfo sector if nothing changed.
2018-05-27 23:56:38 +02:00
Rafał Harabień
147b31fdcd
Update FSInfo sector on unmount/drop
2018-05-27 23:48:38 +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ń
a760b4b6d0
Fix cluster leak when truncating files
2018-05-27 18:04:45 +02:00
Rafał Harabień
7709f5e6f6
Add FileSystem::stats method
...
It allows to get number of total and free clusters on FAT volume.
2018-05-26 17:09:13 +02:00
Rafał Harabień
6230fe91f9
Do not ignore 2 last clusters when allocating
2018-05-26 17:02:36 +02:00
Rafał Harabień
9129816893
Speed up allocation by tracking last allocated cluster
2018-05-26 14:36:38 +02:00
Rafał Harabień
d094fd5d1d
Support checking entire FAT table when hint points in the middle of it
2018-05-12 23:38:56 +02:00
Rafał Harabień
4793d20977
Read FSInfo sector on mount and use it during cluster allocation
2018-05-12 23:17:45 +02:00
Rafał Harabień
3dc332d8c8
Fix std build
2018-05-10 15:14:09 +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ń
73c6e9a461
Fix compilation without chromo
2018-05-09 22:58:05 +02:00
Rafał Harabień
429864a69f
Clarify that seeked filesystem is not handled by library
2018-05-09 15:34:41 +02:00
Rafał Harabień
e9dec65318
Fix warnings in Rust 1.25
2018-05-09 15:34:00 +02:00
Rafał Harabień
8bb24994e0
Add read_status_flags API for getting dirty and IO error volume flags.
2017-12-01 17:24:02 +01:00
Rafał Harabień
cecc35033a
Add write example.
2017-11-08 20:40:36 +01:00
Rafał Harabień
d5c37f2af5
Introduce FsOptions struct for providing options for library.
...
Old read_only flag in FileSystem::new was misleading.
2017-11-08 20:26:50 +01:00
Rafał Harabień
8a8ee3c51a
Ignore volume ID and label if signature is not valid.
2017-11-08 20:03:21 +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
Rafał Harabień
b38ea78f3e
Add automatic update of timestamps (created, accessed, modified).
...
Works only if chrono feature is enabled (default).
2017-11-08 00:18:31 +01:00
Rafał Harabień
cdde3ca468
When generating short name replace invalid characters with '?'.
2017-11-08 00:07:06 +01:00
Rafał Harabień
1576c4d697
Add file name validation.
2017-11-07 23:17:52 +01:00
Rafał Harabień
288da370b3
Ignore high 16 bits of cluster number in FAT12/16 dir entry.
2017-11-07 22:52:56 +01:00
Rafał Harabień
de9977e571
Don't panic in Drop.
...
The same behavior exists (without logging) in BufWriter from std crate.
It's not recommended to depend on flush during drop.
Instead user should flush explicitly and check for error.
2017-11-07 01:13:02 +01:00
Rafał Harabień
4613196733
Catch only NotFound error in create_file and create_dir.
2017-11-07 01:06:52 +01:00
Rafał Harabień
21bd2a0e8d
Zero new directory clusters after allocation.
2017-10-27 15:03:54 +02:00
Rafał
9ec23f1234
Add create_dir function. ( #5 )
2017-10-27 14:12:53 +02:00
Rafał
529d717e30
Add .editorconfig file and fix whitespaces in existing files. ( #4 )
2017-10-25 17:20:27 +02:00
Rafał Harabień
9d3780f859
Update README and add more doc comments.
2017-10-21 16:25:04 +02:00
Rafał Harabień
2a61b0d175
Small code improvements.
2017-10-21 15:51:19 +02:00
Rafał
df98ca8779
Create file functionality ( #3 )
...
* Support removing files and directories.
* Add create_file functionality.
2017-10-21 15:35:26 +02:00
Rafał Harabień
ba5329edad
Support removing files and directories.
2017-10-20 16:18:17 +02:00
Rafał Harabień
b2c3eb1823
Don't recalculate cluster in seek if not needed.
2017-10-15 16:17:41 +02:00
Rafał Harabień
e2374c08cc
Fix seek for directory backed file.
2017-10-15 15:56:01 +02:00
Rafał Harabień
da76625759
Replace commented out logging by log crate usage.
2017-10-15 00:55:19 +02:00
Rafał Harabień
ef96f90b0d
Add checking for LFN sequence corruption.
2017-10-14 15:24:03 +02:00
Rafał Harabień
98ec30589a
Add some sanity checks and fix possible issues with partial read when not using read_exact.
2017-10-10 23:19:44 +02:00
Rafał Harabień
d52b0918ca
Support FAT mirroring.
2017-10-10 23:18:32 +02:00
Rafał Harabień
0c6e9aec5b
Fix multiple corner cases and simplify code.
2017-10-10 16:05:19 +02:00
Rafał Harabień
13dd50bf61
Simplify BufStream implementation and use it in write test.
2017-10-10 14:48:57 +02:00
Rafał Harabień
d8eba51b88
Alloc and free clusters for file data.
2017-10-09 21:14:28 +02:00
Rafał Harabień
f32f1c7279
Basic write support for files.
...
No cluster management yet.
Also BufStream is broken when writing.
2017-10-09 14:59:52 +02:00
Rafał Harabień
37f52e4024
Fix warnings.
2017-10-07 16:45:11 +02:00
Rafał Harabień
a974a61cb8
Fix dir entries pointing to root directory.
...
Fixes 'ls dir/..'.
2017-10-07 16:31:42 +02:00
Rafał Harabień
f850c76a1b
Dont panic on unknown file attributes.
2017-10-07 16:25:53 +02:00
Rafał Harabień
d32ae0eef9
Allow seeking beyond end of file as documented in Seek trait.
...
Also fix possible panic when seeking in file without clusters.
2017-10-07 16:07:33 +02:00
Rafał Harabień
120c9b035c
Rename DirReader to DirRawStream.
2017-10-07 15:00:27 +02:00
Rafał Harabień
a1a2ffc2af
Remove unneeded Fat prefix for most structures.
2017-10-07 14:56:50 +02:00
Rafał Harabień
beb463ba3f
Fix possible panics if cluster chain ends before EOF.
2017-10-07 02:37:29 +02:00
Rafał Harabień
3e08c80fb0
Dont assume cluster iterator always succeeds.
2017-10-07 02:19:19 +02:00
Rafał Harabień
057eef07bb
Fix possible deadlock if reading dir entry fails.
2017-10-07 02:16:34 +02:00
Rafał Harabień
d97ab1d1e1
Rename crate to fatfs and add more info to Cargo.toml.
2017-10-06 17:00:38 +02:00
Rafał Harabień
b604b19bde
Make chrono crate dependency optional.
2017-10-06 16:42:29 +02:00
Rafał Harabień
a7ca474a2f
Add FatDir::iter() method returning dir entries iterator.
...
FatDir is no longer iterator. Change allows to iterate over directory and still be able to use it.
2017-10-06 16:07:11 +02:00
Rafał Harabień
bfa4984ae3
Use lossy conversion for UTF-8/16 strings instead of panicking.
2017-10-06 15:51:01 +02:00
Rafał Harabień
bc835d59b5
Don't use boxed buffer in FAT cluster reading code.
...
I assume gived Read object is capable of basic buffering and caching.
2017-10-04 13:56:44 +02:00
Rafał Harabień
94dfe7ffd5
Remove exfat references.
...
exfat is very different from fat12/16/32 and wont be supported.
2017-10-01 21:39:11 +02:00
Rafał Harabień
f9f192c35e
Add FAT table iterator.
2017-10-01 21:31:44 +02:00
Rafał Harabień
d88850624a
Remove FatDir::list() method.
...
Vec can be created by using Iterator trait.
2017-10-01 18:45:58 +02:00
Rafał Harabień
284d26282c
Rename some fields in internal bsp struct.
2017-10-01 18:13:59 +02:00
Rafał Harabień
c8ccd7d86e
Don't use dynamic allocation for FAT table wrapper.
...
FAT table still uses Box but its hardly avoidable when reading entire FAT into memory.
2017-09-28 00:11:24 +02:00
Rafał Harabień
cb6d486e86
Fix warning.
2017-09-27 14:20:52 +02:00
Rafał Harabień
4feeb3eead
Use references instead of Rc for shared state.
2017-09-27 14:05:58 +02:00
Rafał Harabień
840290f754
Add LFN support and rename some functions.
2017-09-24 22:12:38 +02:00
Rafał Harabień
c6ba07848e
Rename some functions based on std::fs module.
2017-09-24 14:34:07 +02:00
Rafał Harabień
df2852351b
Rename crate to rfat.
2017-09-24 03:13:50 +02:00
Rafał Harabień
6b6759802a
Refactoring.
2017-09-24 03:08:00 +02:00
Rafał Harabień
894c2d34f3
Implement Iterator for FatDir.
2017-09-24 02:24:42 +02:00
Rafał Harabień
daa51e3540
Implement Seek trait for File and rewind method in Dir.
2017-09-24 02:10:59 +02:00
Rafał Harabień
8d974a6ee4
Add path traversal functions.
2017-09-24 00:05:43 +02:00
Rafał Harabień
50d020d05c
Fix reading long files.
2017-09-23 22:22:25 +02:00
Rafał Harabień
e44d7fc6c2
Fix reading FAT32 root dir.
2017-09-23 21:53:32 +02:00
Rafał Harabień
c65d26bd2b
Ignore LFN and fix handling of extension in filename.
...
Fixes fat12 and fat16 tests. Fat32 still doesnt work.
2017-09-23 21:29:11 +02:00
Rafał Harabień
b535b460f9
Implement reading files beyond cluster (untested).
2017-09-23 20:16:32 +02:00
Rafał Harabień
88fd442dac
Refactor code to use shared state.
...
This way for example FatFile can implement Read trait.
2017-09-23 19:42:09 +02:00
Rafał Harabień
3933a29078
Implemented basic FAT table support.
2017-09-23 14:16:02 +02:00
Rafał Harabień
6b18dfd626
Don't read past end of file.
2017-09-23 00:22:31 +02:00
Rafał Harabień
dd23854cd5
Use typed attributes.
2017-09-22 23:36:44 +02:00
Rafał Harabień
65936f8f27
Restructure into proper crate.
2017-09-22 23:20:06 +02:00
Rafał Harabień
91ba151398
Add file read methods.
2017-09-22 22:27:39 +02:00
Rafał Harabień
c5ab2f94d5
Split reading dir and fs code into modules.
2017-09-22 20:50:41 +02:00
Rafał Harabień
2b235db1d9
Add functionality of reading directory.
2017-09-22 18:55:07 +02:00
Rafał Harabień
958f207ce6
Implemented reading FAT Boot Sector.
2017-09-22 02:13:29 +02:00