aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2010-08-13 22:19:20 +0300
committerPetri Lehtinen <petri@digip.org>2010-08-14 17:28:09 +0300
commitbfac1972e25b40f849852ce3c10e0a8ad47f79d7 (patch)
tree30a31dda490ebbcaa5dedd3135d54bc4037f4033
parentf8d0e01e46cd9452b5d7780906029d899215cb89 (diff)
downloadjansson-bfac1972e25b40f849852ce3c10e0a8ad47f79d7.zip
jansson-bfac1972e25b40f849852ce3c10e0a8ad47f79d7.tar.gz
jansson-bfac1972e25b40f849852ce3c10e0a8ad47f79d7.tar.bz2
Add a flags parameter to all decoding functions for future needs
As of now, the parameter is unused, but may be needed in the future. I'm adding it now so that in the future both API and ABI remain backwards compatible as long as possible. This is a backwards incompatible change.
-rw-r--r--doc/apiref.rst17
-rw-r--r--doc/github_commits.c2
-rw-r--r--doc/tutorial.rst2
-rw-r--r--src/jansson.h6
-rw-r--r--src/load.c10
-rw-r--r--test/bin/json_process.c2
-rw-r--r--test/suites/api/test_copy.c8
-rw-r--r--test/suites/api/test_equal.c4
-rw-r--r--test/suites/api/test_load.c2
9 files changed, 29 insertions, 24 deletions
diff --git a/doc/apiref.rst b/doc/apiref.rst
index aad0d6c..3e5f9f2 100644
--- a/doc/apiref.rst
+++ b/doc/apiref.rst
@@ -713,7 +713,7 @@ subset of).
json_t *json;
json_error_t error;
- json = json_load_file("/path/to/file.json", &error);
+ json = json_load_file("/path/to/file.json", 0, &error);
if(!json) {
/* the error variable contains error information */
}
@@ -729,32 +729,35 @@ subset of).
The following functions perform the actual JSON decoding.
-.. cfunction:: json_t *json_loads(const char *input, json_error_t *error)
+.. cfunction:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
.. refcounting:: new
Decodes the JSON string *input* and returns the array or object it
contains, or *NULL* on error, in which case *error* is filled with
information about the error. See above for discussion on the
- *error* parameter.
+ *error* parameter. *flags* is currently unused, and should be set
+ to 0.
-.. cfunction:: json_t *json_loadf(FILE *input, json_error_t *error)
+.. cfunction:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
.. refcounting:: new
Decodes the JSON text in stream *input* and returns the array or
object it contains, or *NULL* on error, in which case *error* is
filled with information about the error. See above for discussion
- on the *error* parameter.
+ on the *error* parameter. *flags* is currently unused, and should
+ be set to 0.
-.. cfunction:: json_t *json_load_file(const char *path, json_error_t *error)
+.. cfunction:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
.. refcounting:: new
Decodes the JSON text in file *path* and returns the array or
object it contains, or *NULL* on error, in which case *error* is
filled with information about the error. See above for discussion
- on the *error* parameter.
+ on the *error* parameter. *flags* is currently unused, and should
+ be set to 0.
Equality
diff --git a/doc/github_commits.c b/doc/github_commits.c
index 0fc1a1b..707aac4 100644
--- a/doc/github_commits.c
+++ b/doc/github_commits.c
@@ -117,7 +117,7 @@ int main(int argc, char *argv[])
if(!text)
return 1;
- root = json_loads(text, &error);
+ root = json_loads(text, 0, &error);
free(text);
if(!root)
diff --git a/doc/tutorial.rst b/doc/tutorial.rst
index caa11c2..eded745 100644
--- a/doc/tutorial.rst
+++ b/doc/tutorial.rst
@@ -152,7 +152,7 @@ function.
Next we'll call :cfunc:`json_loads()` to decode the JSON text we got
as a response::
- root = json_loads(text, &error);
+ root = json_loads(text, 0, &error);
free(text);
if(!root)
diff --git a/src/jansson.h b/src/jansson.h
index 5d335ae..41f9c9d 100644
--- a/src/jansson.h
+++ b/src/jansson.h
@@ -177,9 +177,9 @@ typedef struct {
int line;
} json_error_t;
-json_t *json_loads(const char *input, json_error_t *error);
-json_t *json_loadf(FILE *input, json_error_t *error);
-json_t *json_load_file(const char *path, json_error_t *error);
+json_t *json_loads(const char *input, size_t flags, json_error_t *error);
+json_t *json_loadf(FILE *input, size_t flags, json_error_t *error);
+json_t *json_load_file(const char *path, size_t flags, json_error_t *error);
#define JSON_INDENT(n) (n & 0x1F)
#define JSON_COMPACT 0x20
diff --git a/src/load.c b/src/load.c
index 2a360ff..0576080 100644
--- a/src/load.c
+++ b/src/load.c
@@ -811,10 +811,11 @@ static int string_eof(void *data)
return (stream->data[stream->pos] == '\0');
}
-json_t *json_loads(const char *string, json_error_t *error)
+json_t *json_loads(const char *string, size_t flags, json_error_t *error)
{
lex_t lex;
json_t *result;
+ (void)flags; /* unused */
string_data_t stream_data = {
.data = string,
@@ -840,10 +841,11 @@ out:
return result;
}
-json_t *json_loadf(FILE *input, json_error_t *error)
+json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
{
lex_t lex;
json_t *result;
+ (void)flags; /* unused */
if(lex_init(&lex, (get_func)fgetc, (eof_func)feof, input))
return NULL;
@@ -864,7 +866,7 @@ out:
return result;
}
-json_t *json_load_file(const char *path, json_error_t *error)
+json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
{
json_t *result;
FILE *fp;
@@ -879,7 +881,7 @@ json_t *json_load_file(const char *path, json_error_t *error)
return NULL;
}
- result = json_loadf(fp, error);
+ result = json_loadf(fp, flags, error);
fclose(fp);
return result;
diff --git a/test/bin/json_process.c b/test/bin/json_process.c
index a32f1d0..cff820b 100644
--- a/test/bin/json_process.c
+++ b/test/bin/json_process.c
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
if(getenv_int("JSON_SORT_KEYS"))
flags |= JSON_SORT_KEYS;
- json = json_loadf(stdin, &error);
+ json = json_loadf(stdin, 0, &error);
if(!json) {
fprintf(stderr, "%d\n%s\n", error.line, error.text);
return 1;
diff --git a/test/suites/api/test_copy.c b/test/suites/api/test_copy.c
index e4705f4..1c8a066 100644
--- a/test/suites/api/test_copy.c
+++ b/test/suites/api/test_copy.c
@@ -176,7 +176,7 @@ static void test_copy_array(void)
json_t *array, *copy;
size_t i;
- array = json_loads(json_array_text, NULL);
+ array = json_loads(json_array_text, 0, NULL);
if(!array)
fail("unable to parse an array");
@@ -205,7 +205,7 @@ static void test_deep_copy_array(void)
json_t *array, *copy;
size_t i;
- array = json_loads(json_array_text, NULL);
+ array = json_loads(json_array_text, 0, NULL);
if(!array)
fail("unable to parse an array");
@@ -235,7 +235,7 @@ static void test_copy_object(void)
json_t *object, *copy;
void *iter;
- object = json_loads(json_object_text, NULL);
+ object = json_loads(json_object_text, 0, NULL);
if(!object)
fail("unable to parse an object");
@@ -275,7 +275,7 @@ static void test_deep_copy_object(void)
json_t *object, *copy;
void *iter;
- object = json_loads(json_object_text, NULL);
+ object = json_loads(json_object_text, 0, NULL);
if(!object)
fail("unable to parse an object");
diff --git a/test/suites/api/test_equal.c b/test/suites/api/test_equal.c
index 111ee26..3b4ec2a 100644
--- a/test/suites/api/test_equal.c
+++ b/test/suites/api/test_equal.c
@@ -167,8 +167,8 @@ static void test_equal_complex()
" \"array\": [\"foo\", false, null, 1.234]"
"}";
- value1 = json_loads(complex_json, NULL);
- value2 = json_loads(complex_json, NULL);
+ value1 = json_loads(complex_json, 0, NULL);
+ value2 = json_loads(complex_json, 0, NULL);
if(!value1 || !value2)
fail("unable to parse JSON");
if(!json_equal(value1, value2))
diff --git a/test/suites/api/test_load.c b/test/suites/api/test_load.c
index 0934ea8..b022a3a 100644
--- a/test/suites/api/test_load.c
+++ b/test/suites/api/test_load.c
@@ -14,7 +14,7 @@ int main()
json_t *json;
json_error_t error;
- json = json_load_file("/path/to/nonexistent/file.json", &error);
+ json = json_load_file("/path/to/nonexistent/file.json", 0, &error);
if(error.line != -1)
fail("json_load_file returned an invalid line number");
if(strcmp(error.text, "unable to open /path/to/nonexistent/file.json: No such file or directory") != 0)