diff --git a/lfs.c b/lfs.c index be3d4fa3..de4fbc28 100644 --- a/lfs.c +++ b/lfs.c @@ -990,9 +990,8 @@ static lfs_ssize_t lfsr_bd_progtag(lfs_t *lfs, // in-device data modes enum { LFSR_DATA_BUF = 0, - LFSR_DATA_HOLE = 1, - LFSR_DATA_IMM = 2, - LFSR_DATA_CAT = 3, + LFSR_DATA_IMM = 1, + LFSR_DATA_CAT = 2, }; // LFSR_DATA_DATA just provides and escape hatch to pass raw datas @@ -1017,11 +1016,6 @@ enum { .u.buf.mode=LFSR_DATA_BUF, \ .u.buf.buffer=(const void*)(_buffer)}) -#define LFSR_DATA_HOLE(_size) \ - ((lfsr_data_t){ \ - .u.hole.size=_size, \ - .u.hole.mode=LFSR_DATA_HOLE}) - #define LFSR_DATA_IMM(_buffer, _size) \ lfsr_data_fromimm(_buffer, _size) @@ -1065,10 +1059,6 @@ static inline bool lfsr_data_isbuf(const lfsr_data_t *data) { return !lfsr_data_ondisk(data) && data->u.buf.mode == LFSR_DATA_BUF; } -static inline bool lfsr_data_ishole(const lfsr_data_t *data) { - return !lfsr_data_ondisk(data) && data->u.buf.mode == LFSR_DATA_HOLE; -} - static inline bool lfsr_data_isimm(const lfsr_data_t *data) { return !lfsr_data_ondisk(data) && data->u.buf.mode == LFSR_DATA_IMM; } @@ -1143,10 +1133,6 @@ static lfsr_data_t lfsr_data_slice(lfsr_data_t data, data.u.buf.buffer += off_; data.u.buf.size = size_; - // hole? decrement - } else if (lfsr_data_ishole(&data)) { - data.u.hole.size = size_; - // inlined? internal memmove } else if (lfsr_data_isimm(&data)) { memmove(data.u.imm.buf, @@ -1199,10 +1185,6 @@ static lfs_ssize_t lfsr_data_read(lfs_t *lfs, lfsr_data_t *data, } else if (lfsr_data_isbuf(data)) { memcpy(buffer, data->u.buf.buffer, d); - // hole? - } else if (lfsr_data_ishole(data)) { - memset(buffer, 0, d); - // inlined? } else if (lfsr_data_isimm(data)) { memcpy(buffer, data->u.imm.buf, d); @@ -1277,22 +1259,6 @@ static lfs_scmp_t lfsr_data_cmp(lfs_t *lfs, const lfsr_data_t *data, return LFS_CMP_GT; } - // hole? - } else if (lfsr_data_ishole(data)) { - const uint8_t *buffer_ = buffer; - int cmp = 0; - if (d > 0) { - cmp = buffer_[0] - 0; - if (cmp == 0) { - cmp = memcmp(buffer_, buffer_+1, size-1); - } - } - if (cmp < 0) { - return LFS_CMP_LT; - } else if (cmp > 0) { - return LFS_CMP_GT; - } - // inlined? } else if (lfsr_data_isimm(data)) { int cmp = memcmp(data->u.imm.buf, buffer, d); @@ -1371,17 +1337,6 @@ static int lfsr_bd_progdata_(lfs_t *lfs, return err; } - // hole? - } else if (lfsr_data_ishole(&data)) { - // TODO do something better than byte-level progs here - for (lfs_size_t i = 0; i < lfsr_data_size(&data); i++) { - int err = lfsr_bd_prog(lfs, block, off+i, &(uint8_t){0}, 1, - cksum_); - if (err) { - return err; - } - } - // inlined? } else if (lfsr_data_isimm(&data)) { int err = lfsr_bd_prog(lfs, block, off, diff --git a/lfs.h b/lfs.h index b353e3d3..3901442b 100644 --- a/lfs.h +++ b/lfs.h @@ -420,7 +420,6 @@ typedef struct lfs_mdir { // The exact representation of in-device data also depends on the // mode field: // - pointer to a RAM-backed buffer -// - implicitly zero-filled holes // - inlined data able to fit at least 1 leb128 // - an array of concatenated datas // @@ -440,10 +439,6 @@ typedef struct lfsr_data { uint8_t mode; const uint8_t *buffer; } buf; - struct { - lfs_ssize_t size; - uint8_t mode; - } hole; struct { lfs_ssize_t size; uint8_t mode;