#ifndef JOB_H
#define JOB_H
#include <sys/types.h>
enum {RF_NORMAL, RF_LONG, RF_ONLY_LEADER};
struct running_pipeline_struct {
int foreground;
struct proc_struct *first_proc;
struct proc_struct *last_proc;
pid_t pgid;
};
struct job_struct;
void init_job_control();
void end_job_control();
void init_running_pipeline(struct running_pipeline_struct *running_pipeline, int foreground);
pid_t make_child(struct running_pipeline_struct *running_pipeline, char *command);
int start_job(struct running_pipeline_struct *running_pipeline);
void kill_running_pipeline(struct running_pipeline_struct *running_pipeline);
int exit_pseudo_job(int exit_status);
struct job_struct *get_job(int n);
struct job_struct *get_current_job();
struct job_struct *get_previous_job();
struct job_struct *get_job_by_pid(pid_t pid);
void display_job(struct job_struct *job, int format);
void display_jobs(int format);
void display_unreported_jobs();
int run_job_in_foreground(struct job_struct *job, int *status);
int run_job_in_background(struct job_struct *job);
int kill_job(struct job_struct *job, int sig);
void wait_job(struct job_struct *job, int *status);
void wait_jobs();
#endif