Added some constants in linux for file modes in the new branch
This commit is contained in:
+1
-1
Submodule cbindgen updated: d14295f3ca...95821b3bbe
@@ -1,10 +0,0 @@
|
||||
#ifndef _BITS_SIGNAL_H
|
||||
#define _BITS_SIGNAL_H
|
||||
|
||||
typedef struct sigaction {
|
||||
void (*sa_handler)(uintptr_t);
|
||||
sigset_t sa_mask;
|
||||
uintptr_t sa_flags;
|
||||
};
|
||||
|
||||
#endif
|
||||
+6
-52
@@ -6,61 +6,15 @@ extern crate platform;
|
||||
|
||||
use platform::types::*;
|
||||
|
||||
pub use sys::*;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_RDONLY: c_int = 0x0000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_WRONLY: c_int = 0x0001;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_RDWR: c_int = 0x0002;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_CREAT: c_int = 0x0040;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_TRUNC: c_int = 0x0200;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_ACCMODE: c_int = O_RDONLY | O_WRONLY | O_RDWR;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_APPEND: c_int = 0o2000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_CLOEXEC: c_int = 0o2_000_000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const O_EXCL: c_int = 0o200;
|
||||
#[path = "linux.rs"]
|
||||
pub mod sys;
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_RDONLY: c_int = 0x0001_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_WRONLY: c_int = 0x0002_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_RDWR: c_int = 0x0003_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_NONBLOCK: c_int = 0x0004_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_APPEND: c_int = 0x0008_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_SHLOCK: c_int = 0x0010_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_EXLOCK: c_int = 0x0020_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_ASYNC: c_int = 0x0040_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_FSYNC: c_int = 0x0080_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_CLOEXEC: c_int = 0x0100_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_CREAT: c_int = 0x0200_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_TRUNC: c_int = 0x0400_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_EXCL: c_int = 0x0800_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_DIRECTORY: c_int = 0x1000_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_STAT: c_int = 0x2000_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_SYMLINK: c_int = 0x4000_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_NOFOLLOW: c_int = 0x8000_0000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const O_ACCMODE: c_int = O_RDONLY | O_WRONLY | O_RDWR;
|
||||
#[path = "redox.rs"]
|
||||
pub mod sys;
|
||||
|
||||
pub const F_DUPFD: c_int = 0;
|
||||
pub const F_GETFD: c_int = 1;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
use platform::types::*;
|
||||
|
||||
pub const O_RDONLY: c_int = 0x0000;
|
||||
pub const O_WRONLY: c_int = 0x0001;
|
||||
pub const O_RDWR: c_int = 0x0002;
|
||||
pub const O_CREAT: c_int = 0x0040;
|
||||
pub const O_TRUNC: c_int = 0x0200;
|
||||
pub const O_ACCMODE: c_int = O_RDONLY | O_WRONLY | O_RDWR;
|
||||
pub const O_APPEND: c_int = 0o2000;
|
||||
pub const O_CLOEXEC: c_int = 0o2_000_000;
|
||||
pub const O_EXCL: c_int = 0o200;
|
||||
@@ -0,0 +1,20 @@
|
||||
use platform::types::*;
|
||||
|
||||
pub const O_RDONLY: c_int = 0x0001_0000;
|
||||
pub const O_WRONLY: c_int = 0x0002_0000;
|
||||
pub const O_RDWR: c_int = 0x0003_0000;
|
||||
pub const O_NONBLOCK: c_int = 0x0004_0000;
|
||||
pub const O_APPEND: c_int = 0x0008_0000;
|
||||
pub const O_SHLOCK: c_int = 0x0010_0000;
|
||||
pub const O_EXLOCK: c_int = 0x0020_0000;
|
||||
pub const O_ASYNC: c_int = 0x0040_0000;
|
||||
pub const O_FSYNC: c_int = 0x0080_0000;
|
||||
pub const O_CLOEXEC: c_int = 0x0100_0000;
|
||||
pub const O_CREAT: c_int = 0x0200_0000;
|
||||
pub const O_TRUNC: c_int = 0x0400_0000;
|
||||
pub const O_EXCL: c_int = 0x0800_0000;
|
||||
pub const O_DIRECTORY: c_int = 0x1000_0000;
|
||||
pub const O_STAT: c_int = 0x2000_0000;
|
||||
pub const O_SYMLINK: c_int = 0x4000_0000;
|
||||
pub const O_NOFOLLOW: c_int = 0x8000_0000;
|
||||
pub const O_ACCMODE: c_int = O_RDONLY | O_WRONLY | O_RDWR;
|
||||
@@ -1,6 +1,6 @@
|
||||
sys_includes = ["sys/types.h"]
|
||||
include_guard = "_SIGNAL_H"
|
||||
trailer = "#include <bits/signal.h>"
|
||||
style = "Tag"
|
||||
language = "C"
|
||||
|
||||
[defines]
|
||||
|
||||
+12
-176
@@ -4,184 +4,18 @@
|
||||
|
||||
extern crate platform;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[path = "linux.rs"]
|
||||
pub mod sys;
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
#[path = "redox.rs"]
|
||||
pub mod sys;
|
||||
|
||||
pub use sys::*;
|
||||
|
||||
use platform::types::*;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[repr(C)]
|
||||
pub struct sigset_t {
|
||||
pub bits: [u64; 16],
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGHUP: usize = 1;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGINT: usize = 2;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGQUIT: usize = 3;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGILL: usize = 4;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGTRAP: usize = 5;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGABRT: usize = 6;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGIOT: usize = SIGABRT;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGBUS: usize = 7;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGFPE: usize = 8;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGKILL: usize = 9;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGUSR1: usize = 10;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGSEGV: usize = 11;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGUSR2: usize = 12;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGPIPE: usize = 13;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGALRM: usize = 14;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGTERM: usize = 15;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGSTKFLT: usize = 16;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGCHLD: usize = 17;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGCONT: usize = 18;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGSTOP: usize = 19;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGTSTP: usize = 20;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGTTIN: usize = 21;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGTTOU: usize = 22;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGURG: usize = 23;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGXCPU: usize = 24;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGXFSZ: usize = 25;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGVTALRM: usize = 26;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGPROF: usize = 27;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGWINCH: usize = 28;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGIO: usize = 29;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGPOLL: usize = 29;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGPWR: usize = 30;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGSYS: usize = 31;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SIGUNUSED: usize = SIGSYS;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_NOCLDSTOP: usize = 1;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_NOCLDWAIT: usize = 2;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_SIGINFO: usize = 4;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_ONSTACK: usize = 0x08000000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_RESTART: usize = 0x10000000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_NODEFER: usize = 0x40000000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_RESETHAND: usize = 0x80000000;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub const SA_RESTORER: usize = 0x04000000;
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
#[repr(C)]
|
||||
pub struct sigset_t {
|
||||
pub bits: [u64; 2],
|
||||
}
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGHUP: usize = 1;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGINT: usize = 2;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGQUIT: usize = 3;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGILL: usize = 4;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGTRAP: usize = 5;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGBUS: usize = 7;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGFPE: usize = 8;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGKILL: usize = 9;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGUSR1: usize = 10;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGSEGV: usize = 11;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGUSR2: usize = 12;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGPIPE: usize = 13;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGALRM: usize = 14;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGTERM: usize = 15;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGSTKFLT: usize = 16;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGCHLD: usize = 17;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGCONT: usize = 18;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGSTOP: usize = 19;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGTSTP: usize = 20;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGTTIN: usize = 21;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGTTOU: usize = 22;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGURG: usize = 23;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGXCPU: usize = 24;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGXFSZ: usize = 25;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGVTALRM: usize = 26;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGPROF: usize = 27;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGWINCH: usize = 28;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGIO: usize = 29;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGPWR: usize = 30;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SIGSYS: usize = 31;
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_NOCLDSTOP: usize = 0x00000001;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_NOCLDWAIT: usize = 0x00000002;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_SIGINFO: usize = 0x00000004;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_RESTORER: usize = 0x04000000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_ONSTACK: usize = 0x08000000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_RESTART: usize = 0x10000000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_NODEFER: usize = 0x40000000;
|
||||
#[cfg(target_os = "redox")]
|
||||
pub const SA_RESETHAND: usize = 0x80000000;
|
||||
|
||||
#[repr(C)]
|
||||
pub struct sigaction {
|
||||
pub sa_handler: extern "C" fn(usize),
|
||||
@@ -189,6 +23,8 @@ pub struct sigaction {
|
||||
pub sa_flags: usize,
|
||||
}
|
||||
|
||||
pub type sigset_t = sys_sigset_t;
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn kill(pid: pid_t, sig: c_int) -> c_int {
|
||||
unimplemented!();
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#[repr(C)]
|
||||
pub struct sys_sigset_t {
|
||||
pub bits: [u64; 16],
|
||||
}
|
||||
|
||||
pub const SIGHUP: usize = 1;
|
||||
pub const SIGINT: usize = 2;
|
||||
pub const SIGQUIT: usize = 3;
|
||||
pub const SIGILL: usize = 4;
|
||||
pub const SIGTRAP: usize = 5;
|
||||
pub const SIGABRT: usize = 6;
|
||||
pub const SIGIOT: usize = SIGABRT;
|
||||
pub const SIGBUS: usize = 7;
|
||||
pub const SIGFPE: usize = 8;
|
||||
pub const SIGKILL: usize = 9;
|
||||
pub const SIGUSR1: usize = 10;
|
||||
pub const SIGSEGV: usize = 11;
|
||||
pub const SIGUSR2: usize = 12;
|
||||
pub const SIGPIPE: usize = 13;
|
||||
pub const SIGALRM: usize = 14;
|
||||
pub const SIGTERM: usize = 15;
|
||||
pub const SIGSTKFLT: usize = 16;
|
||||
pub const SIGCHLD: usize = 17;
|
||||
pub const SIGCONT: usize = 18;
|
||||
pub const SIGSTOP: usize = 19;
|
||||
pub const SIGTSTP: usize = 20;
|
||||
pub const SIGTTIN: usize = 21;
|
||||
pub const SIGTTOU: usize = 22;
|
||||
pub const SIGURG: usize = 23;
|
||||
pub const SIGXCPU: usize = 24;
|
||||
pub const SIGXFSZ: usize = 25;
|
||||
pub const SIGVTALRM: usize = 26;
|
||||
pub const SIGPROF: usize = 27;
|
||||
pub const SIGWINCH: usize = 28;
|
||||
pub const SIGIO: usize = 29;
|
||||
pub const SIGPOLL: usize = 29;
|
||||
pub const SIGPWR: usize = 30;
|
||||
pub const SIGSYS: usize = 31;
|
||||
pub const SIGUNUSED: usize = SIGSYS;
|
||||
|
||||
pub const SA_NOCLDSTOP: usize = 1;
|
||||
pub const SA_NOCLDWAIT: usize = 2;
|
||||
pub const SA_SIGINFO: usize = 4;
|
||||
pub const SA_ONSTACK: usize = 0x08000000;
|
||||
pub const SA_RESTART: usize = 0x10000000;
|
||||
pub const SA_NODEFER: usize = 0x40000000;
|
||||
pub const SA_RESETHAND: usize = 0x80000000;
|
||||
pub const SA_RESTORER: usize = 0x04000000;
|
||||
@@ -0,0 +1,44 @@
|
||||
#[repr(C)]
|
||||
pub struct sys_sigset_t {
|
||||
pub bits: [u64; 2],
|
||||
}
|
||||
|
||||
pub const SIGHUP: usize = 1;
|
||||
pub const SIGINT: usize = 2;
|
||||
pub const SIGQUIT: usize = 3;
|
||||
pub const SIGILL: usize = 4;
|
||||
pub const SIGTRAP: usize = 5;
|
||||
pub const SIGBUS: usize = 7;
|
||||
pub const SIGFPE: usize = 8;
|
||||
pub const SIGKILL: usize = 9;
|
||||
pub const SIGUSR1: usize = 10;
|
||||
pub const SIGSEGV: usize = 11;
|
||||
pub const SIGUSR2: usize = 12;
|
||||
pub const SIGPIPE: usize = 13;
|
||||
pub const SIGALRM: usize = 14;
|
||||
pub const SIGTERM: usize = 15;
|
||||
pub const SIGSTKFLT: usize = 16;
|
||||
pub const SIGCHLD: usize = 17;
|
||||
pub const SIGCONT: usize = 18;
|
||||
pub const SIGSTOP: usize = 19;
|
||||
pub const SIGTSTP: usize = 20;
|
||||
pub const SIGTTIN: usize = 21;
|
||||
pub const SIGTTOU: usize = 22;
|
||||
pub const SIGURG: usize = 23;
|
||||
pub const SIGXCPU: usize = 24;
|
||||
pub const SIGXFSZ: usize = 25;
|
||||
pub const SIGVTALRM: usize = 26;
|
||||
pub const SIGPROF: usize = 27;
|
||||
pub const SIGWINCH: usize = 28;
|
||||
pub const SIGIO: usize = 29;
|
||||
pub const SIGPWR: usize = 30;
|
||||
pub const SIGSYS: usize = 31;
|
||||
|
||||
pub const SA_NOCLDSTOP: usize = 0x00000001;
|
||||
pub const SA_NOCLDWAIT: usize = 0x00000002;
|
||||
pub const SA_SIGINFO: usize = 0x00000004;
|
||||
pub const SA_RESTORER: usize = 0x04000000;
|
||||
pub const SA_ONSTACK: usize = 0x08000000;
|
||||
pub const SA_RESTART: usize = 0x10000000;
|
||||
pub const SA_NODEFER: usize = 0x40000000;
|
||||
pub const SA_RESETHAND: usize = 0x80000000;
|
||||
+23
-4
@@ -250,8 +250,13 @@ pub unsafe extern "C" fn strncpy(s1: *mut c_char, s2: *const c_char, n: usize) -
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn strpbrk(s1: *const c_char, s2: *const c_char) -> *mut c_char {
|
||||
unimplemented!();
|
||||
pub unsafe extern "C" fn strpbrk(s1: *const c_char, s2: *const c_char) -> *mut c_char {
|
||||
let p = s1.offset(strcspn(s1, s2) as isize);
|
||||
if *p != 0 {
|
||||
p as *mut c_char
|
||||
} else {
|
||||
ptr::null_mut()
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
@@ -299,8 +304,22 @@ pub unsafe extern "C" fn strspn(s1: *const c_char, s2: *const c_char) -> c_ulong
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn strstr(s1: *const c_char, s2: *const c_char) -> *mut c_char {
|
||||
unimplemented!();
|
||||
pub unsafe extern "C" fn strstr(s1: *const c_char, s2: *const c_char) -> *mut c_char {
|
||||
let mut i = 0;
|
||||
while *s1.offset(i) != 0 {
|
||||
let mut j = 0;
|
||||
while *s2.offset(j) != 0 && *s1.offset(j + i) != 0 {
|
||||
if *s2.offset(j) != *s1.offset(j + i) {
|
||||
break;
|
||||
}
|
||||
j += 1;
|
||||
if *s2.offset(j) == 0 {
|
||||
return s1.offset(i) as *mut c_char;
|
||||
}
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
ptr::null_mut()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
sys_includes = ["sys/types.h", "sys/resource.h"]
|
||||
include_guard = "_SYS_WAIT_H"
|
||||
style = "Tag"
|
||||
language = "C"
|
||||
|
||||
[enum]
|
||||
|
||||
@@ -31,6 +31,8 @@ EXPECT_BINS=\
|
||||
string/strchr \
|
||||
string/strrchr \
|
||||
string/strspn \
|
||||
string/strstr \
|
||||
string/strpbrk \
|
||||
unlink \
|
||||
write
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
The quick drawn fix jumps over the lazy bug
|
||||
lazy bug
|
||||
NULL
|
||||
@@ -0,0 +1,3 @@
|
||||
rust
|
||||
libc we trust
|
||||
NULL
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
char* source = "The quick drawn fix jumps over the lazy bug";
|
||||
|
||||
// should be "The quick drawn fix jumps over the lazy bug"
|
||||
char* res1 = strpbrk(source, "From The Very Beginning");
|
||||
printf("%s\n", (res1) ? res1 : "NULL");
|
||||
|
||||
// should be "lazy bug"
|
||||
char* res2 = strpbrk(source, "lzbg");
|
||||
printf("%s\n", (res2) ? res2 : "NULL");
|
||||
|
||||
// should be "NULL"
|
||||
char* res3 = strpbrk(source, "404");
|
||||
printf("%s\n", (res3) ? res3 : "NULL");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
// should be "rust"
|
||||
char* res1 = strstr("In relibc we trust", "rust");
|
||||
printf("%s\n", (res1) ? res1 : "NULL");
|
||||
|
||||
// should be "libc we trust"
|
||||
char* res2 = strstr("In relibc we trust", "libc");
|
||||
printf("%s\n", (res2) ? res2 : "NULL");
|
||||
|
||||
// should be "NULL"
|
||||
char* res3 = strstr("In relibc we trust", "bugs");
|
||||
printf("%s\n", (res3) ? res3 : "NULL");
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user