Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
diff -r bc704c9af6d6 user/test/ileaf.c --- a/user/test/ileaf.c Tue Sep 02 10:17:39 2008 -0700 +++ b/user/test/ileaf.c Tue Sep 02 10:19:14 2008 -0700 @@ -133,11 +133,32 @@ return 1; } +int attr_check(BTREE, struct ileaf *leaf) +{ + u16 *dict = (void *)leaf + btree->sb->blocksize; + for (int i = 0, offset = 0, limit; i > -leaf->count; i--, offset = limit) + { + unsigned head, kind; + limit = dict[i]; + if (limit - offset >= 2) + { + decode16(leaf->table + offset, &head); + kind = head >> 12; + if (kind < 6 || kind > 10) + return 0; + } + } + return 1; +} + int ileaf_check(BTREE, struct ileaf *leaf) { char *why; why = "not an inode table leaf"; if (leaf->magic != 0x90de); + goto eek; + why = "not an ileaf attribute"; + if (!attr_check(btree, leaf)) goto eek; why = "dict out of order"; if (!isinorder(btree, leaf))
This paste will be private.
From the Design Piracy series on my blog: