Rust module that provides exit codes for programs.
Usage:
use std::process;
use sysexit;
let exit_status = process::Command::new("sh")
.arg("-c").arg(format!("exit {}", 74))
.status()
.expect("failed to run sh(1)");
let exit_code = sysexit::from_status(exit_status);
println!("{}", exit_code);
This outputs:
i/o error (74)
The choice of an appropriate exit value is often ambigeous and whilst it is impossible to provide an authoritative anthology that applies under all circumstances, this crate attempts to collec the most frequently recognised exit codes across Unix systems.
Exit statuses fall between 0 and 255 (inclusive), and codes greater than zero indicate failure. The range 125–128 is reserved shell-specific statuses, including shell builtins and compound commands. The range 129–154 is reserved fatal signals, explained below.
As a basis it encodes the exit codes of [sysexits(3)] from OpenBSD
(64–78), exit statuses used by [bash(1)], supplemented by codes
created by shells when the command is terminated by a fatal signal.
When the fatal signal is a number N, the latter follows bash’s
strategy of using the value 128 + N as the exit status. This means
that the SIGHUP
(1) signal will be recognised as the exit code
for the number 129.
You can see the full API documentation on https://docs.rs/sysexit.
pub fn from_status(status: std::process::ExitStatus) -> sysexit::Code
]Converts [std::process::ExitStatus
] to [sysexit::Code
].
pub fn is_success(status: std::process::ExitStatus) -> bool
]Determines if the provided [std::process::ExitStatus
] was successful.
pub fn is_error(status: std::process::ExitStatus) -> bool
]Determines if the provided [std::process::ExitStatus
] was jnsuccessful.
pub fn is_reserved(n: i32) -> bool
]Test if the provided exit code is reserved and has a special meaning.
pub fn is_valid(n: i32) -> bool
]Test if the provided exit code is valid, in other words that it is within the 0-255 (inclusive) range.
[_exit(2)], [exit(3)], [sysexits(3)], [bash(1)]
This library is based on the sysexits.h
file that first appeared
in 4.0BSD for use by the delivermail utility, later renamed to
[sendmail(8)]. It was further expanded with fatal signals from
[bash(1)].
Eric Allman invented the sysexits.h
file in 1980. Much of the
documentation for this library is based on the [sysexits(3)] man
page written by Joerg Wunsch, based on Eric’s original comments.
The is_reserved
and is_valid
functions were written by Richard
Fussenegger. The Rust crate was written by [Andreas Tolfsen].
The choice of an appropriate exit value is often ambigeous.