On Tue, Jun 23, 2015 at 8:34 PM, Michael Niedermayer <michae...@gmx.at> wrote:
> On Mon, Jun 22, 2015 at 12:01:33AM +0200, Mariusz Szczepańczyk wrote: > > --- > > configure | 2 ++ > > libavformat/file.c | 34 ++++++++++++++++++++++++++++++++++ > > 2 files changed, 36 insertions(+) > > this and the previous patch fails to build > > make distclean ; ./configure --disable-sdl && make -j12 > > libavformat/file.c: In function ‘file_read_dir’: > libavformat/file.c:302:10: error: ‘DT_FIFO’ undeclared (first use in this > function) > libavformat/file.c:302:10: note: each undeclared identifier is reported > only once for each function it appears in > libavformat/file.c:305:10: error: ‘DT_CHR’ undeclared (first use in this > function) > libavformat/file.c:308:10: error: ‘DT_DIR’ undeclared (first use in this > function) > libavformat/file.c:311:10: error: ‘DT_BLK’ undeclared (first use in this > function) > libavformat/file.c:314:10: error: ‘DT_REG’ undeclared (first use in this > function) > libavformat/file.c:317:10: error: ‘DT_LNK’ undeclared (first use in this > function) > libavformat/file.c:320:10: error: ‘DT_SOCK’ undeclared (first use in this > function) > libavformat/file.c:323:10: error: ‘DT_UNKNOWN’ undeclared (first use in > this function) > make: *** [libavformat/file.o] Error 1 > make: *** Waiting for unfinished jobs.... > > sdl disable is needed to reproduce as sdls pkgcnonfig adds > GNU_SOURCE i suspect > Added contraint on _GNU_SOURCE and now it compiles fine on my linux in both cases (with or without sdl). I've sent two patches to keep my and Lukasz's work separated. Of course I can squash them if you like. Mariusz
From aa9ee21be55e565362740791a949b97e88631168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Szczepa=C5=84czyk?= <mszczepanc...@gmail.com> Date: Wed, 10 Jun 2015 03:30:29 +0200 Subject: [PATCH 2/2] lavf/file: check for dirent.h support --- configure | 2 ++ libavformat/file.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/configure b/configure index 0620936..069e997 100755 --- a/configure +++ b/configure @@ -1681,6 +1681,7 @@ HEADERS_LIST=" dev_video_bktr_ioctl_bt848_h dev_video_meteor_ioctl_meteor_h direct_h + dirent_h dlfcn_h d3d11_h dxva_h @@ -4995,6 +4996,7 @@ enabled xlib && check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext check_header direct.h +check_header dirent.h check_header dlfcn.h check_header d3d11.h check_header dxva.h diff --git a/libavformat/file.c b/libavformat/file.c index 407540c..37da985 100644 --- a/libavformat/file.c +++ b/libavformat/file.c @@ -23,7 +23,9 @@ #include "libavutil/internal.h" #include "libavutil/opt.h" #include "avformat.h" +#if HAVE_DIRENT_H #include <dirent.h> +#endif #include <fcntl.h> #if HAVE_IO_H #include <io.h> @@ -52,7 +54,9 @@ typedef struct FileContext { int fd; int trunc; int blocksize; +#if HAVE_DIRENT_H DIR *dir; +#endif } FileContext; static const AVOption file_options[] = { @@ -229,6 +233,7 @@ static int file_close(URLContext *h) static int file_open_dir(URLContext *h) { +#if HAVE_DIRENT_H FileContext *c = h->priv_data; c->dir = opendir(h->filename); @@ -236,10 +241,14 @@ static int file_open_dir(URLContext *h) return AVERROR(errno); return 0; +#else + return AVERROR(ENOSYS); +#endif /* HAVE_DIRENT_H */ } static int file_read_dir(URLContext *h, AVIODirEntry **next) { +#if HAVE_DIRENT_H FileContext *c = h->priv_data; struct dirent *dir; char *fullpath = NULL; @@ -267,11 +276,28 @@ static int file_read_dir(URLContext *h, AVIODirEntry **next) (*next)->modification_timestamp = INT64_C(1000000) * st.st_mtime; (*next)->access_timestamp = INT64_C(1000000) * st.st_atime; (*next)->status_change_timestamp = INT64_C(1000000) * st.st_ctime; + +#if !defined(_DIRENT_HAVE_D_TYPE) || !defined(_GNU_SOURCE) + if (S_ISDIR(st.st_mode)) + (*next)->type = AVIO_ENTRY_DIRECTORY; + else if (S_ISFIFO(st.st_mode)) + (*next)->type = AVIO_ENTRY_NAMED_PIPE; + else if (S_ISCHR(st.st_mode)) + (*next)->type = AVIO_ENTRY_CHARACTER_DEVICE; + else if (S_ISBLK(st.st_mode)) + (*next)->type = AVIO_ENTRY_BLOCK_DEVICE; + else if (S_ISREG(st.st_mode)) + (*next)->type = AVIO_ENTRY_FILE; + else + (*next)->type = AVIO_ENTRY_UNKNOWN; +#endif /* !defined(_DIRENT_HAVE_D_TYPE) || !defined(_GNU_SOURCE) */ } av_free(fullpath); } (*next)->name = av_strdup(dir->d_name); + +#if defined(_DIRENT_HAVE_D_TYPE) && defined(_GNU_SOURCE) switch (dir->d_type) { case DT_FIFO: (*next)->type = AVIO_ENTRY_NAMED_PIPE; @@ -299,14 +325,22 @@ static int file_read_dir(URLContext *h, AVIODirEntry **next) (*next)->type = AVIO_ENTRY_UNKNOWN; break; } +#endif /* defined(_DIRENT_HAVE_D_TYPE) && defined(_GNU_SOURCE) */ return 0; +#else + return AVERROR(ENOSYS); +#endif /* HAVE_DIRENT_H */ } static int file_close_dir(URLContext *h) { +#if HAVE_DIRENT_H FileContext *c = h->priv_data; closedir(c->dir); return 0; +#else + return AVERROR(ENOSYS); +#endif /* HAVE_DIRENT_H */ } URLProtocol ff_file_protocol = { -- 2.3.6
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel