| 477 | } |
| 478 | |
| 479 | fn parse_api_socket(cmd_arguments: &ArgMatches) -> Result<(Option<String>, Option<RawFd>), Error> { |
| 480 | if let Some(socket_config) = cmd_arguments.get_one::<String>("api-socket") { |
| 481 | let mut parser = OptionParser::new(); |
| 482 | parser.add("path").add("fd"); |
| 483 | parser.parse(socket_config).unwrap_or_default(); |
| 484 | |
| 485 | if let Some(fd) = parser.get("fd") { |
| 486 | Ok(( |
| 487 | None, |
| 488 | Some(fd.parse::<RawFd>().map_err(Error::ParsingApiSocket)?), |
| 489 | )) |
| 490 | } else if let Some(path) = parser.get("path") { |
| 491 | Ok((Some(path), None)) |
| 492 | } else { |
| 493 | Ok(( |
| 494 | cmd_arguments |
| 495 | .get_one::<String>("api-socket") |
| 496 | .map(|s| s.to_string()), |
| 497 | None, |
| 498 | )) |
| 499 | } |
| 500 | } else { |
| 501 | Ok((None, None)) |
| 502 | } |
| 503 | } |
| 504 | |
| 505 | fn start_vmm( |
| 506 | cmd_arguments: &ArgMatches, |