[vlc-devel] [PATCH 1/2] Use standard error codes
Rémi Denis-Courmont
remi at remlab.net
Mon May 20 14:56:42 CEST 2019
Indeed, it would not compile. That's why it's patched away...
Le 20 mai 2019 15:38:38 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 2019-05-20 13:45, Rémi Denis-Courmont wrote:
>> Hi,
>>
>> In which cases can those errors be confused? The whole point is to
>allow
>> more precise errors (than VLC_EGENERIC), not less.
>
>switch (err)
>{
> case VLC_ENOOBJ:
> case VLC_ENOVAR:
>}
>
>This shouldn't even compile now with this patch since they have the
>same
>value.
>
>> Le 20 mai 2019 09:43:37 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a
>écrit :
>>
>> 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
>>
>>
>------------------------------------------------------------------------
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>>
>>
>> --
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>excuser
>> ma brièveté.
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190520/c717c698/attachment.html>
More information about the vlc-devel
mailing list