diff options
| author | Fenrir <[email protected]> | 2016-06-03 16:20:47 -0700 |
|---|---|---|
| committer | Fenrir <[email protected]> | 2016-06-03 16:20:47 -0700 |
| commit | 2feaf8f636668641eb16e25208e53b718e191f66 (patch) | |
| tree | 4b950e50860283a4bc69cdd59794863d038e82b2 /src | |
| parent | Overhauled and simplified API. Now apps no longer hang on exit! (diff) | |
| download | ctru-rs-2feaf8f636668641eb16e25208e53b718e191f66.tar.xz ctru-rs-2feaf8f636668641eb16e25208e53b718e191f66.zip | |
core::fmt::Write support for the console
Diffstat (limited to 'src')
| -rw-r--r-- | src/console.rs | 36 | ||||
| -rw-r--r-- | src/services/apt.rs | 2 |
2 files changed, 17 insertions, 21 deletions
diff --git a/src/console.rs b/src/console.rs index a717aa5..0d0535a 100644 --- a/src/console.rs +++ b/src/console.rs @@ -1,34 +1,17 @@ use libctru::console::{consoleInit, consoleClear}; use libctru::gfx; +use libctru::libc; +use core::fmt::{self, Write}; use core::default::Default; use core::marker::PhantomData; use core::ptr; -extern "C" { - fn putchar(ch: u8) -> i32; -} - pub struct Console { pd: PhantomData<()>, } impl Console { - pub fn print<'a>(&mut self, s: &'a str) { - unsafe { - for ch in s.as_bytes().iter() { - putchar(*ch); - } - } - } - - pub fn println<'a>(&mut self, s: &'a str) { - unsafe { - self.print(s); - putchar('\n' as u8); - } - } - pub fn clear(&mut self) { unsafe { consoleClear() } } @@ -36,7 +19,20 @@ impl Console { impl Default for Console { fn default() -> Self { - unsafe { consoleInit(gfx::gfxScreen_t::GFX_TOP, ptr::null_mut()); } + unsafe { + consoleInit(gfx::gfxScreen_t::GFX_TOP, ptr::null_mut()); + } Console { pd: PhantomData } } } + +impl Write for Console { + fn write_str(&mut self, s: &str) -> fmt::Result { + let ret = unsafe { libc::write(libc::STDOUT_FILENO, s.as_ptr() as *const _, s.len()) }; + if ret == s.len() as isize { + Ok(()) + } else { + Err(fmt::Error) + } + } +} diff --git a/src/services/apt.rs b/src/services/apt.rs index b6efc86..8c891a6 100644 --- a/src/services/apt.rs +++ b/src/services/apt.rs @@ -79,7 +79,7 @@ impl Apt { } pub fn main_loop(&mut self) -> bool { - unsafe { + unsafe { match apt::aptMainLoop() { 1 => true, 0 => false, |