summaryrefslogtreecommitdiffstats
path: root/rust/libnewsboat-ffi/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/libnewsboat-ffi/src/utils.rs')
-rw-r--r--rust/libnewsboat-ffi/src/utils.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/rust/libnewsboat-ffi/src/utils.rs b/rust/libnewsboat-ffi/src/utils.rs
index 1da94c53..b75c94dc 100644
--- a/rust/libnewsboat-ffi/src/utils.rs
+++ b/rust/libnewsboat-ffi/src/utils.rs
@@ -489,3 +489,18 @@ pub extern "C" fn rs_program_version() -> *mut c_char {
pub extern "C" fn rs_newsboat_version_major() -> u32 {
abort_on_panic(|| utils::newsboat_major_version())
}
+
+#[no_mangle]
+pub unsafe extern "C" fn rs_strip_comments(line: *const c_char) -> *mut c_char {
+ abort_on_panic(|| {
+ let line = CStr::from_ptr(line);
+ let line = line.to_str().expect("line contained invalid UTF-8");
+
+ let result = utils::strip_comments(line);
+
+ // `result` contains a subset of `line`, which is a C string. Thus, we conclude that
+ // `result` doesn't contain null bytes. Therefore, `CString::new` always returns `Some`.
+ let result = CString::new(result).unwrap();
+ result.into_raw()
+ })
+}