X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_common.h;h=0f78a824e4a26a04e44b51869e45001170405df2;hb=0a76af8e3c9d4dc1b049e0bea6ceefa855edb106;hp=c2f4a32b7e19c2364026fefc727c0da7d79ffdee;hpb=24668b52f7d7f6fabcc1d6b408c5081323ae3f5a;p=vlc diff --git a/include/vlc_common.h b/include/vlc_common.h index c2f4a32b7e..0f78a824e4 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -7,7 +7,7 @@ * * Authors: Samuel Hocevar * Vincent Seguin - * Gildas Bazin + * Gildas Bazin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -110,6 +110,15 @@ typedef uint8_t byte_t; +/* Systems that don't have stdint.h may not define INT64_MIN and + INT64_MAX */ +#ifndef INT64_MIN +#define INT64_MIN (-9223372036854775807LL-1) +#endif +#ifndef INT64_MAX +#define INT64_MAX (9223372036854775807LL) +#endif + /* ptrdiff_t definition */ #ifdef HAVE_STDDEF_H # include @@ -122,7 +131,7 @@ typedef int ptrdiff_t; # endif #endif -#if defined( WIN32 ) +#if defined( WIN32 ) || defined( UNDER_CE ) # include # ifndef PATH_MAX # define PATH_MAX MAX_PATH @@ -205,18 +214,27 @@ typedef struct msg_subscription_t msg_subscription_t; * Playlist commands */ typedef enum { - PLAYLIST_PLAY, /**< Starts playing. No arg. */ - PLAYLIST_PAUSE, /**< Toggles playlist pause. No arg. */ - PLAYLIST_STOP, /**< Stops playing. No arg. */ - PLAYLIST_SKIP, /**< Skip X items and play. */ - PLAYLIST_GOTO, /**< Goto Xth item. */ + PLAYLIST_PLAY, /**< No arg. res=can fail*/ + PLAYLIST_AUTOPLAY, /**< No arg. res=cant fail*/ + PLAYLIST_VIEWPLAY, /**< arg1= int, arg2= playlist_item_t*,*/ + /** arg3 = playlist_item_t* , res=can fail */ + PLAYLIST_ITEMPLAY, /** -# define IS_WINNT ( GetVersion() < 0x80000000 ) +# if defined( UNDER_CE ) +# define IS_WINNT 0 +# else +# define IS_WINNT ( GetVersion() < 0x80000000 ) +# endif #endif #include "vlc_threads.h" @@ -475,22 +523,26 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ # define __MIN(a, b) ( ((a) < (b)) ? (a) : (b) ) #endif +static int64_t GCD( int64_t a, int64_t b ) +{ + if( b ) return GCD( b, a % b ); + else return a; +} + /* Dynamic array handling: realloc array, move data, increment position */ +#if defined( _MSC_VER ) +# define VLCCVP (void**) /* Work-around for broken compiler */ +#else +# define VLCCVP +#endif #define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \ do \ { \ - if( i_oldsize ) \ - { \ - (p_ar) = realloc( p_ar, ((i_oldsize) + 1) * sizeof( *(p_ar) ) ); \ - } \ - else \ - { \ - (p_ar) = malloc( ((i_oldsize) + 1) * sizeof( *(p_ar) ) ); \ - } \ + if( !i_oldsize ) (p_ar) = NULL; \ + (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \ if( (i_oldsize) - (i_pos) ) \ { \ - memmove( (p_ar) + (i_pos) + 1, \ - (p_ar) + (i_pos), \ + memmove( (p_ar) + (i_pos) + 1, (p_ar) + (i_pos), \ ((i_oldsize) - (i_pos)) * sizeof( *(p_ar) ) ); \ } \ (p_ar)[i_pos] = elem; \ @@ -760,6 +812,12 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define vlc_atof NULL #endif +#ifndef HAVE_STRTOF +# ifdef HAVE_STRTOD +# define strtof strtod +# endif +#endif + #ifndef HAVE_ATOLL # define atoll vlc_atoll VLC_EXPORT( int64_t, vlc_atoll, ( const char *nptr ) ); @@ -767,6 +825,13 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define vlc_atoll NULL #endif +#ifndef HAVE_STRTOLL +# define strtoll vlc_strtoll + VLC_EXPORT( int64_t, vlc_strtoll, ( const char *nptr, char **endptr, int base ) ); +#elif !defined(__PLUGIN__) +# define vlc_strtoll NULL +#endif + #ifndef HAVE_GETENV # define getenv vlc_getenv VLC_EXPORT( char *, vlc_getenv, ( const char *name ) ); @@ -816,8 +881,32 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define vlc_strcasestr NULL #endif +#ifndef HAVE_DIRENT_H + typedef void DIR; +# ifndef FILENAME_MAX +# define FILENAME_MAX (260) +# endif + struct dirent + { + long d_ino; /* Always zero. */ + unsigned short d_reclen; /* Always zero. */ + unsigned short d_namlen; /* Length of name in d_name. */ + char d_name[FILENAME_MAX]; /* File name. */ + }; +# define opendir vlc_opendir +# define readdir vlc_readdir +# define closedir vlc_closedir + VLC_EXPORT( void *, vlc_opendir, ( const char * ) ); + VLC_EXPORT( void *, vlc_readdir, ( void * ) ); + VLC_EXPORT( int, vlc_closedir, ( void * ) ); +#elif !defined(__PLUGIN__) +# define vlc_opendir NULL +# define vlc_readdir NULL +# define vlc_closedir NULL +#endif + /* Format type specifiers for 64 bits numbers */ -#if !defined(WIN32) && !defined(UNDER_CE) +#if defined(__CYGWIN32__) || (!defined(WIN32) && !defined(UNDER_CE)) # define I64Fd "%lld" # define I64Fi "%lli" # define I64Fo "%llo" @@ -868,14 +957,17 @@ typedef _off_t off_t; # endif # endif -# if defined( _MSC_VER ) +/* +# if (defined( _MSC_VER ) && (!defined(__WXMSW__))) # if !defined( _OFF_T_DEFINED ) typedef __int64 off_t; # define _OFF_T_DEFINED # else # define off_t __int64 + // for wx compatibility typedef long off_t; # endif # endif +*/ # if defined( __BORLANDC__ ) # undef off_t @@ -898,15 +990,11 @@ typedef __int64 off_t; # define vsnprintf _vsnprintf # endif +# include #endif -/* lseek (defined in src/extras/libc.c) */ -#ifndef HAVE_LSEEK -# define lseek vlc_lseek - VLC_EXPORT( off_t, vlc_lseek, ( int fildes, off_t offset, int whence ) ); -#elif !defined(__PLUGIN__) -# define vlc_lseek NULL -#endif +VLC_EXPORT( vlc_bool_t, vlc_reduce, ( int *, int *, int64_t, int64_t, int64_t ) ); +VLC_EXPORT( char **, vlc_parse_cmdline, ( const char *, int * ) ); /* vlc_wraptext (defined in src/extras/libc.c) */ #define wraptext vlc_wraptext