From 90bd6820c33f3749d4545511c6f6748f06910d72 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sat, 28 Jan 2017 17:56:16 +0100 Subject: [PATCH] some function shrinking for norme --- 42sh/includes/job_control.h | 1 + 42sh/src/job-control/builtin_bg.c | 10 +-- 42sh/src/job-control/builtin_fg.c | 9 +-- 42sh/src/job-control/job_format_head.c | 2 +- 42sh/src/job-control/process_format.c | 87 ++++++++++++++++---------- 5 files changed, 59 insertions(+), 50 deletions(-) diff --git a/42sh/includes/job_control.h b/42sh/includes/job_control.h index bea10d93..633596b9 100644 --- a/42sh/includes/job_control.h +++ b/42sh/includes/job_control.h @@ -63,6 +63,7 @@ int job_is_stopped(int id); int job_is_completed(int id); void job_new(char **av, pid_t pid); +void job_run(t_job *job, int foreground); int job_wait(int id); void job_remove(int id); void job_free(void *content, size_t content_size); diff --git a/42sh/src/job-control/builtin_bg.c b/42sh/src/job-control/builtin_bg.c index 1f34dcdb..9a9928fc 100644 --- a/42sh/src/job-control/builtin_bg.c +++ b/42sh/src/job-control/builtin_bg.c @@ -15,14 +15,12 @@ int builtin_bg(const char *path, char *const av[], char *const envp[]) { t_jobc *jobc; - t_job *job; t_list *jlist; int rank[2]; int id; (void)path; (void)envp; - (void)av; if (!SHELL_HAS_JOBC(data_singleton()->opts)) { ft_dprintf(2, "{red}bg: %s{eoc}\n", SHELL_MSG_NOJOBC); @@ -31,13 +29,9 @@ int builtin_bg(const char *path, char *const av[], char *const envp[]) jobc = &data_singleton()->jobc; job_getrank(&rank); id = av[1] ? ft_atoi(av[1]) : rank[0]; - jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id); - if (jlist) + if ((jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id))) { - job = jlist->content; - mark_job_as_running(job); - job_format(job, rank, JOBS_OPTS_L); - put_job_in_background(job, 1); + job_run(jlist->content, 0); return (0); } else if (av[1]) diff --git a/42sh/src/job-control/builtin_fg.c b/42sh/src/job-control/builtin_fg.c index 5e6c53b4..7c2dfe48 100644 --- a/42sh/src/job-control/builtin_fg.c +++ b/42sh/src/job-control/builtin_fg.c @@ -15,14 +15,12 @@ int builtin_fg(const char *path, char *const av[], char *const envp[]) { t_jobc *jobc; - t_job *job; t_list *jlist; int rank[2]; int id; (void)path; (void)envp; - (void)av; if (!SHELL_HAS_JOBC(data_singleton()->opts)) { ft_dprintf(2, "{red}fg: %s{eoc}\n", SHELL_MSG_NOJOBC); @@ -31,12 +29,9 @@ int builtin_fg(const char *path, char *const av[], char *const envp[]) jobc = &data_singleton()->jobc; job_getrank(&rank); id = av[1] ? ft_atoi(av[1]) : rank[0]; - jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id); - if (jlist) + if ((jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id))) { - job = jlist->content; - mark_job_as_running(job); - put_job_in_foreground(job, 1); + job_run(jlist->content, 1); return (0); } else if (av[1]) diff --git a/42sh/src/job-control/job_format_head.c b/42sh/src/job-control/job_format_head.c index 0dfcaaf9..f0b0bf22 100644 --- a/42sh/src/job-control/job_format_head.c +++ b/42sh/src/job-control/job_format_head.c @@ -14,7 +14,7 @@ void job_format_head(t_job *j, int rank[2]) { - char crank; + char crank; if (j->id == rank[0]) crank = '+'; diff --git a/42sh/src/job-control/process_format.c b/42sh/src/job-control/process_format.c index 7391dba4..00591d4c 100644 --- a/42sh/src/job-control/process_format.c +++ b/42sh/src/job-control/process_format.c @@ -12,16 +12,10 @@ #include "job_control.h" -void process_format(t_list **plist, int firstp, int opts) +static void process_format_state(t_process *p) { - t_process *p; int state; - p = (*plist)->content; - if (!firstp) - ft_printf(" "); - if (opts & JOBS_OPTS_L) - ft_printf("%i ", p->pid); state = p->attributes & PROCESS_STATE_MASK; if (state == PROCESS_RUNNING) ft_putstr("running "); @@ -41,8 +35,41 @@ void process_format(t_list **plist, int firstp, int opts) ft_printf("exit %i ", p->status); } ft_putchar('\t'); - if (opts & JOBS_OPTS_L) +} + +static void process_format_com_long(t_list **plist) +{ + t_process *p; + + p = (*plist)->content; + if (p->attributes & PROCESS_SUBSHELL) { + ft_putstr("( "); + ft_putstr(p->av[2]); + ft_putstr(" )"); + } + else + ft_sstrprint(p->av, ' '); + if ((*plist)->next) + ft_putstr(" |"); + (*plist) = (*plist)->next; +} + +static void process_format_com_short(t_list **plist, t_flag state) +{ + t_process *p; + + while (*plist) + { + p = (*plist)->content; + if (!(p->attributes & state) || + (state == PROCESS_COMPLETED && p->status != 0)) + break; + if (p->attributes & PROCESS_CONTINUED) + { + p->attributes &= ~PROCESS_STATE_MASK; + p->attributes &= ~PROCESS_RUNNING; + } if (p->attributes & PROCESS_SUBSHELL) { ft_putstr("( "); @@ -52,34 +79,26 @@ void process_format(t_list **plist, int firstp, int opts) else ft_sstrprint(p->av, ' '); if ((*plist)->next) - ft_putstr(" |"); + ft_putstr(" | "); (*plist) = (*plist)->next; } +} + +void process_format(t_list **plist, int firstp, int opts) +{ + t_process *p; + t_flag state; + + p = (*plist)->content; + state = p->attributes & PROCESS_STATE_MASK; + if (!firstp) + ft_printf(" "); + if (opts & JOBS_OPTS_L) + ft_printf("%i ", p->pid); + process_format_state(p); + if (opts & JOBS_OPTS_L) + process_format_com_long(plist); else - { - while (*plist) - { - p = (*plist)->content; - if (!(p->attributes & state) || - (state == PROCESS_COMPLETED && p->status != 0)) - break; - if (p->attributes & PROCESS_CONTINUED) - { - p->attributes &= ~PROCESS_STATE_MASK; - p->attributes &= ~PROCESS_RUNNING; - } - if (p->attributes & PROCESS_SUBSHELL) - { - ft_putstr("( "); - ft_putstr(p->av[2]); - ft_putstr(" )"); - } - else - ft_sstrprint(p->av, ' '); - if ((*plist)->next) - ft_putstr(" | "); - (*plist) = (*plist)->next; - } - } + process_format_com_short(plist, state); ft_putchar('\n'); }