[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