Hi, Dagobert Michelsen wrote: > I wrote an (unfinished) cd access library a long time ago and used > error = di_walk_minor( rootnode, DDI_NT_CD_CHAN, 0, &result, > &devtToNodepathCallback ); > to find cd/dvd drives. di_walk_minor is a function from libdevinfo(3lib) > where di_walk_minor(3devinfo) is used to select all nodes with a minor > device nodetype of DDI_NT_CD_CHAN which happens to be exactly the > wanted devices.
The man page of libdevinfo on my system looks indeed very promising. ldd /usr/bin/cdrecord.bin shows that it rather uses libvolmgt which by its function media_findname() probably could be used to enumerate "cdrom0" ... "cdromN" for getting their device paths. This function is declared obsolete in its man page. (One shall use HAL. (shudder)) To Rocky: Will a dependency on libdevinfo be acceptable ? How is such a dependency introduced properly ? Shall i keep my current (stinky) device lister as fallback ? (It is used if no /vol directory exists.) ------------------------------------------------ I found man page uscsi(7I) http://docs.sun.com/app/docs/doc/816-5177/uscsi-7i?a=view which explains a lot of what growisofs does on Solaris. It also brings clarity about the last component "Slice" of the device name (...s2 ? ...s0 ?): "the block numbers are absolute block numbers on the drive regardless of which slice number is used" I prepared access modes MMC_RDWR and MMC_RDWR_EXCL (which both seem to need no w-permission) and also prepared receiving of SCSI sense reply. Currently xorriso is a bit too smart-assed when dealing with the drive addresses provided by libcdio. Nevertheless it begins to work: $ pfexec xorriso/xorriso -devices ... waiting ... waiting ... waiting ... Full drive scan done ----------------------------------------------------------------------------- 0 -dev '/dev/rdsk/../../devices/p...@0,0/pci1458,b...@11/cd...@4,0:c,raw' r----- : 'TSSTcorp' 'CDDVDW SH-S223B' 1 -dev '/dev/rdsk/../../devices/p...@0,0/pci-...@14,1/i...@0/s...@0,0:c,raw' r----- : 'TSSTcorp' 'DVD-ROM SH-D162C' ----------------------------------------------------------------------------- $ pfexec xorriso/xorriso \ -dev '/dev/rdsk/../../devices/p...@0,0/pci1458,b...@11/cd...@4,0:c,raw' \ -toc ... cooking a simple meal in the meantime ... Drive current: -outdev '/dev/rdsk/../../devices/p...@0,0/pci1458,b...@11/cd...@4,0:c,raw' Drive type : vendor 'TSSTcorp' product 'CDDVDW SH-S223B' revision 'SB02' Media current: CD-RW Media product: 97m15s35f/79m59s74f , Nan-Ya Plastics Corporation Media status : is written , is appendable TOC layout : Idx , sbsector , Size , Volume Id ISO session : 1 , 0 , 79476s , FREEBSD1_HOME_2010_05_08_212407 ISO session : 2 , 91026 , 9896s , FREEBSD1_HOME_2010_05_08_221606 ISO session : 3 , 107974 , 2850s , FREEBSD1_HOME_2010_05_08_221929 ISO session : 4 , 117876 , 2851s , FREEBSD1_HOME_2010_05_08_225714 ISO session : 5 , 127779 , 1989s , FREEBSD1_HOME_2010_05_08_230413 ISO session : 6 , 136820 , 5890s , FREEBSD1_HOME_2010_05_09_133322 Media summary: 6 sessions, 103862 data blocks, 203m data, 410m free Media nwa : 149762s $ ------------------------------------------------ Now i need to salvage the speed of getting the device list and teach libburn/sg-libcdio.c not to resolve the /dev/cXtXd0s2 softlinks to the ugly actual device paths. Have a nice day :) Thomas
