]> git.kaiwu.me - klib.git/commitdiff
a bit code cleaup
authorHeng Li <lh3@me.com>
Sat, 29 Nov 2014 23:55:36 +0000 (18:55 -0500)
committerHeng Li <lh3@me.com>
Sat, 29 Nov 2014 23:55:36 +0000 (18:55 -0500)
kson.c

diff --git a/kson.c b/kson.c
index 5344fe7cd5f7d175b573c903b713288a3d09c290..e0e61cf637d2472825ce386d7f6e3dd8ae7588ac 100644 (file)
--- a/kson.c
+++ b/kson.c
@@ -119,6 +119,40 @@ kson_t *kson_parse(const char *json, int *error)
        return kson;
 }
 
+const kson_node_t *kson_vquery(const kson_node_t *nodes, const kson_node_t *root, int depth, va_list ap)
+{
+       const kson_node_t *p = root;
+       while (p && depth > 0) {
+               if (p->type == KSON_TYPE_BRACE) {
+                       long i;
+                       const char *q = va_arg(ap, const char*);
+                       for (i = 0; i < (long)p->n; ++i) {
+                               const kson_node_t *r = &nodes[i];
+                               if (r->key && strcmp(r->key, q) == 0) {
+                                       p = r;
+                                       break;
+                               }
+                       }
+                       if (i == (long)p->n) p = 0;
+               } else if (p->type == KSON_TYPE_BRACKET) {
+                       long i = va_arg(ap, long);
+                       p = i < (long)p->n? &nodes[p->v.child[i]] : 0;
+               } else break;
+               --depth;
+       }
+       return p;
+}
+
+const kson_node_t *kson_query(const kson_t *kson, int depth, ...)
+{
+       const kson_node_t *p;
+       va_list ap;
+       va_start(ap, depth);
+       p = kson_vquery(kson->nodes, kson->nodes, depth, ap);
+       va_end(ap);
+       return p;
+}
+
 void kson_format_recur(const kson_node_t *nodes, int depth, const kson_node_t *p)
 {
        long i;
@@ -146,7 +180,7 @@ void kson_format_recur(const kson_node_t *nodes, int depth, const kson_node_t *p
        } else {
                if (p->type != KSON_TYPE_NO_QUOTE)
                        putchar(p->type == KSON_TYPE_SGL_QUOTE? '\'' : '"');
-               printf("%s", p->v.str);
+               fputs(p->v.str, stdout);
                if (p->type != KSON_TYPE_NO_QUOTE)
                        putchar(p->type == KSON_TYPE_SGL_QUOTE? '\'' : '"');
        }
@@ -158,40 +192,6 @@ void kson_format(const kson_t *kson)
        putchar('\n');
 }
 
-const kson_node_t *kson_vquery(const kson_node_t *nodes, const kson_node_t *root, int depth, va_list ap)
-{
-       const kson_node_t *p = root;
-       while (p && depth > 0) {
-               if (p->type == KSON_TYPE_BRACE) {
-                       long i;
-                       const char *q = va_arg(ap, const char*);
-                       for (i = 0; i < (long)p->n; ++i) {
-                               const kson_node_t *r = &nodes[i];
-                               if (r->key && strcmp(r->key, q) == 0) {
-                                       p = r;
-                                       break;
-                               }
-                       }
-                       if (i == (long)p->n) p = 0;
-               } else if (p->type == KSON_TYPE_BRACKET) {
-                       long i = va_arg(ap, long);
-                       p = i < (long)p->n? &nodes[p->v.child[i]] : 0;
-               } else break;
-               --depth;
-       }
-       return p;
-}
-
-const kson_node_t *kson_query(const kson_t *kson, int depth, ...)
-{
-       const kson_node_t *p;
-       va_list ap;
-       va_start(ap, depth);
-       p = kson_vquery(kson->nodes, kson->nodes, depth, ap);
-       va_end(ap);
-       return p;
-}
-
 #ifdef KSON_MAIN
 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
 int main(int argc, char *argv[])