Use SLIST instead of TAILQ for killall5(8)
No need to teardown the list at the end.
This commit is contained in:
parent
3e7e1e9644
commit
d3efa66c82
18
killall5.c
18
killall5.c
|
@ -24,10 +24,10 @@ struct {
|
||||||
|
|
||||||
struct pidentry {
|
struct pidentry {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
TAILQ_ENTRY(pidentry) entry;
|
SLIST_ENTRY(pidentry) entry;
|
||||||
};
|
};
|
||||||
|
|
||||||
static TAILQ_HEAD(omitpid_head, pidentry) omitpid_head;
|
static SLIST_HEAD(, pidentry) omitpid_head;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
|
@ -38,7 +38,7 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct pidentry *pe, *tmp;
|
struct pidentry *pe;
|
||||||
struct dirent *entry;
|
struct dirent *entry;
|
||||||
DIR *dp;
|
DIR *dp;
|
||||||
char *p, *arg = NULL;
|
char *p, *arg = NULL;
|
||||||
|
@ -71,12 +71,12 @@ main(int argc, char *argv[])
|
||||||
usage();
|
usage();
|
||||||
} ARGEND;
|
} ARGEND;
|
||||||
|
|
||||||
TAILQ_INIT(&omitpid_head);
|
SLIST_INIT(&omitpid_head);
|
||||||
|
|
||||||
for (p = strtok(arg, ","); p; p = strtok(NULL, ",")) {
|
for (p = strtok(arg, ","); p; p = strtok(NULL, ",")) {
|
||||||
pe = emalloc(sizeof(*pe));
|
pe = emalloc(sizeof(*pe));
|
||||||
pe->pid = estrtol(p, 10);
|
pe->pid = estrtol(p, 10);
|
||||||
TAILQ_INSERT_TAIL(&omitpid_head, pe, entry);
|
SLIST_INSERT_HEAD(&omitpid_head, pe, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sig != SIGSTOP && sig != SIGCONT)
|
if (sig != SIGSTOP && sig != SIGCONT)
|
||||||
|
@ -92,7 +92,7 @@ main(int argc, char *argv[])
|
||||||
getsid(pid) == getsid(0) || getsid(pid) == 0)
|
getsid(pid) == getsid(0) || getsid(pid) == 0)
|
||||||
continue;
|
continue;
|
||||||
if (oflag == 1) {
|
if (oflag == 1) {
|
||||||
TAILQ_FOREACH(pe, &omitpid_head, entry)
|
SLIST_FOREACH(pe, &omitpid_head, entry)
|
||||||
if (pe->pid == pid)
|
if (pe->pid == pid)
|
||||||
break;
|
break;
|
||||||
if (pe)
|
if (pe)
|
||||||
|
@ -105,11 +105,5 @@ main(int argc, char *argv[])
|
||||||
if (sig != SIGSTOP && sig != SIGCONT)
|
if (sig != SIGSTOP && sig != SIGCONT)
|
||||||
kill(-1, SIGCONT);
|
kill(-1, SIGCONT);
|
||||||
|
|
||||||
for (pe = TAILQ_FIRST(&omitpid_head); pe; pe = tmp) {
|
|
||||||
tmp = TAILQ_NEXT(pe, entry);
|
|
||||||
TAILQ_REMOVE(&omitpid_head, pe, entry);
|
|
||||||
free(pe);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user