staticint pts_open(int input, int output, int primary, void *d, char **dev_out)
{ struct pty_chan *data = d; char *dev; int fd, err;
fd = get_pty(); if (fd < 0) {
err = -errno;
printk(UM_KERN_ERR "open_pts : Failed to open pts\n"); return err;
}
if (data->raw) {
CATCH_EINTR(err = tcgetattr(fd, &data->tt)); if (err) goto out_close;
err = raw(fd); if (err) goto out_close;
}
dev = ptsname(fd);
sprintf(data->dev_name, "%s", dev);
*dev_out = data->dev_name;
if (data->announce)
(*data->announce)(dev, data->dev);
return fd;
out_close:
close(fd); return err;
}
staticint getmaster(char *line)
{ struct stat buf; char *pty, *bank, *cp; int master, err;
pty = &line[strlen("/dev/ptyp")]; for (bank = "pqrs"; *bank; bank++) {
line[strlen("/dev/pty")] = *bank;
*pty = '0'; /* Did we hit the end ? */ if ((stat(line, &buf) < 0) && (errno == ENOENT)) break;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.