comparison dvdread/dvd_reader.c @ 324:f59175f21e06 src

more 0->NULL in functions returning pointers
author nicodvb
date Mon, 31 Dec 2007 17:25:55 +0000
parents d132820611d3
children d61d2dd248b2
comparison
equal deleted inserted replaced
323:d132820611d3 324:f59175f21e06
225 dvd_input_t dev; 225 dvd_input_t dev;
226 226
227 dev = dvdinput_open( location ); 227 dev = dvdinput_open( location );
228 if( !dev ) { 228 if( !dev ) {
229 fprintf( stderr, "libdvdread: Can't open %s for reading\n", location ); 229 fprintf( stderr, "libdvdread: Can't open %s for reading\n", location );
230 return 0; 230 return NULL;
231 } 231 }
232 232
233 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) ); 233 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) );
234 if( !dvd ) return 0; 234 if( !dvd ) return NULL;
235 dvd->isImageFile = 1; 235 dvd->isImageFile = 1;
236 dvd->dev = dev; 236 dvd->dev = dev;
237 dvd->path_root = 0; 237 dvd->path_root = 0;
238 238
239 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL; 239 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL;
254 static dvd_reader_t *DVDOpenPath( const char *path_root ) 254 static dvd_reader_t *DVDOpenPath( const char *path_root )
255 { 255 {
256 dvd_reader_t *dvd; 256 dvd_reader_t *dvd;
257 257
258 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) ); 258 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) );
259 if( !dvd ) return 0; 259 if( !dvd ) return NULL;
260 dvd->isImageFile = 0; 260 dvd->isImageFile = 0;
261 dvd->dev = 0; 261 dvd->dev = 0;
262 dvd->path_root = strdup( path_root ); 262 dvd->path_root = strdup( path_root );
263 263
264 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL; 264 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL;
362 362
363 /* If we can't stat the file, give up */ 363 /* If we can't stat the file, give up */
364 fprintf( stderr, "libdvdread: Can't stat %s\n", path ); 364 fprintf( stderr, "libdvdread: Can't stat %s\n", path );
365 perror(""); 365 perror("");
366 free(path); 366 free(path);
367 return 0; 367 return NULL;
368 } 368 }
369 369
370 /* First check if this is a block/char device or a file*/ 370 /* First check if this is a block/char device or a file*/
371 if( S_ISBLK( fileinfo.st_mode ) || 371 if( S_ISBLK( fileinfo.st_mode ) ||
372 S_ISCHR( fileinfo.st_mode ) || 372 S_ISCHR( fileinfo.st_mode ) ||
396 #endif 396 #endif
397 397
398 /* XXX: We should scream real loud here. */ 398 /* XXX: We should scream real loud here. */
399 if( !(path_copy = strdup( path ) ) ) { 399 if( !(path_copy = strdup( path ) ) ) {
400 free(path); 400 free(path);
401 return 0; 401 return NULL;
402 } 402 }
403 403
404 #ifndef WIN32 /* don't have fchdir, and getcwd( NULL, ... ) is strange */ 404 #ifndef WIN32 /* don't have fchdir, and getcwd( NULL, ... ) is strange */
405 /* Also WIN32 does not have symlinks, so we don't need this bit of code. */ 405 /* Also WIN32 does not have symlinks, so we don't need this bit of code. */
406 406
525 } 525 }
526 526
527 /* If it's none of the above, screw it. */ 527 /* If it's none of the above, screw it. */
528 fprintf( stderr, "libdvdread: Could not open %s\n", path ); 528 fprintf( stderr, "libdvdread: Could not open %s\n", path );
529 free( path ); 529 free( path );
530 return 0; 530 return NULL;
531 } 531 }
532 532
533 void DVDClose( dvd_reader_t *dvd ) 533 void DVDClose( dvd_reader_t *dvd )
534 { 534 {
535 if( dvd ) { 535 if( dvd ) {
549 dvd_file_t *dvd_file; 549 dvd_file_t *dvd_file;
550 550
551 start = UDFFindFile( dvd, filename, &len ); 551 start = UDFFindFile( dvd, filename, &len );
552 if( !start ) { 552 if( !start ) {
553 fprintf( stderr, "libdvdnav:DVDOpenFileUDF:UDFFindFile %s failed\n", filename ); 553 fprintf( stderr, "libdvdnav:DVDOpenFileUDF:UDFFindFile %s failed\n", filename );
554 return 0; 554 return NULL;
555 } 555 }
556 556
557 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); 557 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) );
558 if( !dvd_file ) { 558 if( !dvd_file ) {
559 fprintf( stderr, "libdvdnav:DVDOpenFileUDF:malloc failed\n" ); 559 fprintf( stderr, "libdvdnav:DVDOpenFileUDF:malloc failed\n" );
560 return 0; 560 return NULL;
561 } 561 }
562 dvd_file->dvd = dvd; 562 dvd_file->dvd = dvd;
563 dvd_file->lb_start = start; 563 dvd_file->lb_start = start;
564 dvd_file->seek_pos = 0; 564 dvd_file->seek_pos = 0;
565 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) ); 565 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
639 dvd_input_t dev; 639 dvd_input_t dev;
640 640
641 /* Get the full path of the file. */ 641 /* Get the full path of the file. */
642 if( !findDVDFile( dvd, filename, full_path ) ) { 642 if( !findDVDFile( dvd, filename, full_path ) ) {
643 fprintf( stderr, "libdvdnav:DVDOpenFilePath:findDVDFile %s failed\n", filename ); 643 fprintf( stderr, "libdvdnav:DVDOpenFilePath:findDVDFile %s failed\n", filename );
644 return 0; 644 return NULL;
645 } 645 }
646 646
647 dev = dvdinput_open( full_path ); 647 dev = dvdinput_open( full_path );
648 if( !dev ) { 648 if( !dev ) {
649 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvdinput_open %s failed\n", full_path ); 649 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvdinput_open %s failed\n", full_path );
650 return 0; 650 return NULL;
651 } 651 }
652 652
653 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); 653 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) );
654 if( !dvd_file ) { 654 if( !dvd_file ) {
655 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvd_file malloc failed\n" ); 655 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvd_file malloc failed\n" );
656 return 0; 656 return NULL;
657 } 657 }
658 dvd_file->dvd = dvd; 658 dvd_file->dvd = dvd;
659 dvd_file->lb_start = 0; 659 dvd_file->lb_start = 0;
660 dvd_file->seek_pos = 0; 660 dvd_file->seek_pos = 0;
661 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) ); 661 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
663 dvd_file->filesize = 0; 663 dvd_file->filesize = 0;
664 664
665 if( stat( full_path, &fileinfo ) < 0 ) { 665 if( stat( full_path, &fileinfo ) < 0 ) {
666 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename ); 666 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
667 free( dvd_file ); 667 free( dvd_file );
668 return 0; 668 return NULL;
669 } 669 }
670 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN; 670 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN;
671 dvd_file->title_devs[ 0 ] = dev; 671 dvd_file->title_devs[ 0 ] = dev;
672 dvd_file->filesize = dvd_file->title_sizes[ 0 ]; 672 dvd_file->filesize = dvd_file->title_sizes[ 0 ];
673 673
684 sprintf( filename, "/VIDEO_TS/VIDEO_TS.VOB" ); 684 sprintf( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
685 } else { 685 } else {
686 sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, menu ? 0 : 1 ); 686 sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
687 } 687 }
688 start = UDFFindFile( dvd, filename, &len ); 688 start = UDFFindFile( dvd, filename, &len );
689 if( start == 0 ) return 0; 689 if( start == 0 ) return NULL;
690 690
691 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); 691 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) );
692 if( !dvd_file ) return 0; 692 if( !dvd_file ) return NULL;
693 dvd_file->dvd = dvd; 693 dvd_file->dvd = dvd;
694 /*Hack*/ dvd_file->css_title = title << 1 | menu; 694 /*Hack*/ dvd_file->css_title = title << 1 | menu;
695 dvd_file->lb_start = start; 695 dvd_file->lb_start = start;
696 dvd_file->seek_pos = 0; 696 dvd_file->seek_pos = 0;
697 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) ); 697 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
730 struct stat fileinfo; 730 struct stat fileinfo;
731 dvd_file_t *dvd_file; 731 dvd_file_t *dvd_file;
732 int i; 732 int i;
733 733
734 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); 734 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) );
735 if( !dvd_file ) return 0; 735 if( !dvd_file ) return NULL;
736 dvd_file->dvd = dvd; 736 dvd_file->dvd = dvd;
737 /*Hack*/ dvd_file->css_title = title << 1 | menu; 737 /*Hack*/ dvd_file->css_title = title << 1 | menu;
738 dvd_file->lb_start = 0; 738 dvd_file->lb_start = 0;
739 dvd_file->seek_pos = 0; 739 dvd_file->seek_pos = 0;
740 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) ); 740 memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
749 } else { 749 } else {
750 sprintf( filename, "VTS_%02i_0.VOB", title ); 750 sprintf( filename, "VTS_%02i_0.VOB", title );
751 } 751 }
752 if( !findDVDFile( dvd, filename, full_path ) ) { 752 if( !findDVDFile( dvd, filename, full_path ) ) {
753 free( dvd_file ); 753 free( dvd_file );
754 return 0; 754 return NULL;
755 } 755 }
756 756
757 dev = dvdinput_open( full_path ); 757 dev = dvdinput_open( full_path );
758 if( dev == NULL ) { 758 if( dev == NULL ) {
759 free( dvd_file ); 759 free( dvd_file );
760 return 0; 760 return NULL;
761 } 761 }
762 762
763 if( stat( full_path, &fileinfo ) < 0 ) { 763 if( stat( full_path, &fileinfo ) < 0 ) {
764 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename ); 764 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
765 free( dvd_file ); 765 free( dvd_file );
766 return 0; 766 return NULL;
767 } 767 }
768 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN; 768 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN;
769 dvd_file->title_devs[ 0 ] = dev; 769 dvd_file->title_devs[ 0 ] = dev;
770 dvdinput_title( dvd_file->title_devs[0], 0); 770 dvdinput_title( dvd_file->title_devs[0], 0);
771 dvd_file->filesize = dvd_file->title_sizes[ 0 ]; 771 dvd_file->filesize = dvd_file->title_sizes[ 0 ];
788 dvdinput_title( dvd_file->title_devs[ i ], 0 ); 788 dvdinput_title( dvd_file->title_devs[ i ], 0 );
789 dvd_file->filesize += dvd_file->title_sizes[ i ]; 789 dvd_file->filesize += dvd_file->title_sizes[ i ];
790 } 790 }
791 if( !dvd_file->title_devs[ 0 ] ) { 791 if( !dvd_file->title_devs[ 0 ] ) {
792 free( dvd_file ); 792 free( dvd_file );
793 return 0; 793 return NULL;
794 } 794 }
795 } 795 }
796 796
797 return dvd_file; 797 return dvd_file;
798 } 798 }