2 * See the file LICENSE for redistribution information.
4 * Copyright (c) 1996-2009 Oracle. All rights reserved.
15 * Return a long value inside of basic parameters.
17 * PUBLIC: int __db_getlong
18 * PUBLIC: __P((DB_ENV *, const char *, char *, long, long, long *));
21 __db_getlong(dbenv, progname, p, min, max, storep)
25 long min, max, *storep;
31 val = strtol(p, &end, 10);
32 if ((val == LONG_MIN || val == LONG_MAX) &&
33 __os_get_errno() == ERANGE) {
36 "%s: %s: %s\n", progname, p, strerror(ERANGE));
38 dbenv->err(dbenv, ERANGE, "%s", p);
41 if (p[0] == '\0' || (end[0] != '\0' && end[0] != '\n')) {
44 "%s: %s: Invalid numeric argument\n", progname, p);
46 dbenv->errx(dbenv, "%s: Invalid numeric argument", p);
52 "%s: %s: Less than minimum value (%ld)\n",
56 "%s: Less than minimum value (%ld)", p, min);
62 "%s: %s: Greater than maximum value (%ld)\n",
66 "%s: Greater than maximum value (%ld)", p, max);
75 * Return an unsigned long value inside of basic parameters.
77 * PUBLIC: int __db_getulong
78 * PUBLIC: __P((DB_ENV *, const char *, char *, u_long, u_long, u_long *));
81 __db_getulong(dbenv, progname, p, min, max, storep)
85 u_long min, max, *storep;
91 val = strtoul(p, &end, 10);
92 if (val == ULONG_MAX && __os_get_errno() == ERANGE) {
95 "%s: %s: %s\n", progname, p, strerror(ERANGE));
97 dbenv->err(dbenv, ERANGE, "%s", p);
100 if (p[0] == '\0' || (end[0] != '\0' && end[0] != '\n')) {
103 "%s: %s: Invalid numeric argument\n", progname, p);
105 dbenv->errx(dbenv, "%s: Invalid numeric argument", p);
111 "%s: %s: Less than minimum value (%lu)\n",
115 "%s: Less than minimum value (%lu)", p, min);
120 * We allow a 0 to substitute as a max value for ULONG_MAX because
121 * 1) accepting only a 0 value is unlikely to be necessary, and 2)
122 * we don't want callers to have to use ULONG_MAX explicitly, as it
123 * may not exist on all platforms.
125 if (max != 0 && val > max) {
128 "%s: %s: Greater than maximum value (%lu)\n",
132 "%s: Greater than maximum value (%lu)", p, max);