summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3p/getpwuid.3p
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man3p/getpwuid.3p')
-rw-r--r--upstream/archlinux/man3p/getpwuid.3p297
1 files changed, 297 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/getpwuid.3p b/upstream/archlinux/man3p/getpwuid.3p
new file mode 100644
index 00000000..49f7ff93
--- /dev/null
+++ b/upstream/archlinux/man3p/getpwuid.3p
@@ -0,0 +1,297 @@
+'\" et
+.TH GETPWUID "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+getpwuid,
+getpwuid_r
+\(em search user database for a user ID
+.SH SYNOPSIS
+.LP
+.nf
+#include <pwd.h>
+.P
+struct passwd *getpwuid(uid_t \fIuid\fP);
+int getpwuid_r(uid_t \fIuid\fP, struct passwd *\fIpwd\fP, char *\fIbuffer\fP,
+ size_t \fIbufsize\fP, struct passwd **\fIresult\fP);
+.fi
+.SH DESCRIPTION
+The
+\fIgetpwuid\fR()
+function shall search the user database for an entry with a matching
+.IR uid .
+.P
+The
+\fIgetpwuid\fR()
+function need not be thread-safe.
+.P
+Applications wishing to check for error situations should set
+.IR errno
+to 0 before calling
+\fIgetpwuid\fR().
+If
+\fIgetpwuid\fR()
+returns a null pointer and
+.IR errno
+is set to non-zero, an error occurred.
+.P
+The
+\fIgetpwuid_r\fR()
+function shall update the
+.BR passwd
+structure pointed to by
+.IR pwd
+and store a pointer to that structure at the location pointed to by
+.IR result .
+The structure shall contain an entry from the user database with a
+matching
+.IR uid .
+Storage referenced by the structure is allocated from the memory
+provided with the
+.IR buffer
+parameter, which is
+.IR bufsize
+bytes in size. A call to
+.IR sysconf (_SC_GETPW_R_SIZE_MAX)
+returns either \-1 without changing
+.IR errno
+or an initial value suggested for the size of this buffer.
+A null pointer shall be returned at the location pointed to by
+.IR result
+on error or if the requested entry is not found.
+.SH "RETURN VALUE"
+The
+\fIgetpwuid\fR()
+function shall return a pointer to a
+.BR "struct passwd"
+with the structure as defined in
+.IR <pwd.h>
+with a matching entry if found. A null pointer shall be returned if the
+requested entry is not found, or an error occurs. If the requested
+entry was not found,
+.IR errno
+shall not be changed. On error,
+.IR errno
+shall be set to indicate the error.
+.P
+The application shall not modify the structure to which the return
+value points, nor any storage areas pointed to by pointers within the
+structure. The returned pointer, and pointers within the structure,
+might be invalidated or the structure or the storage areas might be
+overwritten by a subsequent call to
+\fIgetpwent\fR(),
+\fIgetpwnam\fR(),
+or
+\fIgetpwuid\fR().
+The returned pointer, and pointers within the structure, might also
+be invalidated if the calling thread is terminated.
+.P
+If successful, the
+\fIgetpwuid_r\fR()
+function shall return zero; otherwise, an error number shall be
+returned to indicate the error.
+.SH ERRORS
+These functions may fail if:
+.TP
+.BR EIO
+An I/O error has occurred.
+.TP
+.BR EINTR
+A signal was caught during
+\fIgetpwuid\fR().
+.TP
+.BR EMFILE
+All file descriptors available to the process are currently open.
+.TP
+.BR ENFILE
+The maximum allowable number of files is currently open in the system.
+.P
+The
+\fIgetpwuid_r\fR()
+function may fail if:
+.TP
+.BR ERANGE
+Insufficient storage was supplied via
+.IR buffer
+and
+.IR bufsize
+to contain the data to be referenced by the resulting
+.BR passwd
+structure.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+Note that
+.IR sysconf (_SC_GETPW_R_SIZE_MAX)
+may return \-1 if there is no hard limit on the size of the buffer
+needed to store all the groups returned. This example shows how an
+application can allocate a buffer of sufficient size to work with
+\fIgetpwuid_r\fR().
+.sp
+.RS 4
+.nf
+
+long int initlen = sysconf(_SC_GETPW_R_SIZE_MAX);
+size_t len;
+if (initlen =\|= -1)
+ /* Default initial length. */
+ len = 1024;
+else
+ len = (size_t) initlen;
+struct passwd result;
+struct passwd *resultp;
+char *buffer = malloc(len);
+if (buffer =\|= NULL)
+ ...handle error...
+int e;
+while ((e = getpwuid_r(42, &result, buffer, len, &resultp)) =\|= ERANGE)
+ {
+ size_t newlen = 2 * len;
+ if (newlen < len)
+ ...handle error...
+ len = newlen;
+ char *newbuffer = realloc(buffer, len);
+ if (newbuffer =\|= NULL)
+ ...handle error...
+ buffer = newbuffer;
+ }
+if (e != 0)
+ ...handle error...
+free (buffer);
+.fi
+.P
+.RE
+.SS "Getting an Entry for the Root User"
+.P
+The following example gets the user database entry for the user with
+user ID 0 (root).
+.sp
+.RS 4
+.nf
+
+#include <sys/types.h>
+#include <pwd.h>
+\&...
+uid_t id = 0;
+struct passwd *pwd;
+.P
+pwd = getpwuid(id);
+.fi
+.P
+.RE
+.SS "Finding the Name for the Effective User ID"
+.P
+The following example defines
+.IR pws
+as a pointer to a structure of type
+.BR passwd ,
+which is used to store the structure pointer returned by the call to
+the
+\fIgetpwuid\fR()
+function. The
+\fIgeteuid\fR()
+function shall return the effective user ID of the calling process;
+this is used as the search criteria for the
+\fIgetpwuid\fR()
+function. The call to
+\fIgetpwuid\fR()
+shall return a pointer to the structure containing that user ID value.
+.sp
+.RS 4
+.nf
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <pwd.h>
+\&...
+struct passwd *pws;
+pws = getpwuid(geteuid());
+.fi
+.P
+.RE
+.SS "Finding an Entry in the User Database"
+.P
+The following example uses
+\fIgetpwuid\fR()
+to search the user database for a user ID that was previously stored in
+a
+.BR stat
+structure, then prints out the user name if it is found. If the user
+is not found, the program prints the numeric value of the user ID for
+the entry.
+.sp
+.RS 4
+.nf
+
+#include <sys/types.h>
+#include <pwd.h>
+#include <stdio.h>
+\&...
+struct stat statbuf;
+struct passwd *pwd;
+\&...
+if ((pwd = getpwuid(statbuf.st_uid)) != NULL)
+ printf(" %-8.8s", pwd->pw_name);
+else
+ printf(" %-8d", statbuf.st_uid);
+.fi
+.P
+.RE
+.SH "APPLICATION USAGE"
+Three names associated with the current process can be determined:
+.IR getpwuid (\c
+\fIgeteuid\fR())
+returns the name associated with the effective user ID of the process;
+\fIgetlogin\fR()
+returns the name associated with the current login activity; and
+.IR getpwuid (\c
+\fIgetuid\fR())
+returns the name associated with the real user ID of the process.
+.P
+The
+\fIgetpwuid_r\fR()
+function is thread-safe and returns values in a user-supplied buffer
+instead of possibly using a static data area that may be overwritten by
+each call.
+.P
+Portable applications should take into account that it is usual
+for an implementation to return \-1 from
+\fIsysconf\fR()
+indicating that there is no maximum for _SC_GETPW_R_SIZE_MAX.
+.SH RATIONALE
+None.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fIgetpwnam\fR\^(\|)",
+.IR "\fIgeteuid\fR\^(\|)",
+.IR "\fIgetuid\fR\^(\|)",
+.IR "\fIgetlogin\fR\^(\|)",
+.IR "\fIsysconf\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "\fB<pwd.h>\fP",
+.IR "\fB<sys_types.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .