Fix a bunch of warnings
This commit is contained in:
+29
-34
@@ -2,12 +2,12 @@ extern crate syscall;
|
||||
|
||||
use std::mem::MaybeUninit;
|
||||
use std::ptr::addr_of_mut;
|
||||
use std::{mem, process, slice, thread};
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{mem, process, slice, thread};
|
||||
|
||||
use libredox::flag;
|
||||
use libredox::{Fd, error::Result};
|
||||
use redox_scheme::{Socket, SignalBehavior};
|
||||
use libredox::{error::Result, Fd};
|
||||
use redox_scheme::{SignalBehavior, Socket};
|
||||
|
||||
use redox_daemon::Daemon;
|
||||
|
||||
@@ -17,17 +17,14 @@ mod scheme;
|
||||
|
||||
extern "C" fn sigusr_handler(_sig: usize) {}
|
||||
|
||||
fn thread(scheme: Arc<Mutex<AudioScheme>>, pid: usize, mut hw_file: Fd) -> Result<()> {
|
||||
fn thread(scheme: Arc<Mutex<AudioScheme>>, pid: usize, hw_file: Fd) -> Result<()> {
|
||||
// Enter null namespace
|
||||
libredox::call::setrens(0, 0)?;
|
||||
|
||||
loop {
|
||||
let buffer = scheme.lock().unwrap().buffer();
|
||||
let buffer_u8 = unsafe {
|
||||
slice::from_raw_parts(
|
||||
buffer.as_ptr() as *const u8,
|
||||
mem::size_of_val(&buffer),
|
||||
)
|
||||
slice::from_raw_parts(buffer.as_ptr() as *const u8, mem::size_of_val(&buffer))
|
||||
};
|
||||
|
||||
// Wake up the scheme thread
|
||||
@@ -70,19 +67,21 @@ fn daemon(daemon: Daemon) -> Result<()> {
|
||||
|
||||
let mut pending = Vec::new();
|
||||
|
||||
loop {
|
||||
loop {
|
||||
match socket.next_request(SignalBehavior::Interrupt) {
|
||||
Ok(Some(request)) => match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) {
|
||||
Ok(response) => {
|
||||
socket.write_responses(&[response], SignalBehavior::Restart)?;
|
||||
Ok(Some(request)) => {
|
||||
match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) {
|
||||
Ok(response) => {
|
||||
socket.write_responses(&[response], SignalBehavior::Restart)?;
|
||||
}
|
||||
Err(request) => pending.push(request),
|
||||
}
|
||||
Err(request) => pending.push(request),
|
||||
},
|
||||
Ok(None) => {},
|
||||
Err(err) => match err.errno {
|
||||
libredox::errno::EINTR => {},
|
||||
_ => return Err(err),
|
||||
}
|
||||
Ok(None) => {}
|
||||
Err(err) => match err.errno {
|
||||
libredox::errno::EINTR => {}
|
||||
_ => return Err(err),
|
||||
},
|
||||
}
|
||||
|
||||
let mut i = 0;
|
||||
@@ -93,27 +92,23 @@ fn daemon(daemon: Daemon) -> Result<()> {
|
||||
pending.remove(i);
|
||||
socket.write_responses(&[response], SignalBehavior::Restart)?;
|
||||
}
|
||||
Err(_) => {
|
||||
i += 1
|
||||
}
|
||||
Err(_) => i += 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if let Err(err) = Daemon::new(|x| {
|
||||
match daemon(x) {
|
||||
Ok(()) => {
|
||||
process::exit(0);
|
||||
},
|
||||
Err(err) => {
|
||||
eprintln!("audiod: {}", err);
|
||||
process::exit(1);
|
||||
}
|
||||
let Err(err) = Daemon::new(|x| match daemon(x) {
|
||||
Ok(()) => {
|
||||
process::exit(0);
|
||||
}
|
||||
}) {
|
||||
eprintln!("audiod: {}", err);
|
||||
process::exit(1);
|
||||
}
|
||||
Err(err) => {
|
||||
eprintln!("audiod: {}", err);
|
||||
process::exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
eprintln!("audiod: {}", err);
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ enum Handle {
|
||||
},
|
||||
//TODO: move volume to audiohw:?
|
||||
Volume {
|
||||
flags: usize,
|
||||
offset: usize,
|
||||
}
|
||||
}
|
||||
@@ -75,7 +74,6 @@ impl SchemeBlockMut for AudioScheme {
|
||||
buffer: VecDeque::new()
|
||||
},
|
||||
"volume" => Handle::Volume {
|
||||
flags,
|
||||
offset: 0,
|
||||
},
|
||||
_ => return Err(Error::new(ENOENT)),
|
||||
@@ -95,7 +93,7 @@ impl SchemeBlockMut for AudioScheme {
|
||||
//TODO: audio input?
|
||||
Err(Error::new(EBADF))
|
||||
},
|
||||
Handle::Volume { flags: _, ref mut offset } => {
|
||||
Handle::Volume { ref mut offset } => {
|
||||
//TODO: should we allocate every time?
|
||||
let string = format!("{}", self.volume);
|
||||
let bytes = string.as_bytes();
|
||||
@@ -136,7 +134,7 @@ impl SchemeBlockMut for AudioScheme {
|
||||
Ok(Some(i))
|
||||
}
|
||||
},
|
||||
Handle::Volume { flags: _, ref mut offset } => {
|
||||
Handle::Volume { ref mut offset } => {
|
||||
//TODO: support other offsets?
|
||||
if *offset == 0 {
|
||||
let value = str::from_utf8(buf)
|
||||
|
||||
@@ -354,7 +354,7 @@ impl<'q> Dnsd<'q> {
|
||||
*file = DnsFile::Timeout;
|
||||
}
|
||||
}
|
||||
self.wakeup_fds(&fds_to_wakeup);
|
||||
self.wakeup_fds(&fds_to_wakeup)?;
|
||||
}
|
||||
|
||||
time.tv_sec += Dnsd::TIME_EVENT_TIMEOUT_S;
|
||||
@@ -438,10 +438,10 @@ impl<'q> Dnsd<'q> {
|
||||
*file = DnsFile::Failed;
|
||||
}
|
||||
}
|
||||
self.wakeup_fds(&fds_to_fail);
|
||||
self.wakeup_fds(&fds_to_fail)?;
|
||||
}
|
||||
Some(DnsParsingResult::WakeUpFiles(fds_to_wakeup)) => {
|
||||
self.wakeup_fds(&fds_to_wakeup);
|
||||
self.wakeup_fds(&fds_to_wakeup)?;
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
@@ -453,7 +453,7 @@ impl<'q> Dnsd<'q> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn wakeup_fds(&mut self, fds_to_wakeup: &BTreeSet<usize>) {
|
||||
fn wakeup_fds(&mut self, fds_to_wakeup: &BTreeSet<usize>) -> Result<()> {
|
||||
for fd in fds_to_wakeup {
|
||||
let Some(affected) = self.blocked_fds.remove(&fd) else {
|
||||
continue;
|
||||
@@ -474,9 +474,11 @@ impl<'q> Dnsd<'q> {
|
||||
Response::new(res, op)
|
||||
};
|
||||
self.scheme_socket
|
||||
.write_response(resp, SignalBehavior::Restart);
|
||||
.write_response(resp, SignalBehavior::Restart)
|
||||
.context("scheme write fail")?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn validate_domain(domain: &str) -> bool {
|
||||
|
||||
@@ -23,7 +23,6 @@ pub struct File {
|
||||
pub atime: TimeSpec,
|
||||
pub ctime: TimeSpec,
|
||||
pub mtime: TimeSpec,
|
||||
pub crtime: TimeSpec,
|
||||
|
||||
pub data: FileData,
|
||||
}
|
||||
@@ -65,7 +64,6 @@ impl Filesystem {
|
||||
let cur_time = current_time();
|
||||
File {
|
||||
atime: cur_time,
|
||||
crtime: cur_time,
|
||||
ctime: cur_time,
|
||||
mtime: cur_time,
|
||||
|
||||
|
||||
@@ -182,7 +182,6 @@ impl SchemeSync for Scheme {
|
||||
|
||||
File {
|
||||
atime: current_time,
|
||||
crtime: current_time,
|
||||
ctime: current_time,
|
||||
mtime: current_time,
|
||||
gid: ctx.gid,
|
||||
@@ -203,7 +202,6 @@ impl SchemeSync for Scheme {
|
||||
|
||||
File {
|
||||
atime: current_time,
|
||||
crtime: current_time,
|
||||
ctime: current_time,
|
||||
mtime: current_time,
|
||||
gid: ctx.gid,
|
||||
|
||||
+4
-2
@@ -17,8 +17,8 @@ use redox_scheme::{RequestKind, SchemeMut, SignalBehavior, Socket, V2};
|
||||
use syscall::data::Stat;
|
||||
use syscall::flag::EventFlags;
|
||||
use syscall::{
|
||||
Error, Result, EBADF, EBADFD, EEXIST, EINVAL, ENOENT, EPERM, MODE_CHR, O_CLOEXEC, O_CREAT,
|
||||
O_EXCL, O_RDONLY, O_RDWR, O_STAT, O_WRONLY,
|
||||
Error, Result, EBADF, EBADFD, EEXIST, ENOENT, EPERM, MODE_CHR, O_CREAT, O_EXCL, O_RDONLY,
|
||||
O_RDWR, O_WRONLY,
|
||||
};
|
||||
|
||||
// Create an RNG Seed to create initial seed from the rdrand intel instruction
|
||||
@@ -166,6 +166,8 @@ impl RandScheme {
|
||||
|
||||
#[test]
|
||||
fn test_scheme_perms() {
|
||||
use syscall::{O_CLOEXEC, O_STAT};
|
||||
|
||||
let mut scheme = RandScheme::new(File::open(".").unwrap());
|
||||
scheme.prng_stat.st_mode = MODE_CHR | 0o200;
|
||||
scheme.prng_stat.st_uid = 1;
|
||||
|
||||
Reference in New Issue
Block a user