Skip to content
Snippets Groups Projects
Commit 30a0f70d authored by jD91mZM2's avatar jD91mZM2
Browse files

Merge branch 'wcsrchr' into 'master'

implements wcsrchr from wchar.h

See merge request redox-os/relibc!197
parents fe905ed1 4ed6dca6
No related branches found
No related tags found
1 merge request!197implements wcsrchr from wchar.h
Pipeline #3078 canceled
...@@ -430,9 +430,19 @@ pub extern "C" fn wcspbrk(ws1: *const wchar_t, ws2: *const wchar_t) -> *mut wcha ...@@ -430,9 +430,19 @@ pub extern "C" fn wcspbrk(ws1: *const wchar_t, ws2: *const wchar_t) -> *mut wcha
unimplemented!(); unimplemented!();
} }
// #[no_mangle] #[no_mangle]
pub extern "C" fn wcsrchr(ws1: *const wchar_t, ws2: wchar_t) -> *mut wchar_t { pub unsafe extern "C" fn wcsrchr(ws1: *const wchar_t, wc: wchar_t) -> *mut wchar_t {
unimplemented!(); let mut last_matching_wc = 0 as *const wchar_t;
let mut i = 0;
while *ws1.add(i) != 0 {
if *ws1.add(i) == wc {
last_matching_wc = ws1.add(i);
}
i += 1;
}
last_matching_wc as *mut wchar_t
} }
// #[no_mangle] // #[no_mangle]
......
...@@ -87,7 +87,8 @@ EXPECT_BINS=\ ...@@ -87,7 +87,8 @@ EXPECT_BINS=\
wchar/mbsrtowcs \ wchar/mbsrtowcs \
wchar/putwchar \ wchar/putwchar \
wchar/wcrtomb \ wchar/wcrtomb \
wchar/wcscspn wchar/wcscspn \
wchar/wcsrchr
# Binaries that may generate varied output # Binaries that may generate varied output
BINS=\ BINS=\
......
#include <assert.h>
#include <wchar.h>
int main() {
wchar_t *s;
assert(wcsrchr(L"", L'a') == NULL);
s = L"a";
assert(wcsrchr(s, L'a') == s);
s = L"aa";
assert(wcsrchr(s, L'a') == s + 1);
s = L"aab";
assert(wcsrchr(s, L'a') == s + 1);
s = L"abcdef!\"£$%^e&*";
assert(wcsrchr(s, L'g') == NULL);
assert(wcsrchr(s, L'\"') == s + 7);
assert(wcsrchr(s, L'e') == s + 12);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment