nftw(3)
I just found out about nftw — a libc function to walk a file tree. I did not realize that libc had such a high-level function. I bet it’ll end up saving me time (and code) at some point in the future.
int nftw(const char *path, int (*fn) (const char *, const struct stat *, int, struct FTW *), int depth, int flags);
Given a path, it executes the callback for each file and directory in that tree. Very cool.
Ok, as I write this post, I am told that nftw is a great way to write dangerous code. Aside from easily writing dangerous things equivalent to rm -rf, I could see not specifying the FTW_PHYS to be dangerous as symlinks will get followed without any notification.
I guess I’ll play around with it a little to see what the right way (if any?) to use it is.