#include "lib/lib.h"
#include "lib/fastbuf.h"
+#include "lib/ff-utf8.h"
#include "lib/bucket.h"
#include "lib/object.h"
-#include "charset/unistream.h"
#include <string.h>
#include <stdarg.h>
static uns use_v33;
+static int hdr_sep;
void
attr_set_type(uns type)
switch (type)
{
case BUCKET_TYPE_PLAIN:
+ use_v33 = 0;
+ hdr_sep = -1;
+ break;
case BUCKET_TYPE_V30:
use_v33 = 0;
+ hdr_sep = '\n';
break;
case BUCKET_TYPE_V33:
case BUCKET_TYPE_V33_LIZARD:
use_v33 = 1;
+ hdr_sep = 0;
break;
default:
die("Don't know how to generate buckets of type %08x", type);
return ptr;
}
+byte *
+put_attr_separator(byte *ptr)
+{
+ if (hdr_sep >= 0)
+ *ptr++ = hdr_sep;
+ return ptr;
+}
+
inline void
bput_attr(struct fastbuf *b, uns type, byte *val, uns len)
{
else
bprintf(b, "%c%d\n", type, val);
}
+
+void
+bput_attr_separator(struct fastbuf *b)
+{
+ if (hdr_sep >= 0)
+ bputc(b, hdr_sep);
+}
+
+void
+obj_write(struct fastbuf *f, struct odes *d)
+{
+ for(struct oattr *a=d->attrs; a; a=a->next)
+ for(struct oattr *b=a; b; b=b->same)
+ {
+ byte *z;
+ for (z = b->val; *z; z++)
+ if (*z < ' ' && *z != '\t')
+ {
+ log(L_ERROR, "obj_dump: Found non-ASCII characters (URL might be %s)", obj_find_aval(d, 'U'));
+ *z = '?';
+ }
+ ASSERT(z - b->val <= MAX_ATTR_SIZE-2);
+ bput_attr_str(f, a->attr, b->val);
+ }
+}
+
+void
+obj_write_nocheck(struct fastbuf *f, struct odes *d)
+{
+ for(struct oattr *a=d->attrs; a; a=a->next)
+ for(struct oattr *b=a; b; b=b->same)
+ bput_attr_str(f, a->attr, b->val);
+}