rbcdio 0.01
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +1 -0
 - data/COPYING +340 -0
 - data/ChangeLog +315 -0
 - data/INSTALL +236 -0
 - data/Makefile.am +163 -0
 - data/Makefile.in +557 -0
 - data/NEWS +5 -0
 - data/README +75 -0
 - data/Rakefile +234 -0
 - data/THANKS +3 -0
 - data/VERSION +1 -0
 - data/VERSION.in +1 -0
 - data/config.guess +1473 -0
 - data/config.sub +1576 -0
 - data/configure +4802 -0
 - data/configure.ac +158 -0
 - data/data/copying.iso +0 -0
 - data/data/isofs-m1.bin +0 -0
 - data/data/isofs-m1.cue +3 -0
 - data/doc/created.rid +1 -0
 - data/doc/fr_class_index.html +42 -0
 - data/doc/fr_file_index.html +40 -0
 - data/doc/fr_method_index.html +133 -0
 - data/doc/index.html +24 -0
 - data/doc/rdoc-style.css +208 -0
 - data/example/COPYING +340 -0
 - data/example/README +47 -0
 - data/example/audio.rb +186 -0
 - data/example/cd-read.rb +167 -0
 - data/example/copying +340 -0
 - data/example/device.rb +91 -0
 - data/example/drivers.rb +63 -0
 - data/example/drives.rb +63 -0
 - data/example/eject.rb +69 -0
 - data/example/iso1.rb +89 -0
 - data/example/iso2.rb +106 -0
 - data/example/iso3.rb +111 -0
 - data/example/tracks.rb +83 -0
 - data/ext/cdio/Makefile +139 -0
 - data/ext/cdio/extconf.rb +9 -0
 - data/ext/cdio/rubycdio_wrap.c +3410 -0
 - data/ext/iso9660/Makefile +139 -0
 - data/ext/iso9660/extconf.rb +10 -0
 - data/ext/iso9660/rubyiso9660_wrap.c +3005 -0
 - data/install-sh +323 -0
 - data/lib/Makefile +7 -0
 - data/lib/cdio.rb +1000 -0
 - data/lib/iso9660.rb +566 -0
 - data/missing +360 -0
 - data/rubycdio.m4 +14 -0
 - data/swig/Makefile +7 -0
 - data/swig/audio.swg +63 -0
 - data/swig/compat.swg +104 -0
 - data/swig/device.swg +513 -0
 - data/swig/device_const.swg +144 -0
 - data/swig/disc.swg +96 -0
 - data/swig/read.swg +164 -0
 - data/swig/rubycdio.swg +86 -0
 - data/swig/rubyiso9660.swg +827 -0
 - data/swig/track.swg +206 -0
 - data/swig/types.swg +65 -0
 - data/test/Makefile +7 -0
 - data/test/Rakefile +8 -0
 - data/test/cdda.bin +0 -0
 - data/test/cdda.cue +7 -0
 - data/test/cdda.toc +14 -0
 - data/test/cdiotest.rb +228 -0
 - data/test/isocopy.rb +394 -0
 - data/test/isotest.rb +187 -0
 - metadata +116 -0
 
    
        data/example/drives.rb
    ADDED
    
    | 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: drives.rb,v 1.8 2006/12/16 14:29:06 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Program to read CD blocks. See read-cd from the libcdio distribution
         
     | 
| 
      
 5 
     | 
    
         
            +
            # for a more complete program.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #    Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #    This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 11 
     | 
    
         
            +
            #    it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 12 
     | 
    
         
            +
            #    the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 13 
     | 
    
         
            +
            #    (at your option) any later version.
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            #    This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 16 
     | 
    
         
            +
            #    but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 17 
     | 
    
         
            +
            #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 18 
     | 
    
         
            +
            #    GNU General Public License for more details.
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            #    You should have received a copy of the GNU General Public License
         
     | 
| 
      
 21 
     | 
    
         
            +
            #    along with this program; if not, write to the Free Software
         
     | 
| 
      
 22 
     | 
    
         
            +
            #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 23 
     | 
    
         
            +
            #
         
     | 
| 
      
 24 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 25 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 26 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 27 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 28 
     | 
    
         
            +
            else
         
     | 
| 
      
 29 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 30 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
            require "cdio"
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            def print_drive_class(msg, bitmask, any)
         
     | 
| 
      
 35 
     | 
    
         
            +
              cd_drives = Cdio::devices_with_cap(bitmask, any)
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
              puts "%s..." % msg
         
     | 
| 
      
 38 
     | 
    
         
            +
              for drive in cd_drives
         
     | 
| 
      
 39 
     | 
    
         
            +
                puts "Drive %s" % drive
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
              puts "-----"
         
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            cd_drives = Cdio::devices(Rubycdio::DRIVER_DEVICE)
         
     | 
| 
      
 45 
     | 
    
         
            +
            if not cd_drives
         
     | 
| 
      
 46 
     | 
    
         
            +
              puts "No CD-ROM drives found"
         
     | 
| 
      
 47 
     | 
    
         
            +
              exit
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
            for drive in cd_drives
         
     | 
| 
      
 50 
     | 
    
         
            +
              puts "Drive %s" % drive
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            puts "-----"
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            print_drive_class("All CD-ROM drives (again)", Rubycdio::FS_MATCH_ALL, false);
         
     | 
| 
      
 56 
     | 
    
         
            +
            print_drive_class("All CD-DA drives...", Rubycdio::FS_AUDIO, false);
         
     | 
| 
      
 57 
     | 
    
         
            +
            print_drive_class("All drives with ISO 9660...", Rubycdio::FS_ISO_9660, false);
         
     | 
| 
      
 58 
     | 
    
         
            +
            print_drive_class("VCD drives...", 
         
     | 
| 
      
 59 
     | 
    
         
            +
                              (Rubycdio::FS_ANAL_SVCD|Rubycdio::FS_ANAL_CVD|
         
     | 
| 
      
 60 
     | 
    
         
            +
                               Rubycdio::FS_ANAL_VIDEOCD|Rubycdio::FS_UNKNOWN), true);
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
    
        data/example/eject.rb
    ADDED
    
    | 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: eject.rb,v 1.10 2006/12/16 13:24:48 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            #  
         
     | 
| 
      
 4 
     | 
    
         
            +
            # A program to eject and close CD-ROM drive
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            #    Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #    This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 9 
     | 
    
         
            +
            #    it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 10 
     | 
    
         
            +
            #    the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 11 
     | 
    
         
            +
            #    (at your option) any later version.
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            #    This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 14 
     | 
    
         
            +
            #    but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 15 
     | 
    
         
            +
            #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 16 
     | 
    
         
            +
            #    GNU General Public License for more details.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            #    You should have received a copy of the GNU General Public License
         
     | 
| 
      
 19 
     | 
    
         
            +
            #    along with this program; if not, write to the Free Software
         
     | 
| 
      
 20 
     | 
    
         
            +
            #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 23 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 24 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 25 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 26 
     | 
    
         
            +
            else
         
     | 
| 
      
 27 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 28 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
            require "cdio"
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            if ARGV.length() > 0
         
     | 
| 
      
 33 
     | 
    
         
            +
                begin
         
     | 
| 
      
 34 
     | 
    
         
            +
                    drive_name=@ARGV[1]
         
     | 
| 
      
 35 
     | 
    
         
            +
                    d = Cdio::Device.new(drive_name)
         
     | 
| 
      
 36 
     | 
    
         
            +
                rescue IOError
         
     | 
| 
      
 37 
     | 
    
         
            +
                    print "Problem opening CD-ROM: %s" % drive_name
         
     | 
| 
      
 38 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
            else
         
     | 
| 
      
 41 
     | 
    
         
            +
                begin
         
     | 
| 
      
 42 
     | 
    
         
            +
                    d = Cdio::Device.new(nil, Rubycdio::DRIVER_UNKNOWN)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    drive_name = d.device()
         
     | 
| 
      
 44 
     | 
    
         
            +
                rescue IOError
         
     | 
| 
      
 45 
     | 
    
         
            +
                    print "Problem finding a CD-ROM"
         
     | 
| 
      
 46 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            begin
         
     | 
| 
      
 51 
     | 
    
         
            +
                puts "Sending eject to drive %s" % drive_name
         
     | 
| 
      
 52 
     | 
    
         
            +
                d.eject_media()
         
     | 
| 
      
 53 
     | 
    
         
            +
                begin
         
     | 
| 
      
 54 
     | 
    
         
            +
                    puts "Closing CD in drive %s" % drive_name
         
     | 
| 
      
 55 
     | 
    
         
            +
                    Cdio::close_tray(drive_name)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    puts "Closed tray of CD-ROM drive %s" % drive_name
         
     | 
| 
      
 57 
     | 
    
         
            +
                rescue Cdio::DeviceException
         
     | 
| 
      
 58 
     | 
    
         
            +
                    puts "Closing tray of CD-ROM drive %s failed" % drive_name
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            rescue Cdio::DriverUnsupportedError
         
     | 
| 
      
 62 
     | 
    
         
            +
                puts "Eject not supported for %s" % drive_name
         
     | 
| 
      
 63 
     | 
    
         
            +
            rescue Cdio::DeviceException
         
     | 
| 
      
 64 
     | 
    
         
            +
                puts "Eject of CD-ROM drive %s failed" % drive_name
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
              
         
     | 
    
        data/example/iso1.rb
    ADDED
    
    | 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: iso1.rb,v 1.9 2006/12/16 13:24:48 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # A simple program to show using libiso9660 to list files in a directory of
         
     | 
| 
      
 5 
     | 
    
         
            +
            # an ISO-9660 image.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # If a single argument is given, it is used as the ISO 9660 image to
         
     | 
| 
      
 8 
     | 
    
         
            +
            # use in the listing. Otherwise a compiled-in default ISO 9660 image
         
     | 
| 
      
 9 
     | 
    
         
            +
            # name (that comes with the libcdio distribution) will be used.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            #  Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
         
     | 
| 
      
 12 
     | 
    
         
            +
            #  
         
     | 
| 
      
 13 
     | 
    
         
            +
            #  This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 14 
     | 
    
         
            +
            #  it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 15 
     | 
    
         
            +
            #  the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 16 
     | 
    
         
            +
            #  (at your option) any later version.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #  
         
     | 
| 
      
 18 
     | 
    
         
            +
            #  This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 19 
     | 
    
         
            +
            #  but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 20 
     | 
    
         
            +
            #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 21 
     | 
    
         
            +
            #  GNU General Public License for more details.
         
     | 
| 
      
 22 
     | 
    
         
            +
            #  
         
     | 
| 
      
 23 
     | 
    
         
            +
            #  You should have received a copy of the GNU General Public License
         
     | 
| 
      
 24 
     | 
    
         
            +
            #  along with this program; if not, write to the Free Software
         
     | 
| 
      
 25 
     | 
    
         
            +
            #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 28 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 29 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 30 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 31 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/iso9660'
         
     | 
| 
      
 32 
     | 
    
         
            +
            else
         
     | 
| 
      
 33 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 34 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
            require "iso9660"
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            # The default ISO 9660 image if none given
         
     | 
| 
      
 40 
     | 
    
         
            +
            ISO9660_IMAGE_PATH="../data"
         
     | 
| 
      
 41 
     | 
    
         
            +
            ISO9660_IMAGE=ISO9660_IMAGE_PATH + "/copying.iso"
         
     | 
| 
      
 42 
     | 
    
         
            +
            if ARGV.length() > 1
         
     | 
| 
      
 43 
     | 
    
         
            +
                iso_image_fname = sys.argv[1]
         
     | 
| 
      
 44 
     | 
    
         
            +
            else
         
     | 
| 
      
 45 
     | 
    
         
            +
                iso_image_fname = ISO9660_IMAGE
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            iso = ISO9660::IFS.new(iso_image_fname)
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
            if not iso.open?()
         
     | 
| 
      
 51 
     | 
    
         
            +
                puts "Sorry, couldn't open %s as an ISO-9660 image." %  iso_image_fname
         
     | 
| 
      
 52 
     | 
    
         
            +
                exit(1)
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            path = '/'
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            file_stats = iso.readdir(path)
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            id_str = iso.application_id()
         
     | 
| 
      
 60 
     | 
    
         
            +
            if id_str then puts "Application ID: %s" % id_str end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            id_str = iso.preparer_id()
         
     | 
| 
      
 63 
     | 
    
         
            +
            if id_str then puts "Preparer ID: %s" % id_str end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            id_str = iso.publisher_id()
         
     | 
| 
      
 66 
     | 
    
         
            +
            if id_str then puts "Publisher ID: %s" % id_str end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            id_str = iso.system_id()
         
     | 
| 
      
 69 
     | 
    
         
            +
            if id_str then puts "System ID: %s" % id_str end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            id_str = iso.volume_id()
         
     | 
| 
      
 72 
     | 
    
         
            +
            if id_str then puts "Volume ID: %s" % id_str end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            id_str = iso.volumeset_id()
         
     | 
| 
      
 75 
     | 
    
         
            +
            if id_str then puts "Volumeset ID: %s" % id_str end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            for stat in file_stats
         
     | 
| 
      
 78 
     | 
    
         
            +
                filename = stat["filename"]
         
     | 
| 
      
 79 
     | 
    
         
            +
                lsn      = stat["lsn"]
         
     | 
| 
      
 80 
     | 
    
         
            +
                size     = stat["size"]
         
     | 
| 
      
 81 
     | 
    
         
            +
                sec_size = stat["secsize"]
         
     | 
| 
      
 82 
     | 
    
         
            +
                is_dir   = stat["type"] == 2 ? 'd' : '-'
         
     | 
| 
      
 83 
     | 
    
         
            +
                puts "%s [LSN %6d] %8d %s%s" % [is_dir, lsn, size, path,
         
     | 
| 
      
 84 
     | 
    
         
            +
                                                ISO9660.name_translate(filename)]
         
     | 
| 
      
 85 
     | 
    
         
            +
            end
         
     | 
| 
      
 86 
     | 
    
         
            +
            iso.close()
         
     | 
| 
      
 87 
     | 
    
         
            +
            exit(0)
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
    
        data/example/iso2.rb
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: iso2.rb,v 1.7 2006/12/16 03:44:48 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            # A program to show using iso9660 to extract a file
         
     | 
| 
      
 4 
     | 
    
         
            +
            # from an ISO-9660 image.
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # If a single argument is given, it is used as the ISO 9660 image to
         
     | 
| 
      
 7 
     | 
    
         
            +
            # use in the extraction. Otherwise a compiled in default ISO 9660
         
     | 
| 
      
 8 
     | 
    
         
            +
            # image name (that comes with the libcdio distribution) will be used.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            #  Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
         
     | 
| 
      
 11 
     | 
    
         
            +
            #  
         
     | 
| 
      
 12 
     | 
    
         
            +
            #  This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 13 
     | 
    
         
            +
            #  it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 14 
     | 
    
         
            +
            #  the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 15 
     | 
    
         
            +
            #  (at your option) any later version.
         
     | 
| 
      
 16 
     | 
    
         
            +
            #  
         
     | 
| 
      
 17 
     | 
    
         
            +
            #  This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 18 
     | 
    
         
            +
            #  but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 19 
     | 
    
         
            +
            #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 20 
     | 
    
         
            +
            #  GNU General Public License for more details.
         
     | 
| 
      
 21 
     | 
    
         
            +
            #  
         
     | 
| 
      
 22 
     | 
    
         
            +
            #  You should have received a copy of the GNU General Public License
         
     | 
| 
      
 23 
     | 
    
         
            +
            #  along with this program; if not, write to the Free Software
         
     | 
| 
      
 24 
     | 
    
         
            +
            #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 27 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 28 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 29 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 30 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/iso9660'
         
     | 
| 
      
 31 
     | 
    
         
            +
            else
         
     | 
| 
      
 32 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 33 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            require "iso9660"
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            # The default CD image if none given
         
     | 
| 
      
 39 
     | 
    
         
            +
            cd_image_path = "../data"
         
     | 
| 
      
 40 
     | 
    
         
            +
            cd_image_fname = cd_image_path +  "/isofs-m1.cue"
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            # File to extract if none given.
         
     | 
| 
      
 43 
     | 
    
         
            +
            iso9660_path="/"
         
     | 
| 
      
 44 
     | 
    
         
            +
            local_filename="COPYING"
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            if ARGV.length() > 1
         
     | 
| 
      
 47 
     | 
    
         
            +
                cd_image_fname = ARGV[0]
         
     | 
| 
      
 48 
     | 
    
         
            +
                if ARGV.length() > 2
         
     | 
| 
      
 49 
     | 
    
         
            +
                    local_filename = ARGV[1]
         
     | 
| 
      
 50 
     | 
    
         
            +
                    if ARGV.length() > 3
         
     | 
| 
      
 51 
     | 
    
         
            +
                        puts "\nusage: %s [CD-ROM-or-image [filename]]\nExtracts filename from CD-ROM-or-image." % $0
         
     | 
| 
      
 52 
     | 
    
         
            +
                        exit(1)
         
     | 
| 
      
 53 
     | 
    
         
            +
                    end
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            begin 
         
     | 
| 
      
 58 
     | 
    
         
            +
                cd = ISO9660::FS::new(cd_image_fname)
         
     | 
| 
      
 59 
     | 
    
         
            +
            rescue
         
     | 
| 
      
 60 
     | 
    
         
            +
                puts "Sorry, couldn't open %s as a CD image." % cd_image_fname
         
     | 
| 
      
 61 
     | 
    
         
            +
                exit(1)
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            statbuf = cd.stat(local_filename, false)
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            if not statbuf
         
     | 
| 
      
 67 
     | 
    
         
            +
                puts "Could not get ISO-9660 file information for file %s in %s" % 
         
     | 
| 
      
 68 
     | 
    
         
            +
                [local_filename, cd_image_name]
         
     | 
| 
      
 69 
     | 
    
         
            +
                cd.close()
         
     | 
| 
      
 70 
     | 
    
         
            +
                exit(2)
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            o = open(local_filename, "w", 0664)
         
     | 
| 
      
 74 
     | 
    
         
            +
            if not o
         
     | 
| 
      
 75 
     | 
    
         
            +
                puts "Can't open %s for writing" % local_filename
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            # Copy the blocks from the ISO-9660 filesystem to the local filesystem. 
         
     | 
| 
      
 79 
     | 
    
         
            +
            blocks = (statbuf['size'].to_f / Rubycdio::ISO_BLOCKSIZE).ceil()
         
     | 
| 
      
 80 
     | 
    
         
            +
            for i in 0 .. blocks - 1
         
     | 
| 
      
 81 
     | 
    
         
            +
                lsn = statbuf['lsn'] + i
         
     | 
| 
      
 82 
     | 
    
         
            +
                size, buf = cd.read_data_blocks(lsn)
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                if size < 0
         
     | 
| 
      
 85 
     | 
    
         
            +
                    puts "Error reading ISO 9660 file %s at LSN %d" % [
         
     | 
| 
      
 86 
     | 
    
         
            +
                        local_filename, lsn]
         
     | 
| 
      
 87 
     | 
    
         
            +
                    exit(4)
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
                
         
     | 
| 
      
 90 
     | 
    
         
            +
                o.write(buf)
         
     | 
| 
      
 91 
     | 
    
         
            +
            end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            o.close()
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            # Make sure the file size has the exact same byte size. Without the
         
     | 
| 
      
 96 
     | 
    
         
            +
            # truncate below, the file will a multiple of ISO_BLOCKSIZE.
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            f = File.new(local_filename, "r+")
         
     | 
| 
      
 99 
     | 
    
         
            +
            f.truncate(statbuf['size'])
         
     | 
| 
      
 100 
     | 
    
         
            +
            f.close()
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            puts "Extraction of file '%s' from %s successful." % [
         
     | 
| 
      
 103 
     | 
    
         
            +
                local_filename,  cd_image_fname]
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            cd.close()
         
     | 
| 
      
 106 
     | 
    
         
            +
            exit(0)
         
     | 
    
        data/example/iso3.rb
    ADDED
    
    | 
         @@ -0,0 +1,111 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: iso3.rb,v 1.7 2006/12/16 13:24:48 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # A program to show using ISO9660::IFS to extract a file
         
     | 
| 
      
 5 
     | 
    
         
            +
            # from an ISO-9660 image.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # If a single argument is given, it is used as the ISO 9660 image to
         
     | 
| 
      
 8 
     | 
    
         
            +
            # use in the extraction. Otherwise a compiled in default ISO 9660
         
     | 
| 
      
 9 
     | 
    
         
            +
            # image name (that comes with the libcdio distribution) will be used.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            #  Copyright (C) 2006 Rocky Bernstein <rocky@cpan.org>
         
     | 
| 
      
 12 
     | 
    
         
            +
            #  
         
     | 
| 
      
 13 
     | 
    
         
            +
            #  This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 14 
     | 
    
         
            +
            #  it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 15 
     | 
    
         
            +
            #  the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 16 
     | 
    
         
            +
            #  (at your option) any later version.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #  
         
     | 
| 
      
 18 
     | 
    
         
            +
            #  This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 19 
     | 
    
         
            +
            #  but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 20 
     | 
    
         
            +
            #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 21 
     | 
    
         
            +
            #  GNU General Public License for more details.
         
     | 
| 
      
 22 
     | 
    
         
            +
            #  
         
     | 
| 
      
 23 
     | 
    
         
            +
            #  You should have received a copy of the GNU General Public License
         
     | 
| 
      
 24 
     | 
    
         
            +
            #  along with this program; if not, write to the Free Software
         
     | 
| 
      
 25 
     | 
    
         
            +
            #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 28 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 29 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 30 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 31 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/iso9660'
         
     | 
| 
      
 32 
     | 
    
         
            +
            else
         
     | 
| 
      
 33 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 34 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            require "iso9660"
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            # The default ISO 9660 image if none given
         
     | 
| 
      
 40 
     | 
    
         
            +
            ISO9660_IMAGE_PATH="../data"
         
     | 
| 
      
 41 
     | 
    
         
            +
            ISO9660_IMAGE=ISO9660_IMAGE_PATH + "/copying.iso"
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            # File to extract if none given.
         
     | 
| 
      
 44 
     | 
    
         
            +
            local_filename="copying"
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            iso_image_fname = ISO9660_IMAGE
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            if ARGV.length() > 1
         
     | 
| 
      
 49 
     | 
    
         
            +
                iso_image_fname = ARG[0]
         
     | 
| 
      
 50 
     | 
    
         
            +
                if ARGV.length() > 2
         
     | 
| 
      
 51 
     | 
    
         
            +
                    local_filename = ARGV[1]
         
     | 
| 
      
 52 
     | 
    
         
            +
                    if ARGV.length() > 3
         
     | 
| 
      
 53 
     | 
    
         
            +
                        puts """
         
     | 
| 
      
 54 
     | 
    
         
            +
            usage: %s [ISO9660-image.ISO [filename]]
         
     | 
| 
      
 55 
     | 
    
         
            +
            Extracts filename from ISO9660-image.ISO.
         
     | 
| 
      
 56 
     | 
    
         
            +
            """ % sys.argv[0]
         
     | 
| 
      
 57 
     | 
    
         
            +
                        exit(1)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    end
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
            end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            iso = ISO9660::IFS::new(iso_image_fname)
         
     | 
| 
      
 63 
     | 
    
         
            +
              
         
     | 
| 
      
 64 
     | 
    
         
            +
            if not iso.open?():
         
     | 
| 
      
 65 
     | 
    
         
            +
                puts "Sorry, couldn't open %s as an ISO-9660 image." % iso_image_fname
         
     | 
| 
      
 66 
     | 
    
         
            +
                exit(1)
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            statbuf = iso.stat(local_filename, true)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            if not statbuf:
         
     | 
| 
      
 72 
     | 
    
         
            +
                puts "Could not get ISO-9660 file information for file %s" % local_filename
         
     | 
| 
      
 73 
     | 
    
         
            +
                iso.close()
         
     | 
| 
      
 74 
     | 
    
         
            +
                exit(2)
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            o = open(local_filename, "w", 0664)
         
     | 
| 
      
 78 
     | 
    
         
            +
            if not o
         
     | 
| 
      
 79 
     | 
    
         
            +
                puts "Can't open %s for writing" % local_filename
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            # Copy the blocks from the ISO-9660 filesystem to the local filesystem. 
         
     | 
| 
      
 83 
     | 
    
         
            +
            blocks = (statbuf['size'].to_f / Rubycdio::ISO_BLOCKSIZE).ceil()
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            for i in 0 .. blocks - 1
         
     | 
| 
      
 86 
     | 
    
         
            +
                lsn = statbuf['lsn'] + i
         
     | 
| 
      
 87 
     | 
    
         
            +
                size, buf = iso.seek_read(lsn)
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                if size <= 0
         
     | 
| 
      
 90 
     | 
    
         
            +
                    puts "Error reading ISO 9660 file %s at LSN %d" % [
         
     | 
| 
      
 91 
     | 
    
         
            +
                        local_filename, lsn]
         
     | 
| 
      
 92 
     | 
    
         
            +
                    exit(4)
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
                
         
     | 
| 
      
 95 
     | 
    
         
            +
                o.write(buf)
         
     | 
| 
      
 96 
     | 
    
         
            +
            end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            o.close()
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            # Make sure the file size has the exact same byte size. Without the
         
     | 
| 
      
 101 
     | 
    
         
            +
            # truncate below, the file will a multiple of ISO_BLOCKSIZE.
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            f = File.new(local_filename, "r+")
         
     | 
| 
      
 104 
     | 
    
         
            +
            f.truncate(statbuf['size'])
         
     | 
| 
      
 105 
     | 
    
         
            +
            f.close()
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            puts "Extraction of file '%s' from %s successful." % [
         
     | 
| 
      
 108 
     | 
    
         
            +
                local_filename,  iso_image_fname]
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            iso.close()
         
     | 
| 
      
 111 
     | 
    
         
            +
            exit(0)
         
     | 
    
        data/example/tracks.rb
    ADDED
    
    | 
         @@ -0,0 +1,83 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # $Id: tracks.rb,v 1.10 2006/12/16 13:24:48 rocky Exp $
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # A program to show CD information
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            #    Copyright (C) 2006 Rocky Bernstein <rocky@gnu.org>
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #    This program is free software; you can redistribute it and/or modify
         
     | 
| 
      
 9 
     | 
    
         
            +
            #    it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 10 
     | 
    
         
            +
            #    the Free Software Foundation; either version 2 of the License, or
         
     | 
| 
      
 11 
     | 
    
         
            +
            #    (at your option) any later version.
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            #    This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 14 
     | 
    
         
            +
            #    but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 15 
     | 
    
         
            +
            #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 16 
     | 
    
         
            +
            #    GNU General Public License for more details.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            #    You should have received a copy of the GNU General Public License
         
     | 
| 
      
 19 
     | 
    
         
            +
            #    along with this program; if not, write to the Free Software
         
     | 
| 
      
 20 
     | 
    
         
            +
            #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            mypath = File.dirname(__FILE__)
         
     | 
| 
      
 23 
     | 
    
         
            +
            if(File::exists?(mypath + "/../lib/cdio.rb"))
         
     | 
| 
      
 24 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../lib'
         
     | 
| 
      
 25 
     | 
    
         
            +
              $: << File.dirname(__FILE__) + '/../ext/cdio'
         
     | 
| 
      
 26 
     | 
    
         
            +
            else
         
     | 
| 
      
 27 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 28 
     | 
    
         
            +
              require_gem "rbcdio"
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
            require "cdio"
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            if ARGV.length() > 0
         
     | 
| 
      
 33 
     | 
    
         
            +
                begin
         
     | 
| 
      
 34 
     | 
    
         
            +
                    d = Cdio::Device.new(@ARGV[1])
         
     | 
| 
      
 35 
     | 
    
         
            +
                rescue Cdio::IOError
         
     | 
| 
      
 36 
     | 
    
         
            +
                    puts "Problem opening CD-ROM: %s" % @ARGV[1]
         
     | 
| 
      
 37 
     | 
    
         
            +
                    exit(1)
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
            else
         
     | 
| 
      
 40 
     | 
    
         
            +
                begin
         
     | 
| 
      
 41 
     | 
    
         
            +
                    d = Cdio::Device.new("", Rubycdio::DRIVER_UNKNOWN)
         
     | 
| 
      
 42 
     | 
    
         
            +
                rescue Cdio::IOError
         
     | 
| 
      
 43 
     | 
    
         
            +
                    puts "Problem finding a CD-ROM"
         
     | 
| 
      
 44 
     | 
    
         
            +
                    exit(1)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            t = d.first_track()
         
     | 
| 
      
 49 
     | 
    
         
            +
            if not t
         
     | 
| 
      
 50 
     | 
    
         
            +
                puts "Problem getting first track"
         
     | 
| 
      
 51 
     | 
    
         
            +
                exit(2)
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            first_track = t.track
         
     | 
| 
      
 55 
     | 
    
         
            +
            num_tracks  = d.num_tracks()
         
     | 
| 
      
 56 
     | 
    
         
            +
            last_track  = first_track+num_tracks-1
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            begin
         
     | 
| 
      
 59 
     | 
    
         
            +
                last_session = d.last_session()
         
     | 
| 
      
 60 
     | 
    
         
            +
                puts "CD-ROM %s has %d track(s) and %d session(s)." % 
         
     | 
| 
      
 61 
     | 
    
         
            +
                [d.device(), d.num_tracks(), last_session]
         
     | 
| 
      
 62 
     | 
    
         
            +
            rescue Cdio::DriverUnsupportedError:
         
     | 
| 
      
 63 
     | 
    
         
            +
                puts "CD-ROM %s has %d track(s). " % [d.device(), d.num_tracks()]
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            puts "Track format is %s." %  d.disc_mode()
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            mcn = d.mcn()
         
     | 
| 
      
 69 
     | 
    
         
            +
            if mcn
         
     | 
| 
      
 70 
     | 
    
         
            +
                puts "Media Catalog Number: %s" % mcn 
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
                
         
     | 
| 
      
 73 
     | 
    
         
            +
            puts "%3s: %-6s  %s" % ["#", "LSN", "Format"]
         
     | 
| 
      
 74 
     | 
    
         
            +
            for i in first_track .. last_track
         
     | 
| 
      
 75 
     | 
    
         
            +
                begin 
         
     | 
| 
      
 76 
     | 
    
         
            +
                    t = d.track(i)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    puts "%3d: %06u  %-6s %s"  % [t.track, t.lsn(), t.msf(), t.format()]
         
     | 
| 
      
 78 
     | 
    
         
            +
                rescue TrackError
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            puts "%3X: %06u  leadout" % [Rubycdio::CDROM_LEADOUT_TRACK, d.disc_last_lsn()]
         
     | 
| 
      
 83 
     | 
    
         
            +
            d.close()
         
     | 
    
        data/ext/cdio/Makefile
    ADDED
    
    | 
         @@ -0,0 +1,139 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            SHELL = /bin/sh
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #### Start of system configuration section. ####
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            srcdir = .
         
     | 
| 
      
 7 
     | 
    
         
            +
            topdir = /usr/lib/ruby/1.8/i586-linux
         
     | 
| 
      
 8 
     | 
    
         
            +
            hdrdir = $(topdir)
         
     | 
| 
      
 9 
     | 
    
         
            +
            VPATH = $(srcdir):$(topdir):$(hdrdir)
         
     | 
| 
      
 10 
     | 
    
         
            +
            prefix = $(DESTDIR)/usr
         
     | 
| 
      
 11 
     | 
    
         
            +
            exec_prefix = $(DESTDIR)/usr
         
     | 
| 
      
 12 
     | 
    
         
            +
            sitedir = $(libdir)/ruby/site_ruby
         
     | 
| 
      
 13 
     | 
    
         
            +
            rubylibdir = $(libdir)/ruby/$(ruby_version)
         
     | 
| 
      
 14 
     | 
    
         
            +
            archdir = $(rubylibdir)/$(arch)
         
     | 
| 
      
 15 
     | 
    
         
            +
            sbindir = $(DESTDIR)/usr/sbin
         
     | 
| 
      
 16 
     | 
    
         
            +
            datadir = $(DESTDIR)/usr/share
         
     | 
| 
      
 17 
     | 
    
         
            +
            includedir = $(DESTDIR)/usr/include
         
     | 
| 
      
 18 
     | 
    
         
            +
            infodir = $(DESTDIR)/usr/share/info
         
     | 
| 
      
 19 
     | 
    
         
            +
            sysconfdir = $(DESTDIR)/etc
         
     | 
| 
      
 20 
     | 
    
         
            +
            mandir = $(DESTDIR)/usr/share/man
         
     | 
| 
      
 21 
     | 
    
         
            +
            libdir = $(DESTDIR)/usr/lib
         
     | 
| 
      
 22 
     | 
    
         
            +
            sharedstatedir = $(DESTDIR)/usr/com
         
     | 
| 
      
 23 
     | 
    
         
            +
            oldincludedir = $(DESTDIR)/usr/include
         
     | 
| 
      
 24 
     | 
    
         
            +
            sitearchdir = $(sitelibdir)/$(sitearch)
         
     | 
| 
      
 25 
     | 
    
         
            +
            bindir = $(DESTDIR)/usr/bin
         
     | 
| 
      
 26 
     | 
    
         
            +
            localstatedir = $(DESTDIR)/var
         
     | 
| 
      
 27 
     | 
    
         
            +
            sitelibdir = $(sitedir)/$(ruby_version)
         
     | 
| 
      
 28 
     | 
    
         
            +
            libexecdir = $(DESTDIR)/usr/lib
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            CC = gcc
         
     | 
| 
      
 31 
     | 
    
         
            +
            LIBRUBY = $(LIBRUBY_SO)
         
     | 
| 
      
 32 
     | 
    
         
            +
            LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
         
     | 
| 
      
 33 
     | 
    
         
            +
            LIBRUBYARG_SHARED = -Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)
         
     | 
| 
      
 34 
     | 
    
         
            +
            LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            CFLAGS   =  -fPIC -O2 -march=i586 -mtune=i686 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -g -g -fno-strict-aliasing  -fPIC 
         
     | 
| 
      
 37 
     | 
    
         
            +
            CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir)  
         
     | 
| 
      
 38 
     | 
    
         
            +
            CXXFLAGS = $(CFLAGS) 
         
     | 
| 
      
 39 
     | 
    
         
            +
            DLDFLAGS =   
         
     | 
| 
      
 40 
     | 
    
         
            +
            LDSHARED = $(CC) -shared
         
     | 
| 
      
 41 
     | 
    
         
            +
            AR = ar
         
     | 
| 
      
 42 
     | 
    
         
            +
            EXEEXT = 
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            RUBY_INSTALL_NAME = ruby
         
     | 
| 
      
 45 
     | 
    
         
            +
            RUBY_SO_NAME = ruby
         
     | 
| 
      
 46 
     | 
    
         
            +
            arch = i586-linux
         
     | 
| 
      
 47 
     | 
    
         
            +
            sitearch = i586-linux
         
     | 
| 
      
 48 
     | 
    
         
            +
            ruby_version = 1.8
         
     | 
| 
      
 49 
     | 
    
         
            +
            ruby = /usr/bin/ruby
         
     | 
| 
      
 50 
     | 
    
         
            +
            RUBY = $(ruby)
         
     | 
| 
      
 51 
     | 
    
         
            +
            RM = rm -f
         
     | 
| 
      
 52 
     | 
    
         
            +
            MAKEDIRS = mkdir -p
         
     | 
| 
      
 53 
     | 
    
         
            +
            INSTALL = /usr/bin/install -c
         
     | 
| 
      
 54 
     | 
    
         
            +
            INSTALL_PROG = $(INSTALL) -m 0755
         
     | 
| 
      
 55 
     | 
    
         
            +
            INSTALL_DATA = $(INSTALL) -m 644
         
     | 
| 
      
 56 
     | 
    
         
            +
            COPY = cp
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            #### End of system configuration section. ####
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            preload = 
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            libpath = $(libdir)
         
     | 
| 
      
 63 
     | 
    
         
            +
            LIBPATH =  -L'$(libdir)' -Wl,-R'$(libdir)'
         
     | 
| 
      
 64 
     | 
    
         
            +
            DEFFILE = 
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            CLEANFILES = 
         
     | 
| 
      
 67 
     | 
    
         
            +
            DISTCLEANFILES = 
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            extout = 
         
     | 
| 
      
 70 
     | 
    
         
            +
            extout_prefix = 
         
     | 
| 
      
 71 
     | 
    
         
            +
            target_prefix = 
         
     | 
| 
      
 72 
     | 
    
         
            +
            LOCAL_LIBS = 
         
     | 
| 
      
 73 
     | 
    
         
            +
            LIBS = $(LIBRUBYARG_SHARED) -lcdio  -ldl -lcrypt -lm   -lc
         
     | 
| 
      
 74 
     | 
    
         
            +
            SRCS = rubycdio_wrap.c
         
     | 
| 
      
 75 
     | 
    
         
            +
            OBJS = rubycdio_wrap.o
         
     | 
| 
      
 76 
     | 
    
         
            +
            TARGET = rubycdio
         
     | 
| 
      
 77 
     | 
    
         
            +
            DLLIB = $(TARGET).so
         
     | 
| 
      
 78 
     | 
    
         
            +
            STATIC_LIB = 
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            RUBYCOMMONDIR = $(sitedir)$(target_prefix)
         
     | 
| 
      
 81 
     | 
    
         
            +
            RUBYLIBDIR    = $(sitelibdir)$(target_prefix)
         
     | 
| 
      
 82 
     | 
    
         
            +
            RUBYARCHDIR   = $(sitearchdir)$(target_prefix)
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            TARGET_SO     = $(DLLIB)
         
     | 
| 
      
 85 
     | 
    
         
            +
            CLEANLIBS     = $(TARGET).so $(TARGET).il? $(TARGET).tds $(TARGET).map
         
     | 
| 
      
 86 
     | 
    
         
            +
            CLEANOBJS     = *.o *.a *.s[ol] *.pdb *.exp *.bak
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            all:		$(DLLIB)
         
     | 
| 
      
 89 
     | 
    
         
            +
            static:		$(STATIC_LIB)
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            clean:
         
     | 
| 
      
 92 
     | 
    
         
            +
            		@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            distclean:	clean
         
     | 
| 
      
 95 
     | 
    
         
            +
            		@-$(RM) Makefile extconf.h conftest.* mkmf.log
         
     | 
| 
      
 96 
     | 
    
         
            +
            		@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            realclean:	distclean
         
     | 
| 
      
 99 
     | 
    
         
            +
            install: install-so install-rb
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            install-so: $(RUBYARCHDIR)
         
     | 
| 
      
 102 
     | 
    
         
            +
            install-so: $(RUBYARCHDIR)/$(DLLIB)
         
     | 
| 
      
 103 
     | 
    
         
            +
            $(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
         
     | 
| 
      
 104 
     | 
    
         
            +
            	$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
         
     | 
| 
      
 105 
     | 
    
         
            +
            install-rb: pre-install-rb install-rb-default
         
     | 
| 
      
 106 
     | 
    
         
            +
            install-rb-default: pre-install-rb-default
         
     | 
| 
      
 107 
     | 
    
         
            +
            pre-install-rb: Makefile
         
     | 
| 
      
 108 
     | 
    
         
            +
            pre-install-rb-default: Makefile
         
     | 
| 
      
 109 
     | 
    
         
            +
            $(RUBYARCHDIR):
         
     | 
| 
      
 110 
     | 
    
         
            +
            	$(MAKEDIRS) $@
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            site-install: site-install-so site-install-rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            site-install-so: install-so
         
     | 
| 
      
 114 
     | 
    
         
            +
            site-install-rb: install-rb
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            .SUFFIXES: .c .m .cc .cxx .cpp .C .o
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            .cc.o:
         
     | 
| 
      
 119 
     | 
    
         
            +
            	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            .cxx.o:
         
     | 
| 
      
 122 
     | 
    
         
            +
            	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            .cpp.o:
         
     | 
| 
      
 125 
     | 
    
         
            +
            	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            .C.o:
         
     | 
| 
      
 128 
     | 
    
         
            +
            	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            .c.o:
         
     | 
| 
      
 131 
     | 
    
         
            +
            	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            $(DLLIB): $(OBJS)
         
     | 
| 
      
 134 
     | 
    
         
            +
            	@-$(RM) $@
         
     | 
| 
      
 135 
     | 
    
         
            +
            	$(LDSHARED) $(DLDFLAGS) $(LIBPATH) -o $@ $(OBJS) $(LOCAL_LIBS) $(LIBS)
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            $(OBJS): ruby.h defines.h
         
     | 
    
        data/ext/cdio/extconf.rb
    ADDED