back to topotato report
topotato coverage report
Current view: top level - lib - json.c (source / functions) Hit Total Coverage
Test: aggregated run ( view descriptions ) Lines: 40 51 78.4 %
Date: 2023-02-24 14:41:08 Functions: 11 14 78.6 %

          Line data    Source code
       1             : /* json-c wrapper
       2             :  * Copyright (C) 2015 Cumulus Networks, Inc.
       3             :  *
       4             :  * This file is part of GNU Zebra.
       5             :  *
       6             :  * GNU Zebra is free software; you can redistribute it and/or modify it
       7             :  * under the terms of the GNU General Public License as published by the
       8             :  * Free Software Foundation; either version 2, or (at your option) any
       9             :  * later version.
      10             :  *
      11             :  * GNU Zebra is distributed in the hope that it will be useful, but
      12             :  * WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14             :  * General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU General Public License along
      17             :  * with this program; see the file COPYING; if not, write to the Free Software
      18             :  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
      19             :  */
      20             : 
      21             : #include <zebra.h>
      22             : 
      23             : #include "command.h"
      24             : #include "lib/json.h"
      25             : 
      26             : /*
      27             :  * This function assumes that the json keyword
      28             :  * is the *last* keyword on the line no matter
      29             :  * what.
      30             :  */
      31         636 : bool use_json(const int argc, struct cmd_token *argv[])
      32             : {
      33         636 :         if (argc == 0)
      34             :                 return false;
      35             : 
      36         636 :         if (argv[argc - 1]->arg && strmatch(argv[argc - 1]->text, "json"))
      37         516 :                 return true;
      38             : 
      39             :         return false;
      40             : }
      41             : 
      42        2880 : struct json_object *json_object_new_stringv(const char *fmt, va_list args)
      43             : {
      44        2880 :         struct json_object *ret;
      45        2880 :         char *text, buf[256];
      46             : 
      47        2880 :         text = vasnprintfrr(MTYPE_TMP, buf, sizeof(buf), fmt, args);
      48        2880 :         ret = json_object_new_string(text);
      49             : 
      50        2880 :         if (text != buf)
      51           0 :                 XFREE(MTYPE_TMP, text);
      52        2880 :         return ret;
      53             : }
      54             : 
      55           0 : void json_array_string_add(json_object *json, const char *str)
      56             : {
      57           0 :         json_object_array_add(json, json_object_new_string(str));
      58           0 : }
      59             : 
      60           0 : void json_array_string_addv(json_object *json, const char *fmt, va_list args)
      61             : {
      62           0 :         json_object_array_add(json, json_object_new_stringv(fmt, args));
      63           0 : }
      64             : 
      65       20351 : void json_object_string_add(struct json_object *obj, const char *key,
      66             :                             const char *s)
      67             : {
      68       20351 :         json_object_object_add(obj, key, json_object_new_string(s));
      69       20351 : }
      70             : 
      71        2880 : void json_object_string_addv(struct json_object *obj, const char *key,
      72             :                              const char *fmt, va_list args)
      73             : {
      74        2880 :         json_object_object_add(obj, key, json_object_new_stringv(fmt, args));
      75        2880 : }
      76             : 
      77          41 : void json_object_object_addv(struct json_object *parent,
      78             :                              struct json_object *child, const char *keyfmt,
      79             :                              va_list args)
      80             : {
      81          41 :         char *text, buf[256];
      82             : 
      83          41 :         text = vasnprintfrr(MTYPE_TMP, buf, sizeof(buf), keyfmt, args);
      84          41 :         json_object_object_add(parent, text, child);
      85             : 
      86          41 :         if (text != buf)
      87           0 :                 XFREE(MTYPE_TMP, text);
      88          41 : }
      89             : 
      90       21105 : void json_object_int_add(struct json_object *obj, const char *key, int64_t i)
      91             : {
      92       21105 :         json_object_object_add(obj, key, json_object_new_int64(i));
      93       21105 : }
      94             : 
      95           0 : void json_object_double_add(struct json_object *obj, const char *key, double i)
      96             : {
      97           0 :         json_object_object_add(obj, key, json_object_new_double(i));
      98           0 : }
      99             : 
     100         599 : void json_object_boolean_false_add(struct json_object *obj, const char *key)
     101             : {
     102         599 :         json_object_object_add(obj, key, json_object_new_boolean(0));
     103         599 : }
     104             : 
     105        2083 : void json_object_boolean_true_add(struct json_object *obj, const char *key)
     106             : {
     107        2083 :         json_object_object_add(obj, key, json_object_new_boolean(1));
     108        2083 : }
     109             : 
     110         582 : void json_object_boolean_add(struct json_object *obj, const char *key, bool val)
     111             : {
     112         582 :         json_object_object_add(obj, key, json_object_new_boolean(val));
     113         582 : }
     114             : 
     115          15 : struct json_object *json_object_lock(struct json_object *obj)
     116             : {
     117          15 :         return json_object_get(obj);
     118             : }
     119             : 
     120        5566 : void json_object_free(struct json_object *obj)
     121             : {
     122        5566 :         json_object_put(obj);
     123        5566 : }

Generated by: LCOV version v1.16-topotato