1 // RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
2 //
3 // UNSUPPORTED: linux, darwin, solaris
4 
5 #define _OPENBSD_SOURCE
6 
7 #include <assert.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 
main(void)11 int main(void) {
12   const char *errstr;
13 
14   printf("strtonum\n");
15 
16   long long l = strtonum("100", 1, 100, &errstr);
17   assert(!errstr);
18   printf("%lld\n", l);
19 
20   l = strtonum("200", 1, 100, &errstr);
21   assert(errstr);
22   printf("%s\n", errstr);
23 
24   l = strtonum("300", 1000, 1001, &errstr);
25   assert(errstr);
26   printf("%s\n", errstr);
27 
28   l = strtonum("abc", 1000, 1001, &errstr);
29   assert(errstr);
30   printf("%s\n", errstr);
31 
32   l = strtonum("1000", 1001, 1000, &errstr);
33   assert(errstr);
34   printf("%s\n", errstr);
35 
36   l = strtonum("1000abc", 1000, 1001, &errstr);
37   assert(errstr);
38   printf("%s\n", errstr);
39 
40   l = strtonum("1000.0", 1000, 1001, &errstr);
41   assert(errstr);
42   printf("%s\n", errstr);
43 
44   // CHECK: strtonum
45   // CHECK: 100
46   // CHECK: too large
47   // CHECK: too small
48   // CHECK: invalid
49   // CHECK: invalid
50   // CHECK: invalid
51   // CHECK: invalid
52 
53   return 0;
54 }
55