Petri Lehtinen
4cd777712b
Enhance handling of circular references
...
It's now an error to try to add an object or array to itself. The
encoder checks for circular references and fails with an error status
if one is detected.
2009-10-15 21:02:27 +03:00
Petri Lehtinen
79009e62c1
json_dumps: Close the strbuffer if dumping fails
2009-10-15 20:54:32 +03:00
Petri Lehtinen
951d091f07
Make integer, real and string mutable
...
Added functions:
json_string_set
json_integer_set
json_real_set
While at it, clarify the documentation and parameter naming of
json_{string,integer,real}_value() a bit.
2009-10-14 08:23:02 +03:00
Petri Lehtinen
185e107d24
Don't use non-portable asprintf()
...
Thanks to Adam Strzelecki for reporting.
2009-10-13 15:40:26 +03:00
Petri Lehtinen
ca7703fbd1
Merge branch '1.0'
...
Conflicts:
configure.ac
doc/conf.py
2009-10-11 21:51:54 +03:00
Petri Lehtinen
12cd4e8c09
jansson 1.0.4
2009-10-11 21:38:42 +03:00
Petri Lehtinen
1e00cd58a5
Extend object API
...
Added functions:
json_object_size
json_object_clear
json_object_update
2009-10-11 20:44:01 +03:00
Petri Lehtinen
9d648a87cb
Check json_object_set_new arguments
...
A segfault was caused by NULL key.
2009-10-10 22:53:36 +03:00
Petri Lehtinen
19588c2d69
Fix a few more compilation issues
...
These were left out from the previous commit.
2009-10-06 13:22:27 +03:00
Petri Lehtinen
9c5a8430db
Make it compile on platforms where char is unsigned
...
Linux on powerpc seems to be one such platform.
2009-10-01 21:54:45 +03:00
Petri Lehtinen
cbacac5975
Extend array API
...
Added functions:
json_array_insert
json_array_insert_new
json_array_remove
json_array_clear
json_array_extend
2009-09-29 22:17:58 +03:00
Petri Lehtinen
7728716759
Merge branch '1.0'
...
Conflicts:
configure.ac
doc/conf.py
2009-09-14 15:06:06 +03:00
Petri Lehtinen
b7bf96996f
jansson 1.0.3
2009-09-14 14:32:41 +03:00
Petri Lehtinen
6d8c287032
load: Check for integer and real overlfows and underflows
...
Backported from master, commit 5406c2b3d3
:
* deleted test/testdata/invalid-stripped because the stripped tests
don't exist in 1.0
2009-09-14 10:28:03 +03:00
Petri Lehtinen
5406c2b3d3
load: Check for integer and real overlfows and underflows
2009-09-13 13:18:01 +03:00
Petri Lehtinen
743af38e7f
Use unsigned long instead of uint32_t
...
Some day we will have ANSI C compatibility... This change doesn't make
the API backwards incompatible because uint32_t was only used in flags
to json_dump*() and the flags are meant to be used only by ORing
constants and macro output, and actually currently only JSON_INDENT
can be used.
2009-09-13 13:16:34 +03:00
Petri Lehtinen
55d2566539
Merge branch '1.0' into HEAD
...
Conflicts:
configure.ac
doc/conf.py
2009-09-08 17:02:39 +03:00
Petri Lehtinen
827a01937f
jansson 1.0.2
2009-09-08 16:48:26 +03:00
Petri Lehtinen
0f62dac627
load: Handle EOF correctly
...
In stream_get(), EOF never got it to stream->buffer and because of
this, stream_unget() failed on some situations. This patch makes
stream_get() handle EOF just like any other byte.
As a "side effect", lex_scan_string() now needs to unget the EOF, or
otherwise it ends up in error message on premature end of input.
2009-09-08 16:41:07 +03:00
Petri Lehtinen
7ee974e91c
Don't perform reference counting on true, false and null
...
This makes their constructors thread safe. A special reference count
-1 is used to test whether to perform reference counting on a value or
not.
2009-09-07 21:40:14 +03:00
Petri Lehtinen
234ee47281
Better argument validation
...
All pointer arguments are now tested for NULL. json_string() now also
tests that strdup() succeeds. This is to ensure that no NULL values
end up in data structures.
Also desribe the different sources of errors in documentation.
2009-09-06 22:24:55 +03:00
Petri Lehtinen
98a8c1aebf
Don't include unistd.h
...
It's not needed.
2009-09-06 22:24:22 +03:00
Petri Lehtinen
fd259ff68c
Merge branch '1.0'
...
Conflicts:
configure.ac
doc/conf.py
2009-09-06 12:53:38 +03:00
Petri Lehtinen
e4be4a4a28
jansson 1.0.1
2009-09-04 20:58:55 +03:00
Petri Lehtinen
78eda92908
jansson.h: Fix typo
...
json_is_true was spelled jsin_is_true. Quite fatal.
2009-09-04 15:21:00 +03:00
Petri Lehtinen
9611780907
dump: Optimize indenting
...
Don't alloca() a whitespace buffer and fill it with spaces in each
call to dump_indent. Instead, use a static whitespace buffer.
As a bonus, this saves the use of poorly portable alloca().
2009-09-04 09:52:40 +03:00
Petri Lehtinen
93c5892bc3
load: Factor out an unneeded strdup
...
By "stealing" the string parsed out in lexer, one strdup can be saved.
2009-09-04 09:52:40 +03:00
Petri Lehtinen
1095ca956b
Don't define -std=c99 in AM_CFLAGS
...
It is not needed.
2009-09-04 09:52:40 +03:00
Petri Lehtinen
89d09813c3
Add reference stealing functions for inserting values to objects and arrays
...
The non-stealing functions are now just simple wrappers around these.
2009-09-04 09:52:37 +03:00
Petri Lehtinen
ee2d164025
Detect garbage near EOF in json_loadf() and json_load_file()
2009-08-24 20:58:59 +03:00
Petri Lehtinen
114fc96f76
array: Fix a few checks and a leak
2009-08-23 13:34:12 +03:00
Petri Lehtinen
0428f48d19
Refuse to dump other types than array and object as the root value
2009-08-04 20:58:02 +03:00
Petri Lehtinen
36530d8c25
Remove unimplemented json_clone()
2009-07-30 11:32:27 +03:00
Petri Lehtinen
08d712d038
Add macro json_is_boolean
2009-07-30 11:32:27 +03:00
Petri Lehtinen
2f4d6f8ae7
Add LICENSE and a copyright note to all sources
2009-07-30 11:32:24 +03:00
Petri Lehtinen
f41e380984
Rename json_{load,dump} to json_{load,dump}_file
2009-07-28 10:58:13 +03:00
Petri Lehtinen
b348519e96
Fix some memory leaks and invalid memory references
2009-07-28 10:38:21 +03:00
Petri Lehtinen
9240146c10
Implement support for \u escapes
2009-07-16 09:58:23 +03:00
Petri Lehtinen
a0435e3061
Show the whole UTF-8 sequence in error message, not just the first byte
2009-07-16 09:57:08 +03:00
Petri Lehtinen
df307f1bc3
Report errors from lexical and stream level in parser
...
Before, only the syntax level (parse_*) was able to set the error
string. This patch fixes the situation so that lexical (lex_*) and
stream (stream_*) levels can report detailed error messages.
Also, instead of 0, EOF is now returned by stream on error.
2009-07-14 00:24:39 +03:00
Petri Lehtinen
1f65a3cae7
Get rid of JSON_SORT_KEYS dump flag
...
Object sorting will be implemented later.
2009-07-13 23:38:04 +03:00
Petri Lehtinen
902bcdaa5e
Decode and check for correct UTF-8
...
All strings (decoded JSON text, the argument of json_string(), the key
argument of json_object_set()) are checked for valid UTF-8.
2009-07-13 23:38:01 +03:00
Petri Lehtinen
625f50f916
Streamify the loader
...
It's no longer needed to load the whole input into a string and then
parse from the string. Instead, the input is read as needed from
a string or file.
2009-07-13 21:45:16 +03:00
Petri Lehtinen
4c414bdd6d
Get rid of json_dumpfd and json_loadfd
...
fdopen() makes supporting separate API for file descriptors useless.
Supporting fd's also makes Jansson less portable.
2009-07-13 21:45:16 +03:00
Petri Lehtinen
1b67edb54d
Little clean-up in parser
...
Before, json_loads checked for '[' or '{' at the beginning. Now
there's a dedicated function for that: parse_json(). Also rename
parse() to parse_value().
2009-07-13 21:45:16 +03:00
Petri Lehtinen
287ec3f9da
Unify naming in parser
...
No functional changes.
2009-07-13 21:45:16 +03:00
Petri Lehtinen
13c7ad3219
Make the lexer not depend on locale
...
... by not using isalpha() and isspace(). While at it, fix some other
minor things.
2009-07-13 21:45:11 +03:00
Petri Lehtinen
68e948f567
Don't dump extra spaces when indenting
2009-07-09 21:01:43 +03:00
Petri Lehtinen
6b14df13cc
Fix dumping of Unicode control codes
...
Inside strings, All UTF-8 characters except for \, " and Unicode
control codes are dumped as-is. The control codes that have a special
one-character escape use that escape, and other control codes are
dumped using the \uXXXX escape.
2009-07-09 20:59:52 +03:00
Petri Lehtinen
f9c2a113bb
Fix number tokenizer
2009-07-04 22:04:32 +03:00
Petri Lehtinen
4384776776
Fix empty array dumping
2009-07-04 13:19:41 +03:00
Petri Lehtinen
55af26f05a
strbuffer: Optimize string termination
...
Do not zero all of the memory, just the first unused byte to make the
string null terminated.
2009-07-04 13:19:41 +03:00
Petri Lehtinen
b724c2b122
Separate integers and real numbers
2009-07-04 13:19:25 +03:00
Petri Lehtinen
39802813f4
Use -Werror
2009-06-30 13:55:20 +03:00
Petri Lehtinen
b1fe723a7f
Fix json_loadf and json_loadfd with empty input
...
Nothing was appended to strbuffer, so the buffer was left empty. An
empty strbuffer is not an empty string but NULL, so the result was a
segfault.
This patch fixes the problem by initializing strbuffer to an empty
string.
2009-06-30 13:55:20 +03:00
Petri Lehtinen
dc9b954b62
Print correct error message on premature end of array
2009-06-30 13:55:20 +03:00
Petri Lehtinen
ae5ed3ff70
Fix json_set_error
...
Both error->line and error->text were set improperly, sigh.
2009-06-15 22:30:52 +03:00
Petri Lehtinen
7dc6cfd9cc
Fix a few memory leaks in json_parse_object()
2009-06-15 13:53:53 +03:00
Petri Lehtinen
d135a80e07
Implement json_load, json_loadf and json_loadfd
2009-06-15 13:53:50 +03:00
Petri Lehtinen
8c697312e4
strbuffer_value: Return a read-only pointer rather than duplicating the value
2009-06-13 22:27:23 +03:00
Petri Lehtinen
3e0134782b
strbuffer: Allocate enough space for value initially
2009-06-13 22:26:23 +03:00
Petri Lehtinen
197d3aa160
Implement strbuffer
...
String buffer (strbuffer) is an object that resizes automatically when
data is added to it. It was implemented by generalizing the technique
used in json_dumps().
2009-06-11 08:56:11 +03:00
Petri Lehtinen
9b825f7b18
Move max() to util.h
2009-06-11 08:54:40 +03:00
Petri Lehtinen
7764f3f321
Implement json_dump and json_dumps
2009-06-09 22:37:31 +03:00
Petri Lehtinen
d1407bed3a
Implement dumping to an fd
2009-05-16 15:15:01 +03:00
Petri Lehtinen
fdcf28b667
Refactor error reporting
2009-05-13 22:25:34 +03:00
Petri Lehtinen
6e160c146c
Use autoconf, automake & libtool
2009-05-12 22:21:50 +03:00
Petri Lehtinen
0b58486ec4
Fix json_object_get
2009-05-12 22:15:48 +03:00
Petri Lehtinen
86e1481cdb
Get rid of include/
2009-05-12 22:07:50 +03:00
Petri Lehtinen
514bbeaf7f
Parse an empty object correctly
2009-05-12 21:44:45 +03:00
Petri Lehtinen
9ea51b2855
Implement dumping to file
2009-05-12 21:44:45 +03:00
Petri Lehtinen
61d0111323
Bump hashtable, allocate object->hashtable statically
...
Hashtable code from git://github.com/akheron/hashtable.git commit
7331ba6acdb415a2af62ae3e93fdd39c2a83b768
2009-05-12 21:44:45 +03:00
Petri Lehtinen
a2adf6ec98
Add support for iterating over objects
2009-05-12 21:44:45 +03:00
Petri Lehtinen
17a69c2d66
Initial import
2009-05-12 21:44:01 +03:00