Hi Christophe,
> i can not use :
> let ppDb : **mut () = RawPtr::null();
> unsafe { res=sqlite3_open(filename.as_ptr(), ppDb);
> because as_ptr() returns an *u8 and c_char is a i8, so i have to use
> extern { fn sqlite3_open(filename: *c_uchar, ppDb : **mut ()) ->
> c_int; }
as_ptr() is a bad idea as there is no guarantee that Rust string is
null-terminated. It should be safer to use with_c_str like:
filename.with_c_str(|c_str| unsafe {
sqlite3_open(c_str, ppDb)
})
More details here:
http://static.rust-lang.org/doc/master/std/c_str/trait.ToCStr.html#method.with_c_str
> Now, suppose i use
> extern { fn sqlite3_errmsg(pDb : *mut ()) -> *c_uchar; }
I believe it actually should be
extern { fn sqlite3_errmsg(pDB: *mut()) -> *c_char; }
And for creating an owned string from it you can use
std::str::raw::from_c_str
More details here:
http://static.rust-lang.org/doc/master/std/str/raw/fn.from_c_str.html
--
Valerii
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev