changeset 183:b0aa6f7931c0 src

merging patch from xine-lib's libdvdread * this mostly aligns all data blocks in memory to make raw device reads work * some MSVC related patches that went into xine-lib cvs are also included
author mroi
date Tue, 29 Apr 2003 15:14:00 +0000
parents 071aee18f5aa
children c2e7199becdb
files bswap.h dvd_input.c dvd_reader.c dvd_reader.h dvd_udf.c ifo_print.c ifo_read.c md5.c nav_print.c
diffstat 9 files changed, 106 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/bswap.h	Tue Apr 29 14:49:15 2003 +0000
+++ b/bswap.h	Tue Apr 29 15:14:00 2003 +0000
@@ -65,7 +65,7 @@
  * functionality! 
  */
 
-#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__)
+#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(_MSC_VER)
 #define B2N_16(x) \
  x = ((((x) & 0xff00) >> 8) | \
       (((x) & 0x00ff) << 8))
--- a/dvd_input.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/dvd_input.c	Tue Apr 29 15:14:00 2003 +0000
@@ -74,7 +74,7 @@
   dvd_input_t dev;
     
   /* Allocate the handle structure */
-  dev = (dvd_input_t) malloc(sizeof(dvd_input_t));
+  dev = (dvd_input_t) malloc(sizeof(*dev));
   if(dev == NULL) {
     fprintf(stderr, "libdvdread: Could not allocate memory.\n");
     return NULL;
@@ -154,7 +154,7 @@
   dvd_input_t dev;
   
   /* Allocate the library structure */
-  dev = (dvd_input_t) malloc(sizeof(dvd_input_t));
+  dev = (dvd_input_t) malloc(sizeof(*dev));
   if(dev == NULL) {
     fprintf(stderr, "libdvdread: Could not allocate memory.\n");
     return NULL;
--- a/dvd_reader.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/dvd_reader.c	Tue Apr 29 15:14:00 2003 +0000
@@ -326,17 +326,23 @@
 
 #else
 
+    /* Try to open libdvdcss or fall back to standard functions */
+    have_css = dvdinput_setup();
+    
     ret = stat( path, &fileinfo );
     if( ret < 0 ) {
+
+        /* maybe "host:port" url? try opening it with acCeSS library */
+        if( strchr(path,':') ) {
+          return DVDOpenImageFile( path, have_css );
+        }
+      
 	/* If we can't stat the file, give up */
 	fprintf( stderr, "libdvdread: Can't stat %s\n", path );
 	perror("");
 	return 0;
     }
 
-    /* Try to open libdvdcss or fall back to standard functions */
-    have_css = dvdinput_setup();
-
     /* First check if this is a block/char device or a file*/
     if( S_ISBLK( fileinfo.st_mode ) || 
 	S_ISCHR( fileinfo.st_mode ) || 
@@ -953,7 +959,7 @@
 
 ssize_t DVDReadBytes( dvd_file_t *dvd_file, void *data, size_t byte_size )
 {
-    unsigned char *secbuf;
+    unsigned char *secbuf_base, *secbuf;
     unsigned int numsec, seek_sector, seek_byte;
     int ret;
     
@@ -967,8 +973,9 @@
     numsec = ( ( seek_byte + byte_size ) / DVD_VIDEO_LB_LEN ) +
       ( ( ( seek_byte + byte_size ) % DVD_VIDEO_LB_LEN ) ? 1 : 0 );
     
-    secbuf = (unsigned char *) malloc( numsec * DVD_VIDEO_LB_LEN );
-    if( !secbuf ) {
+    secbuf_base = (unsigned char *) malloc( numsec * DVD_VIDEO_LB_LEN + 2048 );
+    secbuf = (unsigned char *)(((int)secbuf_base & ~2047) + 2048);
+    if( !secbuf_base ) {
 	fprintf( stderr, "libdvdread: Can't allocate memory " 
 		 "for file read!\n" );
         return 0;
@@ -983,12 +990,12 @@
     }
 
     if( ret != (int) numsec ) {
-        free( secbuf );
+        free( secbuf_base );
         return ret < 0 ? ret : 0;
     }
 
     memcpy( data, &(secbuf[ seek_byte ]), byte_size );
-    free( secbuf );
+    free( secbuf_base );
 
     dvd_file->seek_pos += byte_size;
     return byte_size;
@@ -1020,9 +1027,10 @@
 	if( dvd_file != NULL ) {
 	    ssize_t bytes_read;
 	    size_t file_size = dvd_file->filesize * DVD_VIDEO_LB_LEN;
-	    char *buffer = malloc( file_size );
+	    char *buffer_base = malloc( file_size + 2048 );
+	    char *buffer = (unsigned char *)(((int)buffer_base & ~2047) + 2048);
 	    
-	    if( buffer == NULL ) {
+	    if( buffer_base == NULL ) {
 		fprintf( stderr, "libdvdread: DVDDiscId, failed to "
 			 "allocate memory for file read!\n" );
 		return -1;
@@ -1032,13 +1040,14 @@
 		fprintf( stderr, "libdvdread: DVDDiscId read returned %d bytes"
 			 ", wanted %d\n", bytes_read, file_size );
 		DVDCloseFile( dvd_file );
+		free( buffer_base );
 		return -1;
 	    }
 	    
 	    md5_process_bytes( buffer, file_size,  &ctx );
 	    
 	    DVDCloseFile( dvd_file );
-	    free( buffer );
+	    free( buffer_base );
 	}
     }
     md5_finish_ctx( &ctx, discid );
@@ -1051,7 +1060,7 @@
 		      char *volid, unsigned int volid_size,
 		      unsigned char *volsetid, unsigned int volsetid_size )
 {
-  unsigned char *buffer;
+  unsigned char *buffer, *buffer_base;
   int ret;
 
   /* Check arguments. */
@@ -1063,8 +1072,10 @@
     return -1;
   }
   
-  buffer = malloc( DVD_VIDEO_LB_LEN );
-  if( buffer == NULL ) {
+  buffer_base = malloc( DVD_VIDEO_LB_LEN + 2048 );
+  buffer = (unsigned char *)(((int)buffer_base & ~2047) + 2048);
+
+  if( buffer_base == NULL ) {
     fprintf( stderr, "libdvdread: DVDISOVolumeInfo, failed to "
 	     "allocate memory for file read!\n" );
     return -1;
@@ -1074,6 +1085,7 @@
   if( ret != 1 ) {
     fprintf( stderr, "libdvdread: DVDISOVolumeInfo, failed to "
 	     "read ISO9660 Primary Volume Descriptor!\n" );
+    free( buffer_base );
     return -1;
   }
   
@@ -1099,6 +1111,7 @@
     }
     memcpy(volsetid, &buffer[190], volsetid_size);
   }
+  free( buffer_base );
   return 0;
 }
 
--- a/dvd_reader.h	Tue Apr 29 14:49:15 2003 +0000
+++ b/dvd_reader.h	Tue Apr 29 15:14:00 2003 +0000
@@ -21,6 +21,10 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#if defined(_MSC_VER)
+typedef long ssize_t;
+#endif /* _MSC_VER */
+
 #include <sys/types.h>
 
 /**
--- a/dvd_udf.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/dvd_udf.c	Tue Apr 29 15:14:00 2003 +0000
@@ -241,7 +241,7 @@
   
   if(c == NULL) {
     c = calloc(1, sizeof(struct udf_cache));    
-    //    fprintf(stderr, "calloc: %d\n", sizeof(struct udf_cache));    
+    /* fprintf(stderr, "calloc: %d\n", sizeof(struct udf_cache)); */
     if(c == NULL) {
       return 0;
     }
@@ -350,7 +350,7 @@
 static int UDFDescriptor( uint8_t *data, uint16_t *TagID ) 
 {
     *TagID = GETN2(0);
-    // TODO: check CRC 'n stuff
+    /* TODO: check CRC 'n stuff */
     return 0;
 }
 
@@ -368,7 +368,7 @@
     ad->Flags = ad->Length >> 30;
     ad->Length &= 0x3FFFFFFF;
     ad->Location = GETN4(4);
-    ad->Partition = partition->Number; // use number of current partition
+    ad->Partition = partition->Number; /* use number of current partition */
     return 0;
 }
 
@@ -379,7 +379,7 @@
     ad->Length &= 0x3FFFFFFF;
     ad->Location = GETN4(4);
     ad->Partition = GETN2(8);
-    //GETN(10, 6, Use);
+    /* GETN(10, 6, Use); */
     return 0;
 }
 
@@ -390,7 +390,7 @@
     ad->Length &= 0x3FFFFFFF;
     ad->Location = GETN4(12);
     ad->Partition = GETN2(16);
-    //GETN(10, 6, Use);
+    /* GETN(10, 6, Use); */
     return 0;
 }
 
@@ -421,9 +421,9 @@
 {
     uint32_t lbsize, MT_L, N_PM;
     Unicodedecode(&data[84], 128, VolumeDescriptor);
-    lbsize = GETN4(212);  // should be 2048
-    MT_L = GETN4(264);    // should be 6
-    N_PM = GETN4(268);    // should be 1
+    lbsize = GETN4(212);  /* should be 2048 */
+    MT_L = GETN4(264);    /* should be 6 */
+    N_PM = GETN4(268);    /* should be 1 */
     if (lbsize != DVD_VIDEO_LB_LEN) return 1;
     return 0;
 }
@@ -438,10 +438,10 @@
     UDFICB( &data[ 16 ], FileType, &flags );
    
     /* Init ad for an empty file (i.e. there isn't a AD, L_AD == 0 ) */
-    ad->Length = GETN4( 60 ); // Really 8 bytes a 56
+    ad->Length = GETN4( 60 ); /* Really 8 bytes a 56 */
     ad->Flags = 0;
-    ad->Location = 0; // what should we put here? 
-    ad->Partition = partition->Number; // use number of current partition
+    ad->Location = 0; /* what should we put here?  */
+    ad->Partition = partition->Number; /* use number of current partition */
 
     L_EA = GETN4( 168 );
     L_AD = GETN4( 172 );
@@ -491,7 +491,8 @@
 static int UDFMapICB( dvd_reader_t *device, struct AD ICB, uint8_t *FileType,
 		      struct Partition *partition, struct AD *File ) 
 {
-    uint8_t LogBlock[DVD_VIDEO_LB_LEN];
+    uint8_t LogBlock_base[DVD_VIDEO_LB_LEN + 2048];
+    uint8_t *LogBlock = (uint8_t *)(((int)LogBlock_base & ~2047) + 2048);
     uint32_t lbnum;
     uint16_t TagID;
     struct icbmap tmpmap;
@@ -535,12 +536,13 @@
 		       int cache_file_info) 
 {
     char filename[ MAX_UDF_FILE_NAME_LEN ];
-    uint8_t directory[ 2 * DVD_VIDEO_LB_LEN ];
+    uint8_t directory_base[ 2 * DVD_VIDEO_LB_LEN + 2048];
+    uint8_t *directory = (uint8_t *)(((int)directory_base & ~2047) + 2048);
     uint32_t lbnum;
     uint16_t TagID;
     uint8_t filechar;
     unsigned int p;
-    uint8_t *cached_dir = NULL;
+    uint8_t *cached_dir_base = NULL, *cached_dir;
     uint32_t dir_lba;
     struct AD tmpICB;
     int found = 0;
@@ -554,11 +556,12 @@
       
       if(!GetUDFCache(device, LBUDFCache, lbnum, &cached_dir)) {
 	dir_lba = (Dir.Length + DVD_VIDEO_LB_LEN) / DVD_VIDEO_LB_LEN;
-	if((cached_dir = malloc(dir_lba * DVD_VIDEO_LB_LEN)) == NULL) {
+	if((cached_dir_base = malloc(dir_lba * DVD_VIDEO_LB_LEN + 2048)) == NULL) {
 	  return 0;
 	}
+	cached_dir = (uint8_t *)(((int)cached_dir_base & ~2047) + 2048);
 	if( DVDReadLBUDF( device, lbnum, dir_lba, cached_dir, 0) <= 0 ) {
-	  free(cached_dir);
+	  free(cached_dir_base);
 	  cached_dir = NULL;
 	}
 	/*
@@ -646,7 +649,8 @@
 static int UDFGetAVDP( dvd_reader_t *device,
 		       struct avdp_t *avdp)
 {
-  uint8_t Anchor[ DVD_VIDEO_LB_LEN ];
+  uint8_t Anchor_base[ DVD_VIDEO_LB_LEN + 2048 ];
+  uint8_t *Anchor = (uint8_t *)(((int)Anchor_base & ~2047) + 2048);
   uint32_t lbnum, MVDS_location, MVDS_length;
   uint16_t TagID;
   uint32_t lastsector;
@@ -717,7 +721,8 @@
 static int UDFFindPartition( dvd_reader_t *device, int partnum,
 			     struct Partition *part ) 
 {
-    uint8_t LogBlock[ DVD_VIDEO_LB_LEN ];
+    uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ];
+    uint8_t *LogBlock = (uint8_t *)(((int)LogBlock_base & ~2047) + 2048);
     uint32_t lbnum, MVDS_location, MVDS_length;
     uint16_t TagID;
     int i, volvalid;
@@ -779,7 +784,8 @@
 uint32_t UDFFindFile( dvd_reader_t *device, char *filename,
 		      uint32_t *filesize )
 {
-    uint8_t LogBlock[ DVD_VIDEO_LB_LEN ];
+    uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ];
+    uint8_t *LogBlock = (uint8_t *)(((int)LogBlock_base & ~2047) + 2048);
     uint32_t lbnum;
     uint16_t TagID;
     struct Partition partition;
@@ -809,7 +815,7 @@
         }
 
         /* File Set Descriptor */
-        if( TagID == 256 ) {  // File Set Descriptor
+        if( TagID == 256 ) {  /* File Set Descriptor */
             UDFLongAD( &LogBlock[ 400 ], &RootICB );
         }
     } while( ( lbnum < partition.Start + partition.Length )
@@ -923,7 +929,8 @@
 
 static int UDFGetPVD(dvd_reader_t *device, struct pvd_t *pvd)
 {
-  uint8_t pvd_buf[DVD_VIDEO_LB_LEN];
+  uint8_t pvd_buf_base[DVD_VIDEO_LB_LEN + 2048];
+  uint8_t *pvd_buf = (uint8_t *)(((int)pvd_buf_base & ~2047) + 2048);
   
   if(GetUDFCache(device, PVDCache, 0, pvd)) {
     return 1;
--- a/ifo_print.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/ifo_print.c	Tue Apr 29 15:14:00 2003 +0000
@@ -73,7 +73,7 @@
     printf("%02x ", command->bytes[i]);
   printf("| ");
 
-  //vmcmd(command);
+  /* vmcmd(command); */
   printf("\n");
 }
 
@@ -129,19 +129,19 @@
     printf("(please send a bug report) ");
   }
   
-  // Wide is allways allowed..!!!
+  /*  Wide is allways allowed..!!! */
   switch(attr->permitted_df) {
   case 0:
     printf("pan&scan+letterboxed ");
     break;
   case 1:
-    printf("only pan&scan "); //??
+    printf("only pan&scan "); /* ?? */
     break;
   case 2:
     printf("only letterboxed ");
     break;
   case 3:
-    // not specified
+    /* not specified */
     break;
   default:
     printf("(please send a bug report)");
@@ -198,7 +198,7 @@
   if(attr->film_mode) {
     printf("film");
   } else {
-    printf("video"); //camera
+    printf("video"); /* camera */
   }
 }
 
@@ -251,7 +251,7 @@
   
   switch(attr->lang_type) {
   case 0:
-    // not specified
+    /* not specified */
     CHECK_VALUE(attr->lang_code == 0 || attr->lang_code == 0xffff);
     break;
   case 1:
@@ -264,7 +264,7 @@
 
   switch(attr->application_mode) {
   case 0:
-    // not specified
+    /* not specified */
     break;
   case 1:
     printf("karaoke mode ");
@@ -311,19 +311,19 @@
   case 0:
     printf("Not specified ");
     break;
-  case 1: // Normal audio
+  case 1: /* Normal audio */
     printf("Normal Caption ");
     break;
-  case 2: // visually imparied
+  case 2: /* visually imparied */
     printf("Audio for visually impaired ");
     break;
-  case 3: // Directors 1
+  case 3: /* Directors 1 */
     printf("Director's comments 1 ");
     break;
-  case 4: // Directors 2
+  case 4: /* Directors 2 */
     printf("Director's comments 2 ");
     break;
-    //case 4: // Music score ?    
+    /* case 4: Music score ? */
   default:
     printf("(please send a bug report) ");
   }
@@ -913,7 +913,7 @@
   int i, entries;
   
   printf("Number of VOBs in this VOBS: %i\n", c_adt->nr_of_vobs);
-  //entries = c_adt->nr_of_vobs;
+  /* entries = c_adt->nr_of_vobs; */
   entries = (c_adt->last_byte + 1 - C_ADT_SIZE)/sizeof(c_adt_t);
   
   for(i = 0; i < entries; i++) {
@@ -1066,7 +1066,7 @@
     printf("\nText Data Manager Information\n");
     printf(  "-----------------------------\n");
     if(ifohandle->txtdt_mgi) {
-      //ifoPrint_TXTDT_MGI(&(vmgi->txtdt_mgi));
+      /* ifoPrint_TXTDT_MGI(&(vmgi->txtdt_mgi)); */
     } else {
       printf("No Text Data Manager Information present\n");
     }
--- a/ifo_read.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/ifo_read.c	Tue Apr 29 15:14:00 2003 +0000
@@ -659,7 +659,7 @@
   /* Check that time is 0:0:0:0 also if nr_of_programs == 0 */
   if(pgc->nr_of_programs == 0) {
     CHECK_ZERO(pgc->still_time);
-    CHECK_ZERO(pgc->pg_playback_mode); // ??
+    CHECK_ZERO(pgc->pg_playback_mode); /* ?? */
     CHECK_VALUE(pgc->program_map_offset == 0);
     CHECK_VALUE(pgc->cell_playback_offset == 0);
     CHECK_VALUE(pgc->cell_position_offset == 0);
@@ -844,24 +844,24 @@
 
   CHECK_ZERO(tt_srpt->zero_1);
   CHECK_VALUE(tt_srpt->nr_of_srpts != 0);
-  CHECK_VALUE(tt_srpt->nr_of_srpts < 100); // ??
+  CHECK_VALUE(tt_srpt->nr_of_srpts < 100); /* ?? */
   CHECK_VALUE((int)tt_srpt->nr_of_srpts * sizeof(title_info_t) <= info_length);
   
   for(i = 0; i < tt_srpt->nr_of_srpts; i++) {
     CHECK_VALUE(tt_srpt->title[i].pb_ty.zero_1 == 0);
     CHECK_VALUE(tt_srpt->title[i].nr_of_angles != 0);
     CHECK_VALUE(tt_srpt->title[i].nr_of_angles < 10);
-    //CHECK_VALUE(tt_srpt->title[i].nr_of_ptts != 0);
-    // XXX: this assertion breaks Ghostbusters:
-    CHECK_VALUE(tt_srpt->title[i].nr_of_ptts < 1000); // ??
+    /* CHECK_VALUE(tt_srpt->title[i].nr_of_ptts != 0); */
+    /* XXX: this assertion breaks Ghostbusters: */
+    CHECK_VALUE(tt_srpt->title[i].nr_of_ptts < 1000); /* ?? */
     CHECK_VALUE(tt_srpt->title[i].title_set_nr != 0);
-    CHECK_VALUE(tt_srpt->title[i].title_set_nr < 100); // ??
+    CHECK_VALUE(tt_srpt->title[i].title_set_nr < 100); /* ?? */
     CHECK_VALUE(tt_srpt->title[i].vts_ttn != 0);
-    CHECK_VALUE(tt_srpt->title[i].vts_ttn < 100); // ??
-    //CHECK_VALUE(tt_srpt->title[i].title_set_sector != 0);
+    CHECK_VALUE(tt_srpt->title[i].vts_ttn < 100); /* ?? */
+    /* CHECK_VALUE(tt_srpt->title[i].title_set_sector != 0); */
   }
   
-  // Make this a function
+  /* Make this a function */
 #if 0
   if(memcmp((uint8_t *)tt_srpt->title + 
             tt_srpt->nr_of_srpts * sizeof(title_info_t), 
@@ -925,7 +925,7 @@
 
   CHECK_ZERO(vts_ptt_srpt->zero_1);
   CHECK_VALUE(vts_ptt_srpt->nr_of_srpts != 0);
-  CHECK_VALUE(vts_ptt_srpt->nr_of_srpts < 100); // ??
+  CHECK_VALUE(vts_ptt_srpt->nr_of_srpts < 100); /* ?? */
   
   info_length = vts_ptt_srpt->last_byte + 1 - VTS_PTT_SRPT_SIZE;
   
@@ -1001,12 +1001,12 @@
   }
   
   for(i = 0; i < vts_ptt_srpt->nr_of_srpts; i++) {
-    CHECK_VALUE(vts_ptt_srpt->title[i].nr_of_ptts < 1000); // ??
+    CHECK_VALUE(vts_ptt_srpt->title[i].nr_of_ptts < 1000); /* ?? */
     for(j = 0; j < vts_ptt_srpt->title[i].nr_of_ptts; j++) {
       CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgcn != 0 );
-      CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgcn < 1000); // ??
+      CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgcn < 1000); /* ?? */
       CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn != 0);
-      CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn < 100); // ??
+      CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn < 100); /* ?? */
     }
   }
 
@@ -1064,9 +1064,9 @@
   B2N_32(ptl_mait->last_byte);
   
   CHECK_VALUE(ptl_mait->nr_of_countries != 0);
-  CHECK_VALUE(ptl_mait->nr_of_countries < 100); // ??
+  CHECK_VALUE(ptl_mait->nr_of_countries < 100); /* ?? */
   CHECK_VALUE(ptl_mait->nr_of_vtss != 0);
-  CHECK_VALUE(ptl_mait->nr_of_vtss < 100); // ??  
+  CHECK_VALUE(ptl_mait->nr_of_vtss < 100); /* ?? */
   CHECK_VALUE(ptl_mait->nr_of_countries * PTL_MAIT_COUNTRY_SIZE 
 	      <= ptl_mait->last_byte + 1 - PTL_MAIT_SIZE);
   
@@ -1605,7 +1605,7 @@
   /* assert(pgcit->nr_of_pgci_srp != 0);
      Magic Knight Rayearth Daybreak is mastered very strange and has 
      Titles with 0 PTTs. */
-  CHECK_VALUE(pgcit->nr_of_pgci_srp < 10000); // ?? seen max of 1338
+  CHECK_VALUE(pgcit->nr_of_pgci_srp < 10000); /* ?? seen max of 1338 */
   
   info_length = pgcit->nr_of_pgci_srp * PGCI_SRP_SIZE;
   data = malloc(info_length);
@@ -1726,7 +1726,7 @@
   
   CHECK_ZERO(pgci_ut->zero_1);
   CHECK_VALUE(pgci_ut->nr_of_lus != 0);
-  CHECK_VALUE(pgci_ut->nr_of_lus < 100); // ?? 3-4 ?
+  CHECK_VALUE(pgci_ut->nr_of_lus < 100); /* ?? 3-4 ? */
   CHECK_VALUE((uint32_t)pgci_ut->nr_of_lus * PGCI_LU_SIZE < pgci_ut->last_byte);
 
   info_length = pgci_ut->nr_of_lus * PGCI_LU_SIZE;
@@ -1760,7 +1760,7 @@
   free(data);
   
   for(i = 0; i < pgci_ut->nr_of_lus; i++) {
-    // Maybe this is only defined for v1.1 and later titles?
+    /* Maybe this is only defined for v1.1 and later titles? */
     /* If the bits in 'lu[i].exists' are enumerated abcd efgh then:
             VTS_x_yy.IFO        VIDEO_TS.IFO
        a == 0x83 "Root"         0x82 "Title"
@@ -1799,8 +1799,10 @@
       ifofile->pgci_ut = 0;
       return 0;
     }
-    // FIXME: Iterate and verify that all menus that should exists accordingly
-    //        to pgci_ut->lu[i].exists really do?
+    /*
+		 * FIXME: Iterate and verify that all menus that should exists accordingly
+		 * to pgci_ut->lu[i].exists really do?
+		 */
   }
 
   return 1;
@@ -1861,8 +1863,8 @@
     unsigned int nr_coded;
     CHECK_VALUE(vts_attributes->last_byte + 1 >= VTS_ATTRIBUTES_MIN_SIZE);  
     nr_coded = (vts_attributes->last_byte + 1 - VTS_ATTRIBUTES_MIN_SIZE)/6;
-    // This is often nr_coded = 70, how do you know how many there really are?
-    if(nr_coded > 32) { // We haven't read more from disk/file anyway
+    /* This is often nr_coded = 70, how do you know how many there really are? */
+    if(nr_coded > 32) { /* We haven't read more from disk/file anyway */
       nr_coded = 32;
     }
     CHECK_VALUE(vts_attributes->nr_of_vtstt_subp_streams <= nr_coded);
@@ -1910,7 +1912,7 @@
 
   CHECK_ZERO(vts_atrt->zero_1);
   CHECK_VALUE(vts_atrt->nr_of_vtss != 0);
-  CHECK_VALUE(vts_atrt->nr_of_vtss < 100); //??
+  CHECK_VALUE(vts_atrt->nr_of_vtss < 100); /* ?? */
   CHECK_VALUE((uint32_t)vts_atrt->nr_of_vtss * (4 + VTS_ATTRIBUTES_MIN_SIZE) + 
          VTS_ATRT_SIZE < vts_atrt->last_byte + 1);
 
@@ -1954,9 +1956,9 @@
       return 0;
     }
 
-    // This assert cant be in ifoRead_VTS_ATTRIBUTES
+    /* This assert cant be in ifoRead_VTS_ATTRIBUTES */
     CHECK_VALUE(offset + vts_atrt->vts[i].last_byte <= vts_atrt->last_byte + 1);
-    // Is this check correct?
+    /* Is this check correct? */
   }
 
   return 1;
@@ -2006,7 +2008,7 @@
     return 0;
   }
 
-  // fprintf(stderr, "-- Not done yet --\n");
+  /* fprintf(stderr, "-- Not done yet --\n"); */
   return 1;
 }
 
--- a/md5.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/md5.c	Tue Apr 29 15:14:00 2003 +0000
@@ -36,7 +36,7 @@
 #endif
 
 #include "md5.h"
-//#include "unlocked-io.h"
+/* #include "unlocked-io.h" */
 
 #ifdef _LIBC
 # include <endian.h>
--- a/nav_print.c	Tue Apr 29 14:49:15 2003 +0000
+++ b/nav_print.c	Tue Apr 29 15:14:00 2003 +0000
@@ -167,7 +167,7 @@
 	printf("left %d, ", btni->left);
 	printf("right %d\n", btni->right);
 	
-	// ifoPrint_COMMAND(&btni->cmd);
+	/* ifoPrint_COMMAND(&btni->cmd); */
 	printf("\n");
       }
     }