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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
Index: jsonjson_object_private.h
===================================================================
--- json.old/json_object_private.h (revision 55)
+++ json/json_object_private.h (working copy)
@@ -30,7 +30,7 @@
union data {
boolean c_boolean;
double c_double;
- int c_int;
+ long long int c_int;
struct lh_table *c_object;
struct array_list *c_array;
char *c_string;
Index: jsonjson_object.c
===================================================================
--- json.old/json_object.c (revision 55)
+++ json/json_object.c (working copy)
@@ -319,10 +319,10 @@
static int json_object_int_to_json_string(struct json_object* jso,
struct printbuf *pb)
{
- return sprintbuf(pb, "%d", jso->o.c_int);
+ return sprintbuf(pb, "%lld", jso->o.c_int);
}
-struct json_object* json_object_new_int(int i)
+struct json_object* json_object_new_int(long long int i)
{
struct json_object *jso = json_object_new(json_type_int);
if(!jso) return NULL;
@@ -331,20 +331,20 @@
return jso;
}
-int json_object_get_int(struct json_object *jso)
+long long int json_object_get_int(struct json_object *jso)
{
- int cint;
+ long long int cint;
if(!jso) return 0;
switch(jso->o_type) {
case json_type_int:
return jso->o.c_int;
case json_type_double:
- return (int)jso->o.c_double;
+ return (long long int)jso->o.c_double;
case json_type_boolean:
return jso->o.c_boolean;
case json_type_string:
- if(sscanf(jso->o.c_string, "%d", &cint) == 1) return cint;
+ if(sscanf(jso->o.c_string, "%lld", &cint) == 1) return cint;
default:
return 0;
}
Index: jsonjson_tokener.c
===================================================================
--- json.old/json_tokener.c (revision 55)
+++ json/json_tokener.c (working copy)
@@ -542,9 +542,9 @@
printbuf_memappend_fast(tok->pb, case_start, case_len);
}
{
- int numi;
+ long long int numi;
double numd;
- if(!tok->is_double && sscanf(tok->pb->buf, "%d", &numi) == 1) {
+ if(!tok->is_double && sscanf(tok->pb->buf, "%lld", &numi) == 1) {
current = json_object_new_int(numi);
} else if(tok->is_double && sscanf(tok->pb->buf, "%lf", &numd) == 1) {
current = json_object_new_double(numd);
Index: jsonjson_object.h
===================================================================
--- json.old/json_object.h (revision 55)
+++ json/json_object.h (working copy)
@@ -252,18 +252,18 @@
* @param i the integer
* @returns a json_object of type json_type_int
*/
-extern struct json_object* json_object_new_int(int i);
+extern struct json_object* json_object_new_int(long long int i);
-/** Get the int value of a json_object
+/** Get the long long int value of a json_object
*
* The type is coerced to a int if the passed object is not a int.
* double objects will return their integer conversion. Strings will be
* parsed as an integer. If no conversion exists then 0 is returned.
*
* @param obj the json_object instance
- * @returns an int
+ * @returns a long long int
*/
-extern int json_object_get_int(struct json_object *obj);
+extern long long int json_object_get_int(struct json_object *obj);
/* double type methods */
Index: jsonChangeLog
===================================================================
--- json.old/ChangeLog (revision 55)
+++ json/ChangeLog (working copy)
@@ -8,6 +8,9 @@
Brent Miller, bdmiller at yahoo dash inc dot com
* Correction to comment describing printbuf_memappend in printbuf.h
Brent Miller, bdmiller at yahoo dash inc dot com
+ * Use long long int instead of plain int for integers (needed for stuff like
+ twitter, which has some long long ints in it's status IDs
+ Rui Miguel Seabra, rms at 1407 dot org
0.9
* Add README.html README-WIN32.html config.h.win32 to Makefile.am
|