diff options
| -rw-r--r-- | libglusterfs/src/dict.c | 37 | ||||
| -rw-r--r-- | libglusterfs/src/dict.h | 3 | 
2 files changed, 40 insertions, 0 deletions
diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index 67bac435..ed89f236 100644 --- a/libglusterfs/src/dict.c +++ b/libglusterfs/src/dict.c @@ -2850,3 +2850,40 @@ dict_serialize_value_with_delim (dict_t *this, char *buf, int32_t *serz_len,  out:          return ret;  } + +void +dict_dump (dict_t *this) +{ +        int          ret     = 0; +        int          dumplen = 0; +        data_pair_t *trav    = NULL; +        char         dump[64*1024]; /* This is debug only, hence +                                       performance should not matter */ + +        if (!this) { +                gf_log_callingfn ("dict", GF_LOG_WARNING, "dict NULL"); +                goto out; +        } + +        dump[0] = '\0'; /* the array is not initialized to '\0' */ + +        /* There is a possibility of issues if data is binary, ignore it +           for now as debugging is more important */ +        for (trav = this->members_list; trav; trav = trav->next) { +                ret = snprintf (&dump[dumplen], ((64*1024) - dumplen - 1), +                                "(%s:%s)", trav->key, trav->value->data); +                if ((ret == -1) || !ret) +                        break; + +                dumplen += ret; +                /* snprintf doesn't append a trailing '\0', add it here */ +                dump[dumplen] = '\0'; +        } + +        if (dumplen) +                gf_log_callingfn ("dict", GF_LOG_INFO, +                                  "dict=%p (%s)", this, dump); + +out: +        return; +} diff --git a/libglusterfs/src/dict.h b/libglusterfs/src/dict.h index 8e81e539..68579ad7 100644 --- a/libglusterfs/src/dict.h +++ b/libglusterfs/src/dict.h @@ -237,4 +237,7 @@ GF_MUST_CHECK int dict_get_str (dict_t *this, char *key, char **str);  GF_MUST_CHECK int dict_get_str_boolean (dict_t *this, char *key, int default_val);  GF_MUST_CHECK int dict_serialize_value_with_delim (dict_t *this, char *buf, int32_t *serz_len,                                                      char delimiter); + +void dict_dump (dict_t *dict); +  #endif  | 
