diff --git a/Cargo.lock b/Cargo.lock index 9b13c4c..af2c2a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,6 +5,16 @@ dependencies = [ "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aho-corasick" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -26,6 +36,15 @@ dependencies = [ "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "env_logger" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -35,11 +54,29 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lazy_static" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "log" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num" version = "0.1.40" @@ -77,6 +114,32 @@ name = "redox_syscall" version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "regex" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "thread_local" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "time" version = "0.1.38" @@ -88,6 +151,24 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "utf8-ranges" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "winapi" version = "0.2.8" @@ -99,16 +180,27 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] +"checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" "checksum bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989" "checksum byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff81738b726f5d099632ceaffe7fb65b90212e8dce59d518729e7e8634032d3d" "checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9" +"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5" "checksum libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)" = "56cce3130fd040c28df6f495c8492e5ec5808fb4c9093c310df02b0c8f030148" +"checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b" +"checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525" "checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba" "checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01" "checksum num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0" "checksum redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509" +"checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" +"checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" +"checksum thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14" "checksum time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d788d3aa77bc0ef3e9621256885555368b47bd495c13dd2e7413c89f845520" +"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index 6a75a1d..f35fa54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,4 +23,8 @@ default = ["chrono"] [dependencies] byteorder = "1" bitflags = "1.0" +log = "0.3.8" chrono = { version = "0.4", optional = true } + +[dev-dependencies] +env_logger = "0.4.3" diff --git a/src/dir.rs b/src/dir.rs index c3bfa63..f9e106d 100644 --- a/src/dir.rs +++ b/src/dir.rs @@ -453,7 +453,7 @@ impl LongNameBuilder { self.truncate(); self.buf } else { - //println!("unfinished LFN sequence {}", self.index); + warn!("unfinished LFN sequence {}", self.index); Vec::::new() } } @@ -478,7 +478,7 @@ impl LongNameBuilder { let index = data.order & 0x1F; if index == 0 { // Corrupted entry - //println!("currupted lfn entry! {:x}", data.order); + warn!("currupted lfn entry! {:x}", data.order); self.clear(); return; } @@ -489,7 +489,7 @@ impl LongNameBuilder { self.buf.resize(index as usize * LFN_PART_LEN, 0); } else if self.index == 0 || index != self.index - 1 || data.checksum != self.chksum { // Corrupted entry - //println!("currupted lfn entry! {:x} {:x} {:x} {:x}", data.order, self.index, data.checksum, self.chksum); + warn!("currupted lfn entry! {:x} {:x} {:x} {:x}", data.order, self.index, data.checksum, self.chksum); self.clear(); return; } else { @@ -506,7 +506,7 @@ impl LongNameBuilder { fn validate_chksum(&mut self, short_name: &[u8]) { let chksum = lfn_checksum(short_name); if chksum != self.chksum { - //println!("checksum mismatch {:x} {:x} {:?}", chksum, self.chksum, short_name); + warn!("checksum mismatch {:x} {:x} {:?}", chksum, self.chksum, short_name); self.clear(); } } diff --git a/src/file.rs b/src/file.rs index c5c3dd0..a757b47 100644 --- a/src/file.rs +++ b/src/file.rs @@ -167,7 +167,7 @@ impl<'a, 'b> Read for File<'a, 'b> { if read_size == 0 { return Ok(0); } - //println!("read c {} n {}", current_cluster, read_size); + trace!("read {} bytes in cluster {}", read_size, current_cluster); let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); let read_bytes = { let mut disk = self.fs.disk.borrow_mut(); @@ -189,7 +189,6 @@ impl<'a, 'b> Write for File<'a, 'b> { let offset_in_cluster = self.offset % cluster_size; let bytes_left_in_cluster = (cluster_size - offset_in_cluster) as usize; let write_size = cmp::min(buf.len(), bytes_left_in_cluster); - //println!("write {:?}", write_size); // Exit early if we are going to write no data if write_size == 0 { return Ok(0); @@ -226,6 +225,7 @@ impl<'a, 'b> Write for File<'a, 'b> { None => panic!("Offset inside cluster but no cluster allocated"), } }; + trace!("write {} bytes in cluster {}", write_size, current_cluster); let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); let written_bytes = { let mut disk = self.fs.disk.borrow_mut(); diff --git a/src/lib.rs b/src/lib.rs index 4684081..43bb0cd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,9 @@ extern crate core; #[macro_use] extern crate bitflags; +#[macro_use] +extern crate log; + #[cfg(feature = "chrono")] extern crate chrono; diff --git a/src/table.rs b/src/table.rs index 7ac2285..7c7d03f 100644 --- a/src/table.rs +++ b/src/table.rs @@ -35,7 +35,7 @@ fn read_fat(fat: &mut ReadSeek, fat_type: FatType, cluster: u32) -> io::Result io::Result<()> { - //println!("write_fat {} {:?}", cluster, value); + trace!("write FAT - cluster {} value {:?}", cluster, value); match fat_type { FatType::Fat12 => Fat12::set(fat, cluster, value), FatType::Fat16 => Fat16::set(fat, cluster, value), @@ -65,7 +65,7 @@ pub(crate) fn alloc_cluster(fat: &mut DiskSlice, fat_type: FatType, prev_cluster if prev_cluster.is_some() { write_fat(fat, fat_type, prev_cluster.unwrap(), FatValue::Data(new_cluster))?; // safe } - //println!("alloc_cluster {}", new_cluster); + trace!("allocated cluster {}", new_cluster); Ok(new_cluster) } diff --git a/tests/read.rs b/tests/read.rs index 239aba8..622918f 100644 --- a/tests/read.rs +++ b/tests/read.rs @@ -1,4 +1,5 @@ extern crate fatfs; +extern crate env_logger; use std::fs; use std::io::SeekFrom; @@ -13,6 +14,7 @@ const FAT16_IMG: &str = "resources/fat16.img"; const FAT32_IMG: &str = "resources/fat32.img"; fn call_with_fs(f: &Fn(FileSystem) -> (), filename: &str) { + let _ = env_logger::init(); let file = fs::File::open(filename).unwrap(); let mut buf_file = BufStream::new(file); let fs = FileSystem::new(&mut buf_file).unwrap(); diff --git a/tests/write.rs b/tests/write.rs index 92a1303..1eb7245 100644 --- a/tests/write.rs +++ b/tests/write.rs @@ -1,4 +1,5 @@ extern crate fatfs; +extern crate env_logger; use std::fs; use std::io::prelude::*; @@ -16,6 +17,7 @@ const TMP_DIR: &str = "tmp"; const TEST_STR: &str = "Hi there Rust programmer!\n"; fn call_with_fs(f: &Fn(FileSystem) -> (), filename: &str, test_seq: u32) { + let _ = env_logger::init(); let img_path = format!("{}/{}", IMG_DIR, filename); let tmp_path = format!("{}/{}-{}", TMP_DIR, test_seq, filename); fs::create_dir(TMP_DIR).ok();