commit a3500804a1dff06d6f16bf00324060331968428b from: Stefan Sperling date: Tue Jan 23 12:52:21 2018 UTC add a helper function to reduce size of a switch statement commit - 96f5e8b328f93ac1abe4b49a7e73ecdaf7bb8526 commit + a3500804a1dff06d6f16bf00324060331968428b blob - 6ffdffe8385a6d8f951907f6de530a8bcfb074fe blob + 6c4139fbdfc2df2d94af6b3e3a6f0ffb9497ccce --- lib/pack.c +++ lib/pack.c @@ -439,7 +439,26 @@ parse_offset_delta(off_t *base_offset, FILE *packfile, return NULL; } +static const struct got_error *resolve_delta_chain(struct got_delta_chain *, + FILE *, const char *, off_t, size_t); + static const struct got_error * +resolve_offset_delta(struct got_delta_chain *deltas, FILE *packfile, + const char *path_packfile, off_t offset, size_t delta_size) +{ + const struct got_error *err; + off_t next_offset; + + err = parse_offset_delta(&next_offset, packfile, offset); + if (err) + return err; + + /* Next offset must be in the same packfile. */ + return resolve_delta_chain(deltas, packfile, path_packfile, + next_offset, delta_size); +} + +static const struct got_error * resolve_delta_chain(struct got_delta_chain *deltas, FILE *packfile, const char *path_packfile, off_t offset, size_t delta_size) { @@ -471,16 +490,10 @@ resolve_delta_chain(struct got_delta_chain *deltas, FI case GOT_OBJ_TYPE_BLOB: case GOT_OBJ_TYPE_TAG: break; - case GOT_OBJ_TYPE_OFFSET_DELTA: { - off_t next_offset; - err = parse_offset_delta(&next_offset, packfile, offset); - if (err) - return err; - /* Next offset must be in the same packfile. */ - err = resolve_delta_chain(deltas, packfile, path_packfile, - next_offset, base_size); + case GOT_OBJ_TYPE_OFFSET_DELTA: + err = resolve_offset_delta(deltas, packfile, path_packfile, + offset, base_size); break; - } case GOT_OBJ_TYPE_REF_DELTA: default: return got_error(GOT_ERR_NOT_IMPL);