[PATCH 3/7] server: Fail to set delete disposition on a non-empty directory.
Dmitry Timoshkov
dmitry at baikal.ru
Thu Nov 8 08:00:59 CST 2018
Alexandre Julliard <julliard at winehq.org> wrote:
> >> > +static int is_directory_empty( struct fd *fd )
> >> > +{
> >> > + DIR *dir;
> >> > + int count = 0;
> >> > +
> >> > + if ((dir = fdopendir( fd->unix_fd )))
> >> > + {
> >> > + while (readdir( dir ) != NULL && count <= 2)
> >> > + count++;
> >> > +
> >> > + closedir( dir );
> >> > + }
> >>
> >> This won't work, closedir() is going to close the file descriptor.
> >
> > Would it be acceptable to duplicate the fd before the check?
>
> That's what you'd have to do, yes. But honestly I'm not sure that this
> check is a good idea in the first place. I wonder if we shouldn't remove
> the directory right away instead.
Setting a disposition is not supposed to remove a directory or a file, just
mark it for the removal until the last handle to it gets closed, or do you
mean something else?
--
Dmitry.
More information about the wine-devel
mailing list