[][src]Function solana_rbpf::syscalls::strcmp

pub fn strcmp<E: UserDefinedError>(
    arg1: u64,
    arg2: u64,
    _arg3: u64,
    _arg4: u64,
    _arg5: u64,
    ro_regions: &[MemoryRegion],
    _rw_regions: &[MemoryRegion]
) -> Result<u64, EbpfError<E>>

C-like strcmp, return 0 if the strings are equal, and a non-null value otherwise.

Examples

use solana_rbpf::syscalls::strcmp;
use solana_rbpf::memory_region::MemoryRegion;
use solana_rbpf::user_error::UserError;

let foo = "This is a string.";
let bar = "This is another sting.";
let va_foo = 0x1000;
let va_bar = 0x2000;
let regions = [MemoryRegion::new_from_slice(foo.as_bytes(), va_foo)];
assert!(strcmp::<UserError>(va_foo, va_foo, 0, 0, 0, &regions, &regions).unwrap() == 0);
let regions = [MemoryRegion::new_from_slice(foo.as_bytes(), va_foo),
               MemoryRegion::new_from_slice(bar.as_bytes(), va_bar)];
assert!(strcmp::<UserError>(va_foo, va_bar, 0, 0, 0, &regions, &regions).unwrap() != 0);