some function shrinking for norme

This commit is contained in:
Jack Halford 2017-01-28 17:56:16 +01:00
parent 279509a651
commit 90bd6820c3
5 changed files with 59 additions and 50 deletions

View file

@ -63,6 +63,7 @@ int job_is_stopped(int id);
int job_is_completed(int id); int job_is_completed(int id);
void job_new(char **av, pid_t pid); void job_new(char **av, pid_t pid);
void job_run(t_job *job, int foreground);
int job_wait(int id); int job_wait(int id);
void job_remove(int id); void job_remove(int id);
void job_free(void *content, size_t content_size); void job_free(void *content, size_t content_size);

View file

@ -15,14 +15,12 @@
int builtin_bg(const char *path, char *const av[], char *const envp[]) int builtin_bg(const char *path, char *const av[], char *const envp[])
{ {
t_jobc *jobc; t_jobc *jobc;
t_job *job;
t_list *jlist; t_list *jlist;
int rank[2]; int rank[2];
int id; int id;
(void)path; (void)path;
(void)envp; (void)envp;
(void)av;
if (!SHELL_HAS_JOBC(data_singleton()->opts)) if (!SHELL_HAS_JOBC(data_singleton()->opts))
{ {
ft_dprintf(2, "{red}bg: %s{eoc}\n", SHELL_MSG_NOJOBC); 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; jobc = &data_singleton()->jobc;
job_getrank(&rank); job_getrank(&rank);
id = av[1] ? ft_atoi(av[1]) : rank[0]; id = av[1] ? ft_atoi(av[1]) : rank[0];
jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id); if ((jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id)))
if (jlist)
{ {
job = jlist->content; job_run(jlist->content, 0);
mark_job_as_running(job);
job_format(job, rank, JOBS_OPTS_L);
put_job_in_background(job, 1);
return (0); return (0);
} }
else if (av[1]) else if (av[1])

View file

@ -15,14 +15,12 @@
int builtin_fg(const char *path, char *const av[], char *const envp[]) int builtin_fg(const char *path, char *const av[], char *const envp[])
{ {
t_jobc *jobc; t_jobc *jobc;
t_job *job;
t_list *jlist; t_list *jlist;
int rank[2]; int rank[2];
int id; int id;
(void)path; (void)path;
(void)envp; (void)envp;
(void)av;
if (!SHELL_HAS_JOBC(data_singleton()->opts)) if (!SHELL_HAS_JOBC(data_singleton()->opts))
{ {
ft_dprintf(2, "{red}fg: %s{eoc}\n", SHELL_MSG_NOJOBC); 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; jobc = &data_singleton()->jobc;
job_getrank(&rank); job_getrank(&rank);
id = av[1] ? ft_atoi(av[1]) : rank[0]; id = av[1] ? ft_atoi(av[1]) : rank[0];
jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id); if ((jlist = ft_lst_find(jobc->first_job, &id, job_cmp_id)))
if (jlist)
{ {
job = jlist->content; job_run(jlist->content, 1);
mark_job_as_running(job);
put_job_in_foreground(job, 1);
return (0); return (0);
} }
else if (av[1]) else if (av[1])

View file

@ -12,16 +12,10 @@
#include "job_control.h" #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; 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; state = p->attributes & PROCESS_STATE_MASK;
if (state == PROCESS_RUNNING) if (state == PROCESS_RUNNING)
ft_putstr("running "); ft_putstr("running ");
@ -41,8 +35,13 @@ void process_format(t_list **plist, int firstp, int opts)
ft_printf("exit %i ", p->status); ft_printf("exit %i ", p->status);
} }
ft_putchar('\t'); 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) if (p->attributes & PROCESS_SUBSHELL)
{ {
ft_putstr("( "); ft_putstr("( ");
@ -54,9 +53,12 @@ void process_format(t_list **plist, int firstp, int opts)
if ((*plist)->next) if ((*plist)->next)
ft_putstr(" |"); ft_putstr(" |");
(*plist) = (*plist)->next; (*plist) = (*plist)->next;
} }
else
{ static void process_format_com_short(t_list **plist, t_flag state)
{
t_process *p;
while (*plist) while (*plist)
{ {
p = (*plist)->content; p = (*plist)->content;
@ -80,6 +82,23 @@ void process_format(t_list **plist, int firstp, int opts)
ft_putstr(" | "); ft_putstr(" | ");
(*plist) = (*plist)->next; (*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
process_format_com_short(plist, state);
ft_putchar('\n'); ft_putchar('\n');
} }