Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getpwent(3C)

putpwent(3C)

putspent(3C)



getspent(3C)            LIBRARY FUNCTIONS            getspent(3C)



NAME
     getspent, getspnam, setspent, endspent, fgetspent,  lckpwdf,
     ulckpwdf - manipulate shadow password file entry

SYNOPSIS
     #include <shadow.h>

     struct spwd *getspent (void);

     struct spwd *getspnam (const char *name);

     int lckpwdf (void);

     int ulckpwdf (void);

     void setspent (void);

     void endspent (void);

     struct spwd *fgetspent (FILE *fp);

DESCRIPTION
     The getspent and getspnam routines each return a pointer  to
     an  object  with  the  following  structure  containing  the
     broken-out fields of a line in the /etc/shadow  file.   Each
     line  in  the file contains a ``shadow password'' structure,
     declared in the shadow.h header file:

          struct spwd{
               char *sp_namp;
               char *sp_pwdp;
               long sp_lstchg;
               long sp_min;
               long sp_max;
               long sp_warn;
               long sp_inact;
               long sp_expire;
               unsigned long  sp_flag;
          };

     The getspent routine when first called returns a pointer  to
     the first spwd structure in the file; thereafter, it returns
     a pointer to the next spwd structure in the file so  succes-
     sive  calls  can  be  used  to  search the entire file.  The
     getspnam routine searches from the  beginning  of  the  file
     until  a  login  name  matching name is found, and returns a
     pointer to the particular structure in which it  was  found.
     The  getspent  and  getspnam  routines  populate the sp_min,
     sp_max, sp_lstchg sp_warn, sp_inact, sp_expire,  or  sp_flag
     field  with  -1 if the corresponding field in /etc/shadow is
     empty. If an end-of-file or an error is encountered on read-
     ing, or there is a format error in the file, these functions



                                                                1





getspent(3C)            LIBRARY FUNCTIONS            getspent(3C)



     return a NULL pointer and set errno to EINVAL.

     /etc/.pwd.lock is the lock file.  It is used  to  coordinate
     modification  access  to  the password files /etc/passwd and
     /etc/shadow.  lckpwdf and ulckpwdf  are  routines  that  are
     used  to  gain  modification  access  to the password files,
     through the lock file.  A process first uses lckpwdf to lock
     the lock file thereby gaining exclusive rights to modify the
     /etc/passwd or /etc/shadow password file.   Upon  completing
     modifications, a process should release the lock on the lock
     file via ulckpwdf.   This  mechanism  prevents  simultaneous
     modification of the password files.

     The   lckpwdf   routine   attempts   to   lock   the    file
     /etc/.pwd.lock.   If  file /etc/.pwd.lock is already locked,
     lckpwdf tries for 15 seconds to lock the file.   If  lckpwdf
     is  unsuccessful,  then  lckpwdf  returns  a -1.  If lckpwdf
     succeeds to lock the file /etc/.pwd.lock within 15  seconds,
     then a return code other than -1 is returned.

     The  ulckpwdf  routine   attempts   to   unlock   the   file
     /etc/.pwd.lock.   If  successful,  ulckpwdf returns a 0.  If
     the  unlocking  failed,   as   in   the   case   that   file
     /etc/.pwd.lock  was  not  locked  initially,  then  ulckpwdf
     returns a -1.

     A call to the setspent routine has the effect  of  rewinding
     the  shadow  password  file to allow repeated searches.  The
     endspent routine may be called to close the shadow  password
     file when processing is complete.

     The fgetspent routine returns a pointer  to  the  next  spwd
     structure  in  the  stream  fp,  which matches the format of
     /etc/shadow.

FILES
     /etc/shadow
     /etc/passwd
     /etc/.pwd.lock

SEE ALSO
     getpwent(3C), putpwent(3C), putspent(3C).

DIAGNOSTICS
     getspent, getspnam, lckpwdf, ulckpwdf, and fgetspent  return
     a null pointer on EOF or error.

NOTES
     This routine is for internal use only; compatibility is  not
     guaranteed.   All information is contained in a static area,
     so it must be copied if it is to be saved.




                                                                2





getspent(3C)            LIBRARY FUNCTIONS            getspent(3C)























































                                                                3






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