mirror of
https://github.com/radareorg/radare2.git
synced 2024-10-07 18:43:45 +00:00
Update sdb
This commit is contained in:
parent
e137183f1d
commit
a572531e48
@ -36,7 +36,6 @@ typedef int (*SdbListComparator)(void *a, void *b);
|
|||||||
SDB_API SdbList *ls_new(void);
|
SDB_API SdbList *ls_new(void);
|
||||||
SDB_API SdbListIter *ls_append(SdbList *list, void *data);
|
SDB_API SdbListIter *ls_append(SdbList *list, void *data);
|
||||||
SDB_API SdbListIter *ls_prepend(SdbList *list, void *data);
|
SDB_API SdbListIter *ls_prepend(SdbList *list, void *data);
|
||||||
SDB_API int ls_length(SdbList *list);
|
|
||||||
//SDB_API void ls_add_sorted(SdbList *list, void *data, SdbListComparator cmp);
|
//SDB_API void ls_add_sorted(SdbList *list, void *data, SdbListComparator cmp);
|
||||||
SDB_API void ls_sort(SdbList *list, SdbListComparator cmp);
|
SDB_API void ls_sort(SdbList *list, SdbListComparator cmp);
|
||||||
|
|
||||||
|
@ -84,13 +84,13 @@ SDB_API int sdb_json_unset (Sdb *s, const char *k, const char *p, ut32 cas) {
|
|||||||
SDB_API int sdb_json_set (Sdb *s, const char *k, const char *p, const char *v, ut32 cas) {
|
SDB_API int sdb_json_set (Sdb *s, const char *k, const char *p, const char *v, ut32 cas) {
|
||||||
const char *beg[3];
|
const char *beg[3];
|
||||||
const char *end[3];
|
const char *end[3];
|
||||||
int jslen, l, idx, len[3];
|
int l, idx, len[3], jslen = 0;
|
||||||
char *b, *str = NULL;
|
char *b, *str = NULL;
|
||||||
const char *js;
|
const char *js;
|
||||||
Rangstr rs;
|
Rangstr rs;
|
||||||
ut32 c;
|
ut32 c;
|
||||||
|
|
||||||
if (!s || !k)
|
if (!s || !k || !v)
|
||||||
return 0;
|
return 0;
|
||||||
js = sdb_const_get_len (s, k, &jslen, &c);
|
js = sdb_const_get_len (s, k, &jslen, &c);
|
||||||
if (!js) {
|
if (!js) {
|
||||||
@ -115,7 +115,8 @@ SDB_API int sdb_json_set (Sdb *s, const char *k, const char *p, const char *v, u
|
|||||||
}
|
}
|
||||||
rs = json_get (js, p);
|
rs = json_get (js, p);
|
||||||
if (!rs.p) {
|
if (!rs.p) {
|
||||||
char *b = malloc (jslen+strlen(k)+strlen (v)+32);
|
int b_len = jslen + strlen (k) + strlen (v) + 32;
|
||||||
|
char *b = malloc (b_len);
|
||||||
if (b) {
|
if (b) {
|
||||||
int curlen, is_str = isstring (v);
|
int curlen, is_str = isstring (v);
|
||||||
const char *q = is_str?"\"":"";
|
const char *q = is_str?"\"":"";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* sdb - LGPLv3 - Copyright 2007-2015 - pancake */
|
/* sdb - LGPLv3 - Copyright 2007-2014 - pancake */
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "ls.h"
|
#include "ls.h"
|
||||||
@ -99,3 +99,24 @@ SDB_API SdbListIter *ls_prepend(SdbList *list, void *data) {
|
|||||||
list->length++;
|
list->length++;
|
||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDB_API void *ls_pop(SdbList *list) {
|
||||||
|
void *data = NULL;
|
||||||
|
SdbListIter *iter;
|
||||||
|
if (list){
|
||||||
|
if (list->tail) {
|
||||||
|
iter = list->tail;
|
||||||
|
if (list->head == list->tail) {
|
||||||
|
list->head = list->tail = NULL;
|
||||||
|
} else {
|
||||||
|
list->tail = iter->p;
|
||||||
|
list->tail->n = NULL;
|
||||||
|
}
|
||||||
|
data = iter->data;
|
||||||
|
free (iter);
|
||||||
|
list->length--;
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -36,7 +36,6 @@ typedef int (*SdbListComparator)(void *a, void *b);
|
|||||||
SDB_API SdbList *ls_new(void);
|
SDB_API SdbList *ls_new(void);
|
||||||
SDB_API SdbListIter *ls_append(SdbList *list, void *data);
|
SDB_API SdbListIter *ls_append(SdbList *list, void *data);
|
||||||
SDB_API SdbListIter *ls_prepend(SdbList *list, void *data);
|
SDB_API SdbListIter *ls_prepend(SdbList *list, void *data);
|
||||||
SDB_API int ls_length(SdbList *list);
|
|
||||||
//SDB_API void ls_add_sorted(SdbList *list, void *data, SdbListComparator cmp);
|
//SDB_API void ls_add_sorted(SdbList *list, void *data, SdbListComparator cmp);
|
||||||
SDB_API void ls_sort(SdbList *list, SdbListComparator cmp);
|
SDB_API void ls_sort(SdbList *list, SdbListComparator cmp);
|
||||||
|
|
||||||
|
@ -153,6 +153,7 @@ SDB_API const char *sdb_const_get_len (Sdb* s, const char *key, int *vlen, ut32
|
|||||||
ut64 now = 0LL;
|
ut64 now = 0LL;
|
||||||
SdbKv *kv;
|
SdbKv *kv;
|
||||||
if (cas) *cas = 0;
|
if (cas) *cas = 0;
|
||||||
|
if (vlen) *vlen = 0;
|
||||||
if (!s||!key) return NULL;
|
if (!s||!key) return NULL;
|
||||||
// TODO: optimize, iterate once
|
// TODO: optimize, iterate once
|
||||||
keylen = strlen (key)+1;
|
keylen = strlen (key)+1;
|
||||||
@ -205,6 +206,7 @@ SDB_API char *sdb_get_len (Sdb* s, const char *key, int *vlen, ut32 *cas) {
|
|||||||
if (!s || !key) return NULL;
|
if (!s || !key) return NULL;
|
||||||
keylen = strlen (key)+1;
|
keylen = strlen (key)+1;
|
||||||
hash = sdb_hash (key);//keylen-1);
|
hash = sdb_hash (key);//keylen-1);
|
||||||
|
if (vlen) *vlen = 0;
|
||||||
|
|
||||||
/* search in memory */
|
/* search in memory */
|
||||||
kv = (SdbKv*)ht_lookup (s->ht, hash);
|
kv = (SdbKv*)ht_lookup (s->ht, hash);
|
||||||
|
Loading…
Reference in New Issue
Block a user