Mercurial > mplayer.hg
changeset 22506:72fbf66a9429
add vcd:// for win32, patch by zuxy meng
split up into the following commits r22523, r22524, r22526
author | compn |
---|---|
date | Mon, 12 Mar 2007 15:48:13 +0000 |
parents | 0ceb7442ae2b |
children | a46ab26b2d5e |
files | stream/stream_vcd.c |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 <windows.h> +#endif + #include "mp_msg.h" #include "stream.h" #include "help_mp.h" @@ -10,7 +14,9 @@ #include <fcntl.h> #include <stdlib.h> #include <unistd.h> +#ifndef WIN32 #include <sys/ioctl.h> +#endif #include <errno.h> #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);