return dflt;
}
- if (getulong (d->value, &val) == 0) {
+ if (getulong(d->value, &val) == -1) {
fprintf (shadow_logfd,
_("configuration error - cannot parse %s value: '%s'"),
item, d->value);
* SPDX-License-Identifier: BSD-3-Clause
*/
+
#include <config.h>
#ident "$Id: getlong.c 2763 2009-04-23 09:57:03Z nekral-guest $"
#include <stdlib.h>
#include <errno.h>
+
#include "prototypes.h"
+
/*
* getulong - extract an unsigned long integer provided by the numstr string in *result
*
* It supports decimal, hexadecimal or octal representations.
- *
- * Returns 0 on failure, 1 on success.
*/
-int getulong (const char *numstr, /*@out@*/unsigned long *result)
+int
+getulong(const char *numstr, /*@out@*/unsigned long *result)
{
+ char *endptr;
unsigned long val;
- char *endptr;
errno = 0;
val = strtoul(numstr, &endptr, 0);
- if ( ('\0' == *numstr)
- || ('\0' != *endptr)
- || (0 != errno)
- ) {
- return 0;
- }
+ if (('\0' == *numstr) || ('\0' != *endptr) || (0 != errno))
+ return -1;
*result = val;
- return 1;
+ return 0;
}
-
/* Gather up the ranges from the command line */
mapping = mappings;
for (idx = 0, argidx = 0; idx < ranges; idx++, argidx += 3, mapping++) {
- if (!getulong(argv[argidx + 0], &mapping->upper)) {
+ if (getulong(argv[argidx + 0], &mapping->upper) == -1) {
free(mappings);
return NULL;
}
- if (!getulong(argv[argidx + 1], &mapping->lower)) {
+ if (getulong(argv[argidx + 1], &mapping->lower) == -1) {
free(mappings);
return NULL;
}
- if (!getulong(argv[argidx + 2], &mapping->count)) {
+ if (getulong(argv[argidx + 2], &mapping->count) == -1) {
free(mappings);
return NULL;
}
{
unsigned long mask;
- if ( (getulong (value, &mask) == 0)
+ if ( (getulong(value, &mask) == -1)
|| (mask != (mode_t) mask)) {
return 0;
}
{
unsigned long limit, count;
- if (getulong (maxlogins, &limit) == 0) {
+ if (getulong(maxlogins, &limit) == -1) {
return 0;
}
if (strncmp (cp, "umask=", 6) == 0) {
unsigned long mask;
- if ( (getulong (cp + 6, &mask) == 0)
+ if ( (getulong(cp + 6, &mask) == -1)
|| (mask != (mode_t) mask)) {
SYSLOG ((LOG_WARN,
"Can't set umask value for user %s",
*cp = '\0';
cp++;
- if (getulong (cp, &remote_speed) == 0) {
+ if (getulong(cp, &remote_speed) == -1) {
remote_speed = 9600;
}
}
if (fields[8][0] == '\0') {
spwd.sp_flag = SHADOW_SP_FLAG_UNSET;
- } else if (getulong (fields[8], &spwd.sp_flag) == 0) {
+ } else if (getulong(fields[8], &spwd.sp_flag) == -1) {
return 0;
}
if (fields[8][0] == '\0') {
spwd.sp_flag = SHADOW_SP_FLAG_UNSET;
} else {
- if (getulong (fields[8], &spwd.sp_flag) == 0) {
+ if (getulong(fields[8], &spwd.sp_flag) == -1) {
#ifdef USE_NIS
if (nis_used) {
spwd.sp_flag = SHADOW_SP_FLAG_UNSET;
if (i != SUBID_NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0')
return NULL;
range.owner = fields[0];
- if (getulong (fields[1], &range.start) == 0)
+ if (getulong(fields[1], &range.start) == -1)
return NULL;
- if (getulong (fields[2], &range.count) == 0)
+ if (getulong(fields[2], &range.count) == -1)
return NULL;
return ⦥
case 'b':
{
unsigned long inverse_days;
- if (getulong (optarg, &inverse_days) == 0) {
+ if (getulong(optarg, &inverse_days) == -1) {
fprintf (stderr,
_("%s: invalid numeric argument '%s'\n"),
Prog, optarg);
case 't':
{
unsigned long days;
- if (getulong (optarg, &days) == 0) {
+ if (getulong(optarg, &days) == -1) {
fprintf (stderr,
_("%s: invalid numeric argument '%s'\n"),
Prog, optarg);