9p: darwin: Handle struct dirent differences
authorKeno Fischer <keno@juliacomputing.com>
Sun, 27 Feb 2022 22:35:15 +0000 (17:35 -0500)
committerChristian Schoenebeck <qemu_oss@crudebyte.com>
Mon, 7 Mar 2022 10:49:31 +0000 (11:49 +0100)
commit6b3b279bd670c6a2fa23c9049820c814f0e2c846
tree7d13227f1a5f4a4a916910215a45cfdd358cf5ab
parentf41db099c71151291c269bf48ad006de9cbd9ca6
9p: darwin: Handle struct dirent differences

On darwin d_seekoff exists, but is optional and does not seem to
be commonly used by file systems. Use `telldir` instead to obtain
the seek offset and inject it into d_seekoff, and create a
qemu_dirent_off helper to call it appropriately when appropriate.

Signed-off-by: Keno Fischer <keno@juliacomputing.com>
[Michael Roitzsch: - Rebase for NixOS]
Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com>
[Will Cohen: - Adjust to pass testing
             - Ensure that d_seekoff is filled using telldir
               on darwin, and create qemu_dirent_off helper
               to decide which to access]
[Fabian Franz: - Add telldir error handling for darwin]
Signed-off-by: Fabian Franz <fabianfranz.oss@gmail.com>
[Will Cohen: - Ensure that telldir error handling uses
               signed int
             - Cleanup of telldir error handling
             - Remove superfluous error handling for
               qemu_dirent_off
             - Adjust formatting
             - Use qemu_dirent_off in codir.c
             - Declare qemu_dirent_off as static to prevent
               linker error
             - Move qemu_dirent_off above the end-of-file
               endif to fix compilation]
Signed-off-by: Will Cohen <wwcohen@gmail.com>
Message-Id: <20220227223522.91937-5-wwcohen@gmail.com>
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
hw/9pfs/9p-local.c
hw/9pfs/9p-proxy.c
hw/9pfs/9p-synth.c
hw/9pfs/9p-util.h
hw/9pfs/9p.c
hw/9pfs/codir.c