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);
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);

View file

@ -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])

View file

@ -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])

View file

@ -14,7 +14,7 @@
void job_format_head(t_job *j, int rank[2])
{
char crank;
char crank;
if (j->id == rank[0])
crank = '+';

View file

@ -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');
}