This commit is contained in:
jD91mZM2
2018-07-17 17:24:22 +02:00
parent b83d1c7ff0
commit 482bd9c5f1
4 changed files with 36 additions and 12 deletions
+5 -1
View File
@@ -89,7 +89,11 @@ pub unsafe extern "C" fn _start_rust(sp: &'static Stack) -> ! {
platform::inner_environ.push(ptr::null_mut());
platform::environ = platform::inner_environ.as_mut_ptr();
platform::exit(main(argc, argv as *const *const c_char, envp as *const *const c_char));
platform::exit(main(
argc,
argv as *const *const c_char,
envp as *const *const c_char,
));
}
#[panic_implementation]
+10 -2
View File
@@ -264,7 +264,11 @@ unsafe fn find_env(name: *const c_char) -> Option<(usize, *mut c_char)> {
for (i, item) in platform::inner_environ.iter().enumerate() {
let mut item = *item;
if item == ptr::null_mut() {
assert_eq!(i, platform::inner_environ.len() - 1, "an early null pointer in environ vector");
assert_eq!(
i,
platform::inner_environ.len() - 1,
"an early null pointer in environ vector"
);
break;
}
let mut name = name;
@@ -498,7 +502,11 @@ pub unsafe extern "C" fn putenv(s: *mut c_char) -> c_int {
} else {
ptr = platform::alloc(s_len as usize + 1) as *mut c_char;
let i = platform::inner_environ.len() - 1;
assert_eq!(platform::inner_environ[i], ptr::null_mut(), "last element in environ vector was not null");
assert_eq!(
platform::inner_environ[i],
ptr::null_mut(),
"last element in environ vector was not null"
);
platform::inner_environ[i] = ptr;
platform::inner_environ.push(ptr::null_mut());
+7 -1
View File
@@ -341,7 +341,13 @@ pub unsafe extern "C" fn strftime(
format: *const c_char,
timeptr: *const tm,
) -> size_t {
strftime::strftime(true, &mut platform::UnsafeStringWriter(s as *mut u8), maxsize, format, timeptr)
strftime::strftime(
true,
&mut platform::UnsafeStringWriter(s as *mut u8),
maxsize,
format,
timeptr,
)
}
// #[no_mangle]
+14 -8
View File
@@ -1,9 +1,15 @@
use alloc::string::String;
use platform::Write;
use platform::types::*;
use platform::Write;
use tm;
pub unsafe fn strftime<W: Write>(toplevel: bool, mut w: &mut W, maxsize: usize, mut format: *const c_char, t: *const tm) -> size_t {
pub unsafe fn strftime<W: Write>(
toplevel: bool,
mut w: &mut W,
maxsize: usize,
mut format: *const c_char,
t: *const tm,
) -> size_t {
let mut written = 0;
if toplevel {
// Reserve nul byte
@@ -52,7 +58,7 @@ pub unsafe fn strftime<W: Write>(toplevel: bool, mut w: &mut W, maxsize: usize,
"Wednesday",
"Thursday",
"Friday",
"Saturday"
"Saturday",
];
const MONTHS: [&'static str; 12] = [
"January",
@@ -66,12 +72,12 @@ pub unsafe fn strftime<W: Write>(toplevel: bool, mut w: &mut W, maxsize: usize,
"September",
"October",
"November",
"December"
"December",
];
while *format != 0 {
if *format as u8 != b'%' {
w!(byte *format as u8);
w!(byte(*format as u8));
format = format.offset(1);
continue;
}
@@ -98,7 +104,7 @@ pub unsafe fn strftime<W: Write>(toplevel: bool, mut w: &mut W, maxsize: usize,
year += 1;
}
w!("{:02}", year + 19);
},
}
b'd' => w!("{:02}", (*t).tm_mday),
b'D' => w!(recurse "%m/%d/%y"),
b'e' => w!("{:2}", (*t).tm_mday),
@@ -129,9 +135,9 @@ pub unsafe fn strftime<W: Write>(toplevel: bool, mut w: &mut W, maxsize: usize,
b'y' => w!("{:02}", (*t).tm_year % 100),
b'Y' => w!("{}", (*t).tm_year + 1900),
b'z' => w!("+0000"), // TODO
b'Z' => w!("UTC"), // TODO
b'Z' => w!("UTC"), // TODO
b'+' => w!(recurse "%a %b %d %T %Z %Y"),
_ => return 0
_ => return 0,
}
format = format.offset(1);