| // Copyright 2022 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| use std::process::Output; |
| |
| pub struct HwsecStatus { |
| exit_code: i32, |
| } |
| |
| impl HwsecStatus { |
| pub fn from_raw(exit_status: i32) -> Self { |
| Self { |
| exit_code: exit_status, |
| } |
| } |
| pub fn success(&self) -> bool { |
| self.exit_code == 0 |
| } |
| pub fn code(&self) -> Option<i32> { |
| Some(self.exit_code) |
| } |
| } |
| |
| pub struct HwsecOutput { |
| pub status: HwsecStatus, |
| pub stdout: Vec<u8>, |
| pub stderr: Vec<u8>, |
| } |
| |
| impl HwsecOutput { |
| pub fn from_output(output: Output) -> Self { |
| if output.status.code().is_none() { |
| Self { |
| status: HwsecStatus { exit_code: -1 }, |
| stdout: Vec::<u8>::new(), |
| stderr: Vec::<u8>::new(), |
| } |
| } else { |
| Self { |
| status: HwsecStatus { |
| exit_code: output.status.code().unwrap(), |
| }, |
| stdout: output.stdout, |
| stderr: output.stderr, |
| } |
| } |
| } |
| } |