[vlc-devel] [PATCH] file: use fdopendir to open a dir from a fd
Thomas Guillem
thomas at gllm.fr
Tue Jun 16 14:46:44 CEST 2015
On Tue, Jun 16, 2015, at 14:32, Rémi Denis-Courmont wrote:
> Le 2015-06-16 15:07, Thomas Guillem a écrit :
> > ---
> > modules/access/directory.c | 17 ++++++++++++-----
> > modules/access/file.c | 12 ++++++++----
> > 2 files changed, 20 insertions(+), 9 deletions(-)
> >
> > diff --git a/modules/access/directory.c b/modules/access/directory.c
> > index 2abe15a..ff4d58e 100644
> > --- a/modules/access/directory.c
> > +++ b/modules/access/directory.c
> > @@ -54,18 +54,17 @@ struct access_sys_t
> > };
> >
> >
> >
> > /*****************************************************************************
> > - * Open: open the directory
> > + * DirInit: Init the directory access with a directory stream
> >
> >
> > *****************************************************************************/
> > -int DirOpen (vlc_object_t *p_this)
> > +int DirInit (access_t *p_access, DIR *p_dir)
> > {
> > - access_t *p_access = (access_t*)p_this;
> > - DIR *p_dir;
> > char *psz_base_uri;
> >
> > if (!p_access->psz_filepath)
> > return VLC_EGENERIC;
> >
> > - p_dir = vlc_opendir (p_access->psz_filepath);
> > + if (!p_dir)
> > + p_dir = vlc_opendir (p_access->psz_filepath);
> > if (p_dir == NULL)
> > return VLC_EGENERIC;
> >
> > @@ -99,6 +98,14 @@ int DirOpen (vlc_object_t *p_this)
> > }
> >
> >
> >
> > /*****************************************************************************
> > + * DirOpen: Open the directory access
> > +
> >
> > *****************************************************************************/
> > +int DirOpen (vlc_object_t *p_this)
> > +{
> > + return DirInit ((access_t*)p_this, NULL);
> > +}
> > +
> >
> > +/*****************************************************************************
> > * Close: close the target
> >
> >
> > *****************************************************************************/
> > void DirClose( vlc_object_t * p_this )
> > diff --git a/modules/access/file.c b/modules/access/file.c
> > index 04fc783..cab7d33 100644
> > --- a/modules/access/file.c
> > +++ b/modules/access/file.c
> > @@ -205,11 +205,15 @@ int FileOpen( vlc_object_t *p_this )
> > if (S_ISDIR (st.st_mode))
> > {
> > #ifdef HAVE_FDOPENDIR
> > - close(fd);
> > - return DirOpen (VLC_OBJECT(p_access));
> > + DIR *p_dir = fdopendir(fd);
> > + if (!p_dir) {
> > + msg_Err (p_access, "fdopendir error: %s",
> > vlc_strerror_c(errno));
> > + goto error;
> > + }
> > + return DirInit (p_access, p_dir);
> > #else
> > - msg_Dbg (p_access, "ignoring directory");
> > - goto error;
> > + close (fd);
> > + return DirInit (p_access, NULL);
>
> That last part seems useless insofar as the "file" shortcut is exposed
> by the directory submodule.
OK, I removed the past part, thanks.
>
> > #endif
> > }
>
> --
> Rémi Denis-Courmont
> http://www.remlab.net/
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list