Mercurial > libdvdnav.hg
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 } |