+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek.
+.\"
+.\" %sccs.include.redist.man%
+.\"
+.\" @(#)strtoul.3 5.1 (Berkeley) %G%
+.\"
+.TH STRTOUL 3 ""
+.UC 7
+.SH NAME
+strtoul \- convert a string to an unsigned long integer
+.SH SYNOPSIS
+.B #include <stdlib.h>
+.br
+.B #include <limits.h>
+.PP
+.B "unsigned long strtoul(char *nptr, char **endptr, int base);
+.SH DESCRIPTION
+.B Strtoul
+converts the string in
+.I nptr
+to an
+.B "unsigned long"
+value according to the given
+.IR base ,
+which must be between 2 and 36 inclusive,
+or be the special value 0.
+.PP
+The string may begin with an arbitrary amount of white space
+(as determined by
+.BR isspace ;
+see
+.IR ctype (3)),
+followed by a single optional `+' or `-' sign.
+If
+.I base
+is zero or 16,
+the string may then include a `0x' prefix,
+and the number will be read in base 16; otherwise, a zero
+.I base
+is taken as 10 (decimal) unless the next character is `0',
+in which case it is taken as 8 (octal).
+.PP
+The remainder of the string is converted to an
+.B "unsigned long"
+value in the obvious manner,
+stopping at the end of the string
+or at the first character that does not produce a valid digit
+in the given base.
+(In bases above 10, the letter `A' in either upper or lower case
+represents 10, `B' represents 11, and so forth, with `Z' representing 35.)
+.PP
+If
+.I endptr
+is non nil,
+.B strtoul
+stores the address of the first invalid character in
+.IR *endptr .
+If there were no digits at all, however,
+.B strtoul
+stores the original value of
+.I nptr
+in
+.IR *endptr .
+(Thus, if
+.I *nptr
+is not '\e0' but
+.IR **endptr
+is '\e0' on return, the entire string was valid.)
+.SH RETURN VALUE
+.B Strtoul
+returns either the result of the conversion
+or, if there was a leading minus sign,
+the negation of the result of the conversion,
+unless the original (non-negated) value would overflow;
+in the latter case,
+.B strtoul
+returns
+.B ULONG_MAX
+and sets
+.B errno
+to
+.BR ERANGE .
+.SH ERRORS
+.TP
+[ERANGE]
+The given string was out of range; the value converted has been clamped.
+.SH SEE ALSO
+strtol(3)
+.SH STANDARDS
+.B Strtoul
+conforms to ANSI X3.159-1989 (``ANSI C'').
+.SH BUGS
+Ignores the current locale.