gnu-arch-users
[Top][All Lists]
Advanced

[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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]