12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?xml version='1.0' encoding='iso-8859-1'?>
- <!doctype html public '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
- <html xmlns='http://www.w3c.org/1999/xhtml' lang='en-us'>
- <head>
- <title>
- uintspec.c
- </title>
- <meta http-equiv='content-type' content='text/html;iso-8859-1'/>
- <meta name='generator' content='motley-tools 1.9.4 13:40:33 Feb 18 2015'/>
- <meta name='author' content='cmaier@cmassoc.net'/>
- <meta name='robots' content='noindex,nofollow'/>
- <link href='toolkit.css' rel='stylesheet' type='text/css'/>
- </head>
- <body>
- <div class='headerlink'>
- [<a href='typename.c.html' title=' typename.c '>PREV</a>]
- [<a href='toolkit.html' title=' Index '>HOME</a>]
- [<a href='UnwantedMessage.c.html' title=' UnwantedMessage.c '>NEXT</a>]
- </div>
- <pre>
- /*====================================================================*
- *
- * uint64_t uintspec (char const * string, uint64_t minimum, uint64_t maximum);
- *
- * number.h
- *
- * convert a numeric string to an unsigned integer; confirm that
- * the result does not exceed the specified range; report errors
- * and terminate the program on error;
- *
- * Motley Tools by Charles Maier <cmaier@cmassoc.net>;
- * Copyright (c) 2001-2006 by Charles Maier Associates;
- * Licensed under the Internet Software Consortium License;
- *
- *--------------------------------------------------------------------*/
- #ifndef UINTSPEC_SOURCE
- #define UINTSPEC_SOURCE
- #include <stdlib.h>
- #include <inttypes.h>
- #include <ctype.h>
- #include <errno.h>
- #include "../tools/number.h"
- #include "../tools/error.h"
- #include "../tools/types.h"
- uint64_t uintspec (char const * string, uint64_t minimum, uint64_t maximum)
- {
- char const * number = string;
- unsigned radix = RADIX_DEC;
- uint64_t value = 0;
- unsigned digit;
- if (*number == '0')
- {
- number++;
- if ((*number == 'b') || (*number == 'B'))
- {
- radix = RADIX_BIN;
- number++;
- }
- else if ((*number == 'x') || (*number == 'X'))
- {
- radix = RADIX_HEX;
- number++;
- }
- }
- while ((digit = todigit (*number)) < radix)
- {
- value *= radix;
- value += digit;
- number++;
- }
- if (*number)
- {
- error (1, EINVAL, "Have '%s' but want base %d integer", string, radix);
- }
- if ((value < minimum) || (value > maximum))
- {
- error (1, ERANGE, "Have %s but want %" PRId64 " thru %" PRId64, string, minimum, maximum);
- }
- return (value);
- }
- #endif
- </pre>
- <div class='footerlink'>
- [<a href='typename.c.html' title=' typename.c '>PREV</a>]
- [<a href='toolkit.html' title=' Index '>HOME</a>]
- [<a href='UnwantedMessage.c.html' title=' UnwantedMessage.c '>NEXT</a>]
- </div>
- </body>
- </html>
|