diff --git a/lfs.c b/lfs.c index fb3690a1..b849946f 100644 --- a/lfs.c +++ b/lfs.c @@ -3044,8 +3044,7 @@ static lfs_ssize_t lfsr_btree_fromdisk(lfs_t *lfs, lfsr_btree_t *btree, // B-tree operations -// TODO should there be a different lfsr_btree_lookupnext without rbyd_/rid_? -static int lfsr_btree_lookupnext(lfs_t *lfs, +static int lfsr_btree_lookupnext_(lfs_t *lfs, const lfsr_btree_t *btree, lfs_size_t bid, lfs_size_t *bid_, lfsr_rbyd_t *rbyd_, lfs_ssize_t *rid_, lfsr_tag_t *tag_, lfs_size_t *weight_, @@ -3181,13 +3180,22 @@ static int lfsr_btree_lookupnext(lfs_t *lfs, } } +static int lfsr_btree_lookupnext(lfs_t *lfs, + const lfsr_btree_t *btree, lfs_size_t bid, + lfs_size_t *bid_, lfsr_tag_t *tag_, lfs_size_t *weight_, + lfsr_data_t *data_, bool validate) { + return lfsr_btree_lookupnext_(lfs, btree, bid, + bid_, NULL, NULL, tag_, weight_, data_, + validate); +} + static int lfsr_btree_lookup(lfs_t *lfs, const lfsr_btree_t *btree, lfs_size_t bid, lfsr_tag_t *tag_, lfs_size_t *weight_, lfsr_data_t *data_, bool validate) { lfs_size_t bid_; int err = lfsr_btree_lookupnext(lfs, btree, bid, - &bid_, NULL, NULL, tag_, weight_, data_, + &bid_, tag_, weight_, data_, validate); if (err) { return err; @@ -4077,7 +4085,7 @@ static int lfsr_btree_push(lfs_t *lfs, lfsr_btree_t *btree, lfsr_rbyd_t rbyd = btree->root; lfs_ssize_t rid = -1; lfs_size_t rweight = 0; - int err = lfsr_btree_lookupnext(lfs, btree, bid_, + int err = lfsr_btree_lookupnext_(lfs, btree, bid_, NULL, &rbyd, &rid, NULL, &rweight, NULL, false); if (err && err != LFS_ERR_NOENT) { @@ -4146,7 +4154,7 @@ static int lfsr_btree_update(lfs_t *lfs, lfsr_btree_t *btree, lfsr_tag_t rtag; lfs_ssize_t rid; lfs_size_t rweight; - int err = lfsr_btree_lookupnext(lfs, btree, bid, + int err = lfsr_btree_lookupnext_(lfs, btree, bid, NULL, &rbyd, &rid, &rtag, &rweight, NULL, false); if (err) { @@ -4201,7 +4209,7 @@ static int lfsr_btree_pop(lfs_t *lfs, lfsr_btree_t *btree, lfs_size_t bid) { lfsr_tag_t rtag; lfs_ssize_t rid; lfs_size_t rweight; - int err = lfsr_btree_lookupnext(lfs, btree, bid, + int err = lfsr_btree_lookupnext_(lfs, btree, bid, NULL, &rbyd, &rid, &rtag, &rweight, NULL, false); if (err) { @@ -4317,7 +4325,7 @@ static int lfsr_btree_split(lfs_t *lfs, lfsr_btree_t *btree, lfsr_rbyd_t rbyd; lfs_ssize_t rid; lfs_size_t rweight; - int err = lfsr_btree_lookupnext(lfs, btree, bid, + int err = lfsr_btree_lookupnext_(lfs, btree, bid, NULL, &rbyd, &rid, NULL, &rweight, NULL, false); if (err) { diff --git a/tests/test_btree.toml b/tests/test_btree.toml index bb075185..c3e7e68b 100644 --- a/tests/test_btree.toml +++ b/tests/test_btree.toml @@ -570,8 +570,7 @@ code = ''' lfsr_data_t data_; for (lfs_size_t i = 0; i < n; i++) { lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == i*W+W-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == W); @@ -580,8 +579,7 @@ code = ''' assert(memcmp(buffer, &alphas[i % 26], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; ''' [cases.test_btree_push_sparse_fuzz] @@ -721,8 +719,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == weighted_id+sim_weights[i]-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == sim_weights[i]); @@ -731,8 +728,7 @@ code = ''' assert(memcmp(buffer, &sim[i], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; // clean up sim free(sim); @@ -1168,8 +1164,7 @@ code = ''' lfsr_data_t data_; for (lfs_size_t i = 0; i < N; i++) { lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == i*W+W-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == W); @@ -1178,8 +1173,7 @@ code = ''' assert(memcmp(buffer, &uppers[i % 26], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; ''' [cases.test_btree_update_sparse_fuzz] @@ -1330,8 +1324,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == weighted_id+sim_weights[i]-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == sim_weights[i]); @@ -1340,8 +1333,7 @@ code = ''' assert(memcmp(buffer, &sim[i], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; // clean up sim free(sim); @@ -2052,8 +2044,7 @@ code = ''' lfsr_data_t data_; for (lfs_size_t i = 0; i < REMAINING; i++) { lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == i*W+W-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == W); @@ -2063,8 +2054,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == REMAINING*W+W-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == W); @@ -2073,8 +2063,7 @@ code = ''' assert(memcmp(buffer, "R", 1) == 0); lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; ''' [cases.test_btree_pop_sparse_fuzz] @@ -2238,8 +2227,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == weighted_id+sim_weights[i]-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == sim_weights[i]); @@ -2248,8 +2236,7 @@ code = ''' assert(memcmp(buffer, &sim[i], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; // clean up sim free(sim); @@ -2628,8 +2615,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == weighted_id+sim_weights[i]-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == sim_weights[i]); @@ -2638,8 +2624,7 @@ code = ''' assert(memcmp(buffer, &sim[i], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; // clean up sim free(sim); @@ -2951,8 +2936,7 @@ code = ''' } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => 0; + &id_, &tag_, &weight_, &data_, VALIDATE) => 0; assert(id_ == weighted_id+sim_weights[i]-1); assert(tag_ == LFSR_TAG_INLINED); assert(weight_ == sim_weights[i]); @@ -2961,8 +2945,7 @@ code = ''' assert(memcmp(buffer, &sim[i], 1) == 0); } lfsr_btree_lookupnext(&lfs, &btree, id_+1, - &id_, NULL, NULL, &tag_, &weight_, - &data_, VALIDATE) => LFS_ERR_NOENT; + &id_, &tag_, &weight_, &data_, VALIDATE) => LFS_ERR_NOENT; // clean up sim free(sim);