ports/154967: x11/mrvt-devel can't parse tty name "pts"

Zhihao Yuan lichray at gmail.com
Wed Feb 23 04:50:09 UTC 2011

>Number:         154967
>Category:       ports
>Synopsis:       x11/mrvt-devel can't parse tty name "pts"
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Feb 23 04:50:08 UTC 2011
>Originator:     Zhihao Yuan
>Release:        FreeBSD 8.2-PRERELEASE
Northern Illinois University
FreeBSD compaq.yuetime 8.2-PRERELEASE FreeBSD 8.2-PRERELEASE #0: Tue Feb 22 00:45:24 CST 2011     root at compaq.yuetime:/usr/obj/usr/src/sys/HOUKAGO  amd64
At compile time, mrxvt detects SysV style tty by checking whether struct 
utmp has ut_pid. FreeBSD >= 7 uses the SysV style TTY naming, but not 
So basically, mrxvt is possible to be able to parse the tty name but it 
refuses to do so since it made the above assumption.
run a compiled mrxvt on FreeBSD RELENG_8, then the tty of mrxvt says
can't parse tty name "pts/N"
The N corresponds to the pts number.
Delete the compilation time HAVE_UTMP_PID checking in the code which
parses the TTY names. This makes no side-effect to other parts of the
program, just enables the correct pts/N name, so the lastlog works.

Patch attached with submission follows:

--- src/logging.c.orig	2008-02-17 16:04:50.000000000 -0600
+++ src/logging.c	2011-01-12 05:44:00.695303906 -0600
@@ -89,9 +89,7 @@ rxvt_makeutent(rxvt_t *r, int page, cons
 #if defined(HAVE_STRUCT_UTMPX) && !defined(HAVE_STRUCT_UTMP)
     struct utmpx   *utx = &(PVTS(r, page)->utx);
     int             i;
     char            ut_id[5];
     struct passwd  *pwent = getpwuid(getuid());
@@ -101,10 +99,8 @@ rxvt_makeutent(rxvt_t *r, int page, cons
     if (!STRNCMP(pty, "pty", 3) || !STRNCMP(pty, "tty", 3)) {
 	STRNCPY(ut_id, (pty + 3), sizeof(ut_id));
     else if (sscanf(pty, "pts/%d", &i) == 1)
 	sprintf(ut_id, "vt%02x", (i & 0xff));	/* sysv naming */
     else if (STRNCMP(pty, "pty", 3) && STRNCMP(pty, "tty", 3)) {
 	rxvt_msg (DBG_ERROR, DBG_LOGGING, "can't parse tty name \"%s\"", pty);


More information about the freebsd-ports-bugs mailing list