Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PW_DUP(3)                 OpenBSD Programmer's Manual                PW_DUP(3)

NAME
     pw_dup - make a copy of a struct passwd

SYNOPSIS
     #include <pwd.h>

     struct passwd *
     pw_dup(const struct passwd *pw);

DESCRIPTION
     The pw_dup() function allocates sufficient memory for a copy of the
     struct passwd pw, does the copy, and returns a pointer to it.  This is
     useful as subsequent calls to getpwent(), getpwnam(), and getpwuid() will
     overwrite the data they returned from previous calls.

     The returned pointer may be deallocated by a single call to free(3).
     Since pw_dup() allocates space for the copy in one chunk, it is not nec-
     essary to free the individual strings contained in the returned struct
     passwd.

     If insufficient memory is available, NULL is returned.

EXAMPLES
     The following will make a copy of the struct passwd for root and store it
     in "pw_save":

           struct passwd *pw, *pw_save;

           if ((pw = getpwnam("root")) == NULL) {
                   fprintf(stderr, "Cannot find root in the password file.\n");
                   exit(1);
           }
           if ((pw_save = pw_dup(pw)) == NULL) {
                   fprintf(stderr, "Out of memory.\n");
                   exit(1);
           }

ERRORS
     pw_dup() function may fail and set the external variable errno for any of
     the errors specified for the library function malloc(3).

SEE ALSO
     free(3), getpwent(3), malloc(3)

HISTORY
     The pw_dup() function first appeared in OpenBSD 2.9.

OpenBSD 3.9                    November 15, 2000                             1

NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | ERRORS | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pw_dup&sektion=3&manpath=OpenBSD+3.9>

home | help