Update to 0.10.
This commit is contained in:
parent
49cb6cca76
commit
f6d6e72421
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
json-c-0.9.tar.gz
|
json-c-0.9.tar.gz
|
||||||
|
/json-c-0.10.tar.gz
|
||||||
|
@ -1,120 +0,0 @@
|
|||||||
From a503ee8217a9912f3c58acae33cf3d1d840dab6c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jehiah Czebotar <jehiah@gmail.com>
|
|
||||||
Date: Wed, 8 Dec 2010 03:52:07 +0000
|
|
||||||
Subject: [patch json-c] add json_tokener_parse_verbose, and return NULL on
|
|
||||||
parser errors
|
|
||||||
|
|
||||||
git-svn-id: http://svn.metaparadigm.com/svn/json-c/trunk@62 327403b1-1117-474d-bef2-5cb71233fd97
|
|
||||||
---
|
|
||||||
bits.h | 3 ++-
|
|
||||||
json_tokener.c | 18 +++++++++++++++++-
|
|
||||||
json_tokener.h | 3 ++-
|
|
||||||
test1.c | 15 +++++++++++++--
|
|
||||||
4 files changed, 34 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bits.h b/bits.h
|
|
||||||
index f308da3..c8cbbc8 100644
|
|
||||||
--- a/bits.h
|
|
||||||
+++ b/bits.h
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
|
|
||||||
#define hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
|
|
||||||
#define error_ptr(error) ((void*)error)
|
|
||||||
-#define is_error(ptr) ((unsigned long)ptr > (unsigned long)-4000L)
|
|
||||||
+#define error_description(error) (json_tokener_errors[error])
|
|
||||||
+#define is_error(ptr) (ptr == NULL)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
diff --git a/json_tokener.c b/json_tokener.c
|
|
||||||
index da414e7..df106b1 100644
|
|
||||||
--- a/json_tokener.c
|
|
||||||
+++ b/json_tokener.c
|
|
||||||
@@ -115,11 +115,27 @@ struct json_object* json_tokener_parse(const char *str)
|
|
||||||
tok = json_tokener_new();
|
|
||||||
obj = json_tokener_parse_ex(tok, str, -1);
|
|
||||||
if(tok->err != json_tokener_success)
|
|
||||||
- obj = (struct json_object*)error_ptr(-tok->err);
|
|
||||||
+ obj = NULL;
|
|
||||||
json_tokener_free(tok);
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
+struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error)
|
|
||||||
+{
|
|
||||||
+ struct json_tokener* tok;
|
|
||||||
+ struct json_object* obj;
|
|
||||||
+
|
|
||||||
+ tok = json_tokener_new();
|
|
||||||
+ obj = json_tokener_parse_ex(tok, str, -1);
|
|
||||||
+ *error = tok->err;
|
|
||||||
+ if(tok->err != json_tokener_success) {
|
|
||||||
+ obj = NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ json_tokener_free(tok);
|
|
||||||
+ return obj;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
|
|
||||||
#if !HAVE_STRNDUP
|
|
||||||
/* CAW: compliant version of strndup() */
|
|
||||||
diff --git a/json_tokener.h b/json_tokener.h
|
|
||||||
index 7d40b40..162a152 100644
|
|
||||||
--- a/json_tokener.h
|
|
||||||
+++ b/json_tokener.h
|
|
||||||
@@ -76,7 +76,7 @@ struct json_tokener
|
|
||||||
char *str;
|
|
||||||
struct printbuf *pb;
|
|
||||||
int depth, is_double, st_pos, char_offset;
|
|
||||||
- ptrdiff_t err;
|
|
||||||
+ enum json_tokener_error err;
|
|
||||||
unsigned int ucs_char;
|
|
||||||
char quote_char;
|
|
||||||
struct json_tokener_srec stack[JSON_TOKENER_MAX_DEPTH];
|
|
||||||
@@ -88,6 +88,7 @@ extern struct json_tokener* json_tokener_new(void);
|
|
||||||
extern void json_tokener_free(struct json_tokener *tok);
|
|
||||||
extern void json_tokener_reset(struct json_tokener *tok);
|
|
||||||
extern struct json_object* json_tokener_parse(const char *str);
|
|
||||||
+extern struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error);
|
|
||||||
extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
|
|
||||||
const char *str, int len);
|
|
||||||
|
|
||||||
diff --git a/test1.c b/test1.c
|
|
||||||
index a3cc6d9..ac1b882 100644
|
|
||||||
--- a/test1.c
|
|
||||||
+++ b/test1.c
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <string.h>
|
|
||||||
+#include <assert.h>
|
|
||||||
|
|
||||||
#include "json.h"
|
|
||||||
|
|
||||||
@@ -135,11 +136,21 @@ int main(int argc, char **argv)
|
|
||||||
printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
|
|
||||||
json_object_put(new_obj);
|
|
||||||
|
|
||||||
+ enum json_tokener_error error = json_tokener_success;
|
|
||||||
+ new_obj = json_tokener_parse_verbose("{ foo }", &error);
|
|
||||||
+ assert (error == json_tokener_error_parse_object_key_name);
|
|
||||||
+ assert (new_obj == NULL);
|
|
||||||
+
|
|
||||||
new_obj = json_tokener_parse("{ foo }");
|
|
||||||
- if(is_error(new_obj)) printf("got error as expected\n");
|
|
||||||
+ assert (new_obj == NULL);
|
|
||||||
+
|
|
||||||
+ // if(is_error(new_obj)) printf("got error as expected\n");
|
|
||||||
|
|
||||||
new_obj = json_tokener_parse("foo");
|
|
||||||
- if(is_error(new_obj)) printf("got error as expected\n");
|
|
||||||
+ assert (new_obj == NULL);
|
|
||||||
+ new_obj = json_tokener_parse_verbose("foo", &error);
|
|
||||||
+ assert (new_obj == NULL);
|
|
||||||
+ assert (error == json_tokener_error_parse_boolean);
|
|
||||||
|
|
||||||
new_obj = json_tokener_parse("{ \"foo");
|
|
||||||
if(is_error(new_obj)) printf("got error as expected\n");
|
|
||||||
--
|
|
||||||
1.7.6.4
|
|
||||||
|
|
15
json-c.spec
15
json-c.spec
@ -1,16 +1,13 @@
|
|||||||
Name: json-c
|
Name: json-c
|
||||||
Version: 0.9
|
Version: 0.10
|
||||||
Release: 5%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: A JSON implementation in C
|
Summary: A JSON implementation in C
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://oss.metaparadigm.com/json-c/
|
URL: https://github.com/json-c/json-c/wiki
|
||||||
Source0: http://oss.metaparadigm.com/json-c/json-c-%{version}.tar.gz
|
Source0: https://github.com/downloads/json-c/json-c/json-c-%{version}.tar.gz
|
||||||
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
||||||
|
|
||||||
# Upstream has applied this in git master branch
|
|
||||||
Patch0: json-c-add-json_tokener_parse_verbose-and-return-NULL-on-pa.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
JSON-C implements a reference counting object model that allows you to easily
|
JSON-C implements a reference counting object model that allows you to easily
|
||||||
construct JSON objects in C, output them as JSON formatted strings and parse
|
construct JSON objects in C, output them as JSON formatted strings and parse
|
||||||
@ -36,7 +33,6 @@ This package contains the reference manual for json-c.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
|
||||||
for doc in ChangeLog; do
|
for doc in ChangeLog; do
|
||||||
iconv -f iso-8859-1 -t utf8 $doc > $doc.new &&
|
iconv -f iso-8859-1 -t utf8 $doc > $doc.new &&
|
||||||
touch -r $doc $doc.new &&
|
touch -r $doc $doc.new &&
|
||||||
@ -75,6 +71,9 @@ rm -rf %{buildroot}
|
|||||||
%doc doc/html/*
|
%doc doc/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Nov 24 2012 Jussi Lehtola <jussilehtola@fedoraproject.org> - 0.10-1
|
||||||
|
- Update to 0.10 (BZ #879771).
|
||||||
|
|
||||||
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9-5
|
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9-5
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user