(Just like for the coyote, you know). And I found out that trying to be clever with buffers and strncpy(3) is just like inviting Murphy into your house for cigars and brandy (which he will spill on your carpet). There were at least three different ways I passed filenames to pi_file*() functions, one using lots of casts, two using a constant-size buffer and string copies and one using a new[] and a strncpy(3), which forgot to zero out the buffer – leading to weird-ass filenames. Note to self: don’t be clever, just do the job right.