Move db to crate root

This commit is contained in:
Jeremy Soller
2019-01-17 19:56:51 -07:00
parent 09340bd0f2
commit d0261ebb35
4 changed files with 61 additions and 40 deletions
+56
View File
@@ -0,0 +1,56 @@
use alloc::string::String;
use alloc::vec::Vec;
use c_str::CStr;
use fs::File;
use header::fcntl;
use io::{self, BufRead, BufReader};
pub enum Separator {
Character(char),
Whitespace,
}
pub struct Db<R: BufRead> {
reader: R,
separator: Separator,
}
impl<R: BufRead> Db<R> {
pub fn new(reader: R, separator: Separator) -> Self {
Db {
reader,
separator
}
}
pub fn read(&mut self) -> io::Result<Option<Vec<String>>> {
let mut line = String::new();
if self.reader.read_line(&mut line)? == 0 {
return Ok(None);
}
let vec = if let Some(not_comment) = line.trim().split('#').next() {
match self.separator {
Separator::Character(c) => not_comment.split(c).map(String::from).collect(),
Separator::Whitespace => not_comment.split_whitespace().map(String::from).collect(),
}
} else {
Vec::new()
};
Ok(Some(vec))
}
}
pub type FileDb = Db<BufReader<File>>;
impl FileDb {
pub fn open(path: &CStr, separator: Separator) -> io::Result<Self> {
let file = File::open(path, fcntl::O_RDONLY | fcntl::O_CLOEXEC)?;
Ok(Db::new(
BufReader::new(file),
separator
))
}
}
-31
View File
@@ -1,31 +0,0 @@
use alloc::string::{String, ToString};
use alloc::vec::Vec;
use c_str::CStr;
use fs::File;
use header::fcntl;
use io::{self, BufRead, BufReader};
pub struct Db(BufReader<File>);
impl Db {
pub fn new(path: &CStr) -> io::Result<Self> {
File::open(path, fcntl::O_RDONLY)
.map(BufReader::new)
.map(Db)
}
pub fn read(&mut self) -> io::Result<Vec<String>> {
let mut parts = Vec::new();
let mut line = String::new();
self.0.read_line(&mut line)?;
if let Some(not_comment) = line.split('#').next() {
for part in not_comment.split_whitespace() {
parts.push(part.to_string());
}
}
Ok(parts)
}
}
+4 -9
View File
@@ -10,12 +10,6 @@ use alloc::str::SplitWhitespace;
use alloc::vec::Vec;
use c_str::{CStr, CString};
use platform;
use platform::rlb::{Line, RawLineBuffer};
use platform::types::*;
use platform::{Pal, Sys};
use header::arpa_inet::{htons, inet_aton};
use header::errno::*;
use header::fcntl::O_RDONLY;
@@ -25,6 +19,10 @@ use header::strings::strcasecmp;
use header::sys_socket::constants::AF_INET;
use header::sys_socket::{sockaddr, socklen_t};
use header::unistd::SEEK_SET;
use platform;
use platform::rlb::{Line, RawLineBuffer};
use platform::types::*;
use platform::{Pal, Sys};
#[cfg(target_os = "linux")]
#[path = "linux.rs"]
@@ -34,9 +32,6 @@ pub mod sys;
#[path = "redox.rs"]
pub mod sys;
//TODO: use self::db::Db;
pub mod db;
use self::lookup::{lookup_addr, lookup_host};
pub mod lookup;
+1
View File
@@ -45,6 +45,7 @@ extern crate spin;
mod macros;
pub mod c_str;
pub mod cxa;
pub mod db;
pub mod fs;
pub mod header;
pub mod io;