[FFmpeg-devel] [PATCH 1/2] avutil: add av_fopen_utf8()
Stefano Sabatini
stefasab at gmail.com
Fri Nov 1 10:19:35 CET 2013
On date Friday 2013-11-01 02:06:36 +0100, Michael Niedermayer encoded:
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
> libavutil/avutil.h | 6 ++++++
> libavutil/file_open.c | 30 ++++++++++++++++++++++++++++++
> 2 files changed, 36 insertions(+)
>
> diff --git a/libavutil/avutil.h b/libavutil/avutil.h
> index 4692c00..7bd76d1 100644
> --- a/libavutil/avutil.h
> +++ b/libavutil/avutil.h
> @@ -313,6 +313,12 @@ unsigned av_int_list_length_for_size(unsigned elsize,
> av_int_list_length_for_size(sizeof(*(list)), list, term)
>
> /**
> + * Open a file using a utf8 filename
> + */
>
Open a file using a UTF-8 filename.
+FILE *av_fopen_utf8(const char *path, const char *mode);
> +
> +
> +/**
> * @}
> * @}
> */
> diff --git a/libavutil/file_open.c b/libavutil/file_open.c
> index 389076f..76b0852 100644
> --- a/libavutil/file_open.c
> +++ b/libavutil/file_open.c
> @@ -93,3 +93,33 @@ int avpriv_open(const char *filename, int flags, ...)
>
> return fd;
> }
> +
> +FILE *av_fopen_utf8(const char *path, const char *mode)
What about returning an error code in order to provide some feedback
to the user? This is especially relevant since such function can fail
in multiple interesting ways.
int av_fopen_utf8(FILE **fp, const char *path, const char *mode)
> +{
> + int fd;
> + int access;
> + const char *m = mode;
> +
> + switch(*m++) {
nit:
switch_(
if_(
> + case 'r': access = O_RDONLY; break;
> + case 'w': access = O_CREAT|O_WRONLY|O_TRUNC; break;
> + case 'a': access = O_CREAT|O_WRONLY|O_APPEND; break;
> + default : return NULL;
> + }
> + while (*m) {
> + if(*m == '+') {
> + access &= ~(O_RDONLY | O_WRONLY);
> + access |= O_RDWR;
> + } else if(*m == 'b') {
> +#ifdef O_BINARY
> + access |= O_BINARY;
> +#endif
> + } else if(*m)
> + return NULL;
> + m++;
> + }
> + fd = avpriv_open(path, access, 0666);
> + if (fd == -1)
> + return NULL;
> + return fdopen(fd, mode);
> +}
> \ No newline at end of file
missing newline
Could you explain (possibly in the log) what problem is this
addressing? From a quick look I can't understand how this is related
to UTF-8 filenames.
--
FFmpeg = Faithless Faithless Magic Pitiful Ecumenical Governor
More information about the ffmpeg-devel
mailing list