85 lines
1.4 KiB
C
85 lines
1.4 KiB
C
#include <errno.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#define MAX_ERROR 4
|
|
static int errct;
|
|
|
|
/* test strtol */
|
|
#define TYPE long
|
|
#define TYPEU unsigned long
|
|
#define TYPE_FUNC strtol
|
|
#include "test45.h"
|
|
#undef TYPE
|
|
#undef TYPEU
|
|
#undef TYPE_FUNC
|
|
|
|
/* test strtoul */
|
|
#define TYPE unsigned long
|
|
#define TYPEU unsigned long
|
|
#define TYPE_FUNC strtoul
|
|
#include "test45.h"
|
|
#undef TYPE
|
|
#undef TYPEU
|
|
#undef TYPE_FUNC
|
|
|
|
#ifdef __LONG_LONG_SUPPORTED
|
|
|
|
/* test strtoll */
|
|
#define TYPE long long
|
|
#define TYPEU unsigned long long
|
|
#define TYPE_FUNC strtoll
|
|
#include "test45.h"
|
|
#undef TYPE
|
|
#undef TYPEU
|
|
#undef TYPE_FUNC
|
|
|
|
/* test strtoull */
|
|
#define TYPE long long
|
|
#define TYPEU unsigned long long
|
|
#define TYPE_FUNC strtoull
|
|
#include "test45.h"
|
|
#undef TYPE
|
|
#undef TYPEU
|
|
#undef TYPE_FUNC
|
|
|
|
#endif /* defined(__LONG_LONG_SUPPORTED) */
|
|
|
|
static void quit(void)
|
|
{
|
|
if (errct == 0)
|
|
{
|
|
printf("ok\n");
|
|
exit(0);
|
|
}
|
|
else
|
|
{
|
|
printf("%d errors\n", errct);
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
#ifdef __LONG_LONG_SUPPORTED
|
|
printf("Test 45 (GCC) ");
|
|
#else
|
|
printf("Test 45 (ACK) ");
|
|
#endif
|
|
fflush(stdout);
|
|
|
|
/* run long/unsigned long tests */
|
|
test_strtol();
|
|
test_strtoul();
|
|
|
|
/* run long long/unsigned long long tests (GCC only) */
|
|
#ifdef __LONG_LONG_SUPPORTED
|
|
test_strtoll();
|
|
test_strtoull();
|
|
#endif /* defined(__LONG_LONG_SUPPORTED) */
|
|
|
|
quit();
|
|
return -1; /* never happens */
|
|
}
|