+ if (dir->fd == 0)
+ {
+ void (*diag) (char const *) = NULL;
+ int fd = subfile_open (dir->parent, dir->orig_file_name, open_read_flags);
+ if (fd < 0)
+ diag = open_diag;
+ else if (fstat (fd, &dir->stat))
+ diag = stat_diag;
+ else
+ dir->fd = fd;
+ if (diag)
+ {
+ file_removed_diag (dir->orig_file_name, false, diag);
+ return;
+ }
+ }
+ dumpdir_buffer = directory_contents (scan_directory (dir));