use bstr::{BStr, BString, ByteSlice, ByteVec};/// Transforms the given `value` to be suitable for use as an argument for Bourne shells by wrapping it into single quotes.////// Every single-quote `'` is escaped with `\'`, every exclamation mark `!` is escaped with `\!`, and the entire string is enclosed/// in single quotes.pub fn single(mut value: &BStr) -> BString { let mut quoted = BString::new(b"'".to_vec()); while let Some(pos) = value.find_byteset(b"'!") { quoted.extend_from_slice(&value[..pos]); quoted.push_str(b"'\\"); quoted.push(value[pos]); quoted.push(b'\''); value = &value[pos + 1..]; } quoted.extend_from_slice(value); quoted.push(b'\''); quoted}
use bstr::{BStr, BString, ByteSlice, ByteVec};
/// Transforms the given `value` to be suitable for use as an argument for Bourne shells by wrapping it into single quotes.
///
/// Every single-quote `'` is escaped with `\'`, every exclamation mark `!` is escaped with `\!`, and the entire string is enclosed
/// in single quotes.
pub fn single(mut value: &BStr) -> BString {
let mut quoted = BString::new(b"'".to_vec());
while let Some(pos) = value.find_byteset(b"'!") {
quoted.extend_from_slice(&value[..pos]);
quoted.push_str(b"'\\");
quoted.push(value[pos]);
quoted.push(b'\'');
value = &value[pos + 1..];
}
quoted.extend_from_slice(value);
quoted.push(b'\'');
quoted
}