From df6f4678e8ec9f18f84edb91bf4a7369e6b979b3 Mon Sep 17 00:00:00 2001
From: Noa <coolreader18@gmail.com>
Date: Mon, 29 Aug 2022 21:00:14 -0500
Subject: [PATCH] Fix warnings

---
 src/header/assert/mod.rs                 |  6 +--
 src/header/bits_pthread/mod.rs           |  5 ---
 src/header/bits_sched/mod.rs             |  2 -
 src/header/inttypes/mod.rs               |  5 +--
 src/header/locale/mod.rs                 |  1 -
 src/header/netdb/dns/mod.rs              | 54 +++++-------------------
 src/header/pthread/mod.rs                |  4 +-
 src/header/pthread/mutex.rs              |  4 +-
 src/header/signal/mod.rs                 |  2 +-
 src/header/stdio/mod.rs                  |  2 +-
 src/header/stdio/scanf.rs                |  6 +--
 src/ld_so/mod.rs                         | 10 ++---
 src/platform/redox/clone.rs              |  6 +--
 src/platform/redox/exec.rs               |  2 +-
 src/platform/redox/extra.rs              |  2 +-
 src/platform/redox/mod.rs                |  5 +--
 src/platform/redox/path.rs               |  7 +--
 src/platform/redox/ptrace.rs             |  2 +-
 src/platform/redox/redox-exec/src/lib.rs |  2 +-
 src/pthread/mod.rs                       |  6 +--
 src/sync/barrier.rs                      |  6 +--
 src/sync/cond.rs                         |  2 +-
 src/sync/once.rs                         |  2 +-
 src/sync/pthread_mutex.rs                |  2 +-
 src/sync/semaphore.rs                    |  3 +-
 25 files changed, 40 insertions(+), 108 deletions(-)

diff --git a/src/header/assert/mod.rs b/src/header/assert/mod.rs
index 2b65a3289..64af2af76 100644
--- a/src/header/assert/mod.rs
+++ b/src/header/assert/mod.rs
@@ -1,10 +1,6 @@
 //! assert implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/assert.h.html
 
-use crate::{
-    c_str::CStr,
-    header::{stdio, stdlib},
-    platform::types::*,
-};
+use crate::{c_str::CStr, platform::types::*};
 
 #[no_mangle]
 pub unsafe extern "C" fn __assert_fail(
diff --git a/src/header/bits_pthread/mod.rs b/src/header/bits_pthread/mod.rs
index 27446c010..b5b6de646 100644
--- a/src/header/bits_pthread/mod.rs
+++ b/src/header/bits_pthread/mod.rs
@@ -2,11 +2,6 @@
 
 use crate::platform::types::*;
 
-use crate::header::sched::sched_param;
-
-use crate::sync::AtomicLock;
-use core::sync::atomic::{AtomicI32 as AtomicInt, AtomicU32 as AtomicUint};
-
 // XXX: https://github.com/eqrion/cbindgen/issues/685
 //
 // We need to write the opaque types ourselves, and apparently cbindgen doesn't even support
diff --git a/src/header/bits_sched/mod.rs b/src/header/bits_sched/mod.rs
index 149fc8eb0..918c3c7f2 100644
--- a/src/header/bits_sched/mod.rs
+++ b/src/header/bits_sched/mod.rs
@@ -1,3 +1 @@
 #![allow(non_camel_case_types)]
-
-use crate::platform::types::*;
diff --git a/src/header/inttypes/mod.rs b/src/header/inttypes/mod.rs
index 089ac5e7c..526e5af62 100644
--- a/src/header/inttypes/mod.rs
+++ b/src/header/inttypes/mod.rs
@@ -1,7 +1,5 @@
-use core::{convert::TryInto, ptr};
-
 use crate::{
-    header::{ctype, errno::*, stdlib::*, wctype::iswspace},
+    header::{ctype, errno::*, stdlib::*},
     platform::{self, types::*},
 };
 
@@ -10,7 +8,6 @@ pub extern "C" fn imaxabs(i: intmax_t) -> intmax_t {
     i.abs()
 }
 
-#[no_mangle]
 #[repr(C)]
 pub struct imaxdiv_t {
     quot: intmax_t,
diff --git a/src/header/locale/mod.rs b/src/header/locale/mod.rs
index 1f275ed4d..130d5be28 100644
--- a/src/header/locale/mod.rs
+++ b/src/header/locale/mod.rs
@@ -9,7 +9,6 @@ const EMPTY_PTR: *const c_char = "\0" as *const _ as *const c_char;
 static mut C_LOCALE: [c_char; 2] = [b'C' as c_char, 0];
 
 #[repr(C)]
-#[no_mangle]
 pub struct lconv {
     currency_symbol: *const c_char,
     decimal_point: *const c_char,
diff --git a/src/header/netdb/dns/mod.rs b/src/header/netdb/dns/mod.rs
index 30847ddf8..2d73281b6 100644
--- a/src/header/netdb/dns/mod.rs
+++ b/src/header/netdb/dns/mod.rs
@@ -11,46 +11,10 @@
 pub use self::{answer::DnsAnswer, query::DnsQuery};
 
 use alloc::{string::String, vec::Vec};
-use core::{slice, u16};
 
 mod answer;
 mod query;
 
-#[allow(non_camel_case_types)]
-#[derive(Copy, Clone, Debug, Default)]
-#[repr(packed)]
-pub struct n16 {
-    inner: u16,
-}
-
-impl n16 {
-    pub fn as_bytes(&self) -> &[u8] {
-        unsafe { slice::from_raw_parts(core::ptr::addr_of!(self.inner).cast::<u8>(), 2) }
-    }
-
-    pub fn from_bytes(bytes: &[u8]) -> Self {
-        n16 {
-            inner: unsafe {
-                slice::from_raw_parts(bytes.as_ptr() as *const u16, bytes.len() / 2)[0]
-            },
-        }
-    }
-}
-
-impl From<u16> for n16 {
-    fn from(value: u16) -> Self {
-        n16 {
-            inner: value.to_be(),
-        }
-    }
-}
-
-impl From<n16> for u16 {
-    fn from(value: n16) -> Self {
-        u16::from_be(value.inner)
-    }
-}
-
 #[derive(Clone, Debug)]
 pub struct Dns {
     pub transaction_id: u16,
@@ -67,13 +31,13 @@ impl Dns {
             ($value:expr) => {
                 data.push($value);
             };
-        };
+        }
 
         macro_rules! push_n16 {
             ($value:expr) => {
-                data.extend_from_slice(n16::from($value).as_bytes());
+                data.extend_from_slice(&u16::to_be_bytes($value));
             };
-        };
+        }
 
         push_n16!(self.transaction_id);
         push_n16!(self.flags);
@@ -106,17 +70,19 @@ impl Dns {
                 }
                 data[i - 1]
             }};
-        };
+        }
 
         macro_rules! pop_n16 {
             () => {{
+                use core::convert::TryInto;
                 i += 2;
                 if i > data.len() {
                     return Err(format!("{}: {}: pop_n16", file!(), line!()));
                 }
-                u16::from(n16::from_bytes(&data[i - 2..i]))
+                let bytes: [u8; 2] = data[i - 2..i].try_into().unwrap();
+                u16::from_be_bytes(bytes)
             }};
-        };
+        }
 
         macro_rules! pop_data {
             () => {{
@@ -129,7 +95,7 @@ impl Dns {
 
                 data
             }};
-        };
+        }
 
         macro_rules! pop_name {
             () => {{
@@ -160,7 +126,7 @@ impl Dns {
 
                 name
             }};
-        };
+        }
 
         let transaction_id = pop_n16!();
         let flags = pop_n16!();
diff --git a/src/header/pthread/mod.rs b/src/header/pthread/mod.rs
index 253dd656b..b4bd9ab9e 100644
--- a/src/header/pthread/mod.rs
+++ b/src/header/pthread/mod.rs
@@ -1,10 +1,10 @@
 //! pthread.h implementation for Redox, following https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html
 
-use core::{cell::Cell, ptr::NonNull};
+use core::cell::Cell;
 
 use crate::{
     header::{sched::*, time::timespec},
-    platform::{self, types::*, Pal, Sys},
+    platform::{types::*, Pal, Sys},
     pthread,
 };
 
diff --git a/src/header/pthread/mutex.rs b/src/header/pthread/mutex.rs
index d24f6b7cc..6b89f266c 100644
--- a/src/header/pthread/mutex.rs
+++ b/src/header/pthread/mutex.rs
@@ -1,8 +1,6 @@
 use super::*;
 
-use crate::{header::errno::*, pthread::Errno};
-
-use core::sync::atomic::AtomicI32 as AtomicInt;
+use crate::pthread::Errno;
 
 // PTHREAD_MUTEX_INITIALIZER is defined in bits_pthread/cbindgen.toml
 
diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs
index a80ae0d43..a071ad7da 100644
--- a/src/header/signal/mod.rs
+++ b/src/header/signal/mod.rs
@@ -352,7 +352,7 @@ pub extern "C" fn sigwait(set: *const sigset_t, sig: *mut c_int) -> c_int {
         return -1;
     }
     unsafe {
-        let mut info = pinfo.assume_init();
+        let info = pinfo.assume_init();
         (*sig) = info.si_signo;
     }
     0
diff --git a/src/header/stdio/mod.rs b/src/header/stdio/mod.rs
index 6148e6fb1..5a43bd8d3 100644
--- a/src/header/stdio/mod.rs
+++ b/src/header/stdio/mod.rs
@@ -1238,7 +1238,7 @@ pub unsafe extern "C" fn vsscanf(s: *const c_char, format: *const c_char, ap: va
 pub unsafe fn flush_io_streams() {
     let flush = |stream: *mut FILE| {
         let stream = &mut *stream;
-        stream.flush()
+        let _ = stream.flush();
     };
     flush(stdout);
     flush(stderr);
diff --git a/src/header/stdio/scanf.rs b/src/header/stdio/scanf.rs
index 4a8b63c93..c96c0ddfc 100644
--- a/src/header/stdio/scanf.rs
+++ b/src/header/stdio/scanf.rs
@@ -239,13 +239,13 @@ unsafe fn inner_scanf(
                             }
                         }};
                         (c_double) => {
-                            parse_type!(noformat c_double);
+                            parse_type!(noformat c_double)
                         };
                         (c_float) => {
-                            parse_type!(noformat c_float);
+                            parse_type!(noformat c_float)
                         };
                         ($type:ident) => {
-                            parse_type!($type, $type);
+                            parse_type!($type, $type)
                         };
                         ($type:ident, $final:ty) => {{
                             let n = if n.is_empty() {
diff --git a/src/ld_so/mod.rs b/src/ld_so/mod.rs
index f9c474f83..809dad7eb 100644
--- a/src/ld_so/mod.rs
+++ b/src/ld_so/mod.rs
@@ -31,9 +31,7 @@ static mut STATIC_TCB_MASTER: Master = Master {
 fn panic_notls(msg: impl core::fmt::Display) -> ! {
     eprintln!("panicked in ld.so: {}", msg);
 
-    unsafe {
-        core::intrinsics::abort();
-    }
+    core::intrinsics::abort();
 }
 
 pub trait ExpectTlsFree {
@@ -140,12 +138,14 @@ pub fn static_init(sp: &'static Stack) {
 
 #[cfg(any(target_os = "linux", target_os = "redox"))]
 pub unsafe fn init(sp: &'static Stack) {
-    let mut tp = 0usize;
+    let tp: usize;
 
     #[cfg(target_os = "linux")]
     {
         const ARCH_GET_FS: usize = 0x1003;
-        syscall!(ARCH_PRCTL, ARCH_GET_FS, &mut tp as *mut usize);
+        let mut val = 0usize;
+        syscall!(ARCH_PRCTL, ARCH_GET_FS, &mut val as *mut usize);
+        tp = val;
     }
     #[cfg(all(target_os = "redox", target_arch = "aarch64"))]
     {
diff --git a/src/platform/redox/clone.rs b/src/platform/redox/clone.rs
index 5f32f0207..f35a41fec 100644
--- a/src/platform/redox/clone.rs
+++ b/src/platform/redox/clone.rs
@@ -1,10 +1,6 @@
-use core::{arch::global_asm, mem::size_of};
-
-use alloc::{boxed::Box, vec::Vec};
-
 use syscall::{
     data::Map,
-    error::{Error, Result, EINVAL, ENAMETOOLONG},
+    error::Result,
     flag::{MapFlags, O_CLOEXEC},
     SIGCONT,
 };
diff --git a/src/platform/redox/exec.rs b/src/platform/redox/exec.rs
index a8b97ec9f..77cb69773 100644
--- a/src/platform/redox/exec.rs
+++ b/src/platform/redox/exec.rs
@@ -2,7 +2,7 @@ use crate::{
     c_str::{CStr, CString},
     core_io::{prelude::*, BufReader, SeekFrom},
     fs::File,
-    header::{fcntl, string::strlen},
+    header::string::strlen,
     platform::{
         sys::{S_ISGID, S_ISUID},
         types::*,
diff --git a/src/platform/redox/extra.rs b/src/platform/redox/extra.rs
index 597e2c7eb..9ed051cfe 100644
--- a/src/platform/redox/extra.rs
+++ b/src/platform/redox/extra.rs
@@ -1,4 +1,4 @@
-use core::{mem::size_of, ptr, slice};
+use core::{ptr, slice};
 
 use crate::platform::{sys::e, types::*};
 
diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs
index 767b94b72..ab190bc96 100644
--- a/src/platform/redox/mod.rs
+++ b/src/platform/redox/mod.rs
@@ -1,4 +1,4 @@
-use core::{arch::asm, convert::TryFrom, mem, ptr, result::Result as CoreResult, slice, str};
+use core::{convert::TryFrom, mem, ptr, result::Result as CoreResult, slice, str};
 
 use syscall::{
     self,
@@ -13,7 +13,6 @@ use crate::{
         dirent::dirent,
         errno::{EINVAL, EIO, ENOMEM, ENOSYS, EPERM, ERANGE},
         fcntl,
-        string::strlen,
         sys_mman::{MAP_ANONYMOUS, PROT_READ, PROT_WRITE},
         sys_random,
         sys_resource::{rlimit, RLIM_INFINITY},
@@ -25,7 +24,7 @@ use crate::{
         time::timespec,
         unistd::{F_OK, R_OK, W_OK, X_OK},
     },
-    io::{self, prelude::*, BufReader, SeekFrom},
+    io::{self, prelude::*, BufReader},
 };
 
 pub use redox_exec::FdGuard;
diff --git a/src/platform/redox/path.rs b/src/platform/redox/path.rs
index 31d253755..eb97b42f2 100644
--- a/src/platform/redox/path.rs
+++ b/src/platform/redox/path.rs
@@ -1,11 +1,6 @@
 use syscall::{data::Stat, error::*, flag::*};
 
-use alloc::{
-    borrow::{Cow, ToOwned},
-    boxed::Box,
-    string::String,
-    vec::Vec,
-};
+use alloc::{borrow::ToOwned, boxed::Box, string::String, vec::Vec};
 
 use super::FdGuard;
 use crate::sync::Mutex;
diff --git a/src/platform/redox/ptrace.rs b/src/platform/redox/ptrace.rs
index 421692218..3d8dba4f3 100644
--- a/src/platform/redox/ptrace.rs
+++ b/src/platform/redox/ptrace.rs
@@ -14,7 +14,7 @@ use crate::{
     fs::File,
     header::{errno as errnoh, fcntl, signal, sys_ptrace},
     io::{self, prelude::*},
-    sync::{Mutex, Once},
+    sync::Mutex,
 };
 
 use alloc::collections::{btree_map::Entry, BTreeMap};
diff --git a/src/platform/redox/redox-exec/src/lib.rs b/src/platform/redox/redox-exec/src/lib.rs
index 768dfa681..f7527e462 100644
--- a/src/platform/redox/redox-exec/src/lib.rs
+++ b/src/platform/redox/redox-exec/src/lib.rs
@@ -1,5 +1,5 @@
 #![no_std]
-#![feature(array_chunks, map_first_last)]
+#![feature(array_chunks)]
 
 extern crate alloc;
 
diff --git a/src/pthread/mod.rs b/src/pthread/mod.rs
index 99a36251e..ce380d92d 100644
--- a/src/pthread/mod.rs
+++ b/src/pthread/mod.rs
@@ -3,10 +3,10 @@
 use core::{
     cell::{Cell, UnsafeCell},
     ptr::NonNull,
-    sync::atomic::{AtomicBool, AtomicU32, AtomicUsize, Ordering},
+    sync::atomic::{AtomicBool, AtomicUsize, Ordering},
 };
 
-use alloc::{boxed::Box, collections::BTreeMap, vec::Vec};
+use alloc::{boxed::Box, collections::BTreeMap};
 
 use crate::{
     header::{errno::*, pthread as header, sched::sched_param, sys_mman},
@@ -84,8 +84,6 @@ pub struct OsTid {
 unsafe impl Send for Pthread {}
 unsafe impl Sync for Pthread {}
 
-use crate::header::bits_pthread::pthread_attr_t;
-
 /// Positive error codes (EINVAL, not -EINVAL).
 #[derive(Debug, Eq, PartialEq)]
 // TODO: Move to a more generic place.
diff --git a/src/sync/barrier.rs b/src/sync/barrier.rs
index 6e027364a..9ae84a60e 100644
--- a/src/sync/barrier.rs
+++ b/src/sync/barrier.rs
@@ -1,8 +1,4 @@
-use core::{
-    cmp,
-    num::NonZeroU32,
-    sync::atomic::{AtomicU32 as AtomicUint, Ordering},
-};
+use core::num::NonZeroU32;
 
 pub struct Barrier {
     original_count: NonZeroU32,
diff --git a/src/sync/cond.rs b/src/sync/cond.rs
index 43b620fee..ee7ff97bd 100644
--- a/src/sync/cond.rs
+++ b/src/sync/cond.rs
@@ -1,7 +1,7 @@
 // Used design from https://www.remlab.net/op/futex-condvar.shtml
 
 use crate::{
-    header::{bits_pthread::*, pthread::*, time::timespec},
+    header::{pthread::*, time::timespec},
     pthread::Errno,
 };
 
diff --git a/src/sync/once.rs b/src/sync/once.rs
index b554f24bc..293ab84cb 100644
--- a/src/sync/once.rs
+++ b/src/sync/once.rs
@@ -1,4 +1,4 @@
-use super::{AtomicLock, AttemptStatus};
+use super::AttemptStatus;
 use crate::platform::types::*;
 use core::{
     cell::UnsafeCell,
diff --git a/src/sync/pthread_mutex.rs b/src/sync/pthread_mutex.rs
index 05d75dacc..cb08dde8c 100644
--- a/src/sync/pthread_mutex.rs
+++ b/src/sync/pthread_mutex.rs
@@ -4,7 +4,7 @@ use core::{
 };
 
 use crate::{
-    header::{errno::*, pthread::*, sys_wait::*, time::timespec},
+    header::{errno::*, pthread::*, time::timespec},
     pthread::*,
 };
 
diff --git a/src/sync/semaphore.rs b/src/sync/semaphore.rs
index 1bad9e30a..c0a0b3a2a 100644
--- a/src/sync/semaphore.rs
+++ b/src/sync/semaphore.rs
@@ -1,10 +1,9 @@
 // From https://www.remlab.net/op/futex-misc.shtml
 //TODO: improve implementation
 
-use super::AtomicLock;
 use crate::{
     header::time::{clock_gettime, timespec, CLOCK_MONOTONIC},
-    platform::{types::*, Pal, Sys},
+    platform::types::*,
 };
 
 use core::sync::atomic::{AtomicU32, Ordering};
-- 
GitLab