DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦f408e807c⟧ TextFile

    Length: 729 (0x2d9)
    Types: TextFile
    Notes: UNIX file
    Names: »ttyname.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »libc/gen/ttyname.c« 

TextFile

/*
 * Coherent I/O Library
 * Return the name of the terminal device
 * associated with the given file descriptor.
 */
#include <stdio.h>
#include <stat.h>
#include <dir.h>
#include <canon.h>

static	char	tname[6+DIRSIZ] = "/dev/console";
#define	tstart	(tname+5)		/* Where to put terminal name */

char *
ttyname(fd)
int fd;
{
	struct stat   sb;
	struct direct db;
	register devfd;

	if (fstat(fd, &sb)<0 || (sb.st_mode&S_IFMT)!=S_IFCHR)
		return (NULL);
	if ((devfd = open("/dev", 0)) < 0)
		return (NULL);
	while (read(devfd, &db, sizeof(db)) == sizeof(db)) {
		canino(db.d_ino);
		if (db.d_ino == sb.st_ino) {
			strncpy(tstart, db.d_name, DIRSIZ);
			close(devfd);
			return (tname);
		}
	}
	close(devfd);
	return (NULL);
}