X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2F_PDCLIB%2Fstrtox_main.c;h=3bfdbb8b5bf2d857dfff5c7ecda9ceafad88f041;hb=2040228f27d623585d339dec175c4e779ca9edb5;hp=bc14811335c736c73eab4597f9f704559b0aefba;hpb=ee68216262558493cc862deb575fb0b97ed49429;p=pdclib diff --git a/functions/_PDCLIB/strtox_main.c b/functions/_PDCLIB/strtox_main.c index bc14811..3bfdbb8 100644 --- a/functions/_PDCLIB/strtox_main.c +++ b/functions/_PDCLIB/strtox_main.c @@ -1,19 +1,17 @@ -/* $Id$ */ - /* _PDCLIB_strtox_main( const char * *, int, _PDCLIB_uintmax_t, _PDCLIB_uintmax_t, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ -#define _PDCLIB_INT_H _PDCLIB_INT_H -#include <_PDCLIB_int.h> #include #include #include #include -_PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, uintmax_t error, uintmax_t limval, uintmax_t limdigit, char * sign ) +#ifndef REGTEST + +_PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, uintmax_t error, uintmax_t limval, int limdigit, char * sign ) { _PDCLIB_uintmax_t rc = 0; int digit = -1; @@ -23,7 +21,7 @@ _PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, uintm digit = x - _PDCLIB_digits; if ( ( rc < limval ) || ( ( rc == limval ) && ( digit <= limdigit ) ) ) { - rc = rc * base + digit; + rc = rc * base + (unsigned)digit; ++(*p); } else @@ -45,12 +43,15 @@ _PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, uintm return rc; } +#endif + #ifdef TEST -#include <_PDCLIB_test.h> +#include "_PDCLIB_test.h" #include int main( void ) { +#ifndef REGTEST const char * p; char test[] = "123_"; char fail[] = "xxx"; @@ -58,17 +59,17 @@ int main( void ) /* basic functionality */ p = test; errno = 0; - TESTCASE( _PDCLIB_strtox_main( &p, 10u, (uintmax_t)999, (uintmax_t)12, (uintmax_t)3, &sign ) == 123 ); + TESTCASE( _PDCLIB_strtox_main( &p, 10u, (uintmax_t)999, (uintmax_t)12, 3, &sign ) == 123 ); TESTCASE( errno == 0 ); TESTCASE( p == &test[3] ); /* proper functioning to smaller base */ p = test; - TESTCASE( _PDCLIB_strtox_main( &p, 8u, (uintmax_t)999, (uintmax_t)12, (uintmax_t)3, &sign ) == 0123 ); + TESTCASE( _PDCLIB_strtox_main( &p, 8u, (uintmax_t)999, (uintmax_t)12, 3, &sign ) == 0123 ); TESTCASE( errno == 0 ); TESTCASE( p == &test[3] ); /* overflowing subject sequence must still return proper endptr */ p = test; - TESTCASE( _PDCLIB_strtox_main( &p, 4u, (uintmax_t)999, (uintmax_t)1, (uintmax_t)2, &sign ) == 999 ); + TESTCASE( _PDCLIB_strtox_main( &p, 4u, (uintmax_t)999, (uintmax_t)1, 2, &sign ) == 999 ); TESTCASE( errno == ERANGE ); TESTCASE( p == &test[3] ); TESTCASE( sign == '+' ); @@ -76,8 +77,9 @@ int main( void ) errno = 0; p = fail; sign = '-'; - TESTCASE( _PDCLIB_strtox_main( &p, 10u, (uintmax_t)999, (uintmax_t)99, (uintmax_t)8, &sign ) == 0 ); + TESTCASE( _PDCLIB_strtox_main( &p, 10u, (uintmax_t)999, (uintmax_t)99, 8, &sign ) == 0 ); TESTCASE( p == NULL ); +#endif return TEST_RESULTS; }