]> git.sesse.net Git - vlc/blobdiff - plugins/dvd/dvd_access.c
* ./extras/MacOSX_dvdioctl: removed outdated files.
[vlc] / plugins / dvd / dvd_access.c
index dff92bff1696f601ccadcfdf419bd8631a5c4204..c0ef18b23c447bd43ff0bd8f4e30f355ede3899e 100644 (file)
@@ -8,7 +8,7 @@
  *  -dvd_udf to find files
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: dvd_access.c,v 1.4 2002/03/09 13:42:46 sam Exp $
+ * $Id: dvd_access.c,v 1.9 2002/03/18 19:14:52 sam Exp $
  *
  * Author: Stéphane Borel <stef@via.ecp.fr>
  *
@@ -226,9 +226,9 @@ static int DVDOpen( struct input_thread_s *p_input )
 
     p_area = p_input->stream.pp_areas[p_dvd->i_title];
     
-    p_dvd->i_chapter = p_dvd->i_chapter <= p_area->i_part_nb ?
-                       p_dvd->i_chapter : 1;
-    p_area->i_part = p_dvd->i_chapter;
+    p_area->i_part = p_dvd->i_chapter <= p_area->i_part_nb ?
+                     p_dvd->i_chapter : 1;
+    p_dvd->i_chapter = 1;
     
     p_dvd->b_new_chapter = 0;
     p_dvd->i_audio_nb = 0;
@@ -416,7 +416,6 @@ static int DVDSetArea( input_thread_t * p_input, input_area_t * p_area )
             vts.i_pos + vts.manager_inf.i_title_vob_start_sector;
 
         /* last cell */
-        intf_WarnMsg( 4, "prg_cell nb %d", vts.title_unit.p_title[p_dvd->i_title_id-1].title.i_cell_nb );
         p_dvd->i_prg_cell = -1 +
             vts.title_unit.p_title[p_dvd->i_title_id-1].title.i_cell_nb;
         p_dvd->i_map_cell = 0;
@@ -424,11 +423,12 @@ static int DVDSetArea( input_thread_t * p_input, input_area_t * p_area )
         i_size            = CellEndSector( p_dvd );
 
         /* first cell */
-        p_dvd->i_prg_cell = 0;
-        p_dvd->i_map_cell = 0;
-        p_dvd->i_map_cell = CellPrg2Map    ( p_dvd );
-        p_dvd->i_vts_lb   = CellStartSector( p_dvd );
-        p_dvd->i_end_lb   = CellEndSector  ( p_dvd );
+        p_dvd->i_prg_cell   = 0;
+        p_dvd->i_map_cell   = 0;
+        p_dvd->i_angle_cell = 0;
+        p_dvd->i_map_cell   = CellPrg2Map    ( p_dvd );
+        p_dvd->i_vts_lb     = CellStartSector( p_dvd );
+        p_dvd->i_end_lb     = CellEndSector  ( p_dvd );
 
         /* Force libdvdcss to check its title key.
          * It is only useful for title cracking method. Methods using the
@@ -551,7 +551,7 @@ static int DVDRead( input_thread_t * p_input,
 
     if( ( p_input->stream.p_selected_area->i_tell
             >= p_input->stream.p_selected_area->i_size )
-       || ( i_block_once  < 0 ) )
+       || ( i_block_once  <= 0 ) )
     {
         if( ( p_dvd->i_title + 1 ) >= p_input->stream.i_area_nb )
         {
@@ -662,7 +662,7 @@ static char * DVDParse( input_thread_t * p_input )
     }
     else
     {
-        psz_raw = NULL;
+        psz_raw = "";
     }
 
     if( *psz_parser && !strtol( psz_parser, NULL, 10 ) )
@@ -695,7 +695,7 @@ static char * DVDParse( input_thread_t * p_input )
                 {
                     /* we have only a partial list of options, no device */
                     psz_parser = psz_raw;
-                    psz_raw = NULL;
+                    psz_raw = "";
                     b_options = 1;
                     break;
                 }
@@ -706,7 +706,7 @@ static char * DVDParse( input_thread_t * p_input )
     else
     {
         /* found beginning of options ; no raw device specified */
-        psz_raw = NULL;
+        psz_raw = "";
         b_options = 1;
     }
 
@@ -729,7 +729,7 @@ static char * DVDParse( input_thread_t * p_input )
         p_dvd->i_angle = i_angle ? i_angle : 1;
     }
 
-    if( psz_raw )
+    if( *psz_raw )
     {
         if( *psz_raw )
         {
@@ -741,7 +741,7 @@ static char * DVDParse( input_thread_t * p_input )
                              psz_raw, strerror(errno));
                 /* put back '@' */
                 *(psz_raw - 1) = '@';
-                psz_raw = NULL;
+                psz_raw = "";
             }
             else
             {
@@ -754,7 +754,7 @@ static char * DVDParse( input_thread_t * p_input )
                                      " not a valid char device", psz_raw );
                     /* put back '@' */
                     *(psz_raw - 1) = '@';
-                    psz_raw = NULL;
+                    psz_raw = "";
                 }
                 else
 #endif
@@ -768,7 +768,7 @@ static char * DVDParse( input_thread_t * p_input )
         }
         else
         {
-            psz_raw = NULL;
+            psz_raw = "";
         }
     }
     
@@ -781,13 +781,13 @@ static char * DVDParse( input_thread_t * p_input )
             /* no device and no access specified: we probably don't want DVD */
             return NULL;
         }
-        psz_device = config_GetPszVariable( INPUT_DVD_DEVICE_VAR );
+        psz_device = config_GetPszVariable( "dvd_device" );
     }
 
     /* check block device */
     if( stat( psz_device, &stat_info ) == -1 )
     {
-        intf_ErrMsg( "input error: cannot stat() device `%s' (%s)",
+        intf_ErrMsg( "dvd error: cannot stat() device `%s' (%s)",
                      psz_device, strerror(errno));
         return NULL;                    
     }