# HG changeset patch # User compn # Date 1173714493 0 # Node ID 72fbf66a94293d0c2222300822007fb1fea10455 # Parent 0ceb7442ae2b4657c84bc9ee73ddf2364b7cfb85 add vcd:// for win32, patch by zuxy meng split up into the following commits r22523, r22524, r22526 diff -r 0ceb7442ae2b -r 72fbf66a9429 stream/stream_vcd.c --- a/stream/stream_vcd.c Mon Mar 12 15:46:38 2007 +0000 +++ b/stream/stream_vcd.c Mon Mar 12 15:48:13 2007 +0000 @@ -1,6 +1,10 @@ #include "config.h" +#ifdef WIN32 +#include +#endif + #include "mp_msg.h" #include "stream.h" #include "help_mp.h" @@ -10,7 +14,9 @@ #include #include #include +#ifndef WIN32 #include +#endif #include #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) @@ -20,6 +26,8 @@ #include "vcd_read_nbsd.h" #elif defined(SYS_DARWIN) #include "vcd_read_darwin.h" +#elif defined(WIN32) +#include "vcd_read_win32.h" #else #include "vcd_read.h" #endif @@ -76,8 +84,16 @@ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) int bsize = VCD_SECTOR_SIZE; #endif +#ifdef WIN32 + HANDLE hd; + char device[] = "\\\\.\\?:"; +#endif - if(mode != STREAM_READ) { + if(mode != STREAM_READ +#ifdef WIN32 + || GetVersion() > 0x80000000 // Win9x +#endif + ) { m_struct_free(&stream_opts,opts); return STREAM_UNSUPORTED; } @@ -89,7 +105,15 @@ p->device = strdup(DEFAULT_CDROM_DEVICE); } +#ifdef WIN32 + device[4] = p->device[0]; + /* open() can't be used for devices so do it the complicated way */ + hd = CreateFile(device, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + f = _open_osfhandle((long)hd, _O_RDONLY); +#else f=open(p->device,O_RDONLY); +#endif if(f<0){ mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_CdDevNotfound,p->device); m_struct_free(&stream_opts,opts);