[MPlayer-cvslog] r22524 - trunk/stream/stream_vcd.c
compn
subversion at mplayerhq.hu
Mon Mar 12 16:48:13 CET 2007
Author: compn
Date: Mon Mar 12 16:48:13 2007
New Revision: 22524
Modified:
trunk/stream/stream_vcd.c
Log:
add vcd:// for win32, patch by zuxy meng
Modified: trunk/stream/stream_vcd.c
==============================================================================
--- trunk/stream/stream_vcd.c (original)
+++ trunk/stream/stream_vcd.c Mon Mar 12 16:48:13 2007
@@ -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 @@ static int open_s(stream_t *stream,int m
#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 @@ static int open_s(stream_t *stream,int m
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);
More information about the MPlayer-cvslog
mailing list