Don't automatically prepend the "tty" prefix to `pkill -t' arguments.

Because we now enforce UNIX98-style PTY's, we now use a lot of TTY's
that don't have the traditional /dev/ttyXX naming scheme. pkill(1)'s -t
flag automatically prepended the word "tty" to each TTY that was passed
on the command line. This meant that `pkill -t pts/0' was actually
converted to /dev/ttypts/0. Disable this broken behaviour for now.

Reported by:	erwin
This commit is contained in:
ed 2008-09-28 16:44:15 +00:00
parent 5b4acc89f4
commit 67d011afcb
2 changed files with 5 additions and 9 deletions

View File

@ -179,10 +179,9 @@ command.
Restrict matches to processes associated with a terminal in the Restrict matches to processes associated with a terminal in the
comma-separated list comma-separated list
.Ar tty . .Ar tty .
Terminal names may be of the form The
.Pa tty Ns Ar xx .Pa /dev/
or the shortened form prefix of the terminal names must be omitted.
.Ar xx .
A single dash A single dash
.Pq Ql - .Pq Ql -
matches processes not associated with a terminal. matches processes not associated with a terminal.

View File

@ -607,12 +607,11 @@ makelist(struct listhead *head, enum listtype type, char *src)
struct passwd *pw; struct passwd *pw;
struct group *gr; struct group *gr;
struct stat st; struct stat st;
const char *cp, *prefix; const char *cp;
char *sp, *ep, buf[MAXPATHLEN]; char *sp, *ep, buf[MAXPATHLEN];
int empty; int empty;
empty = 1; empty = 1;
prefix = _PATH_DEV;
while ((sp = strsep(&src, ",")) != NULL) { while ((sp = strsep(&src, ",")) != NULL) {
if (*sp == '\0') if (*sp == '\0')
@ -673,11 +672,9 @@ makelist(struct listhead *head, enum listtype type, char *src)
cp = "console"; cp = "console";
} else { } else {
cp = sp; cp = sp;
if (strncmp(sp, "tty", 3) != 0)
prefix = _PATH_TTY;
} }
snprintf(buf, sizeof(buf), "%s%s", prefix, cp); snprintf(buf, sizeof(buf), _PATH_DEV "%s", cp);
if (stat(buf, &st) == -1) { if (stat(buf, &st) == -1) {
if (errno == ENOENT) { if (errno == ENOENT) {