Yeah, fd() doesn't seem to be a standard fstream method as far as I can tell.

The other option I found----fpos::get_fpos_t(), which would give me something to pass to fsetpos()----also appears to be Windows-only.