I was considering doing something like this was but was unsure about interactions with FTS_LOGICAL (and thus FTS_NOCHDIR). I suppose since fts_name is effectively d_name this is OK.
I also prefer passing dirp directly so the caller doesn't need to use dirfd itself but that's not a big deal. - todd