Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getut(3C) — Amiga System V Release 4 Version 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ttyslot(3C)

utmp(4)



getut(3C)            COMPATIBILITY 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;                 /* exit status of a process */
                                      /* marked as DEADPROCESS */
           timet     uttime;        /* time entry was made */

     The structure exit status includes the following members:

               short   etermination;      /* termination status */
               short   eexit;             /* 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-
     >ut_id  .  If the end of file is reached without a match, it



          Last change: C Programming Language Utilities         1





getut(3C)            COMPATIBILITY FUNCTIONS            getut(3C)



     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 per-
     forming more I/O.  If the contents of the  static  structure



          Last change: C Programming Language Utilities         2





getut(3C)            COMPATIBILITY FUNCTIONS            getut(3C)



     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.






































          Last change: C Programming Language Utilities         3



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