File: strtol-4.c

package info (click to toggle)
avr-libc 1%3A1.6.2.cvs20080610-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,848 kB
  • ctags: 55,619
  • sloc: ansic: 92,267; asm: 6,692; sh: 4,131; makefile: 2,481; python: 976; pascal: 426; perl: 116
file content (72 lines) | stat: -rw-r--r-- 1,669 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* With printf.
   $Id: strtol-4.c,v 1.1 2007/02/06 12:36:58 dmix Exp $
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "strtol.h"

int main ()
{
    char s[16];
    long x;
    
    for (x = 0; x <= 100; x++) {
	sprintf(s, "%ld", x);
	if (t_strtol(s, 0, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "%lx", x);
	if (t_strtol(s, 16, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "%lo", x);
	if (t_strtol(s, 8, x, 0, strlen(s)))
	    exit(__LINE__);
    }
    
    for (x = 0; x >= -100; x--) {
	sprintf(s, "%ld", x);
	if (t_strtol(s, 0, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "-%lx", -x);
	if (t_strtol(s, 16, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "-%lo", -x);
	if (t_strtol(s, 8, x, 0, strlen(s)))
	    exit(__LINE__);
    }
    
    for (x = LONG_MAX; x >= LONG_MAX - 100; x--) {
	sprintf(s, "%ld", x);
	if (t_strtol(s, 0, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "%lx", x);
	if (t_strtol(s, 16, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "%lo", x);
	if (t_strtol(s, 8, x, 0, strlen(s)))
	    exit(__LINE__);
    }
    
    for (x = LONG_MIN; x <= LONG_MIN + 100; x++) {
	sprintf(s, "%ld", x);
	if (t_strtol(s, 0, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "-%lx", -x);
	if (t_strtol(s, 16, x, 0, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "-%lo", -x);
	if (t_strtol(s, 8, x, 0, strlen(s)))
	    exit(__LINE__);
    }
    
    for (x = 1; x <= 300; x++) {
	sprintf(s, "8%07lx", x);
	if (t_strtol(s, 16, 0x7fffffff, ERANGE, strlen(s)))
	    exit(__LINE__);
	sprintf(s, "-8%07lx", x);
	if (t_strtol(s, 16, 0x80000000, ERANGE, strlen(s)))
	    exit(__LINE__);
    }

    return 0;
}