Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getut(3c) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ttyslot(3C)

utmp(4)



getut(3C)               LIBRARY FUNCTIONS               getut(3C)



NAME
     getut: getutent, getutid,  getutline,  pututline,  setutent,
     endutent, utmpname - access utmp file entry

SYNOPSIS
     #include <utmp.h>

     struct utmp *getutent (void);

     struct utmp *getutid (const struct utmp *id);

     struct utmp *getutline (const struct utmp *line);

     struct utmp *pututline (const struct utmp *utmp);

     void setutent (void);

     void endutent (void);

     int utmpname (const char *file);

DESCRIPTION
     getutent, getutid, getutline, and pututline  each  return  a
     pointer to a structure with the following members:

           char       utuser[8];     /* User login name */
           char       utid[4];       /* /sbin/inittab id (usually line #) */
           char       utline[12];    /* device name (console, lnxx) */
           short      utpid;         /* process id   */
           short      uttype;        /* type of entry */
           struct     exitstatus {
           } utexit;                 /* The exit status of a process
                                       /* marked as DEADPROCESS. */
           timet     uttime;        /* time entry was made */

          The  structure  exit  status  includes  the   following
          members:

                    short   etermination;      /* Process termination status */
                    short   eexit;             /* Process exit status */

     getutent reads in the next entry from a utmp-like file.   If
     the  file  is  not already open, it opens it.  If it reaches
     the end of the file, it fails.

     getutid searches forward from the current point in the  utmp
     file  until  it  finds  an entry with a ut_type matching id-
     >ut_type  if  the  type  specified  is  RUNLVL,  BOOTTIME,
     OLDTIME  or  NEWTIME.   If  the  type  specified  in id is
     INITPROCESS, LOGINPROCESS, USERPROCESS  or  DEADPROCESS,
     then  getutid will return a pointer to the first entry whose
     type is one of these four and whose utid field matches  id-



                                                                1





getut(3C)               LIBRARY FUNCTIONS               getut(3C)



     >ut_id  .  If the end of file is reached without a match, it
     fails.

     getutline searches forward from the  current  point  in  the
     utmp  file until it finds an entry of the type LOGINPROCESS
     or USERPROCESS that also has a ut_line string matching  the
     line->ut_line string.  If the end of file is reached without
     a match, it fails.

     pututline writes out the supplied utmp  structure  into  the
     utmp file.  It uses getutid to search forward for the proper
     place if it finds that it  is  not  already  at  the  proper
     place.   It  is expected that normally the user of pututline
     will have searched for the proper entry  using  one  of  the
     getut  routines.   If  so,  pututline  will  not search.  If
     pututline does not find a matching slot for the  new  entry,
     it  will add a new entry to the end of the file.  It returns
     a pointer to the utmp structure.

     setutent resets the input stream to  the  beginning  of  the
     file.   This  reset  should be done before each search for a
     new entry if it is desired that the entire file be examined.

     endutent closes the currently open file.

     utmpname allows the user to change  the  name  of  the  file
     examined,  from /var/adm/utmp to any other file.  It is most
     often expected that this other file will  be  /var/adm/wtmp.
     If  the file does not exist, this will not be apparent until
     the first attempt to reference the file is  made.   utmpname
     does  not  open the file.  It just closes the old file if it
     is currently open and saves the new file name.  If the  file
     name given is longer than 79 characters, utmpname returns 0.
     Otherwise, it will return 1.

FILES
     /var/adm/utmp
     /var/adm/wtmp

SEE ALSO
     ttyslot(3C), utmp(4).

DIAGNOSTICS
     A NULL pointer is returned upon failure to read, whether for
     permissions  or  having  reached  the  end  of file, or upon
     failure to write.

NOTES
     The most current entry is saved in a static structure.  Mul-
     tiple  accesses  require  that  it  be copied before further
     accesses are made.  On each call to either getutid or getut-
     line,  the  routine  examines  the  static  structure before



                                                                2





getut(3C)               LIBRARY FUNCTIONS               getut(3C)



     performing more I/O.  If the contents of the  static  struc-
     ture  match  what  it is searching for, it looks no further.
     For this reason, to use getutline  to  search  for  multiple
     occurrences,  it  would  be necessary to zero out the static
     area after each success, or getutline would just return  the
     same  structure over and over again.  There is one exception
     to the rule about  emptying  the  structure  before  further
     reads  are done.  The implicit read done by pututline (if it
     finds that it is not already at the  correct  place  in  the
     file)  will  not  hurt  the contents of the static structure
     returned by the getutent, getutid or getutline routines,  if
     the  user  has  just  modified those contents and passed the
     pointer back to pututline.

     These routines use buffered  standard  I/O  for  input,  but
     pututline  uses  an  unbuffered  non-standard write to avoid
     race conditions between processes trying to modify the  utmp
     and wtmp files.





































                                                                3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026