The -b argument to istat (limiting the number of blocks displayed) doesn't work on HFS+ and NTFS. For HFS+, I tried adding the hack of setting fs_file->meta->size in hfs_istat() befure the tsk_fs_file_walk() call -- as is done in fatfs.c and ffs.c -- but it didn't have any effect in the current trunk version. Probably because of the new attr code.
But perhaps a better way to fix this, for all file systems, is to just enforce numblocks in the local print_addr_act() functions... this avoids the hack of temporarily changing the file size. The print_addr_act() void* argument can contain a field tracking the number of blocks printed. The downside is that we can't force _more_ blocks to be printed than the file has.
Quick comment: The original goal of the feature was to force more blocks and not limit them. Specifically it was motivated by Ext2 because it set the size to 0, but the block pointers still existed.
Did you find this in the other file systems because you need this feature or because you were just playing with them and noticed that they did not work?
Ah, I see. In our case, we didn't care about the block list in istat's output, so we'd do something like '-b 1'. For multi-gigabyte files, istat's normal output is 10s of megabytes (or more) long... a little awkward to deal with, especially when you're calling istat from another process. So it's not critical to us, just convenient.