[FFmpeg-devel] [PATCH] Implement av_strerror()
Michael Niedermayer
michaelni
Wed Mar 17 15:48:08 CET 2010
On Tue, Mar 16, 2010 at 08:41:00PM +0100, Stefano Sabatini wrote:
> On date Monday 2010-03-15 14:17:49 +0000, M?ns Rullg?rd encoded:
> > Michael Niedermayer <michaelni at gmx.at> writes:
> >
> > > On Sun, Mar 14, 2010 at 10:08:46PM +0100, Stefano Sabatini wrote:
> > >> On date Sunday 2010-03-14 19:22:19 +0100, Michael Niedermayer encoded:
> > >> > On Sun, Mar 14, 2010 at 07:12:07PM +0100, Stefano Sabatini wrote:
> > >> > > On date Sunday 2010-03-14 15:52:41 +0000, M?ns Rullg?rd encoded:
> > >> > > > Stefano Sabatini <stefano.sabatini-lala at poste.it> writes:
> > >> > [...]
> > >> > > +
> > >> > > +int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
> > >> > > +{
> > >> > > + int ret = 0;
> > >> > > + const char *errstr = NULL;
> > >> > > + *errbuf = 0;
> > >> > > +
> > >> > > + switch (errnum) {
> > >> >
> > >> > > +#if LIBAVUTIL_VERSION_MAJOR < 51
> > >> > > + case AVERROR_IO: errstr = "I/O error"; break;
> > >> > > + case AVERROR_NOENT: errstr = "No such file or directory"; break;
> > >> > > + case AVERROR_NOMEM: errstr = "Not enough memory"; break;
> > >> > > +#endif
> > >> >
> > >> > Is that what strerror_r() prints not good?
> > >>
> > >> Updated.
> > >>
> > >> I added also a test program (see the output as attachment), let me
> > >> know if I have to keep it in the commit.
> > >
> > > i think the test prog can be droped
> > >
> > > [...]
> > >
> > >> + *errbuf = 0;
> > >
> > > is this needed?
> >
> > No.
>
> If the error is unknown by strerror_r this won't be set, and the old
> content in errbuf will be printed. But I don't care, so removed.
>
> I'm keeping the test program just for my convenience, I'll remove it
> when committing.
>
> Regards.
> --
> FFmpeg = Fierce & Fundamentalist Merciful Practical Enhanced Geisha
> configure | 2 +
> libavutil/Makefile | 1
> libavutil/avutil.h | 2 -
> libavutil/error.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> libavutil/error.h | 9 ++++++
> 5 files changed, 91 insertions(+), 1 deletion(-)
> f77d3060b42f1716412ccd69c553c736f8ebf372 0006-Implement-av_strerror.patch
> >From 38a2f36937034a275245ee8336d03db1a109e799 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> Date: Sun, 14 Mar 2010 01:06:46 +0100
> Subject: [PATCH 6/7] Implement av_strerror().
>
> ---
> configure | 2 +
> libavutil/Makefile | 1 +
> libavutil/avutil.h | 2 +-
> libavutil/error.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> libavutil/error.h | 9 ++++++
> 5 files changed, 91 insertions(+), 1 deletions(-)
> create mode 100644 libavutil/error.c
>
> diff --git a/configure b/configure
> index e12f858..db5bf08 100755
> --- a/configure
> +++ b/configure
> @@ -1074,6 +1074,7 @@ HAVE_LIST="
> soundcard_h
> poll_h
> setrlimit
> + strerror_r
> struct_addrinfo
> struct_ipv6_mreq
> struct_sockaddr_in6
> @@ -2531,6 +2532,7 @@ check_func ${malloc_prefix}memalign && enable memalign
> check_func mkstemp
> check_func ${malloc_prefix}posix_memalign && enable posix_memalign
> check_func setrlimit
> +check_func strerror_r
> check_func_headers io.h setmode
> check_func_headers lzo/lzo1x.h lzo1x_999_compress
> check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
> diff --git a/libavutil/Makefile b/libavutil/Makefile
> index 5b6cd0e..79506c0 100644
> --- a/libavutil/Makefile
> +++ b/libavutil/Makefile
> @@ -30,6 +30,7 @@ OBJS = adler32.o \
> base64.o \
> crc.o \
> des.o \
> + error.o \
> fifo.o \
> intfloat_readwrite.o \
> lfg.o \
> diff --git a/libavutil/avutil.h b/libavutil/avutil.h
> index 47630a7..968787c 100644
> --- a/libavutil/avutil.h
> +++ b/libavutil/avutil.h
> @@ -40,7 +40,7 @@
> #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
>
> #define LIBAVUTIL_VERSION_MAJOR 50
> -#define LIBAVUTIL_VERSION_MINOR 12
> +#define LIBAVUTIL_VERSION_MINOR 13
> #define LIBAVUTIL_VERSION_MICRO 0
>
> #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
> diff --git a/libavutil/error.c b/libavutil/error.c
> new file mode 100644
> index 0000000..0140718
> --- /dev/null
> +++ b/libavutil/error.c
> @@ -0,0 +1,78 @@
> +/*
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include "avutil.h"
> +#include "avstring.h"
> +
> +int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
> +{
> + int ret = 0;
> + const char *errstr = NULL;
> +
> + switch (errnum) {
> + case AVERROR_EOF: errstr = "End of file"; break;
> + case AVERROR_INVALIDDATA: errstr = "Invalid data found"; break;
> + case AVERROR_NOFMT: errstr = "Unknown format"; break;
> + case AVERROR_NOTSUPP: errstr = "Operation not supported"; break;
> + case AVERROR_NUMEXPECTED: errstr = "Number syntax expected in filename"; break;
> + case AVERROR_PATCHWELCOME: errstr = "Not yet implemented in FFmpeg, patches welcome"; break;
> + }
> +
> + if (errstr) {
> + av_strlcpy(errbuf, errstr, errbuf_size);
> + } else {
> +#if HAVE_STRERROR_R
> + ret = strerror_r(AVUNERROR(errnum), errbuf, errbuf_size);
this code is wrong, read the manual again
or look at the compiler warnings
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Into a blind darkness they enter who follow after the Ignorance,
they as if into a greater darkness enter who devote themselves
to the Knowledge alone. -- Isha Upanishad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100317/f4a88f2b/attachment.pgp>
More information about the ffmpeg-devel
mailing list