|
|
@ -4,7 +4,7 @@
|
|
|
|
#include <sys/uio.h>
|
|
|
|
#include <sys/uio.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(PKG_MALLOC) || defined(pkg_malloc)
|
|
|
|
#if defined(SHM_MEM) || defined(PKG_MALLOC) || defined(pkg_malloc)
|
|
|
|
/* kamailio */
|
|
|
|
/* kamailio */
|
|
|
|
# include "../../mem/mem.h"
|
|
|
|
# include "../../mem/mem.h"
|
|
|
|
# include "../../str.h"
|
|
|
|
# include "../../str.h"
|
|
|
@ -110,6 +110,7 @@ INLINE bencode_buffer_t *bencode_item_buffer(bencode_item_t *);
|
|
|
|
* the same order as they've been added. The key must a null-terminated string.
|
|
|
|
* the same order as they've been added. The key must a null-terminated string.
|
|
|
|
* The value to be added must not have been previously linked into any other dictionary or list. */
|
|
|
|
* The value to be added must not have been previously linked into any other dictionary or list. */
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add(bencode_item_t *dict, const char *key, bencode_item_t *val);
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add(bencode_item_t *dict, const char *key, bencode_item_t *val);
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_str_add(bencode_item_t *dict, const str *key, bencode_item_t *val);
|
|
|
|
|
|
|
|
|
|
|
|
/* Identical to bencode_dictionary_add() but doesn't require the key string to be null-terminated */
|
|
|
|
/* Identical to bencode_dictionary_add() but doesn't require the key string to be null-terminated */
|
|
|
|
bencode_item_t *bencode_dictionary_add_len(bencode_item_t *dict, const char *key, int keylen, bencode_item_t *val);
|
|
|
|
bencode_item_t *bencode_dictionary_add_len(bencode_item_t *dict, const char *key, int keylen, bencode_item_t *val);
|
|
|
@ -121,6 +122,7 @@ INLINE bencode_item_t *bencode_dictionary_add_string_dup(bencode_item_t *dict, c
|
|
|
|
|
|
|
|
|
|
|
|
/* Ditto, but for a "str" object */
|
|
|
|
/* Ditto, but for a "str" object */
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str(bencode_item_t *dict, const char *key, const str *val);
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str(bencode_item_t *dict, const char *key, const str *val);
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_str_add_str(bencode_item_t *dict, const str *key, const str *val);
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str_dup(bencode_item_t *dict, const char *key, const str *val);
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str_dup(bencode_item_t *dict, const char *key, const str *val);
|
|
|
|
|
|
|
|
|
|
|
|
/* Ditto, but adds a string created through an iovec array to the dictionary. See
|
|
|
|
/* Ditto, but adds a string created through an iovec array to the dictionary. See
|
|
|
@ -145,6 +147,7 @@ bencode_item_t *bencode_list_add(bencode_item_t *list, bencode_item_t *item);
|
|
|
|
|
|
|
|
|
|
|
|
/* Convenience function to add the respective (newly created) objects to a list */
|
|
|
|
/* Convenience function to add the respective (newly created) objects to a list */
|
|
|
|
INLINE bencode_item_t *bencode_list_add_string(bencode_item_t *list, const char *s);
|
|
|
|
INLINE bencode_item_t *bencode_list_add_string(bencode_item_t *list, const char *s);
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_list_add_str(bencode_item_t *list, const str *s);
|
|
|
|
INLINE bencode_item_t *bencode_list_add_list(bencode_item_t *list);
|
|
|
|
INLINE bencode_item_t *bencode_list_add_list(bencode_item_t *list);
|
|
|
|
INLINE bencode_item_t *bencode_list_add_dictionary(bencode_item_t *list);
|
|
|
|
INLINE bencode_item_t *bencode_list_add_dictionary(bencode_item_t *list);
|
|
|
|
|
|
|
|
|
|
|
@ -380,6 +383,12 @@ INLINE bencode_item_t *bencode_dictionary_add(bencode_item_t *dict, const char *
|
|
|
|
return bencode_dictionary_add_len(dict, key, strlen(key), val);
|
|
|
|
return bencode_dictionary_add_len(dict, key, strlen(key), val);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_str_add(bencode_item_t *dict, const str *key, bencode_item_t *val) {
|
|
|
|
|
|
|
|
if (!key)
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
return bencode_dictionary_add_len(dict, key->s, key->len, val);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_string(bencode_item_t *dict, const char *key, const char *val) {
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_string(bencode_item_t *dict, const char *key, const char *val) {
|
|
|
|
if (!val)
|
|
|
|
if (!val)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
@ -398,6 +407,12 @@ INLINE bencode_item_t *bencode_dictionary_add_str(bencode_item_t *dict, const ch
|
|
|
|
return bencode_dictionary_add(dict, key, bencode_str(bencode_item_buffer(dict), val));
|
|
|
|
return bencode_dictionary_add(dict, key, bencode_str(bencode_item_buffer(dict), val));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_str_add_str(bencode_item_t *dict, const str *key, const str *val) {
|
|
|
|
|
|
|
|
if (!val)
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
return bencode_dictionary_str_add(dict, key, bencode_str(bencode_item_buffer(dict), val));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str_dup(bencode_item_t *dict, const char *key, const str *val) {
|
|
|
|
INLINE bencode_item_t *bencode_dictionary_add_str_dup(bencode_item_t *dict, const char *key, const str *val) {
|
|
|
|
if (!val)
|
|
|
|
if (!val)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
@ -420,6 +435,10 @@ INLINE bencode_item_t *bencode_list_add_string(bencode_item_t *list, const char
|
|
|
|
return bencode_list_add(list, bencode_string(bencode_item_buffer(list), s));
|
|
|
|
return bencode_list_add(list, bencode_string(bencode_item_buffer(list), s));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_list_add_str(bencode_item_t *list, const str *s) {
|
|
|
|
|
|
|
|
return bencode_list_add(list, bencode_str(bencode_item_buffer(list), s));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
INLINE bencode_item_t *bencode_list_add_list(bencode_item_t *list) {
|
|
|
|
INLINE bencode_item_t *bencode_list_add_list(bencode_item_t *list) {
|
|
|
|
return bencode_list_add(list, bencode_list(bencode_item_buffer(list)));
|
|
|
|
return bencode_list_add(list, bencode_list(bencode_item_buffer(list)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|