From 06a12f5259063aa66bb4d6d8b4226677f4849157 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 16 Jul 2004 18:32:35 +0000 Subject: [PATCH] Parsing of PLAIN type buckets also ends after buck_len bytes. obj_read_multi() is gone. --- lib/buck2obj.c | 22 +++++++++------------- lib/object.h | 1 - 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/buck2obj.c b/lib/buck2obj.c index 1daabed9..e90ff875 100644 --- a/lib/buck2obj.c +++ b/lib/buck2obj.c @@ -83,11 +83,17 @@ decode_attributes(byte *ptr, byte *end, struct odes *o, uns can_overwrite) int buck2obj_parse(struct buck2obj_buf *buf, uns buck_type, uns buck_len, struct fastbuf *body, struct odes *o_hdr, uns *body_start, struct odes *o_body) { - if (buck_type == BUCKET_TYPE_PLAIN) + if (buck_type <= BUCKET_TYPE_PLAIN) { - if (body_start) + if (body_start) // there is no header part *body_start = 0; - obj_read_multi(body, o_hdr); // ignore empty lines, read until EOF or NUL + // ignore empty lines and read until the end of the bucket + sh_off_t end = btell(body) + buck_len; + byte buf[MAX_ATTR_SIZE]; + while (btell(body) < end && bgets(body, buf, sizeof(buf))) + if (buf[0]) + obj_add_attr(o_hdr, buf[0], buf+1); + ASSERT(btell(body) == end); } else if (buck_type == BUCKET_TYPE_V30) { @@ -186,13 +192,3 @@ obj_read(struct fastbuf *f, struct odes *o) } return 0; } - -void -obj_read_multi(struct fastbuf *f, struct odes *o) -{ - /* Read a multi-part object ending with either EOF or a NUL character */ - byte buf[MAX_ATTR_SIZE]; - while (bpeekc(f) > 0 && bgets(f, buf, sizeof(buf))) - if (buf[0]) - obj_add_attr(o, buf[0], buf+1); -} diff --git a/lib/object.h b/lib/object.h index 79a9605b..01c47dfb 100644 --- a/lib/object.h +++ b/lib/object.h @@ -60,7 +60,6 @@ struct odes *obj_read_bucket(struct buck2obj_buf *buf, struct mempool *pool, uns */ int obj_read(struct fastbuf *, struct odes *); -void obj_read_multi(struct fastbuf *, struct odes *); /* obj2buck.c: Generating buckets from objects */ -- 2.39.2