aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2012-11-08 22:38:20 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2012-11-08 22:38:20 +0000
commit8e3b7acdfc96e086f1cd1c606e46d9a91d46a842 (patch)
tree9eb3d9f56cf4363f80911b4d33c4034022f64ee8 /lib
parent0688e99d12297b6dda980803d1f1a54bf8590299 (diff)
It logs in and fetches statuses! \o/ But, some corruption..
Diffstat (limited to 'lib')
-rw-r--r--lib/json_util.c16
-rw-r--r--lib/json_util.h11
2 files changed, 22 insertions, 5 deletions
diff --git a/lib/json_util.c b/lib/json_util.c
index 67cde749..43e687e3 100644
--- a/lib/json_util.c
+++ b/lib/json_util.c
@@ -26,7 +26,7 @@
#include "json_util.h"
-json_value *json_o_get( json_value *obj, json_char *name )
+json_value *json_o_get( const json_value *obj, const json_char *name )
{
int i;
@@ -40,12 +40,22 @@ json_value *json_o_get( json_value *obj, json_char *name )
return NULL;
}
-const char *json_o_str( json_value *obj, json_char *name )
+const char *json_o_str( const json_value *obj, const json_char *name )
{
json_value *ret = json_o_get( obj, name );
- if( ret )
+ if( ret && ret->type == json_string )
return ret->u.string.ptr;
else
return NULL;
}
+
+char *json_o_strdup( const json_value *obj, const json_char *name )
+{
+ json_value *ret = json_o_get( obj, name );
+
+ if( ret && ret->type == json_string && ret->u.string.ptr )
+ return g_memdup( ret->u.string.ptr, ret->u.string.length + 1 );
+ else
+ return NULL;
+}
diff --git a/lib/json_util.h b/lib/json_util.h
index c4e52eeb..fa4510bb 100644
--- a/lib/json_util.h
+++ b/lib/json_util.h
@@ -23,5 +23,12 @@
#include "json.h"
-json_value *json_o_get( json_value *obj, json_char *name );
-const char *json_o_str( json_value *obj, json_char *name );
+#define JSON_O_FOREACH(o, k, v) \
+ char *k; json_value *v; int __i; \
+ for( __i = 0; k = (o)->u.object.values[__i].name, \
+ v = (o)->u.object.values[__i].value, \
+ __i < (o)->u.object.length; __i ++ )
+
+json_value *json_o_get( const json_value *obj, const json_char *name );
+const char *json_o_str( const json_value *obj, const json_char *name );
+char *json_o_strdup( const json_value *obj, const json_char *name );