mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-29 06:13:20 +00:00
Finish renaming job tree to job group
Some "tree" terminology was still there.
This commit is contained in:
parent
765c48afa4
commit
2e5222ffe8
3 changed files with 20 additions and 19 deletions
|
@ -1332,7 +1332,7 @@ end_execution_reason_t parse_execution_context_t::run_1_job(const ast::job_t &jo
|
||||||
// Clean up the job on failure or cancellation.
|
// Clean up the job on failure or cancellation.
|
||||||
if (pop_result == end_execution_reason_t::ok) {
|
if (pop_result == end_execution_reason_t::ok) {
|
||||||
// Set the pgroup assignment mode and job group, now that the job is populated.
|
// Set the pgroup assignment mode and job group, now that the job is populated.
|
||||||
job_group_t::populate_tree_for_job(job.get(), ctx.job_group);
|
job_group_t::populate_group_for_job(job.get(), ctx.job_group);
|
||||||
assert(job->group && "Should have a job group");
|
assert(job->group && "Should have a job group");
|
||||||
|
|
||||||
// Success. Give the job to the parser - it will clean it up.
|
// Success. Give the job to the parser - it will clean it up.
|
||||||
|
|
27
src/proc.cpp
27
src/proc.cpp
|
@ -151,7 +151,7 @@ bool job_t::should_report_process_exits() const {
|
||||||
|
|
||||||
// Only report root job exits.
|
// Only report root job exits.
|
||||||
// For example in `ls | begin ; cat ; end` we don't need to report the cat sub-job.
|
// For example in `ls | begin ; cat ; end` we don't need to report the cat sub-job.
|
||||||
if (!flags().is_tree_root) {
|
if (!flags().is_group_root) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,34 +257,35 @@ void job_group_t::set_pgid(pid_t pgid) {
|
||||||
|
|
||||||
maybe_t<pid_t> job_group_t::get_pgid() const { return pgid_; }
|
maybe_t<pid_t> job_group_t::get_pgid() const { return pgid_; }
|
||||||
|
|
||||||
void job_group_t::populate_tree_for_job(job_t *job, const job_group_ref_t &proposed) {
|
void job_group_t::populate_group_for_job(job_t *job, const job_group_ref_t &proposed) {
|
||||||
|
assert(!job->group && "Job already has a group");
|
||||||
// Note there's three cases to consider:
|
// Note there's three cases to consider:
|
||||||
// nullptr -> this is a root job, there is no inherited job group
|
// nullptr -> this is a root job, there is no inherited job group
|
||||||
// internal -> the parent is running as part of a simple function execution
|
// internal -> the parent is running as part of a simple function execution
|
||||||
// We may need to create a new job group if we are going to fork.
|
// We may need to create a new job group if we are going to fork.
|
||||||
// non-internal -> we are running as part of a real pipeline
|
// non-internal -> we are running as part of a real pipeline
|
||||||
// Decide if this job can use an internal tree.
|
// Decide if this job can use an internal group.
|
||||||
// This is true if it's a simple foreground execution of an internal proc.
|
// This is true if it's a simple foreground execution of an internal proc.
|
||||||
bool initial_bg = job->is_initially_background();
|
bool initial_bg = job->is_initially_background();
|
||||||
bool first_proc_internal = job->processes.front()->is_internal();
|
bool first_proc_internal = job->processes.front()->is_internal();
|
||||||
bool can_use_internal =
|
bool can_use_internal =
|
||||||
!initial_bg && job->processes.size() == 1 && job->processes.front()->is_internal();
|
!initial_bg && job->processes.size() == 1 && job->processes.front()->is_internal();
|
||||||
|
|
||||||
bool needs_new_tree = false;
|
bool needs_new_group = false;
|
||||||
if (!proposed) {
|
if (!proposed) {
|
||||||
// We don't have a tree yet.
|
// We don't have a group yet.
|
||||||
needs_new_tree = true;
|
needs_new_group = true;
|
||||||
} else if (initial_bg) {
|
} else if (initial_bg) {
|
||||||
// Background jobs always get a new tree.
|
// Background jobs always get a new group.
|
||||||
needs_new_tree = true;
|
needs_new_group = true;
|
||||||
} else if (proposed->is_internal() && !can_use_internal) {
|
} else if (proposed->is_internal() && !can_use_internal) {
|
||||||
// We cannot use the internal tree for this job.
|
// We cannot use the internal group for this job.
|
||||||
needs_new_tree = true;
|
needs_new_group = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
job->mut_flags().is_tree_root = needs_new_tree;
|
job->mut_flags().is_group_root = needs_new_group;
|
||||||
|
|
||||||
if (!needs_new_tree) {
|
if (!needs_new_group) {
|
||||||
job->group = proposed;
|
job->group = proposed;
|
||||||
} else {
|
} else {
|
||||||
properties_t props{};
|
properties_t props{};
|
||||||
|
@ -390,7 +391,7 @@ job_t::~job_t() = default;
|
||||||
void job_t::mark_constructed() {
|
void job_t::mark_constructed() {
|
||||||
assert(!is_constructed() && "Job was already constructed");
|
assert(!is_constructed() && "Job was already constructed");
|
||||||
mut_flags().constructed = true;
|
mut_flags().constructed = true;
|
||||||
if (flags().is_tree_root) {
|
if (flags().is_group_root) {
|
||||||
group->mark_root_constructed();
|
group->mark_root_constructed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
10
src/proc.h
10
src/proc.h
|
@ -215,9 +215,9 @@ class job_group_t {
|
||||||
void mark_root_constructed() { root_constructed_ = true; };
|
void mark_root_constructed() { root_constructed_ = true; };
|
||||||
bool is_root_constructed() const { return root_constructed_; }
|
bool is_root_constructed() const { return root_constructed_; }
|
||||||
|
|
||||||
/// Given a job and a proposed job group (possibly null), populate the job's tree.
|
/// Given a job and a proposed job group (possibly null), populate the job's group field.
|
||||||
/// The proposed tree is the tree from the parent job, or null if this is a root.
|
/// The proposed group is the group from the parent job, or null if this is a root.
|
||||||
static void populate_tree_for_job(job_t *job, const job_group_ref_t &proposed_tree);
|
static void populate_group_for_job(job_t *job, const job_group_ref_t &proposed_tree);
|
||||||
|
|
||||||
~job_group_t();
|
~job_group_t();
|
||||||
|
|
||||||
|
@ -512,8 +512,8 @@ class job_t {
|
||||||
/// Whether to print timing for this job.
|
/// Whether to print timing for this job.
|
||||||
bool has_time_prefix{false};
|
bool has_time_prefix{false};
|
||||||
|
|
||||||
// Indicates that we are the "tree root." Any other jobs using this tree are nested.
|
// Indicates that we are the "group root." Any other jobs using this tree are nested.
|
||||||
bool is_tree_root{false};
|
bool is_group_root{false};
|
||||||
|
|
||||||
} job_flags{};
|
} job_flags{};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue