mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-12 00:27:45 +08:00
19 lines
682 B
Rust
19 lines
682 B
Rust
use super::prelude::*;
|
|
use super::r#return::parse_return_value;
|
|
|
|
/// Function for handling the exit builtin.
|
|
pub fn exit(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> Option<c_int> {
|
|
let retval = match parse_return_value(args, parser, streams) {
|
|
Ok(v) => v,
|
|
Err(e) => return e,
|
|
};
|
|
|
|
// Mark that we are exiting in the parser.
|
|
// TODO: in concurrent mode this won't successfully exit a pipeline, as there are other parsers
|
|
// involved. That is, `exit | sleep 1000` may not exit as hoped. Need to rationalize what
|
|
// behavior we want here.
|
|
parser.libdata_mut().pods.exit_current_script = true;
|
|
|
|
return Some(retval);
|
|
}
|