summaryrefslogtreecommitdiff
path: root/bin/ksh/jobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ksh/jobs.c')
-rw-r--r--bin/ksh/jobs.c135
1 files changed, 67 insertions, 68 deletions
diff --git a/bin/ksh/jobs.c b/bin/ksh/jobs.c
index 2b7369df085..b5073966ec3 100644
--- a/bin/ksh/jobs.c
+++ b/bin/ksh/jobs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: jobs.c,v 1.4 1996/11/21 07:59:29 downsj Exp $ */
+/* $OpenBSD: jobs.c,v 1.5 1997/06/18 22:42:37 kstailey Exp $ */
/*
* Process and job control
@@ -165,7 +165,7 @@ static const char *const lookup_msgs[] = {
"no such job",
"ambiguous",
"argument must be %job or process id",
- (char *) 0
+ NULL
};
clock_t j_systime, j_usrtime; /* user and system time of last j_waitjed job */
@@ -231,7 +231,7 @@ j_init(mflagset)
#ifdef JOB_SIGS
sigemptyset(&sm_default);
- sigprocmask(SIG_SETMASK, &sm_default, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &sm_default, NULL);
sigemptyset(&sm_sigchld);
sigaddset(&sm_sigchld, SIGCHLD);
@@ -250,7 +250,7 @@ j_init(mflagset)
/* shl_j is used to do asynchronous notification (used in
* an interrupt handler, so need a distinct shf)
*/
- shl_j = shf_fdopen(2, SHF_WR, (struct shf *) 0);
+ shl_j = shf_fdopen(2, SHF_WR, NULL);
# ifdef TTY_PGRP
if (Flag(FMONITOR) || Flag(FTALKING)) {
@@ -285,7 +285,7 @@ j_exit()
Job *j;
int killed = 0;
- for (j = job_list; j != (Job *) 0; j = j->next) {
+ for (j = job_list; j != NULL; j = j->next) {
if (j->ppid == procpid
&& (j->state == PSTOPPED
|| (j->state == PRUNNING
@@ -452,7 +452,7 @@ exchild(t, flags, close_fd)
#endif /* JOB_SIGS */
p = new_proc();
- p->next = (Proc *) 0;
+ p->next = NULL;
p->state = PRUNNING;
WSTATUS(p->status) = 0;
p->pid = 0;
@@ -514,7 +514,7 @@ exchild(t, flags, close_fd)
}
#endif /* NEED_PGRP_SYNC */
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
errorf("cannot fork - try again");
}
@@ -593,7 +593,7 @@ exchild(t, flags, close_fd)
coproc_cleanup(FALSE);
#endif /* KSH */
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
cleanup_parents_env();
#ifdef TTY_PGRP
@@ -667,7 +667,7 @@ exchild(t, flags, close_fd)
}
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return rv;
@@ -689,7 +689,7 @@ startlast()
j_startjob(last_job);
}
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
}
@@ -712,7 +712,7 @@ waitlast()
else
internal_errorf(0, "waitlast: not started");
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return 125; /* not so arbitrary, non-zero value */
}
@@ -720,7 +720,7 @@ waitlast()
rv = j_waitj(j, JW_NONE, "jw:waitlast");
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return rv;
@@ -744,7 +744,7 @@ waitfor(cp, sigp)
*sigp = 0;
- if (cp == (char *) 0) {
+ if (cp == NULL) {
/* wait for an unspecified job - always returns 0, so
* don't have to worry about exited/signaled jobs
*/
@@ -754,7 +754,7 @@ waitfor(cp, sigp)
break;
if (!j) {
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return -1;
}
@@ -763,13 +763,13 @@ waitfor(cp, sigp)
flags &= ~JW_ASYNCNOTIFY;
if (j->ppid != procpid) {
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return -1;
}
} else {
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
if (ecode == JL_NOSUCH)
return -1;
@@ -780,7 +780,7 @@ waitfor(cp, sigp)
rv = j_waitj(j, flags, "jw:waitfor");
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
if (rv < 0) /* we were interrupted */
@@ -805,16 +805,16 @@ j_kill(cp, sig)
sigprocmask(SIG_BLOCK, &sm_sigchld, &omask);
#endif /* JOB_SIGS */
- if ((j = j_lookup(cp, &ecode)) == (Job *) 0) {
+ if ((j = j_lookup(cp, &ecode)) == NULL) {
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
bi_errorf("%s: %s", cp, lookup_msgs[ecode]);
return 1;
}
if (j->pgrp == 0) { /* started when !Flag(FMONITOR) */
- for (p=j->proc_list; p != (Proc *) 0; p = p->next)
+ for (p=j->proc_list; p != NULL; p = p->next)
if (kill(p->pid, sig) < 0) {
bi_errorf("%s: %s", cp, strerror(errno));
rv = 1;
@@ -831,7 +831,7 @@ j_kill(cp, sig)
}
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return rv;
@@ -853,14 +853,14 @@ j_resume(cp, bg)
sigprocmask(SIG_BLOCK, &sm_sigchld, &omask);
- if ((j = j_lookup(cp, &ecode)) == (Job *) 0) {
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ if ((j = j_lookup(cp, &ecode)) == NULL) {
+ sigprocmask(SIG_SETMASK, &omask, NULL);
bi_errorf("%s: %s", cp, lookup_msgs[ecode]);
return 1;
}
if (j->pgrp == 0) {
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
bi_errorf("job not job-controlled");
return 1;
}
@@ -869,7 +869,7 @@ j_resume(cp, bg)
shprintf("[%d] ", j->job);
running = 0;
- for (p = j->proc_list; p != (Proc *) 0; p = p->next) {
+ for (p = j->proc_list; p != NULL; p = p->next) {
if (p->state == PSTOPPED) {
p->state = PRUNNING;
WSTATUS(p->status) = 0;
@@ -895,8 +895,7 @@ j_resume(cp, bg)
if (ttypgrp_ok && tcsetpgrp(tty_fd, j->pgrp) < 0) {
if (j->flags & JF_SAVEDTTY)
set_tty(tty_fd, &tty_state, TF_NONE);
- sigprocmask(SIG_SETMASK, &omask,
- (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
bi_errorf("1st tcsetpgrp(%d, %d) failed: %s",
tty_fd, (int) j->pgrp, strerror(errno));
return 1;
@@ -906,7 +905,7 @@ j_resume(cp, bg)
j->flags |= JF_FG;
j->flags &= ~JF_KNOWN;
if (j == async_job)
- async_job = (Job *) 0;
+ async_job = NULL;
}
if (j->state == PRUNNING && killpg(j->pgrp, SIGCONT) < 0) {
@@ -925,7 +924,7 @@ j_resume(cp, bg)
}
# endif /* TTY_PGRP */
}
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
bi_errorf("cannot continue job %s: %s",
cp, strerror(err));
return 1;
@@ -938,7 +937,7 @@ j_resume(cp, bg)
# endif /* TTY_PGRP */
rv = j_waitj(j, JW_NONE, "jw:resume");
}
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
return rv;
}
#endif /* JOBS */
@@ -950,7 +949,7 @@ j_stopped_running()
Job *j;
int which = 0;
- for (j = job_list; j != (Job *) 0; j = j->next) {
+ for (j = job_list; j != NULL; j = j->next) {
#ifdef JOBS
if (j->ppid == procpid && j->state == PSTOPPED)
which |= 1;
@@ -993,9 +992,9 @@ j_jobs(cp, slp, nflag)
if (cp) {
int ecode;
- if ((j = j_lookup(cp, &ecode)) == (Job *) 0) {
+ if ((j = j_lookup(cp, &ecode)) == NULL) {
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
bi_errorf("%s: %s", cp, lookup_msgs[ecode]);
return 1;
@@ -1021,7 +1020,7 @@ j_jobs(cp, slp, nflag)
remove_job(j, "jobs");
}
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return 0;
}
@@ -1054,7 +1053,7 @@ j_notify()
}
shf_flush(shl_out);
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
}
@@ -1072,7 +1071,7 @@ j_async()
async_job->flags |= JF_KNOWN;
#ifdef JOB_SIGS
- sigprocmask(SIG_SETMASK, &omask, (sigset_t *) 0);
+ sigprocmask(SIG_SETMASK, &omask, NULL);
#endif /* JOB_SIGS */
return async_pid;
@@ -1097,7 +1096,7 @@ j_set_async(j)
async_job = j;
async_pid = j->last_proc->pid;
while (nzombie > child_max) {
- oldest = (Job *) 0;
+ oldest = NULL;
for (jl = job_list; jl; jl = jl->next)
if (jl != async_job && (jl->flags & JF_ZOMBIE)
&& (!oldest || jl->age < oldest->age))
@@ -1311,12 +1310,12 @@ j_sigchld(sig)
ksh_times(&t1);
/* find job and process structures for this pid */
- for (j = job_list; j != (Job *) 0; j = j->next)
- for (p = j->proc_list; p != (Proc *) 0; p = p->next)
+ for (j = job_list; j != NULL; j = j->next)
+ for (p = j->proc_list; p != NULL; p = p->next)
if (p->pid == pid)
goto found;
found:
- if (j == (Job *) 0) {
+ if (j == NULL) {
/* Can occur if process has kids, then execs shell
warningf(TRUE, "bad process waited for (pid = %d)",
pid);
@@ -1375,7 +1374,7 @@ check_job(j)
}
jstate = PRUNNING;
- for (p=j->proc_list; p != (Proc *) 0; p = p->next) {
+ for (p=j->proc_list; p != NULL; p = p->next) {
if (p->state == PRUNNING)
return; /* some processes still running */
if (p->state > jstate)
@@ -1405,7 +1404,7 @@ check_job(j)
* (at leasst, this is what ksh93d thinks)
*/
if (coproc.job == j) {
- coproc.job = (void *) 0;
+ coproc.job = NULL;
/* XXX would be nice to get the closes out of here
* so they aren't done in the signal handler.
* Would mean a check in coproc_getfd() to
@@ -1500,7 +1499,7 @@ j_print(j, how, shf)
else if (j == job_list->next)
jobchar = '-';
- for (p = j->proc_list; p != (Proc *) 0;) {
+ for (p = j->proc_list; p != NULL;) {
coredumped = 0;
switch (p->state) {
case PRUNNING:
@@ -1590,54 +1589,54 @@ j_lookup(cp, ecodep)
if (digit(*cp)) {
job = atoi(cp);
/* Look for last_proc->pid (what $! returns) first... */
- for (j = job_list; j != (Job *) 0; j = j->next)
+ for (j = job_list; j != NULL; j = j->next)
if (j->last_proc && j->last_proc->pid == job)
return j;
/* ...then look for process group (this is non-POSIX),
* but should not break anything (so FPOSIX isn't used).
*/
- for (j = job_list; j != (Job *) 0; j = j->next)
+ for (j = job_list; j != NULL; j = j->next)
if (j->pgrp && j->pgrp == job)
return j;
if (ecodep)
*ecodep = JL_NOSUCH;
- return (Job *) 0;
+ return NULL;
}
if (*cp != '%') {
if (ecodep)
*ecodep = JL_INVALID;
- return (Job *) 0;
+ return NULL;
}
switch (*++cp) {
case '\0': /* non-standard */
case '+':
case '%':
- if (job_list != (Job *) 0)
+ if (job_list != NULL)
return job_list;
break;
case '-':
- if (job_list != (Job *) 0 && job_list->next)
+ if (job_list != NULL && job_list->next)
return job_list->next;
break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
job = atoi(cp);
- for (j = job_list; j != (Job *) 0; j = j->next)
+ for (j = job_list; j != NULL; j = j->next)
if (j->job == job)
return j;
break;
case '?': /* %?string */
- last_match = (Job *) 0;
- for (j = job_list; j != (Job *) 0; j = j->next)
- for (p = j->proc_list; p != (Proc *) 0; p = p->next)
- if (strstr(p->command, cp+1) != (char *) 0) {
+ last_match = NULL;
+ for (j = job_list; j != NULL; j = j->next)
+ for (p = j->proc_list; p != NULL; p = p->next)
+ if (strstr(p->command, cp+1) != NULL) {
if (last_match) {
if (ecodep)
*ecodep = JL_AMBIG;
- return (Job *) 0;
+ return NULL;
}
last_match = j;
}
@@ -1647,13 +1646,13 @@ j_lookup(cp, ecodep)
default: /* %string */
len = strlen(cp);
- last_match = (Job *) 0;
- for (j = job_list; j != (Job *) 0; j = j->next)
+ last_match = NULL;
+ for (j = job_list; j != NULL; j = j->next)
if (strncmp(cp, j->proc_list->command, len) == 0) {
if (last_match) {
if (ecodep)
*ecodep = JL_AMBIG;
- return (Job *) 0;
+ return NULL;
}
last_match = j;
}
@@ -1663,7 +1662,7 @@ j_lookup(cp, ecodep)
}
if (ecodep)
*ecodep = JL_NOSUCH;
- return (Job *) 0;
+ return NULL;
}
static Job *free_jobs;
@@ -1679,7 +1678,7 @@ new_job()
int i;
Job *newj, *j;
- if (free_jobs != (Job *) 0) {
+ if (free_jobs != NULL) {
newj = free_jobs;
free_jobs = free_jobs->next;
} else
@@ -1689,7 +1688,7 @@ new_job()
for (i = 1; ; i++) {
for (j = job_list; j && j->job != i; j = j->next)
;
- if (j == (Job *) 0)
+ if (j == NULL)
break;
}
newj->job = i;
@@ -1706,7 +1705,7 @@ new_proc()
{
Proc *p;
- if (free_procs != (Proc *) 0) {
+ if (free_procs != NULL) {
p = free_procs;
free_procs = free_procs->next;
} else
@@ -1730,7 +1729,7 @@ remove_job(j, where)
prev = &job_list;
curr = *prev;
- for (; curr != (Job *) 0 && curr != j; prev = &curr->next, curr = *prev)
+ for (; curr != NULL && curr != j; prev = &curr->next, curr = *prev)
;
if (curr != j) {
internal_errorf(0, "remove_job: job not found (%s)", where);
@@ -1739,7 +1738,7 @@ remove_job(j, where)
*prev = curr->next;
/* free up proc structures */
- for (p = j->proc_list; p != (Proc *) 0; ) {
+ for (p = j->proc_list; p != NULL; ) {
tmp = p;
p = p->next;
tmp->next = free_procs;
@@ -1752,9 +1751,9 @@ remove_job(j, where)
free_jobs = j;
if (j == last_job)
- last_job = (Job *) 0;
+ last_job = NULL;
if (j == async_job)
- async_job = (Job *) 0;
+ async_job = NULL;
}
/* put j in a particular location (taking it out job_list if it is there
@@ -1805,7 +1804,7 @@ kill_job(j)
{
Proc *p;
- for (p = j->proc_list; p != (Proc *) 0; p = p->next)
+ for (p = j->proc_list; p != NULL; p = p->next)
if (p->pid != 0)
(void) kill(p->pid, SIGKILL);
}
@@ -1826,7 +1825,7 @@ fill_command(c, len, t)
else
ap = t->args;
--len; /* save room for the null */
- while (len > 0 && *ap != (char *) 0) {
+ while (len > 0 && *ap != NULL) {
alen = strlen(*ap);
if (alen > len)
alen = len;