#include <netinet/in.h>
#endif
+#if defined( SYS_LINUX )
+#include <linux/cdrom.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#elif defined( SYS_OPENBSD )
+#include <sys/dvdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#endif
+
#include <stddef.h>
#include "hb.h"
#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;
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 (unsigned long)t->thread;