[ This is Andrew Molitor's attribute filter stuff. I have made very slight updates, making his db.h into filter.h, since it is highly unlikely that anyone's going to go screwing around with the value of A_USER_START, which is in attrs.h in TinyMUSH 2.2 anyway. I also changed the 'char ch;' declares to 'int ch;' in order to make compilers happy, since getchar() returns int and things blow up badly under SysV-derived UNIXen otherwise. -- Amberyl ] This is a package of two filters, called filter-1 and filter-2. I'm very proud of this innovative naming scheme. They're intended to be two passes over a FLAT dump of a MUSH 2.x databasde, and together eliminate unused user defined attributes, and renumbering of the used ones sequentially. Here's how ya do it. Run your flat file in to stdin of filter-1. What comes out on stdout is a sorted list of attribute numbers. Stuff that in a file. Now run filter-2 with the name of the attribute numbers file as an argument, feeding it your flat file on stdin. What appears on stdout is the tidied and renumbered flat file. E.G. zcat flat.old.Z | filter-1 > attr.nums zcat flat.old.Z | filter-2 attr.nums | compress > flat.new.Z Or something like that. I did this, or something real close, and it worked good. Unix shells and all, ya know. I just wing it. You compile these filters up somewhere or other where they can get hold of filter.h, from which they get the constant A_USER_START, which is 256. Andrew