[vlc-devel] [PATCH 1/2] Use standard error codes
Steve Lhomme
robux4 at ycbcr.xyz
Mon May 20 08:43:37 CEST 2019
On 2019-05-19 19:46, RĂ©mi Denis-Courmont wrote:
> While this is not complete nor free of ambiguities, this enables a lot
> more expressive error values than the current tiny set. And even then,
> mostly only VLC_EGENERIC and VLC_ENOMEM are ever used.
>
> This also allows passing errors from the CRT or OS.
>
> This assumes that 666 is not an error code that VLC will use though.
> ---
> include/vlc_common.h | 23 ++++++++++++++---------
> modules/lua/libs/misc.c | 23 ++---------------------
> 2 files changed, 16 insertions(+), 30 deletions(-)
>
> diff --git a/include/vlc_common.h b/include/vlc_common.h
> index 0bbb98fd62..c6e6b7ae6a 100644
> --- a/include/vlc_common.h
> +++ b/include/vlc_common.h
> @@ -42,6 +42,11 @@
> /*****************************************************************************
> * Required system headers
> *****************************************************************************/
> +#ifndef __cplusplus
> +# include <errno.h>
> +#else
> +# include <cerrno>
> +#endif
> #include <stdlib.h>
> #include <stdarg.h>
>
> @@ -468,23 +473,23 @@ typedef union
> * Error values (shouldn't be exposed)
> *****************************************************************************/
> /** No error */
> -#define VLC_SUCCESS (-0)
> +#define VLC_SUCCESS 0
> /** Unspecified error */
> -#define VLC_EGENERIC (-1)
> +#define VLC_EGENERIC (-666)
> /** Not enough memory */
> -#define VLC_ENOMEM (-2)
> +#define VLC_ENOMEM (-ENOMEM)
> /** Timeout */
> -#define VLC_ETIMEOUT (-3)
> +#define VLC_ETIMEOUT (-ETIMEDOUT)
> /** Module not found */
> -#define VLC_ENOMOD (-4)
> +#define VLC_ENOMOD (-ENOTSUP)
> /** Object not found */
> -#define VLC_ENOOBJ (-5)
> +#define VLC_ENOOBJ (-EFAULT)
We're losing some information about what kind of error this is.
> /** Variable not found */
> -#define VLC_ENOVAR (-6)
> +#define VLC_ENOVAR (-EFAULT)
We're losing some information about what kind of error this is.
> /** Bad variable value */
> -#define VLC_EBADVAR (-7)
> +#define VLC_EBADVAR (-EINVAL)
> /** Item not found */
> -#define VLC_ENOITEM (-8)
> +#define VLC_ENOITEM (-ENOENT)
>
> /*****************************************************************************
> * Variable callbacks: called when the value is modified
> diff --git a/modules/lua/libs/misc.c b/modules/lua/libs/misc.c
> index 25f44c3047..c7d47c020b 100644
> --- a/modules/lua/libs/misc.c
> +++ b/modules/lua/libs/misc.c
> @@ -85,27 +85,8 @@ vlc_object_t * vlclua_get_this( lua_State *L )
> int vlclua_push_ret( lua_State *L, int i_error )
> {
> lua_pushnumber( L, i_error );
> -
> - int err;
> -
> - switch( i_error )
> - {
> - case VLC_SUCCESS: err = 0; break;
> - case VLC_ENOMEM: err = ENOMEM; break;
> - case VLC_ETIMEOUT: err = ETIMEDOUT; break;
> - case VLC_EBADVAR: err = EINVAL; break;
> - case VLC_ENOMOD: err = ENOENT; break;
> - case VLC_ENOOBJ: err = ENOENT; break;
> - case VLC_ENOVAR: err = ENOENT; break;
> - case VLC_EGENERIC:
> - lua_pushstring( L, "generic error" );
> - return 2;
> - default:
> - lua_pushstring( L, "unknown error" );
> - return 2;
> - }
> -
> - lua_pushstring( L, vlc_strerror_c(err) );
> + lua_pushstring( L, (i_error == VLC_EGENERIC ? "generic error"
> + : vlc_strerror_c(-i_error)) );
> return 2;
> }
>
> --
> 2.20.1
>
> _______________________________________________
> 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