X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fports.c;h=6368bcba49d420208718f3fe9e1852cbbea365fd;hb=44946a6f8be82a70e65ca534541183a26fdb804b;hp=40183015f39fabbca5374db7b3c5a390d8e3314b;hpb=89fcf04fbfa36be493df94b160633cf2c1d58a7f;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/ports.c b/libhb/ports.c index 40183015..6368bcba 100644 --- a/libhb/ports.c +++ b/libhb/ports.c @@ -54,6 +54,16 @@ #include #endif +#if defined( SYS_LINUX ) +#include +#include +#include +#elif defined( SYS_OPENBSD ) +#include +#include +#include +#endif + #include #include "hb.h" @@ -82,6 +92,40 @@ int gettimeofday( struct timeval * tv, struct timezone * tz ) #endif */ +int hb_dvd_region(char *device, int *region_mask) +{ +#if defined( DVD_LU_SEND_RPC_STATE ) && defined( DVD_AUTH ) + struct stat st; + dvd_authinfo ai; + int fd, ret; + + fd = open( device, O_RDONLY ); + if ( fd < 0 ) + return -1; + if ( fstat( fd, &st ) < 0 ) + { + close( fd ); + return -1; + } + if ( !( S_ISBLK( st.st_mode ) || S_ISCHR( st.st_mode ) ) ) + { + close( fd ); + return -1; + } + + ai.type = DVD_LU_SEND_RPC_STATE; + ret = ioctl(fd, DVD_AUTH, &ai); + close( fd ); + if ( ret < 0 ) + return ret; + + *region_mask = ai.lrpcs.region_mask; + return 0; +#else + return -1; +#endif +} + uint64_t hb_get_date() { struct timeval tv; @@ -270,10 +314,12 @@ struct hb_thread_s static uint64_t hb_thread_to_integer( const hb_thread_t* t ) { #if defined( USE_PTHREAD ) - #if defined( _WIN32 ) || defined( __MINGW32__ ) + #if defined( SYS_CYGWIN ) + return (uint64_t)t->thread; + #elif defined( _WIN32 ) || defined( __MINGW32__ ) return (uint64_t)(ptrdiff_t)t->thread.p; #elif defined( SYS_DARWIN ) - return (uint64_t)(ptrdiff_t)t->thread; + return (unsigned long)t->thread; #else return (uint64_t)t->thread; #endif