curl_json plugin: warn when config expects a map and a number is provided
authorJim Radford <radford@galvanix.com>
Wed, 14 Aug 2013 00:57:58 +0000 (17:57 -0700)
committerJim Radford <radford@galvanix.com>
Wed, 14 Aug 2013 00:58:20 +0000 (17:58 -0700)
Moves the warning for strings in the number callback which was being called anyway.

This also serves to fix parsing numbers represented as JSON strings which was inadvertantly broken when adding array support.

src/curl_json.c

index 5bc3e41..ca604fc 100644 (file)
@@ -218,6 +218,10 @@ static int cj_cb_number (void *ctx,
   int status;
 
   if ((key == NULL) || !CJ_IS_KEY (key)) {
+    if (key != NULL)
+      NOTICE ("curl_json plugin: Found \"%.*s\", but the configuration expects"
+              " a map.", (int)number_len > number_len ? 0 : (int)number_len,
+              number);
     cj_cb_inc_array_index (ctx, 1);
     return (CJ_CB_CONTINUE);
   } else
@@ -269,27 +273,6 @@ static int cj_cb_map_key (void *ctx, const unsigned char *val,
 static int cj_cb_string (void *ctx, const unsigned char *val,
     yajl_len_t len)
 {
-  cj_t *db = (cj_t *)ctx;
-  char str[len + 1];
-
-  cj_cb_inc_array_index (ctx, 1);
-  return (CJ_CB_CONTINUE);
-
-  /* Create a null-terminated version of the string. */
-  memcpy (str, val, len);
-  str[len] = 0;
-
-  /* No configuration for this string -> simply return. */
-  if (db->state[db->depth].key == NULL)
-    return (CJ_CB_CONTINUE);
-
-  if (!CJ_IS_KEY (db->state[db->depth].key))
-  {
-    NOTICE ("curl_json plugin: Found string \"%s\", but the configuration "
-        "expects a map here.", str);
-    return (CJ_CB_CONTINUE);
-  }
-
   /* Handle the string as if it was a number. */
   return (cj_cb_number (ctx, (const char *) val, len));
 } /* int cj_cb_string */