/** @author Mario Danic, Thomas Schmitt @mainpage Libburnia Documentation Index @section intro Introduction Libburnia is an open-source project for reading, mastering and writing optical discs. For now this means only CD-R and CD-RW. Support for DVD+RW is emerging. The project comprises of several more or less interdependent parts which together strive to be a usable foundation for application development. These are libraries, language bindings, and middleware binaries which emulate classical (and valuable) Linux tools. Our scope is currently Linux 2.4 and 2.6 only. For ports to other systems we would need : login on a development machine resp. a live OS on CD or DVD, advise from a system person about the equivalent of Linux sg or FreeBSD CAM, volunteers for testing of realistic use cases. We have a workable code base for burning data and audio CDs. The burn API is quite comprehensively documented and can be used to build a presentable application. We have a functional binary which emulates the core use cases of cdrecord in order to prove that usability, and in order to allow you to explore libburn's scope by help of existing cdrecord frontends. @subsection components The project components (list subject to growth, hopefully): - libburn is the library by which preformatted data get onto optical media. It uses either /dev/sgN (e.g. on kernel 2.4 with ide-scsi) or /dev/hdX (e.g. on kernel 2.6). libburn is the foundation of our cdrecord emulation. - libisofs is the library to pack up hard disk files and directories into a ISO 9660 disk image. This may then be brought to CD via libburn. libisofs is to be the foundation of our upcoming mkisofs emulation. - cdrskin is a limited cdrecord compatibility wrapper for libburn. cdrecord is a powerful GPL'ed burn program included in Joerg Schilling's cdrtools. cdrskin strives to be a second source for the services traditionally provided by cdrecord. cdrskin does not contain any bytes copied from cdrecord's sources. Many bytes have been copied from the message output of cdrecord runs, though. See cdrskin/README for more. - "test" is a collection of application gestures and examples given by the authors of the library features. The main API example of libburn is named test/libburner.c . Explore these examples if you look for inspiration. We plan to be a responsive upstream. Bear with us. @section using Using the libraries Our build system is based on autotools. User experience tells us that you will need at least autotools version 1.7. To build libburn and its subprojects it should be sufficient to go into its toplevel directory and execute - ./bootstrap (needed if you downloaded from SVN) - ./configure - make To make the libraries accessible for running resp. developing applications - make install Both libraries are written in C language and get built by autotools. Thus we expect them to be useable by a wide range of Linux-implemented languages and development tools. @section libburner Libburner libburner is a minimal demo application for the library libburn (see: libburn/libburn.h) as provided on http://libburn.pykix.org . It can list the available devices, can blank a CD-RW and can burn to CD-R or CD-RW. New: burning to DVD+RW (single data track, single session only). It's main purpose, nevertheless, is to show you how to use libburn and also to serve the libburnia team as reference application. libburner does indeed define the standard way how above three gestures can be implemented and stay upward compatible for a good while. @subsection libburner-help Libburner --help
Usage: test/libburner
       [--drive 
||"-"] [--audio] [--blank_fast|--blank_full] [--try_to_simulate] [--multi] [one or more imagefiles|"-"] Examples A bus scan (needs rw-permissions to see a drive): test/libburner --drive - Burn a file to drive chosen by number, leave appendable: test/libburner --drive 0 --multi my_image_file Burn a file to drive chosen by persistent address, close: test/libburner --drive /dev/hdc my_image_file Blank a used CD-RW (is combinable with burning in one run): test/libburner --drive /dev/hdc --blank_fast Burn two audio tracks lame --decode -t /path/to/track1.mp3 track1.cd test/dewav /path/to/track2.wav -o track2.cd test/libburner --drive /dev/hdc --audio track1.cd track2.cd Burn a compressed afio archive on-the-fly: ( cd my_directory ; find . -print | afio -oZ - ) | \ test/libburner --drive /dev/hdc - To be read from *not mounted* CD via: afio -tvZ /dev/hdc Program tar would need a clean EOF which our padded CD cannot deliver.
libburner has two companions, telltoc and dewav, which help to perform some peripheral tasks of burning. telltoc prints a table of content (sessions, tracks and leadouts), it tells about type and state of CD media, and also is able to provide the necessary multi-session information for program mkisofs option -C. See: test/telltoc --help. dewav extracts raw byte-swapped audio data from files of format .wav (MS WAVE) or .au (SUN Audio). See example in libburner --help. @subsection libburner-source Sourceode of libburner Click on blue names of functions, structures, variables, etc in oder to get to the according specs of libburn API or libburner sourcecode. @include libburner.c */