home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / 2bsd.tar.gz / 2bsd.tar / upgrade / libretro / ttyn.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-04-19  |  688 b   |  39 lines

  1. #include <retrofit.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4.  
  5. /*
  6.  * Discover the teletype letter of the passed file
  7.  * descriptor.  C library.
  8.  */
  9.  
  10.  
  11. #define    BLKSIZE 32            /* Directory entries per disk block */
  12.  
  13. ttyn(tty)
  14. {
  15.     struct dirent {
  16.         int    d_ino;
  17.         char    d_name[14];
  18.     };
  19.     struct dirent buf[BLKSIZE];
  20.     struct stat sbuf;
  21.     register int fi, inum;
  22.     register struct dirent *dp;
  23.  
  24.     if (fstat(tty, &sbuf) < 0)
  25.         return('x');
  26.     fi = open("/dev", 0);
  27.     if (fi < 0)
  28.         return('x');
  29.     inum = sbuf.st_ino;
  30.     while (read(fi, &buf, sizeof buf) > 0)
  31.         for (dp = &buf[0]; dp < &buf[BLKSIZE]; dp++)
  32.             if (dp->d_ino == inum) {
  33.                 close(fi);
  34.                 return(dp->d_name[3]);
  35.             }
  36.     close(fi);
  37.     return('x');
  38. }
  39.