1: #if defined(LIBC_SCCS) && !defined(lint)
   2: static char sccsid[] = "@(#)ttyname.c	5.2 (Berkeley) 3/9/86";
   3: #endif LIBC_SCCS and not lint
   4: 
   5: /*
   6:  * ttyname(f): return "/dev/ttyXX" which the the name of the
   7:  * tty belonging to file f.
   8:  *  NULL if it is not a tty
   9:  */
  10: 
  11: #define NULL    0
  12: #include <sys/param.h>
  13: #include <sys/dir.h>
  14: #include <sys/stat.h>
  15: 
  16: static  char    dev[]   = "/dev/";
  17: char    *strcpy();
  18: char    *strcat();
  19: 
  20: char *
  21: ttyname(f)
  22: {
  23:     struct stat fsb;
  24:     struct stat tsb;
  25:     register struct direct *db;
  26:     register DIR *df;
  27:     static char rbuf[32];
  28: 
  29:     if (isatty(f)==0)
  30:         return(NULL);
  31:     if (fstat(f, &fsb) < 0)
  32:         return(NULL);
  33:     if ((fsb.st_mode&S_IFMT) != S_IFCHR)
  34:         return(NULL);
  35:     if ((df = opendir(dev)) == NULL)
  36:         return(NULL);
  37:     while ((db = readdir(df)) != NULL) {
  38:         if (db->d_ino != fsb.st_ino)
  39:             continue;
  40:         strcpy(rbuf, dev);
  41:         strcat(rbuf, db->d_name);
  42:         if (stat(rbuf, &tsb) < 0)
  43:             continue;
  44:         if (tsb.st_dev == fsb.st_dev && tsb.st_ino == fsb.st_ino) {
  45:             closedir(df);
  46:             return(rbuf);
  47:         }
  48:     }
  49:     closedir(df);
  50:     return(NULL);
  51: }

Defined functions

Defined variables

dev defined in line 16; used 2 times
sccsid defined in line 2; never used

Defined macros

NULL defined in line 11; used 7 times
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1136
Valid CSS Valid XHTML 1.0 Strict