-CURRENT and ptsname() again

Vladimir Kushnir vkushnir at i.kiev.ua
Sun Apr 10 15:09:19 PDT 2005


Hello,
It definitely looks like posix_openpt (perhaps) and ptsname/grantpt 
(most probably) do not work as they should under -CURRENT. Examples:  mc 
(misc/mc) reports:

subshell.c: couldn't open master side of pty
pty_open_master: Permission denied

KDE (at least CVS, but it's pty handling did not change recently) 
complaints about chown

The simplest example:

#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

main() {
 	int pty_master;
 	char *master_name, *slave_name;
 	struct stat sb;

 	pty_master = posix_openpt(O_RDWR | O_NOCTTY);
 	fstat(pty_master, &sb);
         if (grantpt (pty_master) < 0) {
 		printf("Fail: grantpt\n");
 	}
 	if (unlockpt (pty_master) < 0) {
 		printf("Fail: unlocktpt\n");
 	}
 	master_name = devname(sb.st_rdev, S_IFCHR);
 	slave_name = ptsname (pty_master);

 	printf("Open master: /dev/%s, slave: %s\n", master_name, slave_name);
 	close (pty_master);
 	return 0;
}

gives an absurd output:

~> ./ptytest
Fail: grantpt
Open master: /dev/ptyp0, slave: /dev/ttysu
                                 ^^^^^^^^^^
grantpt() here also fails.

This is fairly recent -CURRENT:
FreeBSD kushnir1.kiev.ua 6.0-CURRENT FreeBSD 6.0-CURRENT #6: Sat Apr  9 
23:17:34 EEST 2005     root@:/usr/obj/usr/src/sys/KUSHNIR  i386

Sorry, cannot fix it myself
Redards,
Vladimir



More information about the freebsd-current mailing list