diff options
-rw-r--r-- | bin/pkill/pkill.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/bin/pkill/pkill.c b/bin/pkill/pkill.c index 258b3c8..9105c8c 100644 --- a/bin/pkill/pkill.c +++ b/bin/pkill/pkill.c @@ -670,6 +670,20 @@ makelist(struct listhead *head, enum listtype type, char *src) if (li->li_number == 0) li->li_number = -1; /* any jail */ break; + case LT_TTY: + if (li->li_number < 0) + errx(STATUS_BADUSAGE, + "Negative /dev/pts tty `%s'", sp); + snprintf(buf, sizeof(buf), _PATH_DEV "pts/%s", + sp); + if (stat(buf, &st) != -1) + goto foundtty; + if (errno == ENOENT) + errx(STATUS_BADUSAGE, "No such tty: `" + _PATH_DEV "pts/%s'", sp); + err(STATUS_ERROR, "Cannot access `" + _PATH_DEV "pts/%s'", sp); + break; default: break; } @@ -705,10 +719,6 @@ makelist(struct listhead *head, enum listtype type, char *src) if (stat(buf, &st) != -1) goto foundtty; - snprintf(buf, sizeof(buf), _PATH_DEV "pts/%s", cp); - if (stat(buf, &st) != -1) - goto foundtty; - if (errno == ENOENT) errx(STATUS_BADUSAGE, "No such tty: `%s'", sp); err(STATUS_ERROR, "Cannot access `%s'", sp); |