use rust_util::{opt_result, simple_error, XResult}; use std::ffi::OsStr; use std::process::Command; const CMD_IPSET: &str = "ipset"; fn execute_ipset(args: I) -> XResult<(Vec, Vec)> where I: IntoIterator, S: AsRef, { let mut cmd_ipset = Command::new(CMD_IPSET); cmd_ipset.args(args); let cmd_output = opt_result!(cmd_ipset.output(), "Execute ipset with failed: {}"); if !cmd_output.status.success() { return simple_error!( "Execute ipset not failed, exit code: {:?}", cmd_output.status.code() ); } Ok((cmd_output.stdout, cmd_output.stderr)) }