From: Martin Mares Date: Sat, 10 Apr 2004 20:36:01 +0000 (+0000) Subject: Multi-part objects (with header and body separated by an empty line and terminated X-Git-Tag: holmes-import~1077 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=e29c6b7097c92fb1ee0587d167e1c434db198056;p=libucw.git Multi-part objects (with header and body separated by an empty line and terminated either by EOF or by a NUL byte) are very common, so let's introduce a special function for reading them. --- diff --git a/lib/object.c b/lib/object.c index fb957bd7..db471c4b 100644 --- a/lib/object.c +++ b/lib/object.c @@ -58,6 +58,16 @@ 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); +} + void obj_write(struct fastbuf *f, struct odes *d) { diff --git a/lib/object.h b/lib/object.h index 99ff2826..4f6cffbc 100644 --- a/lib/object.h +++ b/lib/object.h @@ -29,6 +29,7 @@ struct oattr { /* Object attribute */ void obj_dump(struct odes *); struct odes *obj_new(struct mempool *); int obj_read(struct fastbuf *, struct odes *); +void obj_read_multi(struct fastbuf *, struct odes *); void obj_write(struct fastbuf *, struct odes *); void obj_write_nocheck(struct fastbuf *, struct odes *); struct oattr *obj_find_attr(struct odes *, uns);