Allow any generic Path as input to register (#7)
* Allow any generic Path as input to register Previously only String was allowed, which can be annoying for clients which already have a PathBuf or Path object. The generic type AsRef<Path> is the standard for APIs which have file path parameters, as it works across both owned and un-owned paths. Also, AsRef<Path> allows Strings and OS specific strings to be used directly as well. The filename parameter itself is only used for calling File::open(), which itself also takes in an AsRef<Path> as input. Signed-off-by: Kyle Wood <https://github.com/DemonWav>
This commit is contained in:
parent
6f8f9bd75d
commit
811f7783ab
1 changed files with 5 additions and 4 deletions
|
|
@ -5,6 +5,7 @@ use std::io::BufReader;
|
||||||
use std::io::ErrorKind;
|
use std::io::ErrorKind;
|
||||||
use std::io::SeekFrom;
|
use std::io::SeekFrom;
|
||||||
use std::os::unix::fs::MetadataExt;
|
use std::os::unix::fs::MetadataExt;
|
||||||
|
use std::path::Path;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
|
@ -22,8 +23,8 @@ pub struct LogWatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LogWatcher {
|
impl LogWatcher {
|
||||||
pub fn register(filename: String) -> Result<LogWatcher, io::Error> {
|
pub fn register<P: AsRef<Path>>(filename: P) -> Result<LogWatcher, io::Error> {
|
||||||
let f = match File::open(filename.clone()) {
|
let f = match File::open(&filename) {
|
||||||
Ok(x) => x,
|
Ok(x) => x,
|
||||||
Err(err) => return Err(err),
|
Err(err) => return Err(err),
|
||||||
};
|
};
|
||||||
|
|
@ -37,7 +38,7 @@ impl LogWatcher {
|
||||||
let pos = metadata.len();
|
let pos = metadata.len();
|
||||||
reader.seek(SeekFrom::Start(pos)).unwrap();
|
reader.seek(SeekFrom::Start(pos)).unwrap();
|
||||||
Ok(LogWatcher {
|
Ok(LogWatcher {
|
||||||
filename: filename,
|
filename: filename.as_ref().to_string_lossy().to_string(),
|
||||||
inode: metadata.ino(),
|
inode: metadata.ino(),
|
||||||
pos: pos,
|
pos: pos,
|
||||||
reader: reader,
|
reader: reader,
|
||||||
|
|
@ -50,7 +51,7 @@ impl LogWatcher {
|
||||||
F: FnMut(String) -> LogWatcherAction,
|
F: FnMut(String) -> LogWatcherAction,
|
||||||
{
|
{
|
||||||
loop {
|
loop {
|
||||||
match File::open(self.filename.clone()) {
|
match File::open(&self.filename) {
|
||||||
Ok(x) => {
|
Ok(x) => {
|
||||||
let f = x;
|
let f = x;
|
||||||
let metadata = match f.metadata() {
|
let metadata = match f.metadata() {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue