int main(int argc, const char *argv[]) { char **envp = environ; char *key, *value; blobset *bs = blob_new(20, NULL); blobcursor bc; ub2_t keysize; for (;key = *envp; envp++) { value = index(key, '='); if (!value) { fprintf(stderr, "bad env: %s\n", key); continue; } *value++ = 0; blob_register(bs, key, strlen(key), value, 0); } blob_cursor_init(&bc, bs); //printf("%s = %s\n", "SHELL", (char*)blob_cursor_get(&bc, "SHELL", 5)); //if (!blob_cursor_find_first(&bc, "SHELL", 5, (void**)&value)) // printf("%s = %s\n", "SHELL", value); while (!blob_cursor_next(&bc, (void**)&value, (ub1_t**)&key, &keysize)) { printf("%.*s=%s\n", keysize, key, value); } assert (blob_cursor_next(&bc, (void**)&value, (ub1_t**)&key, &keysize)); return 0; }
static void test_blob_new(void) { int rc; char a[BUF_SIZE]; blob_t *bp; uint32_t ms; blob_t *dupbp; int32_t c; memset(a, 'a', sizeof(a)); bp = NULL; rc = blob_new(a, sizeof(a)-1, &bp); assert(rc == 0 && bp != NULL); assert(blob_size(bp) == sizeof(a) - 1); ms = blob_memory_size(bp); assert(blob_size(bp) == ms); rc = blob_init(bp, a, sizeof(a)); assert(rc != 0); assert(blob_size(bp) == sizeof(a) - 1); assert(blob_size(bp) == ms); assert(ms == blob_memory_size(bp)); rc = blob_init(bp, a, 1); assert(rc == 0); assert(blob_size(bp) == 1); assert(ms == blob_memory_size(bp)); dupbp = NULL; rc = blob_dup(bp, &dupbp); assert(rc == 0 && dupbp != NULL); assert(blob_size(dupbp) == 1); assert(blob_memory_size(dupbp) == 1); c = blob_compare(bp, dupbp); assert(c == 0); c = blob_compare(dupbp, bp); assert(c == 0); rc = blob_init(bp, a, sizeof(a)); assert(rc != 0); assert(blob_size(bp) == 1); assert(ms == blob_memory_size(bp)); rc = blob_init(bp, a, sizeof(a)-1); assert(rc == 0); assert(blob_size(bp) == sizeof(a) - 1); assert(blob_size(bp) == ms); assert(ms == blob_memory_size(bp)); c = blob_compare(bp, dupbp); assert(c > 0); assert(c == blob_size(bp) - blob_size(dupbp)); c = blob_compare(dupbp, bp); assert(c < 0); assert(c == blob_size(dupbp) - blob_size(bp)); blob_free(bp); bp = NULL; blob_free(dupbp); dupbp = NULL; }