[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnu-arch-users] botched invariant in invent.c
From: |
Aaron Bentley |
Subject: |
[Gnu-arch-users] botched invariant in invent.c |
Date: |
Mon, 29 Mar 2004 14:15:46 -0500 |
User-agent: |
Mozilla Thunderbird 0.5 (X11/20040309) |
I have some files with non-ascii characters in their filenames in a
precious directory.
tla changes gets a botched invariant in
right_order_for_recursion (char * a, char * b)
address@hidden:/var/www/minor$ tla changes
/home/abentley/tla-1.2/src/tla/libarch/invent.c:897:botched invariant
*a < *b
PANIC: exiting on botched invariant
This is because a and b are chars, which is a signed type on my
platform. '*a' is 117 ('u'), and '*b' is 221 ()
A few things:
- the whole of invent.c seems to use chars, rather than the usual
t_uchar type.
- it's not clear to me where the pre-sorting is coming from. Presumaby
any sort will do, so long as it's consistent. Are we relying on the
filesystem? Does POSIX guarantee that (unsigned char ) *a < (unsigned
char) *b is invariant? Does the sort order change if the filesystem
speaks utf-8?
- it seems that this invariant will also be triggered if *a or *b is
'/'. But that would imply that a == "foo" and b == "foo/", a situation
not permitted in mainstream filesystems. But in Resier4, all files are
also directories.
- it would be really nice if tree inventories didn't descend into
non-source directories. These precious directories are frickin' huge,
and running 'changes' takes forever, on my Athlon 2800+, with SATA and
Reiser 3.
Aaron
--
Aaron Bentley
Director of Technology
Panometrics, Inc.
- [Gnu-arch-users] botched invariant in invent.c,
Aaron Bentley <=