<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>libisoburn: libisoburn-1.2.2/libisoburn/libisoburn.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libisoburn <span id="projectnumber">1.2.2</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div class="header"> <div class="headertitle"> <div class="title">libisoburn-1.2.2/libisoburn/libisoburn.h</div> </div> </div> <div class="contents"> <a href="libisoburn_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <a name="l00002"></a>00002 <span class="comment">/*</span> <a name="l00003"></a>00003 <span class="comment"> Lower level API definition of libisoburn.</span> <a name="l00004"></a>00004 <span class="comment"></span> <a name="l00005"></a>00005 <span class="comment"> Copyright 2007-2012 Vreixo Formoso Lopes <metalpain2002@yahoo.es></span> <a name="l00006"></a>00006 <span class="comment"> and Thomas Schmitt <scdbackup@gmx.net></span> <a name="l00007"></a>00007 <span class="comment"> Provided under GPL version 2 or later.</span> <a name="l00008"></a>00008 <span class="comment">*/</span> <a name="l00009"></a>00009 <span class="comment"></span> <a name="l00010"></a>00010 <span class="comment">/** Overview</span> <a name="l00011"></a>00011 <span class="comment"></span> <a name="l00012"></a>00012 <span class="comment">libisoburn is a frontend for libraries libburn and libisofs which enables</span> <a name="l00013"></a>00013 <span class="comment">creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported</span> <a name="l00014"></a>00014 <span class="comment">by libburn. This includes media like DVD+RW, which do not support multi-session</span> <a name="l00015"></a>00015 <span class="comment">management on media level and even plain disk files or block devices.</span> <a name="l00016"></a>00016 <span class="comment"></span> <a name="l00017"></a>00017 <span class="comment">The price for that is thorough specialization on data files in ISO-9660</span> <a name="l00018"></a>00018 <span class="comment">filesystem images. So libisoburn is not suitable for audio (CD-DA) or any</span> <a name="l00019"></a>00019 <span class="comment">other CD layout which does not entirely consist of ISO-9660 sessions.</span> <a name="l00020"></a>00020 <span class="comment"></span> <a name="l00021"></a>00021 <span class="comment">Note that there is a higher level of API: xorriso.h. One should not mix it</span> <a name="l00022"></a>00022 <span class="comment">with the API calls of libisoburn.h, libisofs.h, and libburn.h.</span> <a name="l00023"></a>00023 <span class="comment"></span> <a name="l00024"></a>00024 <span class="comment"></span> <a name="l00025"></a>00025 <span class="comment"> Connector functions</span> <a name="l00026"></a>00026 <span class="comment"></span> <a name="l00027"></a>00027 <span class="comment">libisofs and libburn do not depend on each other but share some interfaces</span> <a name="l00028"></a>00028 <span class="comment">by which they can cooperate.</span> <a name="l00029"></a>00029 <span class="comment">libisoburn establishes the connection between both modules by creating the</span> <a name="l00030"></a>00030 <span class="comment">necessary interface objects and attaching them to the right places.</span> <a name="l00031"></a>00031 <span class="comment"></span> <a name="l00032"></a>00032 <span class="comment"></span> <a name="l00033"></a>00033 <span class="comment"> Wrapper functions </span> <a name="l00034"></a>00034 <span class="comment"></span> <a name="l00035"></a>00035 <span class="comment">The priciple of this frontend is that you may use any call of libisofs or</span> <a name="l00036"></a>00036 <span class="comment">libburn unless it has a isoburn_*() wrapper listed in the following function</span> <a name="l00037"></a>00037 <span class="comment">documentation.</span> <a name="l00038"></a>00038 <span class="comment"></span> <a name="l00039"></a>00039 <span class="comment">E.g. call isoburn_initialize() rather than iso_init(); burn_initialize();</span> <a name="l00040"></a>00040 <span class="comment">and call isoburn_drive_scan_and_grab() rather than burn_drive_scan_and_grab().</span> <a name="l00041"></a>00041 <span class="comment">But you may call burn_disc_get_profile() directly if you want to display</span> <a name="l00042"></a>00042 <span class="comment">the media type.</span> <a name="l00043"></a>00043 <span class="comment"></span> <a name="l00044"></a>00044 <span class="comment">The wrappers will transparently provide the necessary emulations which</span> <a name="l00045"></a>00045 <span class="comment">are appropriate for particular target drives and media states.</span> <a name="l00046"></a>00046 <span class="comment">To learn about them you have to read both API descriptions: the one of</span> <a name="l00047"></a>00047 <span class="comment">the wrapper and the one of the underlying libburn or libisofs call.</span> <a name="l00048"></a>00048 <span class="comment"></span> <a name="l00049"></a>00049 <span class="comment">Macros BURN_* and functions burn_*() are documented in <libburn/libburn.h></span> <a name="l00050"></a>00050 <span class="comment">Macros ISO_* and functions iso_*() are documented in <libisofs/libisofs.h></span> <a name="l00051"></a>00051 <span class="comment"></span> <a name="l00052"></a>00052 <span class="comment"></span> <a name="l00053"></a>00053 <span class="comment"> Usage model</span> <a name="l00054"></a>00054 <span class="comment"></span> <a name="l00055"></a>00055 <span class="comment">There may be an input drive and an output drive. Either of them may be missing</span> <a name="l00056"></a>00056 <span class="comment">with the consequence that no reading resp. writing is possible.</span> <a name="l00057"></a>00057 <span class="comment">Both drive roles can be fulfilled by the same drive.</span> <a name="l00058"></a>00058 <span class="comment"></span> <a name="l00059"></a>00059 <span class="comment">Input can be a random access readable libburn drive:</span> <a name="l00060"></a>00060 <span class="comment"> optical media, regular files, block devices.</span> <a name="l00061"></a>00061 <span class="comment">Output can be any writeable libburn drive:</span> <a name="l00062"></a>00062 <span class="comment"> writeable optical media in burner, writeable file objects (no directories).</span> <a name="l00063"></a>00063 <span class="comment"></span> <a name="l00064"></a>00064 <span class="comment">libburn demands rw-permissions to drive device file resp. file object.</span> <a name="l00065"></a>00065 <span class="comment"></span> <a name="l00066"></a>00066 <span class="comment">If the input drive provides a suitable ISO RockRidge image, then its tree</span> <a name="l00067"></a>00067 <span class="comment">may be loaded into memory and can then be manipulated by libisofs API calls.</span> <a name="l00068"></a>00068 <span class="comment">The loading is done by isoburn_read_image() under control of</span> <a name="l00069"></a>00069 <span class="comment">struct isoburn_read_opts which the application obtains from libisoburn</span> <a name="l00070"></a>00070 <span class="comment">and manipulates by the family of isoburn_ropt_set_*() functions.</span> <a name="l00071"></a>00071 <span class="comment"></span> <a name="l00072"></a>00072 <span class="comment">Writing of result images is controlled by libisofs related parameters</span> <a name="l00073"></a>00073 <span class="comment">in a struct isoburn_imgen_opts which the application obtains from libisoburn</span> <a name="l00074"></a>00074 <span class="comment">and manipulates by the family of isoburn_igopt_set_*() functions.</span> <a name="l00075"></a>00075 <span class="comment"></span> <a name="l00076"></a>00076 <span class="comment">All multi-session aspects are handled by libisoburn according to these</span> <a name="l00077"></a>00077 <span class="comment">settings. The application does not have to analyze media state and write</span> <a name="l00078"></a>00078 <span class="comment">job parameters. It rather states its desires which libisoburn tries to</span> <a name="l00079"></a>00079 <span class="comment">fulfill, or else will refuse to start the write run.</span> <a name="l00080"></a>00080 <span class="comment"></span> <a name="l00081"></a>00081 <span class="comment"></span> <a name="l00082"></a>00082 <span class="comment"> Setup for Growing, Modifying or Blind Growing</span> <a name="l00083"></a>00083 <span class="comment"></span> <a name="l00084"></a>00084 <span class="comment">The connector function family offers alternative API calls for performing</span> <a name="l00085"></a>00085 <span class="comment">the setup for several alternative image generation strategies.</span> <a name="l00086"></a>00086 <span class="comment"></span> <a name="l00087"></a>00087 <span class="comment">Growing:</span> <a name="l00088"></a>00088 <span class="comment">If input and output drive are the same, then isoburn_prepare_disc() is to</span> <a name="l00089"></a>00089 <span class="comment">be used. It will lead to an add-on session on appendable or overwriteable</span> <a name="l00090"></a>00090 <span class="comment">media with existing ISO image. With blank media it will produce a first</span> <a name="l00091"></a>00091 <span class="comment">session.</span> <a name="l00092"></a>00092 <span class="comment"></span> <a name="l00093"></a>00093 <span class="comment">Modifying:</span> <a name="l00094"></a>00094 <span class="comment">If the output drive is not the input drive, and if it bears blank media</span> <a name="l00095"></a>00095 <span class="comment">or overwriteable without a valid ISO image, then one may produce a consolidated</span> <a name="l00096"></a>00096 <span class="comment">image with old and new data. This will copy file data from an eventual input</span> <a name="l00097"></a>00097 <span class="comment">drive with valid image, add any newly introduced data from the local</span> <a name="l00098"></a>00098 <span class="comment">filesystem, and produce a first session on output media.</span> <a name="l00099"></a>00099 <span class="comment">To prepare for such an image generation run, use isoburn_prepare_new_image().</span> <a name="l00100"></a>00100 <span class="comment"></span> <a name="l00101"></a>00101 <span class="comment">Blind Growing:</span> <a name="l00102"></a>00102 <span class="comment">This method reads the old image from one drive and writes the add-on session</span> <a name="l00103"></a>00103 <span class="comment">to a different drive. That output drive is nevertheless supposed to</span> <a name="l00104"></a>00104 <span class="comment">finally lead to the same medium from where the session was loaded. Usually it</span> <a name="l00105"></a>00105 <span class="comment">will be stdio:/dev/fd/1 (i.e. stdout) being piped into some burn program</span> <a name="l00106"></a>00106 <span class="comment">like with this classic gesture:</span> <a name="l00107"></a>00107 <span class="comment"> mkisofs -M $dev -C $msc1,$nwa | cdrecord -waiti dev=$dev</span> <a name="l00108"></a>00108 <span class="comment">Blind growing is prepared by the call isoburn_prepare_blind_grow().</span> <a name="l00109"></a>00109 <span class="comment">The input drive should be released immediately after this call in order</span> <a name="l00110"></a>00110 <span class="comment">to allow the consumer of the output stream to access that drive for writing.</span> <a name="l00111"></a>00111 <span class="comment"></span> <a name="l00112"></a>00112 <span class="comment">After either of these setups, some peripheral libburn drive parameter settings</span> <a name="l00113"></a>00113 <span class="comment">like burn_write_opts_set_simulate(), burn_write_opts_set_multi(),</span> <a name="l00114"></a>00114 <span class="comment"> burn_drive_set_speed(), burn_write_opts_set_underrun_proof() should be made.</span> <a name="l00115"></a>00115 <span class="comment">Do not set the write mode. It will be chosen by libisoburn so it matches job</span> <a name="l00116"></a>00116 <span class="comment">and media state.</span> <a name="l00117"></a>00117 <span class="comment"></span> <a name="l00118"></a>00118 <span class="comment"> Writing the image</span> <a name="l00119"></a>00119 <span class="comment"></span> <a name="l00120"></a>00120 <span class="comment">Then one may start image generation and write threads by isoburn_disc_write().</span> <a name="l00121"></a>00121 <span class="comment">Progress may be watched at the output drive by burn_drive_get_status() and</span> <a name="l00122"></a>00122 <span class="comment">isoburn_get_fifo_status().</span> <a name="l00123"></a>00123 <span class="comment"></span> <a name="l00124"></a>00124 <span class="comment">At some time, the output drive will be BURN_DRIVE_IDLE indicating that</span> <a name="l00125"></a>00125 <span class="comment">writing has ended.</span> <a name="l00126"></a>00126 <span class="comment">One should inquire isoburn_drive_wrote_well() to learn about overall success.</span> <a name="l00127"></a>00127 <span class="comment"></span> <a name="l00128"></a>00128 <span class="comment">Finally one must call isoburn_activate_session() which will complete any</span> <a name="l00129"></a>00129 <span class="comment">eventual multi-session emulation.</span> <a name="l00130"></a>00130 <span class="comment"></span> <a name="l00131"></a>00131 <span class="comment"></span> <a name="l00132"></a>00132 <span class="comment"> Application Constraints</span> <a name="l00133"></a>00133 <span class="comment"></span> <a name="l00134"></a>00134 <span class="comment">Applications shall include libisofs/libisofs.h , libburn/libburn.h and this</span> <a name="l00135"></a>00135 <span class="comment">file itself: libisoburn/libisoburn.h .</span> <a name="l00136"></a>00136 <span class="comment">They shall link with -lisofs -lburn -lisoburn or with the .o files emerging</span> <a name="l00137"></a>00137 <span class="comment">from building those libraries from their sources.</span> <a name="l00138"></a>00138 <span class="comment"></span> <a name="l00139"></a>00139 <span class="comment">Applications must use 64 bit off_t.</span> <a name="l00140"></a>00140 <span class="comment">E.g. on 32-bit GNU/Linux by defining</span> <a name="l00141"></a>00141 <span class="comment"> #define _LARGEFILE_SOURCE</span> <a name="l00142"></a>00142 <span class="comment"> #define _FILE_OFFSET_BITS 64</span> <a name="l00143"></a>00143 <span class="comment">The minimum requirement is to interface with the library by 64 bit signed</span> <a name="l00144"></a>00144 <span class="comment">integers where libisofs.h or libisoburn.h prescribe off_t.</span> <a name="l00145"></a>00145 <span class="comment">Failure to do so may result in surprising malfunction or memory faults.</span> <a name="l00146"></a>00146 <span class="comment"></span> <a name="l00147"></a>00147 <span class="comment">Application files which include libisofs/libisofs.h or libisoburn/libisoburn.h</span> <a name="l00148"></a>00148 <span class="comment">must provide definitions for uint32_t and uint8_t.</span> <a name="l00149"></a>00149 <span class="comment">This can be achieved either:</span> <a name="l00150"></a>00150 <span class="comment">- by using autotools which will define HAVE_STDINT_H or HAVE_INTTYPES_H </span> <a name="l00151"></a>00151 <span class="comment"> according to its ./configure tests,</span> <a name="l00152"></a>00152 <span class="comment">- or by defining the macros HAVE_STDINT_H resp. HAVE_INTTYPES_H according</span> <a name="l00153"></a>00153 <span class="comment"> to the local situation,</span> <a name="l00154"></a>00154 <span class="comment">- or by appropriately defining uint32_t and uint8_t by other means,</span> <a name="l00155"></a>00155 <span class="comment"> e.g. by including inttypes.h before including libisofs.h and libisoburn.h</span> <a name="l00156"></a>00156 <span class="comment"></span> <a name="l00157"></a>00157 <span class="comment">*/</span> <a name="l00158"></a>00158 <span class="preprocessor">#ifdef HAVE_STDINT_H</span> <a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#include <stdint.h></span> <a name="l00160"></a>00160 <span class="preprocessor">#else</span> <a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#ifdef HAVE_INTTYPES_H</span> <a name="l00162"></a>00162 <span class="preprocessor"></span><span class="preprocessor">#include <inttypes.h></span> <a name="l00163"></a>00163 <span class="preprocessor">#endif</span> <a name="l00164"></a>00164 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00165"></a>00165 <span class="preprocessor"></span> <a name="l00166"></a>00166 <a name="l00167"></a>00167 <span class="comment">/* Important: If you add a public API function then add its name to file</span> <a name="l00168"></a>00168 <span class="comment"> libisoburn/libisoburn.ver</span> <a name="l00169"></a>00169 <span class="comment">*/</span> <a name="l00170"></a>00170 <a name="l00171"></a>00171 <a name="l00172"></a>00172 <span class="comment">/* API functions */</span> <a name="l00173"></a>00173 <a name="l00174"></a>00174 <span class="comment"></span> <a name="l00175"></a>00175 <span class="comment">/** Initialize libisoburn, libisofs and libburn.</span> <a name="l00176"></a>00176 <span class="comment"> Wrapper for : iso_init() and burn_initialize()</span> <a name="l00177"></a>00177 <span class="comment"> @since 0.1.0</span> <a name="l00178"></a>00178 <span class="comment"> @param msg A character array for eventual messages (e.g. with errors)</span> <a name="l00179"></a>00179 <span class="comment"> @param flag Bitfield for control purposes (unused yet, submit 0) </span> <a name="l00180"></a>00180 <span class="comment"> @return 1 indicates success, 0 is failure</span> <a name="l00181"></a>00181 <span class="comment">*/</span> <a name="l00182"></a>00182 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aa58f43296f4d524e74f11b33bbd338d4" title="Overview.">isoburn_initialize</a>(<span class="keywordtype">char</span> msg[1024], <span class="keywordtype">int</span> flag); <a name="l00183"></a>00183 <a name="l00184"></a>00184 <span class="comment"></span> <a name="l00185"></a>00185 <span class="comment">/** Check whether all features of header file libisoburn.h from the given</span> <a name="l00186"></a>00186 <span class="comment"> major.minor.micro revision triple can be delivered by the library version</span> <a name="l00187"></a>00187 <span class="comment"> which is performing this call.</span> <a name="l00188"></a>00188 <span class="comment"> An application of libisoburn can easily memorize the version of the</span> <a name="l00189"></a>00189 <span class="comment"> libisoburn.h header in its own code. Immediately after isoburn_initialize()</span> <a name="l00190"></a>00190 <span class="comment"> it should simply do this check:</span> <a name="l00191"></a>00191 <span class="comment"> if (! isoburn_is_compatible(isoburn_header_version_major,</span> <a name="l00192"></a>00192 <span class="comment"> isoburn_header_version_minor,</span> <a name="l00193"></a>00193 <span class="comment"> isoburn_header_version_micro, 0))</span> <a name="l00194"></a>00194 <span class="comment"> ...refuse to start the program with this dynamic library version...</span> <a name="l00195"></a>00195 <span class="comment"> @since 0.1.0</span> <a name="l00196"></a>00196 <span class="comment"> @param major obtained at build time</span> <a name="l00197"></a>00197 <span class="comment"> @param minor obtained at build time</span> <a name="l00198"></a>00198 <span class="comment"> @param micro obtained at build time</span> <a name="l00199"></a>00199 <span class="comment"> @param flag Bitfield for control purposes. Unused yet. Submit 0.</span> <a name="l00200"></a>00200 <span class="comment"> @return 1= library can work for caller</span> <a name="l00201"></a>00201 <span class="comment"> 0= library is not usable in some aspects. Caller must restrict</span> <a name="l00202"></a>00202 <span class="comment"> itself to an earlier API version or must not use this libray</span> <a name="l00203"></a>00203 <span class="comment"> at all.</span> <a name="l00204"></a>00204 <span class="comment">*/</span> <a name="l00205"></a>00205 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a14906202187dd02f7d5d8b231ae43c0f" title="Check whether all features of header file libisoburn.h from the given major.minor.micro revision triple can be delivered by the library version which is performing this call.">isoburn_is_compatible</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> micro, <span class="keywordtype">int</span> flag); <a name="l00206"></a>00206 <a name="l00207"></a>00207 <span class="comment"></span> <a name="l00208"></a>00208 <span class="comment">/** Obtain the three release version numbers of the library. These are the</span> <a name="l00209"></a>00209 <span class="comment"> numbers encountered by the application when linking with libisoburn,</span> <a name="l00210"></a>00210 <span class="comment"> i.e. possibly not before run time.</span> <a name="l00211"></a>00211 <span class="comment"> Better do not base the fundamental compatibility decision of an application</span> <a name="l00212"></a>00212 <span class="comment"> on these numbers. For a reliable check use isoburn_is_compatible().</span> <a name="l00213"></a>00213 <span class="comment"> @since 0.1.0</span> <a name="l00214"></a>00214 <span class="comment"> @param major The maturity version (0 for now, as we are still learning)</span> <a name="l00215"></a>00215 <span class="comment"> @param minor The development goal version.</span> <a name="l00216"></a>00216 <span class="comment"> @param micro The development step version. This has an additional meaning:</span> <a name="l00217"></a>00217 <span class="comment"></span> <a name="l00218"></a>00218 <span class="comment"> Pare numbers indicate a version with frozen API. I.e. you can</span> <a name="l00219"></a>00219 <span class="comment"> rely on the same set of features to be present in all</span> <a name="l00220"></a>00220 <span class="comment"> published releases with that major.minor.micro combination.</span> <a name="l00221"></a>00221 <span class="comment"> Features of a pare release will stay available and ABI</span> <a name="l00222"></a>00222 <span class="comment"> compatible as long as the SONAME of libisoburn stays "1".</span> <a name="l00223"></a>00223 <span class="comment"> Currently there are no plans to ever change the SONAME.</span> <a name="l00224"></a>00224 <span class="comment"> </span> <a name="l00225"></a>00225 <span class="comment"> Odd numbers indicate that API upgrades are in progress.</span> <a name="l00226"></a>00226 <span class="comment"> I.e. new features might be already present or they might</span> <a name="l00227"></a>00227 <span class="comment"> be still missing. Newly introduced features may be changed</span> <a name="l00228"></a>00228 <span class="comment"> incompatibly or even be revoked before release of a pare</span> <a name="l00229"></a>00229 <span class="comment"> version.</span> <a name="l00230"></a>00230 <span class="comment"> So micro revisions {1,3,5,7,9} should never be used for</span> <a name="l00231"></a>00231 <span class="comment"> dynamic linking unless the proper library match can be</span> <a name="l00232"></a>00232 <span class="comment"> guaranteed by external circumstances.</span> <a name="l00233"></a>00233 <span class="comment"></span> <a name="l00234"></a>00234 <span class="comment"> @return 1 success, <=0 might in future become an error indication</span> <a name="l00235"></a>00235 <span class="comment">*/</span> <a name="l00236"></a>00236 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#aaf166fb1f5a1f566767601efc8062765" title="Obtain the three release version numbers of the library.">isoburn_version</a>(<span class="keywordtype">int</span> *major, <span class="keywordtype">int</span> *minor, <span class="keywordtype">int</span> *micro); <a name="l00237"></a>00237 <a name="l00238"></a>00238 <span class="comment"></span> <a name="l00239"></a>00239 <span class="comment">/** The minimum version of libisofs to be used with this version of libisoburn</span> <a name="l00240"></a>00240 <span class="comment"> at compile time.</span> <a name="l00241"></a>00241 <span class="comment"> @since 0.1.0</span> <a name="l00242"></a>00242 <span class="comment">*/</span> <a name="l00243"></a><a class="code" href="libisoburn_8h.html#a29cbc9fd7504ff2ac172e1082b099d2d">00243</a> <span class="preprocessor">#define isoburn_libisofs_req_major 1</span> <a name="l00244"></a><a class="code" href="libisoburn_8h.html#acaefba42509167733ab88b8bb4187c6a">00244</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_libisofs_req_minor 2</span> <a name="l00245"></a><a class="code" href="libisoburn_8h.html#afedecbd726e1be7a1d3792f036f398e6">00245</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_libisofs_req_micro 2 </span> <a name="l00246"></a>00246 <span class="preprocessor"></span><span class="comment"></span> <a name="l00247"></a>00247 <span class="comment">/** The minimum version of libburn to be used with this version of libisoburn</span> <a name="l00248"></a>00248 <span class="comment"> at compile time.</span> <a name="l00249"></a>00249 <span class="comment"> @since 0.1.0</span> <a name="l00250"></a>00250 <span class="comment">*/</span> <a name="l00251"></a><a class="code" href="libisoburn_8h.html#a8104e36f3cadcefb20a1e7cf54c96b62">00251</a> <span class="preprocessor">#define isoburn_libburn_req_major 1</span> <a name="l00252"></a><a class="code" href="libisoburn_8h.html#aaa714369f556775d559dcc359c2be9d6">00252</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_libburn_req_minor 2</span> <a name="l00253"></a><a class="code" href="libisoburn_8h.html#a7302a1366e58f869318bf0d0b895e739">00253</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_libburn_req_micro 0</span> <a name="l00254"></a>00254 <span class="preprocessor"></span><span class="comment"></span> <a name="l00255"></a>00255 <span class="comment">/** The minimum compile time requirements of libisoburn towards libjte are</span> <a name="l00256"></a>00256 <span class="comment"> the same as of a suitable libisofs towards libjte.</span> <a name="l00257"></a>00257 <span class="comment"> So use these macros from libisofs.h :</span> <a name="l00258"></a>00258 <span class="comment"> iso_libjte_req_major</span> <a name="l00259"></a>00259 <span class="comment"> iso_libjte_req_minor</span> <a name="l00260"></a>00260 <span class="comment"> iso_libjte_req_micro</span> <a name="l00261"></a>00261 <span class="comment"> @since 0.6.4</span> <a name="l00262"></a>00262 <span class="comment">*/</span> <a name="l00263"></a>00263 <span class="comment"></span> <a name="l00264"></a>00264 <span class="comment">/** The minimum version of libisofs to be used with this version of libisoburn</span> <a name="l00265"></a>00265 <span class="comment"> at runtime. This is checked already in isoburn_initialize() which will</span> <a name="l00266"></a>00266 <span class="comment"> refuse on outdated version. So this call is for information purposes after</span> <a name="l00267"></a>00267 <span class="comment"> successful startup only.</span> <a name="l00268"></a>00268 <span class="comment"> @since 0.1.0</span> <a name="l00269"></a>00269 <span class="comment"> @param major isoburn_libisofs_req_major as seen at build time</span> <a name="l00270"></a>00270 <span class="comment"> @param minor as seen at build time</span> <a name="l00271"></a>00271 <span class="comment"> @param micro as seen at build time</span> <a name="l00272"></a>00272 <span class="comment"> @return 1 success, <=0 might in future become an error indication</span> <a name="l00273"></a>00273 <span class="comment">*/</span> <a name="l00274"></a>00274 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a9d487d0c7b6757b9554237bb5850b0b8" title="The minimum compile time requirements of libisoburn towards libjte are the same as of a suitable libi...">isoburn_libisofs_req</a>(<span class="keywordtype">int</span> *major, <span class="keywordtype">int</span> *minor, <span class="keywordtype">int</span> *micro); <a name="l00275"></a>00275 <a name="l00276"></a>00276 <span class="comment"></span> <a name="l00277"></a>00277 <span class="comment">/** The minimum version of libjte to be used with this version of libisoburn</span> <a name="l00278"></a>00278 <span class="comment"> at runtime. The use of libjte is optional and depends on configure</span> <a name="l00279"></a>00279 <span class="comment"> tests. It can be prevented by ./configure option --disable-libjte .</span> <a name="l00280"></a>00280 <span class="comment"> This is checked already in isoburn_initialize() which will refuse on</span> <a name="l00281"></a>00281 <span class="comment"> outdated version. So this call is for information purposes after</span> <a name="l00282"></a>00282 <span class="comment"> successful startup only.</span> <a name="l00283"></a>00283 <span class="comment"> @since 0.6.4</span> <a name="l00284"></a>00284 <span class="comment">*/</span> <a name="l00285"></a>00285 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ab6b8d8dba36c5cea8d24223fee0a6fec" title="The minimum version of libjte to be used with this version of libisoburn at runtime.">isoburn_libjte_req</a>(<span class="keywordtype">int</span> *major, <span class="keywordtype">int</span> *minor, <span class="keywordtype">int</span> *micro); <a name="l00286"></a>00286 <a name="l00287"></a>00287 <span class="comment"></span> <a name="l00288"></a>00288 <span class="comment">/** The minimum version of libburn to be used with this version of libisoburn</span> <a name="l00289"></a>00289 <span class="comment"> at runtime. This is checked already in isoburn_initialize() which will</span> <a name="l00290"></a>00290 <span class="comment"> refuse on outdated version. So this call is for information purposes after</span> <a name="l00291"></a>00291 <span class="comment"> successful startup only.</span> <a name="l00292"></a>00292 <span class="comment"> @since 0.1.0</span> <a name="l00293"></a>00293 <span class="comment"> @param major isoburn_libburn_req_major as seen at build time</span> <a name="l00294"></a>00294 <span class="comment"> @param minor as seen at build time</span> <a name="l00295"></a>00295 <span class="comment"> @param micro as seen at build time</span> <a name="l00296"></a>00296 <span class="comment"> @return 1 success, <=0 might in future become an error indication</span> <a name="l00297"></a>00297 <span class="comment">*/</span> <a name="l00298"></a>00298 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ae3849780df7e041d4efbb3c06b1816c8" title="The minimum version of libburn to be used with this version of libisoburn at runtime.">isoburn_libburn_req</a>(<span class="keywordtype">int</span> *major, <span class="keywordtype">int</span> *minor, <span class="keywordtype">int</span> *micro); <a name="l00299"></a>00299 <a name="l00300"></a>00300 <span class="comment"></span> <a name="l00301"></a>00301 <span class="comment">/** These three release version numbers tell the revision of this header file</span> <a name="l00302"></a>00302 <span class="comment"> and of the API it describes. They are memorized by applications at build</span> <a name="l00303"></a>00303 <span class="comment"> time.</span> <a name="l00304"></a>00304 <span class="comment"> @since 0.1.0</span> <a name="l00305"></a>00305 <span class="comment">*/</span> <a name="l00306"></a><a class="code" href="libisoburn_8h.html#a19e35f892eb3322ca895a87a52812e5d">00306</a> <span class="preprocessor">#define isoburn_header_version_major 1</span> <a name="l00307"></a><a class="code" href="libisoburn_8h.html#a8316296232074ad0413a45f45db30d5f">00307</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_header_version_minor 2</span> <a name="l00308"></a><a class="code" href="libisoburn_8h.html#ac002a84b305a15866af5ff0f4dd81a3c">00308</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_header_version_micro 2</span> <a name="l00309"></a>00309 <span class="preprocessor"></span><span class="comment">/** Note:</span> <a name="l00310"></a>00310 <span class="comment"> Above version numbers are also recorded in configure.ac because libtool</span> <a name="l00311"></a>00311 <span class="comment"> wants them as parameters at build time.</span> <a name="l00312"></a>00312 <span class="comment"> For the library compatibility check, ISOBURN_*_VERSION in configure.ac</span> <a name="l00313"></a>00313 <span class="comment"> are not decisive. Only the three numbers here do matter.</span> <a name="l00314"></a>00314 <span class="comment">*/</span><span class="comment"></span> <a name="l00315"></a>00315 <span class="comment">/** Usage discussion:</span> <a name="l00316"></a>00316 <span class="comment"></span> <a name="l00317"></a>00317 <span class="comment">Some developers of the libburnia project have differing</span> <a name="l00318"></a>00318 <span class="comment">opinions how to ensure the compatibility of libaries</span> <a name="l00319"></a>00319 <span class="comment">and applications.</span> <a name="l00320"></a>00320 <span class="comment"></span> <a name="l00321"></a>00321 <span class="comment">It is about whether to use at compile time and at runtime</span> <a name="l00322"></a>00322 <span class="comment">the version numbers isoburn_header_version_* provided here.</span> <a name="l00323"></a>00323 <span class="comment">Thomas Schmitt advises to use them.</span> <a name="l00324"></a>00324 <span class="comment">Vreixo Formoso advises to use other means.</span> <a name="l00325"></a>00325 <span class="comment"></span> <a name="l00326"></a>00326 <span class="comment">At compile time:</span> <a name="l00327"></a>00327 <span class="comment"></span> <a name="l00328"></a>00328 <span class="comment">Vreixo Formoso advises to leave proper version matching</span> <a name="l00329"></a>00329 <span class="comment">to properly programmed checks in the the application's</span> <a name="l00330"></a>00330 <span class="comment">build system, which will eventually refuse compilation.</span> <a name="l00331"></a>00331 <span class="comment"></span> <a name="l00332"></a>00332 <span class="comment">Thomas Schmitt advises to use the macros defined here</span> <a name="l00333"></a>00333 <span class="comment">for comparison with the application's requirements of</span> <a name="l00334"></a>00334 <span class="comment">library revisions and to eventually break compilation.</span> <a name="l00335"></a>00335 <span class="comment"></span> <a name="l00336"></a>00336 <span class="comment">Both advises are combinable. I.e. be master of your</span> <a name="l00337"></a>00337 <span class="comment">build system and have #if checks in the source code</span> <a name="l00338"></a>00338 <span class="comment">of your application, nevertheless.</span> <a name="l00339"></a>00339 <span class="comment"></span> <a name="l00340"></a>00340 <span class="comment">At runtime (via *_is_compatible()):</span> <a name="l00341"></a>00341 <span class="comment"></span> <a name="l00342"></a>00342 <span class="comment">Vreixo Formoso advises to compare the application's</span> <a name="l00343"></a>00343 <span class="comment">requirements of library revisions with the runtime</span> <a name="l00344"></a>00344 <span class="comment">library. This is to allow runtime libraries which are</span> <a name="l00345"></a>00345 <span class="comment">young enough for the application but too old for</span> <a name="l00346"></a>00346 <span class="comment">the lib*.h files seen at compile time.</span> <a name="l00347"></a>00347 <span class="comment"></span> <a name="l00348"></a>00348 <span class="comment">Thomas Schmitt advises to compare the header</span> <a name="l00349"></a>00349 <span class="comment">revisions defined here with the runtime library.</span> <a name="l00350"></a>00350 <span class="comment">This is to enforce a strictly monotonous chain</span> <a name="l00351"></a>00351 <span class="comment">of revisions from app to header to library,</span> <a name="l00352"></a>00352 <span class="comment">at the cost of excluding some older libraries.</span> <a name="l00353"></a>00353 <span class="comment"></span> <a name="l00354"></a>00354 <span class="comment">These two advises are mutually exclusive.</span> <a name="l00355"></a>00355 <span class="comment"></span> <a name="l00356"></a>00356 <span class="comment">-----------------------------------------------------</span> <a name="l00357"></a>00357 <span class="comment"></span> <a name="l00358"></a>00358 <span class="comment">For an implementation of the Thomas Schmitt approach,</span> <a name="l00359"></a>00359 <span class="comment">see libisoburn/burn_wrap.c : isoburn_initialize()</span> <a name="l00360"></a>00360 <span class="comment">This connects libisoburn as "application" with libisofs</span> <a name="l00361"></a>00361 <span class="comment">as "library".</span> <a name="l00362"></a>00362 <span class="comment"></span> <a name="l00363"></a>00363 <span class="comment">The compatible part of Vreixo Formoso's approach is implemented</span> <a name="l00364"></a>00364 <span class="comment">in configure.ac LIBBURN_REQUIRED, LIBISOFS_REQUIRED.</span> <a name="l00365"></a>00365 <span class="comment">In isoburn_initialize() it would rather test by</span> <a name="l00366"></a>00366 <span class="comment"> iso_lib_is_compatible(isoburn_libisofs_req_major,...</span> <a name="l00367"></a>00367 <span class="comment">than by</span> <a name="l00368"></a>00368 <span class="comment"> iso_lib_is_compatible(iso_lib_header_version_major,...</span> <a name="l00369"></a>00369 <span class="comment">and would leave out the ugly compile time traps.</span> <a name="l00370"></a>00370 <span class="comment"></span> <a name="l00371"></a>00371 <span class="comment">*/</span> <a name="l00372"></a>00372 <a name="l00373"></a>00373 <span class="comment"></span> <a name="l00374"></a>00374 <span class="comment">/** Announce to the library an application provided method for immediate</span> <a name="l00375"></a>00375 <span class="comment"> delivery of messages. It is used when no drive is affected directly or</span> <a name="l00376"></a>00376 <span class="comment"> if the drive has no own msgs_submit() method attached by</span> <a name="l00377"></a>00377 <span class="comment"> isoburn_drive_set_msgs_submit.</span> <a name="l00378"></a>00378 <span class="comment"> If no method is preset or if the method is set to NULL then libisoburn</span> <a name="l00379"></a>00379 <span class="comment"> delivers its messages through the message queue of libburn.</span> <a name="l00380"></a>00380 <span class="comment"> @param msgs_submit The function call which implements the method</span> <a name="l00381"></a>00381 <span class="comment"> @param submit_handle Handle to be used as first argument of msgs_submit</span> <a name="l00382"></a>00382 <span class="comment"> @param submit_flag Flag to be used as last argument of msgs_submit</span> <a name="l00383"></a>00383 <span class="comment"> @param flag Unused yet, submit 0</span> <a name="l00384"></a>00384 <span class="comment"> @since 0.2.0</span> <a name="l00385"></a>00385 <span class="comment">*/</span> <a name="l00386"></a>00386 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ac5f08443402146b5b404c0ba3e81a799" title="Note: Above version numbers are also recorded in configure.ac because libtool wants them as parameter...">isoburn_set_msgs_submit</a>(<span class="keywordtype">int</span> (*msgs_submit)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">int</span> error_code, <a name="l00387"></a>00387 <span class="keywordtype">char</span> msg_text[], <span class="keywordtype">int</span> os_errno, <a name="l00388"></a>00388 <span class="keywordtype">char</span> severity[], <span class="keywordtype">int</span> flag), <a name="l00389"></a>00389 <span class="keywordtype">void</span> *submit_handle, <span class="keywordtype">int</span> submit_flag, <span class="keywordtype">int</span> flag); <a name="l00390"></a>00390 <a name="l00391"></a>00391 <span class="comment"></span> <a name="l00392"></a>00392 <span class="comment">/** Acquire a target drive by its filesystem path resp. libburn persistent</span> <a name="l00393"></a>00393 <span class="comment"> address.</span> <a name="l00394"></a>00394 <span class="comment"> Wrapper for: burn_drive_scan_and_grab()</span> <a name="l00395"></a>00395 <span class="comment"> @since 0.1.0</span> <a name="l00396"></a>00396 <span class="comment"> @param drive_infos On success returns a one element array with the drive</span> <a name="l00397"></a>00397 <span class="comment"> (cdrom/burner). Thus use with driveno 0 only. On failure</span> <a name="l00398"></a>00398 <span class="comment"> the array has no valid elements at all.</span> <a name="l00399"></a>00399 <span class="comment"> The returned array should be freed via burn_drive_info_free()</span> <a name="l00400"></a>00400 <span class="comment"> when the drive is no longer needed. But before this is done</span> <a name="l00401"></a>00401 <span class="comment"> one has to call isoburn_drive_release(drive_infos[0].drive).</span> <a name="l00402"></a>00402 <span class="comment"> @param adr The persistent address of the desired drive.</span> <a name="l00403"></a>00403 <span class="comment"> @param load 1 attempt to load the disc tray. 0 no attempt,rather failure.</span> <a name="l00404"></a>00404 <span class="comment"> @return 1 = success , 0 = drive not found , <0 = other error</span> <a name="l00405"></a>00405 <span class="comment">*/</span> <a name="l00406"></a>00406 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a99b60ccbeca26a24d14f3d3b6787c950" title="Acquire a target drive by its filesystem path resp.">isoburn_drive_scan_and_grab</a>(<span class="keyword">struct</span> burn_drive_info *drive_infos[], <a name="l00407"></a>00407 <span class="keywordtype">char</span>* adr, <span class="keywordtype">int</span> load); <a name="l00408"></a>00408 <a name="l00409"></a>00409 <span class="comment"></span> <a name="l00410"></a>00410 <span class="comment">/** Acquire a target drive by its filesystem path resp. libburn persistent</span> <a name="l00411"></a>00411 <span class="comment"> address. This is a modern successor of isoburn_drive_scan_and_grab(). </span> <a name="l00412"></a>00412 <span class="comment"> Wrapper for: burn_drive_scan_and_grab()</span> <a name="l00413"></a>00413 <span class="comment"> @since 0.1.2</span> <a name="l00414"></a>00414 <span class="comment"> @param drive_infos On success returns a one element array with the drive</span> <a name="l00415"></a>00415 <span class="comment"> (cdrom/burner). Thus use with driveno 0 only. On failure</span> <a name="l00416"></a>00416 <span class="comment"> the array has no valid elements at all.</span> <a name="l00417"></a>00417 <span class="comment"> The returned array should be freed via burn_drive_info_free()</span> <a name="l00418"></a>00418 <span class="comment"> when the drive is no longer needed. But before this is done</span> <a name="l00419"></a>00419 <span class="comment"> one has to call isoburn_drive_release(drive_infos[0].drive).</span> <a name="l00420"></a>00420 <span class="comment"> @param adr The persistent address of the desired drive.</span> <a name="l00421"></a>00421 <span class="comment"> @param flag bit0= attempt to load the disc tray.</span> <a name="l00422"></a>00422 <span class="comment"> Else: failure if not loaded.</span> <a name="l00423"></a>00423 <span class="comment"> bit1= regard overwriteable media as blank</span> <a name="l00424"></a>00424 <span class="comment"> bit2= if the drive is a regular disk file:</span> <a name="l00425"></a>00425 <span class="comment"> truncate it to the write start address when writing</span> <a name="l00426"></a>00426 <span class="comment"> begins</span> <a name="l00427"></a>00427 <span class="comment"> bit3= if the drive reports a read-only profile try to read</span> <a name="l00428"></a>00428 <span class="comment"> table of content by scanning for ISO image headers.</span> <a name="l00429"></a>00429 <span class="comment"> (depending on media type and drive this might</span> <a name="l00430"></a>00430 <span class="comment"> help or it might make the resulting toc even worse)</span> <a name="l00431"></a>00431 <span class="comment"> bit4= do not emulate table of content on overwriteable media</span> <a name="l00432"></a>00432 <span class="comment"> bit5= ignore ACL from external filesystems</span> <a name="l00433"></a>00433 <span class="comment"> bit6= ignore POSIX Extended Attributes from external</span> <a name="l00434"></a>00434 <span class="comment"> filesystems</span> <a name="l00435"></a>00435 <span class="comment"> bit7= pretend read-only profile and scan for table of content</span> <a name="l00436"></a>00436 <span class="comment"> bit8= re-assess already acquired (*drive_infos)[0] rather</span> <a name="l00437"></a>00437 <span class="comment"> than aquiring adr</span> <a name="l00438"></a>00438 <span class="comment"> @since 1.1.8</span> <a name="l00439"></a>00439 <span class="comment"> @return 1 = success , 0 = drive not found , <0 = other error</span> <a name="l00440"></a>00440 <span class="comment"></span> <a name="l00441"></a>00441 <span class="comment"> Please excuse the typo "aquire" in the function name.</span> <a name="l00442"></a>00442 <span class="comment">*/</span> <a name="l00443"></a>00443 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a09fd9613bc6e76fb1269d6b99a63e400" title="Acquire a target drive by its filesystem path resp.">isoburn_drive_aquire</a>(<span class="keyword">struct</span> burn_drive_info *drive_infos[], <a name="l00444"></a>00444 <span class="keywordtype">char</span>* adr, <span class="keywordtype">int</span> flag); <a name="l00445"></a>00445 <span class="comment"></span> <a name="l00446"></a>00446 <span class="comment">/** Acquire a drive from the burn_drive_info[] array which was obtained by</span> <a name="l00447"></a>00447 <span class="comment"> a previous call of burn_drive_scan(). </span> <a name="l00448"></a>00448 <span class="comment"> Wrapper for: burn_drive_grab()</span> <a name="l00449"></a>00449 <span class="comment"> @since 0.1.0</span> <a name="l00450"></a>00450 <span class="comment"> @param drive The drive to grab. E.g. drive_infos[1].drive .</span> <a name="l00451"></a>00451 <span class="comment"> Call isoburn_drive_release(drive) when it it no longer needed.</span> <a name="l00452"></a>00452 <span class="comment"> @param load 1 attempt to load the disc tray. 0 no attempt, rather failure.</span> <a name="l00453"></a>00453 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00454"></a>00454 <span class="comment">*/</span> <a name="l00455"></a>00455 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a36d843f4423996896e38ed84463d1348" title="Acquire a drive from the burn_drive_info[] array which was obtained by a previous call of burn_drive_...">isoburn_drive_grab</a>(<span class="keyword">struct</span> burn_drive *drive, <span class="keywordtype">int</span> load); <a name="l00456"></a>00456 <a name="l00457"></a>00457 <span class="comment"></span> <a name="l00458"></a>00458 <span class="comment">/** Attach to a drive an application provided method for immediate</span> <a name="l00459"></a>00459 <span class="comment"> delivery of messages.</span> <a name="l00460"></a>00460 <span class="comment"> If no method is set or if the method is set to NULL then libisoburn</span> <a name="l00461"></a>00461 <span class="comment"> delivers messages of the drive through the global msgs_submit() method</span> <a name="l00462"></a>00462 <span class="comment"> set by isoburn_set_msgs_submiti() or by the message queue of libburn.</span> <a name="l00463"></a>00463 <span class="comment"> @since 0.2.0</span> <a name="l00464"></a>00464 <span class="comment"> @param d The drive to which this function, handle and flag shall apply</span> <a name="l00465"></a>00465 <span class="comment"> @param msgs_submit The function call which implements the method</span> <a name="l00466"></a>00466 <span class="comment"> @param submit_handle Handle to be used as first argument of msgs_submit</span> <a name="l00467"></a>00467 <span class="comment"> @param submit_flag Flag to be used as last argument of msgs_submit</span> <a name="l00468"></a>00468 <span class="comment"> @param flag Unused yet, submit 0</span> <a name="l00469"></a>00469 <span class="comment">*/</span> <a name="l00470"></a>00470 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a76146832c4f46733da97e31891e0a3e6" title="Attach to a drive an application provided method for immediate delivery of messages.">isoburn_drive_set_msgs_submit</a>(<span class="keyword">struct</span> burn_drive *d, <a name="l00471"></a>00471 <span class="keywordtype">int</span> (*msgs_submit)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">int</span> error_code, <a name="l00472"></a>00472 <span class="keywordtype">char</span> msg_text[], <span class="keywordtype">int</span> os_errno, <a name="l00473"></a>00473 <span class="keywordtype">char</span> severity[], <span class="keywordtype">int</span> flag), <a name="l00474"></a>00474 <span class="keywordtype">void</span> *submit_handle, <span class="keywordtype">int</span> submit_flag, <span class="keywordtype">int</span> flag); <a name="l00475"></a>00475 <a name="l00476"></a>00476 <span class="comment"></span> <a name="l00477"></a>00477 <span class="comment">/** Inquire the medium status. Expect the whole spectrum of libburn BURN_DISC_*</span> <a name="l00478"></a>00478 <span class="comment"> with multi-session media. Emulated states with random access media are</span> <a name="l00479"></a>00479 <span class="comment"> BURN_DISC_BLANK and BURN_DISC_APPENDABLE.</span> <a name="l00480"></a>00480 <span class="comment"> Wrapper for: burn_disc_get_status()</span> <a name="l00481"></a>00481 <span class="comment"> @since 0.1.0</span> <a name="l00482"></a>00482 <span class="comment"> @param drive The drive to inquire.</span> <a name="l00483"></a>00483 <span class="comment"> @return The status of the drive, or what kind of disc is in it.</span> <a name="l00484"></a>00484 <span class="comment"> Note: BURN_DISC_UNGRABBED indicates wrong API usage</span> <a name="l00485"></a>00485 <span class="comment">*/</span> <a name="l00486"></a>00486 <span class="preprocessor">#ifdef __cplusplus</span> <a name="l00487"></a>00487 <span class="preprocessor"></span><span class="keyword">enum</span> burn::burn_disc_status <a class="code" href="libisoburn_8h.html#a105552999c6a7d81288fa2f9c3bfd682" title="Inquire the medium status.">isoburn_disc_get_status</a>(<span class="keyword">struct</span> burn_drive *drive); <a name="l00488"></a>00488 <span class="preprocessor">#else</span> <a name="l00489"></a>00489 <span class="preprocessor"></span><span class="keyword">enum</span> burn_disc_status <a class="code" href="libisoburn_8h.html#a105552999c6a7d81288fa2f9c3bfd682" title="Inquire the medium status.">isoburn_disc_get_status</a>(<span class="keyword">struct</span> burn_drive *drive); <a name="l00490"></a>00490 <span class="preprocessor">#endif</span> <a name="l00491"></a>00491 <span class="preprocessor"></span> <a name="l00492"></a>00492 <span class="comment"></span> <a name="l00493"></a>00493 <span class="comment">/** Tells whether the medium can be treated by isoburn_disc_erase().</span> <a name="l00494"></a>00494 <span class="comment"> Wrapper for: burn_disc_erasable()</span> <a name="l00495"></a>00495 <span class="comment"> @since 0.1.0</span> <a name="l00496"></a>00496 <span class="comment"> @param d The drive to inquire.</span> <a name="l00497"></a>00497 <span class="comment"> @return 0=not erasable , else erasable</span> <a name="l00498"></a>00498 <span class="comment">*/</span> <a name="l00499"></a>00499 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a0013002bd2f7011bbf059af9eafd61df" title="Tells whether the medium can be treated by isoburn_disc_erase().">isoburn_disc_erasable</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l00500"></a>00500 <a name="l00501"></a>00501 <span class="comment"></span> <a name="l00502"></a>00502 <span class="comment">/** Mark the medium as blank. With multi-session media this will call</span> <a name="l00503"></a>00503 <span class="comment"> burn_disc_erase(). With random access media, an eventual ISO-9660</span> <a name="l00504"></a>00504 <span class="comment"> filesystem will get invalidated by altering its start blocks on the medium.</span> <a name="l00505"></a>00505 <span class="comment"> In case of success, the medium is in status BURN_DISC_BLANK afterwards.</span> <a name="l00506"></a>00506 <span class="comment"> Wrapper for: burn_disc_erase()</span> <a name="l00507"></a>00507 <span class="comment"> @since 0.1.0</span> <a name="l00508"></a>00508 <span class="comment"> @param drive The drive with the medium to erase.</span> <a name="l00509"></a>00509 <span class="comment"> @param fast 1=fast erase, 0=thorough erase</span> <a name="l00510"></a>00510 <span class="comment"> With DVD-RW, fast erase yields media incapable of multi-session.</span> <a name="l00511"></a>00511 <span class="comment">*/</span> <a name="l00512"></a>00512 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#a4c272b8eb0e270ad4b8db520ffde1985" title="Mark the medium as blank.">isoburn_disc_erase</a>(<span class="keyword">struct</span> burn_drive *drive, <span class="keywordtype">int</span> fast); <a name="l00513"></a>00513 <a name="l00514"></a>00514 <span class="comment"></span> <a name="l00515"></a>00515 <span class="comment">/** Set up isoburn_disc_get_msc1() to return a fabricated value.</span> <a name="l00516"></a>00516 <span class="comment"> This makes only sense between aquiring the drive and reading the</span> <a name="l00517"></a>00517 <span class="comment"> image. After isoburn_read_image() it will confuse the coordination</span> <a name="l00518"></a>00518 <span class="comment"> of libisoburn and libisofs.</span> <a name="l00519"></a>00519 <span class="comment"> Note: Sessions and tracks are counted beginning with 1, not with 0.</span> <a name="l00520"></a>00520 <span class="comment"> @since 0.1.6</span> <a name="l00521"></a>00521 <span class="comment"> @param d The drive where msc1 is to be set</span> <a name="l00522"></a>00522 <span class="comment"> @param adr_mode Determines how to interpret adr_value and to set msc1.</span> <a name="l00523"></a>00523 <span class="comment"> If adr_value shall represent a number then decimal ASCII</span> <a name="l00524"></a>00524 <span class="comment"> digits are expected.</span> <a name="l00525"></a>00525 <span class="comment"> 0= start lba of last session in TOC, ignore adr_value</span> <a name="l00526"></a>00526 <span class="comment"> 1= start lba of session number given by adr_value</span> <a name="l00527"></a>00527 <span class="comment"> 2= start lba of track given number by adr_value</span> <a name="l00528"></a>00528 <span class="comment"> 3= adr_value itself is the lba to be used</span> <a name="l00529"></a>00529 <span class="comment"> 4= start lba of last session with volume id</span> <a name="l00530"></a>00530 <span class="comment"> given by adr_value</span> <a name="l00531"></a>00531 <span class="comment"> @param adr_value A string describing the value to be eventually used.</span> <a name="l00532"></a>00532 <span class="comment"> @param flag Bitfield for control purposes.</span> <a name="l00533"></a>00533 <span class="comment"> bit0= @since 0.2.2</span> <a name="l00534"></a>00534 <span class="comment"> with adr_mode 3: adr_value might be 16 blocks too high</span> <a name="l00535"></a>00535 <span class="comment"> (e.g. -C stemming from growisofs). Probe for ISO head</span> <a name="l00536"></a>00536 <span class="comment"> at adr_value-16 and eventually adjust setting. </span> <a name="l00537"></a>00537 <span class="comment"> bit1= insist in seeing a disc object with at least one session</span> <a name="l00538"></a>00538 <span class="comment"> bit2= with adr_mode 4: use adr_value as regular expression</span> <a name="l00539"></a>00539 <span class="comment">*/</span> <a name="l00540"></a>00540 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aef16c1cfed6fcfdf6fbd9b691b6f9b60" title="Set up isoburn_disc_get_msc1() to return a fabricated value.">isoburn_set_msc1</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keywordtype">int</span> adr_mode, <span class="keywordtype">char</span> *adr_value, <a name="l00541"></a>00541 <span class="keywordtype">int</span> flag); <a name="l00542"></a>00542 <a name="l00543"></a>00543 <a name="l00544"></a>00544 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l00545"></a>00545 <span class="comment">/* </span> <a name="l00546"></a>00546 <span class="comment"></span> <a name="l00547"></a>00547 <span class="comment"> Wrappers for emulation of TOC on overwriteable media</span> <a name="l00548"></a>00548 <span class="comment"></span> <a name="l00549"></a>00549 <span class="comment"> Media which match the overwriteable usage model lack of a history of sessions</span> <a name="l00550"></a>00550 <span class="comment"> and tracks. libburn will not even hand out a burn_disc object for them and</span> <a name="l00551"></a>00551 <span class="comment"> always declare them blank. libisoburn checks for a valid ISO filesystem</span> <a name="l00552"></a>00552 <span class="comment"> header at LBA 0 and eventually declares them appendable.</span> <a name="l00553"></a>00553 <span class="comment"> Nevertheless one can only determine an upper limit of the size of the overall</span> <a name="l00554"></a>00554 <span class="comment"> image (by isoburn_get_min_start_byte()) but not a list of stored sessions</span> <a name="l00555"></a>00555 <span class="comment"> and their LBAs, as it is possible with true multi-session media.</span> <a name="l00556"></a>00556 <span class="comment"></span> <a name="l00557"></a>00557 <span class="comment"> The following wrappers add the capability to obtain a session and track TOC</span> <a name="l00558"></a>00558 <span class="comment"> from emulated multi-session images on overwriteables if the first session</span> <a name="l00559"></a>00559 <span class="comment"> was written by libisoburn-0.1.6 or later (i.e. with a header copy at LBA 32).</span> <a name="l00560"></a>00560 <span class="comment"></span> <a name="l00561"></a>00561 <span class="comment"> Be aware that the structs emitted by these isoburn calls are not compatible</span> <a name="l00562"></a>00562 <span class="comment"> with the libburn structs. I.e. you may use them only with isoburn_toc_*</span> <a name="l00563"></a>00563 <span class="comment"> calls. </span> <a name="l00564"></a>00564 <span class="comment"> isoburn_toc_disc needs to be freed after use. isoburn_toc_session and</span> <a name="l00565"></a>00565 <span class="comment"> isoburn_toc_track vanish together with their isoburn_toc_disc.</span> <a name="l00566"></a>00566 <span class="comment">*/</span> <a name="l00567"></a>00567 <a name="l00568"></a>00568 <span class="comment">/* Opaque handles to media, session, track */</span> <a name="l00569"></a>00569 <span class="keyword">struct </span>isoburn_toc_disc; <a name="l00570"></a>00570 <span class="keyword">struct </span>isoburn_toc_session; <a name="l00571"></a>00571 <span class="keyword">struct </span>isoburn_toc_track; <a name="l00572"></a>00572 <a name="l00573"></a>00573 <span class="comment"></span> <a name="l00574"></a>00574 <span class="comment">/** Obtain a master handle for the table of content.</span> <a name="l00575"></a>00575 <span class="comment"> This handle governs allocated resources which have to be released by</span> <a name="l00576"></a>00576 <span class="comment"> isoburn_toc_disc_free() when no longer needed.</span> <a name="l00577"></a>00577 <span class="comment"> Wrapper for: burn_drive_get_disc()</span> <a name="l00578"></a>00578 <span class="comment"> @since 0.1.6</span> <a name="l00579"></a>00579 <span class="comment"> @param d The drive with the medium to inspect</span> <a name="l00580"></a>00580 <span class="comment"> @return NULL in case there is no content info, else it is a valid handle</span> <a name="l00581"></a>00581 <span class="comment">*/</span> <a name="l00582"></a>00582 <span class="keyword">struct </span>isoburn_toc_disc *<a class="code" href="libisoburn_8h.html#ad44c170ef0efed537e5dd6b5f3a5f501" title="Obtain a master handle for the table of content.">isoburn_toc_drive_get_disc</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l00583"></a>00583 <a name="l00584"></a>00584 <span class="comment"></span> <a name="l00585"></a>00585 <span class="comment">/** Tell the number of 2048 byte blocks covered by the table of content.</span> <a name="l00586"></a>00586 <span class="comment"> This number includes the eventual gaps between sessions and tracks.</span> <a name="l00587"></a>00587 <span class="comment"> So this call is not really a wrapper for burn_disc_get_sectors().</span> <a name="l00588"></a>00588 <span class="comment"> @since 0.1.6</span> <a name="l00589"></a>00589 <span class="comment"> @param disc The master handle of the medium</span> <a name="l00590"></a>00590 <span class="comment"> @return Number of blocks, <=0 indicates unknown or unreadable state</span> <a name="l00591"></a>00591 <span class="comment">*/</span> <a name="l00592"></a>00592 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a66686b2eeed685343be5b79456b4e6a7" title="Tell the number of 2048 byte blocks covered by the table of content.">isoburn_toc_disc_get_sectors</a>(<span class="keyword">struct</span> isoburn_toc_disc *disc); <a name="l00593"></a>00593 <a name="l00594"></a>00594 <span class="comment"></span> <a name="l00595"></a>00595 <span class="comment">/** Get the array of session handles from the table of content.</span> <a name="l00596"></a>00596 <span class="comment"> Wrapper for: burn_disc_get_sessions()</span> <a name="l00597"></a>00597 <span class="comment"> @since 0.1.6</span> <a name="l00598"></a>00598 <span class="comment"> @param disc The master handle of the medium</span> <a name="l00599"></a>00599 <span class="comment"> @param num returns the number of sessions in the array</span> <a name="l00600"></a>00600 <span class="comment"> @return the address of the array of session handles</span> <a name="l00601"></a>00601 <span class="comment">*/</span> <a name="l00602"></a>00602 <span class="keyword">struct </span>isoburn_toc_session **<a class="code" href="libisoburn_8h.html#a05d91853be0ff5ad282aabbbdbef2249" title="Get the array of session handles from the table of content.">isoburn_toc_disc_get_sessions</a>( <a name="l00603"></a>00603 <span class="keyword">struct</span> isoburn_toc_disc *disc, <span class="keywordtype">int</span> *num); <a name="l00604"></a>00604 <a name="l00605"></a>00605 <span class="comment"></span> <a name="l00606"></a>00606 <span class="comment">/** Tell the number of 2048 byte blocks covered by a particular session.</span> <a name="l00607"></a>00607 <span class="comment"> Wrapper for: burn_session_get_sectors()</span> <a name="l00608"></a>00608 <span class="comment"> @since 0.1.6</span> <a name="l00609"></a>00609 <span class="comment"> @param s The session handle</span> <a name="l00610"></a>00610 <span class="comment"> @return number of blocks, <=0 indicates unknown or unreadable state</span> <a name="l00611"></a>00611 <span class="comment">*/</span> <a name="l00612"></a>00612 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aa8cd9a7a0fd8364f86596b9032964116" title="Tell the number of 2048 byte blocks covered by a particular session.">isoburn_toc_session_get_sectors</a>(<span class="keyword">struct</span> isoburn_toc_session *s); <a name="l00613"></a>00613 <a name="l00614"></a>00614 <span class="comment"></span> <a name="l00615"></a>00615 <span class="comment">/** Obtain a copy of the entry which describes the end of a particular session.</span> <a name="l00616"></a>00616 <span class="comment"> Wrapper for: burn_session_get_leadout_entry()</span> <a name="l00617"></a>00617 <span class="comment"> @since 0.1.6</span> <a name="l00618"></a>00618 <span class="comment"> @param s The session handle</span> <a name="l00619"></a>00619 <span class="comment"> @param entry A pointer to memory provided by the caller. It will be filled</span> <a name="l00620"></a>00620 <span class="comment"> with info according to struct burn_toc_entry as defined</span> <a name="l00621"></a>00621 <span class="comment"> in libburn.h</span> <a name="l00622"></a>00622 <span class="comment">*/</span> <a name="l00623"></a>00623 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#a34fe688ed75030b2c2940fc83f941d28" title="Obtain a copy of the entry which describes the end of a particular session.">isoburn_toc_session_get_leadout_entry</a>(<span class="keyword">struct</span> isoburn_toc_session *s, <a name="l00624"></a>00624 <span class="keyword">struct</span> burn_toc_entry *entry); <a name="l00625"></a>00625 <a name="l00626"></a>00626 <span class="comment"></span> <a name="l00627"></a>00627 <span class="comment">/** Get the array of track handles from a particular session.</span> <a name="l00628"></a>00628 <span class="comment"> Wrapper for: burn_session_get_tracks()</span> <a name="l00629"></a>00629 <span class="comment"> @since 0.1.6</span> <a name="l00630"></a>00630 <span class="comment"> @param s The session handle</span> <a name="l00631"></a>00631 <span class="comment"> @param num returns the number of tracks in the array</span> <a name="l00632"></a>00632 <span class="comment"> @return the address of the array of track handles,</span> <a name="l00633"></a>00633 <span class="comment"> NULL if no tracks are registered with session s</span> <a name="l00634"></a>00634 <span class="comment">*/</span> <a name="l00635"></a>00635 <span class="keyword">struct </span>isoburn_toc_track **<a class="code" href="libisoburn_8h.html#a12d267c47ac6de356c87ebaf0090adf5" title="Get the array of track handles from a particular session.">isoburn_toc_session_get_tracks</a>( <a name="l00636"></a>00636 <span class="keyword">struct</span> isoburn_toc_session *s, <span class="keywordtype">int</span> *num); <a name="l00637"></a>00637 <a name="l00638"></a>00638 <span class="comment"></span> <a name="l00639"></a>00639 <span class="comment">/** Obtain a copy of the entry which describes a particular track.</span> <a name="l00640"></a>00640 <span class="comment"> Wrapper for: burn_track_get_entry()</span> <a name="l00641"></a>00641 <span class="comment"> @since 0.1.6</span> <a name="l00642"></a>00642 <span class="comment"> @param t The track handle</span> <a name="l00643"></a>00643 <span class="comment"> @param entry A pointer to memory provided by the caller. It will be filled</span> <a name="l00644"></a>00644 <span class="comment"> with info according to struct burn_toc_entry as defined</span> <a name="l00645"></a>00645 <span class="comment"> in libburn.h</span> <a name="l00646"></a>00646 <span class="comment">*/</span> <a name="l00647"></a>00647 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#a1379c505013f8011444b25a2d7861da4" title="Obtain a copy of the entry which describes a particular track.">isoburn_toc_track_get_entry</a>(<span class="keyword">struct</span> isoburn_toc_track *t, <a name="l00648"></a>00648 <span class="keyword">struct</span> burn_toc_entry *entry); <a name="l00649"></a>00649 <a name="l00650"></a>00650 <span class="comment"></span> <a name="l00651"></a>00651 <span class="comment">/** Obtain eventual ISO image parameters of an emulated track. This info was</span> <a name="l00652"></a>00652 <span class="comment"> gained with much effort and thus gets cached in the track object.</span> <a name="l00653"></a>00653 <span class="comment"> If this call returns 1 then one can save a call of isoburn_read_iso_head()</span> <a name="l00654"></a>00654 <span class="comment"> with return mode 1 which could cause an expensive read operation.</span> <a name="l00655"></a>00655 <span class="comment"> @since 0.4.0</span> <a name="l00656"></a>00656 <span class="comment"> @param t The track handle</span> <a name="l00657"></a>00657 <span class="comment"> @param start_lba Returns the start address of the ISO session</span> <a name="l00658"></a>00658 <span class="comment"> @param image_blocks Returns the number of 2048 bytes blocks</span> <a name="l00659"></a>00659 <span class="comment"> @param volid Caller provided memory for the volume id</span> <a name="l00660"></a>00660 <span class="comment"> @param flag unused yet, submit 0</span> <a name="l00661"></a>00661 <span class="comment"> @return 0= not an emulated ISO session , 1= reply is valid</span> <a name="l00662"></a>00662 <span class="comment">*/</span> <a name="l00663"></a>00663 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a60d584c5ceaadf4e108b2882f14b5909" title="Obtain eventual ISO image parameters of an emulated track.">isoburn_toc_track_get_emul</a>(<span class="keyword">struct</span> isoburn_toc_track *t, <span class="keywordtype">int</span> *start_lba, <a name="l00664"></a>00664 <span class="keywordtype">int</span> *image_blocks, <span class="keywordtype">char</span> volid[33], <span class="keywordtype">int</span> flag); <a name="l00665"></a>00665 <a name="l00666"></a>00666 <a name="l00667"></a>00667 <span class="comment"></span> <a name="l00668"></a>00668 <span class="comment">/** Release the memory associated with a master handle of a medium.</span> <a name="l00669"></a>00669 <span class="comment"> The handle is invalid afterwards and may not be used any more.</span> <a name="l00670"></a>00670 <span class="comment"> Wrapper for: burn_disc_free()</span> <a name="l00671"></a>00671 <span class="comment"> @since 0.1.6</span> <a name="l00672"></a>00672 <span class="comment"> @param disc The master handle of the medium</span> <a name="l00673"></a>00673 <span class="comment">*/</span> <a name="l00674"></a>00674 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#ab2c5f1230b0cabbb15c88358e58a9a6c" title="Release the memory associated with a master handle of a medium.">isoburn_toc_disc_free</a>(<span class="keyword">struct</span> isoburn_toc_disc *disc); <a name="l00675"></a>00675 <a name="l00676"></a>00676 <span class="comment"></span> <a name="l00677"></a>00677 <span class="comment">/** Try whether the data at the given address look like a ISO 9660</span> <a name="l00678"></a>00678 <span class="comment"> image header and obtain its alleged size. Depending on the info mode</span> <a name="l00679"></a>00679 <span class="comment"> one other string of text information can be retrieved too.</span> <a name="l00680"></a>00680 <span class="comment"> @since 0.1.6</span> <a name="l00681"></a>00681 <span class="comment"> @param d The drive with the medium to inspect</span> <a name="l00682"></a>00682 <span class="comment"> @param lba The block number from where to read</span> <a name="l00683"></a>00683 <span class="comment"> @param image_blocks Returns the number of 2048 bytes blocks in the session</span> <a name="l00684"></a>00684 <span class="comment"> @param info Caller provided memory, enough to take eventual info reply</span> <a name="l00685"></a>00685 <span class="comment"> @param flag bit0-7: info return mode</span> <a name="l00686"></a>00686 <span class="comment"> 0= do not return anything in info (do not even touch it)</span> <a name="l00687"></a>00687 <span class="comment"> 1= copy volume id to info (info needs 33 bytes)</span> <a name="l00688"></a>00688 <span class="comment"> 2= @since 0.2.2 :</span> <a name="l00689"></a>00689 <span class="comment"> copy 64 kB header to info (needs 65536 bytes) </span> <a name="l00690"></a>00690 <span class="comment"> bit13= @since 0.2.2:</span> <a name="l00691"></a>00691 <span class="comment"> do not read head from medium but use first 64 kB from</span> <a name="l00692"></a>00692 <span class="comment"> info</span> <a name="l00693"></a>00693 <span class="comment"> bit14= check both half buffers (not only second)</span> <a name="l00694"></a>00694 <span class="comment"> return 2 if found in first block</span> <a name="l00695"></a>00695 <span class="comment"> bit15= return -1 on read error</span> <a name="l00696"></a>00696 <span class="comment"> @return >0 seems to be a valid ISO image, 0 format not recognized, <0 error</span> <a name="l00697"></a>00697 <span class="comment">*/</span> <a name="l00698"></a>00698 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a497e01b5e817364eabb606abaa5539ae" title="Try whether the data at the given address look like a ISO 9660 image header and obtain its alleged si...">isoburn_read_iso_head</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keywordtype">int</span> lba, <a name="l00699"></a>00699 <span class="keywordtype">int</span> *image_blocks, <span class="keywordtype">char</span> *info, <span class="keywordtype">int</span> flag); <a name="l00700"></a>00700 <a name="l00701"></a>00701 <span class="comment"></span> <a name="l00702"></a>00702 <span class="comment">/** Try to convert the given entity address into various entity addresses</span> <a name="l00703"></a>00703 <span class="comment"> which would describe it.</span> <a name="l00704"></a>00704 <span class="comment"> Note: Sessions and tracks are counted beginning with 1, not with 0.</span> <a name="l00705"></a>00705 <span class="comment"> @since 0.3.2</span> <a name="l00706"></a>00706 <span class="comment"> @param d The drive where msc1 is to be set</span> <a name="l00707"></a>00707 <span class="comment"> @param adr_mode Determines how to interpret the input adr_value.</span> <a name="l00708"></a>00708 <span class="comment"> If adr_value shall represent a number then decimal ASCII</span> <a name="l00709"></a>00709 <span class="comment"> digits are expected.</span> <a name="l00710"></a>00710 <span class="comment"> 0= start lba of last session in TOC, ignore adr_value</span> <a name="l00711"></a>00711 <span class="comment"> 1= start lba of session number given by adr_value</span> <a name="l00712"></a>00712 <span class="comment"> 2= start lba of track given number by adr_value</span> <a name="l00713"></a>00713 <span class="comment"> 3= adr_value itself is the lba to be used</span> <a name="l00714"></a>00714 <span class="comment"> 4= start lba of last session with volume id</span> <a name="l00715"></a>00715 <span class="comment"> given by adr_value</span> <a name="l00716"></a>00716 <span class="comment"> @param adr_value A string describing the value to be eventually used.</span> <a name="l00717"></a>00717 <span class="comment"> @param lba returns the block address of the entity, -1 means invalid</span> <a name="l00718"></a>00718 <span class="comment"> @param track returns the track number of the entity, -1 means invalid</span> <a name="l00719"></a>00719 <span class="comment"> @param session returns the session number of the entity, -1 means invalid</span> <a name="l00720"></a>00720 <span class="comment"> @param volid returns the volume id of the entity if it is a ISO session</span> <a name="l00721"></a>00721 <span class="comment"> @param flag Bitfield for control purposes.</span> <a name="l00722"></a>00722 <span class="comment"> bit2= with adr_mode 4: use adr_value as regular expression</span> <a name="l00723"></a>00723 <span class="comment"> @return <=0 error , 1 ok, ISO session, 2 ok, not an ISO session</span> <a name="l00724"></a>00724 <span class="comment">*/</span> <a name="l00725"></a>00725 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a0c358e49233528b7625bf3be0cbf00ec" title="Try to convert the given entity address into various entity addresses which would describe it...">isoburn_get_mount_params</a>(<span class="keyword">struct</span> burn_drive *d, <a name="l00726"></a>00726 <span class="keywordtype">int</span> adr_mode, <span class="keywordtype">char</span> *adr_value, <a name="l00727"></a>00727 <span class="keywordtype">int</span> *lba, <span class="keywordtype">int</span> *track, <span class="keywordtype">int</span> *session, <a name="l00728"></a>00728 <span class="keywordtype">char</span> volid[33], <span class="keywordtype">int</span> flag); <a name="l00729"></a>00729 <a name="l00730"></a>00730 <a name="l00731"></a>00731 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l00732"></a>00732 <span class="comment">/*</span> <a name="l00733"></a>00733 <span class="comment"></span> <a name="l00734"></a>00734 <span class="comment"> Options for image reading.</span> <a name="l00735"></a>00735 <span class="comment"></span> <a name="l00736"></a>00736 <span class="comment"> An application shall create an option set object by isoburn_ropt_new(),</span> <a name="l00737"></a>00737 <span class="comment"> program it by isoburn_ropt_set_*(), use it with isoburn_read_image(),</span> <a name="l00738"></a>00738 <span class="comment"> and finally delete it by isoburn_ropt_destroy().</span> <a name="l00739"></a>00739 <span class="comment"></span> <a name="l00740"></a>00740 <span class="comment">*/</span> <a name="l00741"></a>00741 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l00742"></a>00742 <a name="l00743"></a>00743 <span class="keyword">struct </span>isoburn_read_opts; <a name="l00744"></a>00744 <span class="comment"></span> <a name="l00745"></a>00745 <span class="comment">/** Produces a set of image read options, initialized with default values.</span> <a name="l00746"></a>00746 <span class="comment"> @since 0.1.0</span> <a name="l00747"></a>00747 <span class="comment"> @param o the newly created option set object</span> <a name="l00748"></a>00748 <span class="comment"> @param flag Bitfield for control purposes. Submit 0 for now.</span> <a name="l00749"></a>00749 <span class="comment"> @return 1=ok , <0 = failure</span> <a name="l00750"></a>00750 <span class="comment">*/</span> <a name="l00751"></a>00751 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#afd49e3c76e806a1f0bfadf32b3582e28" title="Produces a set of image read options, initialized with default values.">isoburn_ropt_new</a>(<span class="keyword">struct</span> isoburn_read_opts **o, <span class="keywordtype">int</span> flag); <a name="l00752"></a>00752 <a name="l00753"></a>00753 <span class="comment"></span> <a name="l00754"></a>00754 <span class="comment">/** Deletes an option set which was created by isoburn_ropt_new().</span> <a name="l00755"></a>00755 <span class="comment"> @since 0.1.0</span> <a name="l00756"></a>00756 <span class="comment"> @param o The option set to work on</span> <a name="l00757"></a>00757 <span class="comment"> @param flag Bitfield for control purposes. Submit 0 for now.</span> <a name="l00758"></a>00758 <span class="comment"> @return 1= **o destroyed , 0= *o was already NULL (harmless)</span> <a name="l00759"></a>00759 <span class="comment">*/</span> <a name="l00760"></a>00760 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a102229ed3d6485db02e9bc98e113e0a6" title="Deletes an option set which was created by isoburn_ropt_new().">isoburn_ropt_destroy</a>(<span class="keyword">struct</span> isoburn_read_opts **o, <span class="keywordtype">int</span> flag); <a name="l00761"></a>00761 <span class="comment"></span> <a name="l00762"></a>00762 <span class="comment">/** Sets the size and granularity of the cache which libisoburn provides to</span> <a name="l00763"></a>00763 <span class="comment"> libisofs for reading of ISO image data. This cache consists of several</span> <a name="l00764"></a>00764 <span class="comment"> tiles which are buffers of a given size. The ISO image is divided into</span> <a name="l00765"></a>00765 <span class="comment"> virtual tiles of that size. A cache tile may hold an in-memory copy</span> <a name="l00766"></a>00766 <span class="comment"> of such a virtual image tile.</span> <a name="l00767"></a>00767 <span class="comment"> When libisofs requests to read a block, then first the cache is inquired</span> <a name="l00768"></a>00768 <span class="comment"> whether it holds that block. If not, then the block is read via libburn</span> <a name="l00769"></a>00769 <span class="comment"> together with its neighbors in their virtual image tile into a free</span> <a name="l00770"></a>00770 <span class="comment"> cache tile. If no cache tile is free, then the one will be re-used which</span> <a name="l00771"></a>00771 <span class="comment"> has the longest time of not being hit by a read attempt.</span> <a name="l00772"></a>00772 <span class="comment"></span> <a name="l00773"></a>00773 <span class="comment"> A larger cache might speed up image loading by reducing the number of</span> <a name="l00774"></a>00774 <span class="comment"> libburn read calls on the directory tree. It might also help with</span> <a name="l00775"></a>00775 <span class="comment"> reading the content of many small files, if for some reason it is not an</span> <a name="l00776"></a>00776 <span class="comment"> option to sort access by LBA.</span> <a name="l00777"></a>00777 <span class="comment"> Caching will not provide much benefit with libburn "stdio:" drives,</span> <a name="l00778"></a>00778 <span class="comment"> because the operating system is supposed to provide the same speed-up</span> <a name="l00779"></a>00779 <span class="comment"> in a more flexible way.</span> <a name="l00780"></a>00780 <span class="comment"></span> <a name="l00781"></a>00781 <span class="comment"> @since 1.2.2</span> <a name="l00782"></a>00782 <span class="comment"> @param o The option set to work on.</span> <a name="l00783"></a>00783 <span class="comment"> It is permissible to submit NULL in order to just</span> <a name="l00784"></a>00784 <span class="comment"> have the parameters tested.</span> <a name="l00785"></a>00785 <span class="comment"> @param cache_tiles Number of tiles in the cache. Not less than 1.</span> <a name="l00786"></a>00786 <span class="comment"> Default is 32.</span> <a name="l00787"></a>00787 <span class="comment"> @param tile_blocks Number of blocks per tile. Must be a power of 2.</span> <a name="l00788"></a>00788 <span class="comment"> Default is 32.</span> <a name="l00789"></a>00789 <span class="comment"> cache_tiles * tile_blocks * 2048 must not exceed</span> <a name="l00790"></a>00790 <span class="comment"> 1073741824 (= 1 GiB).</span> <a name="l00791"></a>00791 <span class="comment"> @param flag Bitfield for control purposes. Unused yet. Submit 0.</span> <a name="l00792"></a>00792 <span class="comment"> @return <=0 error , >0 ok</span> <a name="l00793"></a>00793 <span class="comment">*/</span> <a name="l00794"></a>00794 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a142338d874b6f642b3159d9bb5c08b37" title="Sets the size and granularity of the cache which libisoburn provides to libisofs for reading of ISO i...">isoburn_ropt_set_data_cache</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00795"></a>00795 <span class="keywordtype">int</span> cache_tiles, <span class="keywordtype">int</span> tile_blocks, <span class="keywordtype">int</span> flag); <a name="l00796"></a>00796 <span class="comment"></span> <a name="l00797"></a>00797 <span class="comment">/** Inquire the current settings of isoburn_set_data_cache().</span> <a name="l00798"></a>00798 <span class="comment"> @since 1.2.2</span> <a name="l00799"></a>00799 <span class="comment"> @param o The option set to work on.</span> <a name="l00800"></a>00800 <span class="comment"> NULL has the same effect as flag bit0.</span> <a name="l00801"></a>00801 <span class="comment"> @param cache_tiles Will return the number of tiles in the cache.</span> <a name="l00802"></a>00802 <span class="comment"> @param tile_blocks Will return the number of blocks per tile.</span> <a name="l00803"></a>00803 <span class="comment"> @param set_flag Will return control bits. None are defined yet.</span> <a name="l00804"></a>00804 <span class="comment"> @param flag Bitfield for control purposes</span> <a name="l00805"></a>00805 <span class="comment"> bit0= return default values rather than current ones</span> <a name="l00806"></a>00806 <span class="comment"> @return <=0 error , >0 reply is valid</span> <a name="l00807"></a>00807 <span class="comment">*/</span> <a name="l00808"></a>00808 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a86ad7fbb4285213217d98763e8953413" title="Inquire the current settings of isoburn_set_data_cache().">isoburn_ropt_get_data_cache</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00809"></a>00809 <span class="keywordtype">int</span> *cache_tiles, <span class="keywordtype">int</span> *tile_blocks, <a name="l00810"></a>00810 <span class="keywordtype">int</span> *set_flag, <span class="keywordtype">int</span> flag); <a name="l00811"></a>00811 <a name="l00812"></a>00812 <span class="comment"></span> <a name="l00813"></a>00813 <span class="comment">/** Which existing ISO 9660 extensions in the image to read or not to read.</span> <a name="l00814"></a>00814 <span class="comment"> Whether to read the content of an existing image at all.</span> <a name="l00815"></a>00815 <span class="comment"> The bits can be combined by | resp. inquired by &.</span> <a name="l00816"></a>00816 <span class="comment"> @since 0.1.0</span> <a name="l00817"></a>00817 <span class="comment"> @param ext Bitfield:</span> <a name="l00818"></a>00818 <span class="comment"> bit0= norock</span> <a name="l00819"></a>00819 <span class="comment"> Do not read Rock Ridge extensions</span> <a name="l00820"></a>00820 <span class="comment"> bit1= nojoliet</span> <a name="l00821"></a>00821 <span class="comment"> Do not read Joliet extensions</span> <a name="l00822"></a>00822 <span class="comment"> bit2= noiso1999</span> <a name="l00823"></a>00823 <span class="comment"> Do not read ISO 9660:1999 enhanced tree</span> <a name="l00824"></a>00824 <span class="comment"> bit3= preferjoliet</span> <a name="l00825"></a>00825 <span class="comment"> When both Joliet and RR extensions are present, the RR</span> <a name="l00826"></a>00826 <span class="comment"> tree is used. If you prefer using Joliet, set this to 1.</span> <a name="l00827"></a>00827 <span class="comment"> bit4= pretend_blank</span> <a name="l00828"></a>00828 <span class="comment"> Always create empty image.Ignore any image on input drive.</span> <a name="l00829"></a>00829 <span class="comment"> bit5= noaaip</span> <a name="l00830"></a>00830 <span class="comment"> @since 0.3.4</span> <a name="l00831"></a>00831 <span class="comment"> Do not load AAIP information from image. This information</span> <a name="l00832"></a>00832 <span class="comment"> eventually contains ACL or XFS-style Extended Attributes.</span> <a name="l00833"></a>00833 <span class="comment"> bit6= noacl</span> <a name="l00834"></a>00834 <span class="comment"> @since 0.3.4</span> <a name="l00835"></a>00835 <span class="comment"> Do not obtain ACL from external filesystem objects (e.g.</span> <a name="l00836"></a>00836 <span class="comment"> local filesystem files).</span> <a name="l00837"></a>00837 <span class="comment"> bit7= noea</span> <a name="l00838"></a>00838 <span class="comment"> @since 0.3.4</span> <a name="l00839"></a>00839 <span class="comment"> Do not obtain XFS-style Extended Attributes from external</span> <a name="l00840"></a>00840 <span class="comment"> filesystem objects (e.g. local filesystem files).</span> <a name="l00841"></a>00841 <span class="comment"> bit8= noino</span> <a name="l00842"></a>00842 <span class="comment"> @since 0.4.0</span> <a name="l00843"></a>00843 <span class="comment"> Do not load eventual inode numbers from RRIP entry PX,</span> <a name="l00844"></a>00844 <span class="comment"> but generate a new unique inode number for each imported</span> <a name="l00845"></a>00845 <span class="comment"> IsoNode object.</span> <a name="l00846"></a>00846 <span class="comment"> PX inode numbers allow to mark families of hardlinks by</span> <a name="l00847"></a>00847 <span class="comment"> giving all family members the same inode number. libisofs</span> <a name="l00848"></a>00848 <span class="comment"> keeps the PX inode numbers unaltered when IsoNode objects</span> <a name="l00849"></a>00849 <span class="comment"> get written into an ISO image.</span> <a name="l00850"></a>00850 <span class="comment"> bit9= nomd5</span> <a name="l00851"></a>00851 <span class="comment"> @since 0.4.2</span> <a name="l00852"></a>00852 <span class="comment"> Do not load the eventual MD5 checksum array.</span> <a name="l00853"></a>00853 <span class="comment"> Do not check eventual session_md5 tags.</span> <a name="l00854"></a>00854 <span class="comment"> bit10= nomd5tag</span> <a name="l00855"></a>00855 <span class="comment"> @since 1.0.4</span> <a name="l00856"></a>00856 <span class="comment"> Do not check eventual session_md5 tags although bit9</span> <a name="l00857"></a>00857 <span class="comment"> is not set.</span> <a name="l00858"></a>00858 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00859"></a>00859 <span class="comment">*/</span> <a name="l00860"></a><a class="code" href="libisoburn_8h.html#a394bb48f1726cca237f9987f7a3b8cd7">00860</a> <span class="preprocessor">#define isoburn_ropt_norock 1</span> <a name="l00861"></a><a class="code" href="libisoburn_8h.html#afcac1b2e889c51a6c99b6c9a917b2220">00861</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_nojoliet 2</span> <a name="l00862"></a><a class="code" href="libisoburn_8h.html#abc151b239b42570d4c0e973915ca0244">00862</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_noiso1999 4</span> <a name="l00863"></a><a class="code" href="libisoburn_8h.html#a644f2579bcce5c5bf20d524adb4b038a">00863</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_preferjoliet 8</span> <a name="l00864"></a><a class="code" href="libisoburn_8h.html#a6bd94239eaa91b157a9db5928079ed07">00864</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_pretend_blank 16</span> <a name="l00865"></a><a class="code" href="libisoburn_8h.html#a13d9a71188cf60f0b6727310fdf73301">00865</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_noaaip 32</span> <a name="l00866"></a><a class="code" href="libisoburn_8h.html#ac8f0118d2e6a3d025fb00afdfadbe5ca">00866</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_noacl 64</span> <a name="l00867"></a><a class="code" href="libisoburn_8h.html#a2633f4ef48f2c97116e270708e9e841e">00867</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_noea 128</span> <a name="l00868"></a><a class="code" href="libisoburn_8h.html#a6c9ae6bfd14c7ffac9750fb4e2284c1e">00868</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_noino 256</span> <a name="l00869"></a><a class="code" href="libisoburn_8h.html#aa73791a3ccfdeb82feb9c2cb10054afb">00869</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_nomd5 512</span> <a name="l00870"></a><a class="code" href="libisoburn_8h.html#a664d112c0a2537aa9fd0f73f8a5ce1be">00870</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_nomd5tag 1024</span> <a name="l00871"></a>00871 <span class="preprocessor"></span> <a name="l00872"></a>00872 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#af66a66b76e7f1c77b796d9045b019fe9">isoburn_ropt_set_extensions</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <span class="keywordtype">int</span> ext); <a name="l00873"></a>00873 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#afdda19c029386e610306b0e7ed89535f">isoburn_ropt_get_extensions</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <span class="keywordtype">int</span> *ext); <a name="l00874"></a>00874 <a name="l00875"></a>00875 <span class="comment"></span> <a name="l00876"></a>00876 <span class="comment">/** Default attributes to use if no RockRidge extension gets loaded.</span> <a name="l00877"></a>00877 <span class="comment"> @since 0.1.0</span> <a name="l00878"></a>00878 <span class="comment"> @param o The option set to work on</span> <a name="l00879"></a>00879 <span class="comment"> @param uid user id number (see /etc/passwd)</span> <a name="l00880"></a>00880 <span class="comment"> @param gid group id number (see /etc/group)</span> <a name="l00881"></a>00881 <span class="comment"> @param mode permissions (not file type) as of man 2 stat.</span> <a name="l00882"></a>00882 <span class="comment"> With directories, r-permissions will automatically imply</span> <a name="l00883"></a>00883 <span class="comment"> x-permissions. See isoburn_ropt_set_default_dirperms() below.</span> <a name="l00884"></a>00884 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00885"></a>00885 <span class="comment">*/</span> <a name="l00886"></a>00886 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a699b16d196c1e4a1c862638d638f362c" title="Default attributes to use if no RockRidge extension gets loaded.">isoburn_ropt_set_default_perms</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00887"></a>00887 uid_t uid, gid_t gid, mode_t mode); <a name="l00888"></a>00888 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ad5191b91f46e178e7b6a773f48f64c0c">isoburn_ropt_get_default_perms</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00889"></a>00889 uid_t *uid, gid_t *gid, mode_t *mode); <a name="l00890"></a>00890 <span class="comment"></span> <a name="l00891"></a>00891 <span class="comment">/** Default attributes to use on directories if no RockRidge extension</span> <a name="l00892"></a>00892 <span class="comment"> gets loaded.</span> <a name="l00893"></a>00893 <span class="comment"> Above call isoburn_ropt_set_default_perms() automatically adds</span> <a name="l00894"></a>00894 <span class="comment"> x-permissions to r-permissions for directories. This call here may</span> <a name="l00895"></a>00895 <span class="comment"> be done afterwards to set independend permissions for directories,</span> <a name="l00896"></a>00896 <span class="comment"> especially to override the automatically added x-permissions.</span> <a name="l00897"></a>00897 <span class="comment"> @since 0.1.0</span> <a name="l00898"></a>00898 <span class="comment"> @param o The option set to work on</span> <a name="l00899"></a>00899 <span class="comment"> @param mode permissions (not file type) as of man 2 stat.</span> <a name="l00900"></a>00900 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00901"></a>00901 <span class="comment">*/</span> <a name="l00902"></a>00902 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a3e3a4f4e76f5bd5de5018725f2e977e7" title="Default attributes to use on directories if no RockRidge extension gets loaded.">isoburn_ropt_set_default_dirperms</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00903"></a>00903 mode_t mode); <a name="l00904"></a>00904 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ae5f6cdd66e49b14a95130a2fe0f2c854">isoburn_ropt_get_default_dirperms</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00905"></a>00905 mode_t *mode); <a name="l00906"></a>00906 <a name="l00907"></a>00907 <span class="comment"></span> <a name="l00908"></a>00908 <span class="comment">/** Set the character set for reading RR file names from ISO images.</span> <a name="l00909"></a>00909 <span class="comment"> @since 0.1.0</span> <a name="l00910"></a>00910 <span class="comment"> @param o The option set to work on</span> <a name="l00911"></a>00911 <span class="comment"> @param input_charset Set this to NULL to use the default locale charset</span> <a name="l00912"></a>00912 <span class="comment"> For selecting a particular character set, submit its</span> <a name="l00913"></a>00913 <span class="comment"> name, e.g. as listed by program iconv -l.</span> <a name="l00914"></a>00914 <span class="comment"> Example: "UTF-8". </span> <a name="l00915"></a>00915 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00916"></a>00916 <span class="comment">*/</span> <a name="l00917"></a>00917 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#af79c3e9d6a0d6736c4fb672d6c645c5e" title="Set the character set for reading RR file names from ISO images.">isoburn_ropt_set_input_charset</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00918"></a>00918 <span class="keywordtype">char</span> *input_charset); <a name="l00919"></a>00919 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a36dc54109456db1036e8419f7847fee8">isoburn_ropt_get_input_charset</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00920"></a>00920 <span class="keywordtype">char</span> **input_charset); <a name="l00921"></a>00921 <a name="l00922"></a>00922 <span class="comment"></span> <a name="l00923"></a>00923 <span class="comment">/**</span> <a name="l00924"></a>00924 <span class="comment"> Enable or disable methods to automatically choose an input charset.</span> <a name="l00925"></a>00925 <span class="comment"> This eventually overrides the name set via isoburn_ropt_set_input_charset()</span> <a name="l00926"></a>00926 <span class="comment"> @since 0.3.8</span> <a name="l00927"></a>00927 <span class="comment"> @param o The option set to work on</span> <a name="l00928"></a>00928 <span class="comment"> @param mode Bitfield for control purposes:</span> <a name="l00929"></a>00929 <span class="comment"> bit0= allow to set the input character set automatically from</span> <a name="l00930"></a>00930 <span class="comment"> attribute "isofs.cs" of root directory.</span> <a name="l00931"></a>00931 <span class="comment"> Submit any other bits with value 0.</span> <a name="l00932"></a>00932 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00933"></a>00933 <span class="comment"> */</span> <a name="l00934"></a>00934 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a446dc34fa13faebb12a24d9b676383b3" title="Enable or disable methods to automatically choose an input charset.">isoburn_ropt_set_auto_incharset</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <span class="keywordtype">int</span> mode); <a name="l00935"></a>00935 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a09ffa7e518972d9e62377720dace65eb">isoburn_ropt_get_auto_incharset</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <span class="keywordtype">int</span> *mode); <a name="l00936"></a>00936 <a name="l00937"></a>00937 <span class="comment"></span> <a name="l00938"></a>00938 <span class="comment">/** Control an offset to be applied to all block address pointers in the ISO</span> <a name="l00939"></a>00939 <span class="comment"> image in order to compensate for an eventual displacement of the image</span> <a name="l00940"></a>00940 <span class="comment"> relative to the start block address for which it was produced.</span> <a name="l00941"></a>00941 <span class="comment"> E.g. if track number 2 from CD gets copied into a disk file and shall then</span> <a name="l00942"></a>00942 <span class="comment"> be loaded as ISO filesystem, then the directory tree and all data file</span> <a name="l00943"></a>00943 <span class="comment"> content of the track copy will become readable by setting the track start</span> <a name="l00944"></a>00944 <span class="comment"> address as displacement and -1 as displacement_sign.</span> <a name="l00945"></a>00945 <span class="comment"> Data file content outside the track will of course not be accessible and</span> <a name="l00946"></a>00946 <span class="comment"> eventually produce read errors.</span> <a name="l00947"></a>00947 <span class="comment"> @since 0.6.6</span> <a name="l00948"></a>00948 <span class="comment"> @param o The option set to work on</span> <a name="l00949"></a>00949 <span class="comment"> @param displacement 0 or a positive number</span> <a name="l00950"></a>00950 <span class="comment"> @param displacement_sign Determines wether to add or subtract displacement</span> <a name="l00951"></a>00951 <span class="comment"> to block addresses before applying them to the</span> <a name="l00952"></a>00952 <span class="comment"> storage object for reading:</span> <a name="l00953"></a>00953 <span class="comment"> +1 = add , -1= subtract , else keep unaltered</span> <a name="l00954"></a>00954 <span class="comment">*/</span> <a name="l00955"></a>00955 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a12fb5b05223c507c0aaee737e69c4843" title="Control an offset to be applied to all block address pointers in the ISO image in order to compensate...">isoburn_ropt_set_displacement</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00956"></a>00956 uint32_t displacement, <span class="keywordtype">int</span> displacement_sign); <a name="l00957"></a>00957 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aceaeb9159f090815797246c691a1df63">isoburn_ropt_get_displacement</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00958"></a>00958 uint32_t *displacement, <span class="keywordtype">int</span> *displacement_sign); <a name="l00959"></a>00959 <a name="l00960"></a>00960 <span class="comment">/* If you get here because of a compilation error like</span> <a name="l00961"></a>00961 <span class="comment"></span> <a name="l00962"></a>00962 <span class="comment"> /usr/include/libisoburn/libisoburn.h:895: error:</span> <a name="l00963"></a>00963 <span class="comment"> expected declaration specifiers or '...' before 'uint32_t'</span> <a name="l00964"></a>00964 <span class="comment"></span> <a name="l00965"></a>00965 <span class="comment"> then see above paragraph "Application Constraints" about the definition</span> <a name="l00966"></a>00966 <span class="comment"> of uint32_t.</span> <a name="l00967"></a>00967 <span class="comment">*/</span> <a name="l00968"></a>00968 <a name="l00969"></a>00969 <span class="comment"></span> <a name="l00970"></a>00970 <span class="comment">/** After calling function isoburn_read_image() there are informations</span> <a name="l00971"></a>00971 <span class="comment"> available in the option set.</span> <a name="l00972"></a>00972 <span class="comment"> This info can be obtained as bits in parameter has_what. Like:</span> <a name="l00973"></a>00973 <span class="comment"> joliet_available = (has_what & isoburn_ropt_has_joliet);</span> <a name="l00974"></a>00974 <span class="comment"> @since 0.1.0</span> <a name="l00975"></a>00975 <span class="comment"> @param o The option set to work on</span> <a name="l00976"></a>00976 <span class="comment"> @param size Number of image data blocks, 2048 bytes each.</span> <a name="l00977"></a>00977 <span class="comment"> @param has_what Bitfield:</span> <a name="l00978"></a>00978 <span class="comment"> bit0= has_rockridge</span> <a name="l00979"></a>00979 <span class="comment"> RockRidge extension info is available (POSIX filesystem)</span> <a name="l00980"></a>00980 <span class="comment"> bit1= has_joliet</span> <a name="l00981"></a>00981 <span class="comment"> Joliet extension info is available (suitable for MS-Windows)</span> <a name="l00982"></a>00982 <span class="comment"> bit2= has_iso1999</span> <a name="l00983"></a>00983 <span class="comment"> ISO version 2 Enhanced Volume Descriptor is available.</span> <a name="l00984"></a>00984 <span class="comment"> This is rather exotic.</span> <a name="l00985"></a>00985 <span class="comment"> bit3= has_el_torito</span> <a name="l00986"></a>00986 <span class="comment"> El-Torito boot record is present</span> <a name="l00987"></a>00987 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l00988"></a>00988 <span class="comment">*/</span> <a name="l00989"></a><a class="code" href="libisoburn_8h.html#a024b18d6c8a47cbe6e64e79fb8ec27f2">00989</a> <span class="preprocessor">#define isoburn_ropt_has_rockridge 1</span> <a name="l00990"></a><a class="code" href="libisoburn_8h.html#a12ec8766f28f6454e337fb8d78ddc5e6">00990</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_has_joliet 2</span> <a name="l00991"></a><a class="code" href="libisoburn_8h.html#a3f050adb899292f7ed25dc1ba6916049">00991</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_has_iso1999 4</span> <a name="l00992"></a><a class="code" href="libisoburn_8h.html#a825263bf06ceac1cd22808514d94de1d">00992</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_ropt_has_el_torito 8</span> <a name="l00993"></a>00993 <span class="preprocessor"></span> <a name="l00994"></a>00994 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a1f86a92e2e15b0588a0fcc38f3f09995">isoburn_ropt_get_size_what</a>(<span class="keyword">struct</span> isoburn_read_opts *o, <a name="l00995"></a>00995 uint32_t *size, <span class="keywordtype">int</span> *has_what); <a name="l00996"></a>00996 <a name="l00997"></a>00997 <span class="comment">/* ts A90122 */</span> <a name="l00998"></a>00998 <span class="comment">/* >>> to be implemented:</span> <a name="l00999"></a>00999 <span class="comment">#define isoburn_ropt_has_acl 64</span> <a name="l01000"></a>01000 <span class="comment">#define isoburn_ropt_has_ea 128</span> <a name="l01001"></a>01001 <span class="comment">*/</span> <a name="l01002"></a>01002 <a name="l01003"></a>01003 <a name="l01004"></a>01004 <a name="l01005"></a>01005 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01006"></a>01006 <span class="comment">/* End of Options for image reading */</span> <a name="l01007"></a>01007 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01008"></a>01008 <a name="l01009"></a>01009 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01010"></a>01010 <span class="comment">/*</span> <a name="l01011"></a>01011 <span class="comment"></span> <a name="l01012"></a>01012 <span class="comment"> Options for image generation by libisofs and image transport to libburn.</span> <a name="l01013"></a>01013 <span class="comment"></span> <a name="l01014"></a>01014 <span class="comment"> An application shall create an option set by isoburn_igopt_new(),</span> <a name="l01015"></a>01015 <span class="comment"> program it by isoburn_igopt_set_*(), use it with either</span> <a name="l01016"></a>01016 <span class="comment"> isoburn_prepare_new_image() or isoburn_prepare_disc(), and finally delete</span> <a name="l01017"></a>01017 <span class="comment"> it by isoburn_igopt_destroy().</span> <a name="l01018"></a>01018 <span class="comment"></span> <a name="l01019"></a>01019 <span class="comment">*/</span> <a name="l01020"></a>01020 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01021"></a>01021 <a name="l01022"></a>01022 <span class="keyword">struct </span>isoburn_imgen_opts; <a name="l01023"></a>01023 <span class="comment"></span> <a name="l01024"></a>01024 <span class="comment">/** Produces a set of generation and transfer options, initialized with default</span> <a name="l01025"></a>01025 <span class="comment"> values.</span> <a name="l01026"></a>01026 <span class="comment"> @since 0.1.0</span> <a name="l01027"></a>01027 <span class="comment"> @param o the newly created option set object</span> <a name="l01028"></a>01028 <span class="comment"> @param flag Bitfield for control purposes. Submit 0 for now.</span> <a name="l01029"></a>01029 <span class="comment"> @return 1=ok , <0 = failure</span> <a name="l01030"></a>01030 <span class="comment">*/</span> <a name="l01031"></a>01031 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#afe8634f299c837274e026f760f8f07b8" title="Produces a set of generation and transfer options, initialized with default values.">isoburn_igopt_new</a>(<span class="keyword">struct</span> isoburn_imgen_opts **o, <span class="keywordtype">int</span> flag); <a name="l01032"></a>01032 <a name="l01033"></a>01033 <span class="comment"></span> <a name="l01034"></a>01034 <span class="comment">/** Deletes an option set which was created by isoburn_igopt_new().</span> <a name="l01035"></a>01035 <span class="comment"> @since 0.1.0</span> <a name="l01036"></a>01036 <span class="comment"> @param o The option set to give up</span> <a name="l01037"></a>01037 <span class="comment"> @param flag Bitfield for control purposes. Submit 0 for now.</span> <a name="l01038"></a>01038 <span class="comment"> @return 1= **o destroyed , 0= *o was already NULL (harmless)</span> <a name="l01039"></a>01039 <span class="comment">*/</span> <a name="l01040"></a>01040 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a66598ec6ace42a9266fd390e0b46868b" title="Deletes an option set which was created by isoburn_igopt_new().">isoburn_igopt_destroy</a>(<span class="keyword">struct</span> isoburn_imgen_opts **o, <span class="keywordtype">int</span> flag); <a name="l01041"></a>01041 <a name="l01042"></a>01042 <span class="comment"></span> <a name="l01043"></a>01043 <span class="comment">/** ISO level to write at.</span> <a name="l01044"></a>01044 <span class="comment"> @since 0.1.0</span> <a name="l01045"></a>01045 <span class="comment"> @param o The option set to work on</span> <a name="l01046"></a>01046 <span class="comment"> @param level is a term of the ISO 9660 standard. It should be one of:</span> <a name="l01047"></a>01047 <span class="comment"> 1= filenames restricted to form 8.3</span> <a name="l01048"></a>01048 <span class="comment"> 2= filenames allowed up to 31 characters</span> <a name="l01049"></a>01049 <span class="comment"> 3= file content may be larger than 4 GB - 1.</span> <a name="l01050"></a>01050 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01051"></a>01051 <span class="comment">*/</span> <a name="l01052"></a>01052 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ae3c8be579e14121451fe01a66d6ab146" title="ISO level to write at.">isoburn_igopt_set_level</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> level); <a name="l01053"></a>01053 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a7ac9b90d61040933bb2a88ff46966072">isoburn_igopt_get_level</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *level); <a name="l01054"></a>01054 <a name="l01055"></a>01055 <span class="comment"></span> <a name="l01056"></a>01056 <span class="comment">/** Which extensions to support.</span> <a name="l01057"></a>01057 <span class="comment"> @since 0.1.0</span> <a name="l01058"></a>01058 <span class="comment"> @param o The option set to work on</span> <a name="l01059"></a>01059 <span class="comment"> @param ext Bitfield:</span> <a name="l01060"></a>01060 <span class="comment"> bit0= rockridge</span> <a name="l01061"></a>01061 <span class="comment"> Rock Ridge extensions add POSIX file attributes like</span> <a name="l01062"></a>01062 <span class="comment"> owner, group, access permissions, long filenames. Very</span> <a name="l01063"></a>01063 <span class="comment"> advisable if the designed audience has Unix style systems.</span> <a name="l01064"></a>01064 <span class="comment"> bit1= joliet</span> <a name="l01065"></a>01065 <span class="comment"> Longer filenames for Windows systems.</span> <a name="l01066"></a>01066 <span class="comment"> Weaker than RockRidge, but also readable with GNU/Linux.</span> <a name="l01067"></a>01067 <span class="comment"> bit2= iso1999</span> <a name="l01068"></a>01068 <span class="comment"> This is rather exotic. Better do not surprise the readers.</span> <a name="l01069"></a>01069 <span class="comment"> bit3= hardlinks</span> <a name="l01070"></a>01070 <span class="comment"> Enable hardlink consolidation. IsoNodes which refer to the</span> <a name="l01071"></a>01071 <span class="comment"> same source object and have the same properties will get</span> <a name="l01072"></a>01072 <span class="comment"> the same ISO image inode numbers.</span> <a name="l01073"></a>01073 <span class="comment"> If combined with isoburn_igopt_rrip_version_1_10 below,</span> <a name="l01074"></a>01074 <span class="comment"> then the PX entry layout of RRIP-1.12 will be used within</span> <a name="l01075"></a>01075 <span class="comment"> RRIP-1.10 (mkisofs does this without causing visible trouble).</span> <a name="l01076"></a>01076 <span class="comment"> bit5= aaip</span> <a name="l01077"></a>01077 <span class="comment"> The libisofs specific SUSP based extension of ECMA-119 which</span> <a name="l01078"></a>01078 <span class="comment"> can encode ACL and XFS-style Extended Attributes.</span> <a name="l01079"></a>01079 <span class="comment"> bit6= session_md5</span> <a name="l01080"></a>01080 <span class="comment"> @since 0.4.2</span> <a name="l01081"></a>01081 <span class="comment"> Produce and write MD5 checksum tags of superblock, directory</span> <a name="l01082"></a>01082 <span class="comment"> tree, and the whole session stream.</span> <a name="l01083"></a>01083 <span class="comment"> bit7= file_md5</span> <a name="l01084"></a>01084 <span class="comment"> @since 0.4.2</span> <a name="l01085"></a>01085 <span class="comment"> Produce and write MD5 checksums for each single IsoFile.</span> <a name="l01086"></a>01086 <span class="comment"> bit8= file_stability (only together with file_md5)</span> <a name="l01087"></a>01087 <span class="comment"> @since 0.4.2</span> <a name="l01088"></a>01088 <span class="comment"> Compute MD5 of each file before copying it into the image and</span> <a name="l01089"></a>01089 <span class="comment"> compare this with the MD5 of the actual copying. If they do</span> <a name="l01090"></a>01090 <span class="comment"> not match then issue MISHAP event.</span> <a name="l01091"></a>01091 <span class="comment"> See also libisofs.h iso_write_opts_set_record_md5()</span> <a name="l01092"></a>01092 <span class="comment"> bit9= no_emul_toc</span> <a name="l01093"></a>01093 <span class="comment"> @since 0.5.8</span> <a name="l01094"></a>01094 <span class="comment"> On overwriteable media or random access files do not write</span> <a name="l01095"></a>01095 <span class="comment"> the first session to LBA 32 and do not copy the first 64kB</span> <a name="l01096"></a>01096 <span class="comment"> of the first session to LBA 0, but rather write the first</span> <a name="l01097"></a>01097 <span class="comment"> session to LBA 0 directly.</span> <a name="l01098"></a>01098 <span class="comment"> bit10= will_cancel</span> <a name="l01099"></a>01099 <span class="comment"> @since 0.6.6</span> <a name="l01100"></a>01100 <span class="comment"> Announce to libisofs that only the image size is desired</span> <a name="l01101"></a>01101 <span class="comment"> and that the write thread will be cancelled by</span> <a name="l01102"></a>01102 <span class="comment"> isoburn_cancel_prepared_write() before actual image writing</span> <a name="l01103"></a>01103 <span class="comment"> occurs. Without this, cancellation can cause a MISHAP event.</span> <a name="l01104"></a>01104 <span class="comment"> bit11= old_empty</span> <a name="l01105"></a>01105 <span class="comment"> @since 1.0.2</span> <a name="l01106"></a>01106 <span class="comment"> Let symbolic links and device files point to block 0, and let</span> <a name="l01107"></a>01107 <span class="comment"> empty data files point to the address of the Volume Descriptor</span> <a name="l01108"></a>01108 <span class="comment"> Set Terminator. This was done by libisofs in the past.</span> <a name="l01109"></a>01109 <span class="comment"> By default there is now a single dedicated block of zero bytes</span> <a name="l01110"></a>01110 <span class="comment"> after the end of the directory trees, of which the address</span> <a name="l01111"></a>01111 <span class="comment"> is used for all files without own content.</span> <a name="l01112"></a>01112 <span class="comment"></span> <a name="l01113"></a>01113 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01114"></a>01114 <span class="comment">*/</span> <a name="l01115"></a><a class="code" href="libisoburn_8h.html#aaeb44d1c64e7174ef447b8c2f127fa25">01115</a> <span class="preprocessor">#define isoburn_igopt_rockridge 1</span> <a name="l01116"></a><a class="code" href="libisoburn_8h.html#a21a7d10fb13f1f537c778b260825ff70">01116</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_joliet 2</span> <a name="l01117"></a><a class="code" href="libisoburn_8h.html#aefde6e441d27facb6305ea9bfc66c61d">01117</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_iso1999 4</span> <a name="l01118"></a><a class="code" href="libisoburn_8h.html#ad72fef46bb4b448569f07202c6c79030">01118</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_hardlinks 8</span> <a name="l01119"></a><a class="code" href="libisoburn_8h.html#ae268b9dc9c7734fa05c3a32e911cdd2f">01119</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_aaip 32</span> <a name="l01120"></a><a class="code" href="libisoburn_8h.html#a1c3324ecaa513debb488116404e018e2">01120</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_session_md5 64</span> <a name="l01121"></a><a class="code" href="libisoburn_8h.html#a07432fb5a1bf32e4687b4c706eced773">01121</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_file_md5 128</span> <a name="l01122"></a><a class="code" href="libisoburn_8h.html#a380ff183e25354cb58a9f5bca120916d">01122</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_file_stability 256</span> <a name="l01123"></a><a class="code" href="libisoburn_8h.html#a93c38842499b7b563dd946b7e483e1ee">01123</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_no_emul_toc 512</span> <a name="l01124"></a><a class="code" href="libisoburn_8h.html#a1d1f5700ed39543e80cca2108862df94">01124</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_will_cancel 1024</span> <a name="l01125"></a><a class="code" href="libisoburn_8h.html#a766dd0394363e6711cb82d3ed8be40df">01125</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_old_empty 2048</span> <a name="l01126"></a>01126 <span class="preprocessor"></span><span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a015d635128a8985505723fa7dd57d969">isoburn_igopt_set_extensions</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> ext); <a name="l01127"></a>01127 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ae8ba10b8c15e6f30214fa89591c007eb">isoburn_igopt_get_extensions</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *ext); <a name="l01128"></a>01128 <span class="comment"></span> <a name="l01129"></a>01129 <span class="comment">/** Relaxed constraints. Setting any of the bits to 1 break the specifications,</span> <a name="l01130"></a>01130 <span class="comment"> but it is supposed to work on most moderns systems. Use with caution.</span> <a name="l01131"></a>01131 <span class="comment"> @since 0.1.0</span> <a name="l01132"></a>01132 <span class="comment"> @param o The option set to work on</span> <a name="l01133"></a>01133 <span class="comment"> @param relax Bitfield:</span> <a name="l01134"></a>01134 <span class="comment"> bit0= omit_version_numbers</span> <a name="l01135"></a>01135 <span class="comment"> Omit the version number (";1") at the end of the</span> <a name="l01136"></a>01136 <span class="comment"> ISO-9660 and Joliet identifiers.</span> <a name="l01137"></a>01137 <span class="comment"> Version numbers are usually not used by readers.</span> <a name="l01138"></a>01138 <span class="comment"> bit1= allow_deep_paths</span> <a name="l01139"></a>01139 <span class="comment"> Allow ISO-9660 directory hierarchy to be deeper</span> <a name="l01140"></a>01140 <span class="comment"> than 8 levels.</span> <a name="l01141"></a>01141 <span class="comment"> bit2= allow_longer_paths</span> <a name="l01142"></a>01142 <span class="comment"> Allow path in the ISO-9660 tree to have more than</span> <a name="l01143"></a>01143 <span class="comment"> 255 characters.</span> <a name="l01144"></a>01144 <span class="comment"> bit3= max_37_char_filenames</span> <a name="l01145"></a>01145 <span class="comment"> Allow a single file or directory hierarchy to have</span> <a name="l01146"></a>01146 <span class="comment"> up to 37 characters. This is larger than the 31</span> <a name="l01147"></a>01147 <span class="comment"> characters allowed by ISO level 2, and the extra space</span> <a name="l01148"></a>01148 <span class="comment"> is taken from the version number, so this also forces</span> <a name="l01149"></a>01149 <span class="comment"> omit_version_numbers.</span> <a name="l01150"></a>01150 <span class="comment"> bit4= no_force_dots</span> <a name="l01151"></a>01151 <span class="comment"> ISO-9660 forces filenames to have a ".", that separates</span> <a name="l01152"></a>01152 <span class="comment"> file name from extension. libisofs adds it if original</span> <a name="l01153"></a>01153 <span class="comment"> filename has none. Set this to 1 to prevent this</span> <a name="l01154"></a>01154 <span class="comment"> behavior.</span> <a name="l01155"></a>01155 <span class="comment"> bit5= allow_lowercase </span> <a name="l01156"></a>01156 <span class="comment"> Allow lowercase characters in ISO-9660 filenames.</span> <a name="l01157"></a>01157 <span class="comment"> By default, only uppercase characters, numbers and</span> <a name="l01158"></a>01158 <span class="comment"> a few other characters are allowed.</span> <a name="l01159"></a>01159 <span class="comment"> bit6= allow_full_ascii</span> <a name="l01160"></a>01160 <span class="comment"> Allow all ASCII characters to be appear on an ISO-9660</span> <a name="l01161"></a>01161 <span class="comment"> filename. Note that "/" and "\0" characters are never</span> <a name="l01162"></a>01162 <span class="comment"> allowed, even in RR names.</span> <a name="l01163"></a>01163 <span class="comment"> bit7= joliet_longer_paths</span> <a name="l01164"></a>01164 <span class="comment"> Allow paths in the Joliet tree to have more than</span> <a name="l01165"></a>01165 <span class="comment"> 240 characters.</span> <a name="l01166"></a>01166 <span class="comment"> bit8= always_gmt</span> <a name="l01167"></a>01167 <span class="comment"> Write timestamps as GMT although the specs prescribe local</span> <a name="l01168"></a>01168 <span class="comment"> time with eventual non-zero timezone offset. Negative</span> <a name="l01169"></a>01169 <span class="comment"> timezones (west of GMT) can trigger bugs in some operating</span> <a name="l01170"></a>01170 <span class="comment"> systems which typically appear in mounted ISO images as if</span> <a name="l01171"></a>01171 <span class="comment"> the timezone shift from GMT was applied twice</span> <a name="l01172"></a>01172 <span class="comment"> (e.g. in New York 22:36 becomes 17:36).</span> <a name="l01173"></a>01173 <span class="comment"> bit9= rrip_version_1_10</span> <a name="l01174"></a>01174 <span class="comment"> Write Rock Ridge info as of specification RRIP-1.10 rather</span> <a name="l01175"></a>01175 <span class="comment"> than RRIP-1.12: signature "RRIP_1991A" rather than</span> <a name="l01176"></a>01176 <span class="comment"> "IEEE_1282", field PX without file serial number.</span> <a name="l01177"></a>01177 <span class="comment"> bit10= dir_rec_mtime</span> <a name="l01178"></a>01178 <span class="comment"> Store as ECMA-119 Directory Record timestamp the mtime</span> <a name="l01179"></a>01179 <span class="comment"> of the source rather than the image creation time.</span> <a name="l01180"></a>01180 <span class="comment"> bit11= aaip_susp_1_10</span> <a name="l01181"></a>01181 <span class="comment"> Write AAIP fields without announcing AAIP by an ER field and</span> <a name="l01182"></a>01182 <span class="comment"> without distinguishing RRIP fields from the AAIP field by</span> <a name="l01183"></a>01183 <span class="comment"> prefixed ES fields. This saves 5 to 10 bytes per file and</span> <a name="l01184"></a>01184 <span class="comment"> might avoid problems with readers which only accept RRIP.</span> <a name="l01185"></a>01185 <span class="comment"> SUSP-1.10 allows it, SUSP-1.12 frowns on it.</span> <a name="l01186"></a>01186 <span class="comment"> bit12= only_iso_numbers</span> <a name="l01187"></a>01187 <span class="comment"> Same as bit1 omit_version_number but restricted to the names</span> <a name="l01188"></a>01188 <span class="comment"> in the eventual Joliet tree.</span> <a name="l01189"></a>01189 <span class="comment"> @since 0.5.4</span> <a name="l01190"></a>01190 <span class="comment"> For reasons of backward compatibility it is not possible yet</span> <a name="l01191"></a>01191 <span class="comment"> to disable version numbers for ISO 9660 while enabling them</span> <a name="l01192"></a>01192 <span class="comment"> for Joliet. </span> <a name="l01193"></a>01193 <span class="comment"> bit13= no_j_force_dots</span> <a name="l01194"></a>01194 <span class="comment"> Same as no_force_dots but affecting the names in the eventual</span> <a name="l01195"></a>01195 <span class="comment"> Joliet tree rather than the ISO 9660 / ECMA-119 names.</span> <a name="l01196"></a>01196 <span class="comment"> @since 0.5.4</span> <a name="l01197"></a>01197 <span class="comment"> Previous versions added dots to Joliet names unconditionally.</span> <a name="l01198"></a>01198 <span class="comment"> bit14= allow_dir_id_ext</span> <a name="l01199"></a>01199 <span class="comment"> Convert directory names for ECMA-119 similar to other file</span> <a name="l01200"></a>01200 <span class="comment"> names, but do not force a dot or add a version number.</span> <a name="l01201"></a>01201 <span class="comment"> This violates ECMA-119 by allowing one "." and especially</span> <a name="l01202"></a>01202 <span class="comment"> ISO level 1 by allowing DOS style 8.3 names rather than</span> <a name="l01203"></a>01203 <span class="comment"> only 8 characters.</span> <a name="l01204"></a>01204 <span class="comment"> (mkisofs and its clones obviously do this violation.)</span> <a name="l01205"></a>01205 <span class="comment"> @since 1.0.0</span> <a name="l01206"></a>01206 <span class="comment"> bit15= joliet_long_names</span> <a name="l01207"></a>01207 <span class="comment"> Allow for Joliet leaf names up to 103 characters rather than</span> <a name="l01208"></a>01208 <span class="comment"> up to 64.</span> <a name="l01209"></a>01209 <span class="comment"> @since 1.0.6</span> <a name="l01210"></a>01210 <span class="comment"> bit16= joliet_rec_mtime</span> <a name="l01211"></a>01211 <span class="comment"> Like dir_rec_mtime, but for the Joliet tree.</span> <a name="l01212"></a>01212 <span class="comment"> @since 1.2.0</span> <a name="l01213"></a>01213 <span class="comment"> bit17= iso1999_rec_mtime</span> <a name="l01214"></a>01214 <span class="comment"> Like dir_rec_mtime, but for the ISO 9660:1999 tree.</span> <a name="l01215"></a>01215 <span class="comment"> @since 1.2.0</span> <a name="l01216"></a>01216 <span class="comment"> bit18= allow_7bit_ascii</span> <a name="l01217"></a>01217 <span class="comment"> Like allow_full_ascii, but only allowing 7-bit characters.</span> <a name="l01218"></a>01218 <span class="comment"> Lowercase letters get mapped to uppercase if not</span> <a name="l01219"></a>01219 <span class="comment"> allow_lowercase is set.</span> <a name="l01220"></a>01220 <span class="comment"> Gets overridden if allow_full_ascii is enabled.</span> <a name="l01221"></a>01221 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01222"></a>01222 <span class="comment">*/</span> <a name="l01223"></a><a class="code" href="libisoburn_8h.html#aa8bf2b0b7c5d068b4333038971b5469f">01223</a> <span class="preprocessor">#define isoburn_igopt_omit_version_numbers 1</span> <a name="l01224"></a><a class="code" href="libisoburn_8h.html#af489c4e35b0cee66495eeeecaa6b09aa">01224</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_deep_paths 2</span> <a name="l01225"></a><a class="code" href="libisoburn_8h.html#ab9dcf2065cdc8ffb4ce5c6163a3f672d">01225</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_longer_paths 4</span> <a name="l01226"></a><a class="code" href="libisoburn_8h.html#a8ddfdb996817078ab535ab859cd6435e">01226</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_max_37_char_filenames 8</span> <a name="l01227"></a><a class="code" href="libisoburn_8h.html#a4c897ba13aec5140911aa747633de677">01227</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_no_force_dots 16</span> <a name="l01228"></a><a class="code" href="libisoburn_8h.html#a401503afcf952e30607c78afebfec85e">01228</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_lowercase 32</span> <a name="l01229"></a><a class="code" href="libisoburn_8h.html#aadb8b50577286ad4c0a67e16c0f14197">01229</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_full_ascii 64</span> <a name="l01230"></a><a class="code" href="libisoburn_8h.html#a590291c7c773f025bd6b14c72154bd2a">01230</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_joliet_longer_paths 128</span> <a name="l01231"></a><a class="code" href="libisoburn_8h.html#a99ac44097258d0f635fde3f9823ed533">01231</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_always_gmt 256</span> <a name="l01232"></a><a class="code" href="libisoburn_8h.html#ab083fe1f17ea9e8e10fc745d96024262">01232</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_rrip_version_1_10 512</span> <a name="l01233"></a><a class="code" href="libisoburn_8h.html#a6e20c7cc05dff4181f893a695e8c33e1">01233</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_dir_rec_mtime 1024</span> <a name="l01234"></a><a class="code" href="libisoburn_8h.html#a19443d4e276d48bc97dd843fb60b5b93">01234</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_aaip_susp_1_10 2048</span> <a name="l01235"></a><a class="code" href="libisoburn_8h.html#a57e04b1ec5a272f357369aec73d51780">01235</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_only_iso_versions 4096</span> <a name="l01236"></a><a class="code" href="libisoburn_8h.html#a3960c7a2e5d8bc12c63046853da529a8">01236</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_no_j_force_dots 8192</span> <a name="l01237"></a><a class="code" href="libisoburn_8h.html#a81981ab4656a142dffb141a037781945">01237</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_dir_id_ext 16384</span> <a name="l01238"></a><a class="code" href="libisoburn_8h.html#a2e3c6bd17a5f980876c530fab0da5a9f">01238</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_joliet_long_names 32768</span> <a name="l01239"></a><a class="code" href="libisoburn_8h.html#a8a9920f86c1c5d8f3bfa39c0d4c514f8">01239</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_joliet_rec_mtime 0x10000</span> <a name="l01240"></a><a class="code" href="libisoburn_8h.html#a24fbabf87e48694a58f1a604e214886d">01240</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_iso1999_rec_mtime 0x20000</span> <a name="l01241"></a><a class="code" href="libisoburn_8h.html#a8aab44bc4401e30519fb4251bb56d1f4">01241</a> <span class="preprocessor"></span><span class="preprocessor">#define isoburn_igopt_allow_7bit_ascii 0x40000</span> <a name="l01242"></a>01242 <span class="preprocessor"></span><span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a3512e4b7f4cc27df4cdad091d2df63b6">isoburn_igopt_set_relaxed</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> relax); <a name="l01243"></a>01243 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a28bed4e96190a39656ad47a55b4eb3ca">isoburn_igopt_get_relaxed</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *relax); <a name="l01244"></a>01244 <a name="l01245"></a>01245 <span class="comment"></span> <a name="l01246"></a>01246 <span class="comment">/** If not isoburn_igopt_allow_deep_paths is in effect, then it may become</span> <a name="l01247"></a>01247 <span class="comment"> necessary to relocate directories so that no ECMA-119 file path</span> <a name="l01248"></a>01248 <span class="comment"> has more than 8 components. These directories are grafted into either</span> <a name="l01249"></a>01249 <span class="comment"> the root directory of the ISO image or into a dedicated relocation</span> <a name="l01250"></a>01250 <span class="comment"> directory. For details see libisofs.h.</span> <a name="l01251"></a>01251 <span class="comment"> Wrapper for: iso_write_opts_set_rr_reloc()</span> <a name="l01252"></a>01252 <span class="comment"> @since 1.2.2</span> <a name="l01253"></a>01253 <span class="comment"> @param o The option set to work on</span> <a name="l01254"></a>01254 <span class="comment"> @param name The name of the relocation directory in the root directory.</span> <a name="l01255"></a>01255 <span class="comment"> Do not prepend "/". An empty name or NULL will direct</span> <a name="l01256"></a>01256 <span class="comment"> relocated directories into the root directory. This is the</span> <a name="l01257"></a>01257 <span class="comment"> default.</span> <a name="l01258"></a>01258 <span class="comment"> If the given name does not exist in the root directory when</span> <a name="l01259"></a>01259 <span class="comment"> isoburn_disc_write() is called, and if there are directories</span> <a name="l01260"></a>01260 <span class="comment"> at path level 8, then directory /name will be created</span> <a name="l01261"></a>01261 <span class="comment"> automatically.</span> <a name="l01262"></a>01262 <span class="comment"> @param flags Bitfield for control purposes.</span> <a name="l01263"></a>01263 <span class="comment"> bit0= Mark the relocation directory by a Rock Ridge RE entry,</span> <a name="l01264"></a>01264 <span class="comment"> if it gets created during isoburn_disc_write(). This</span> <a name="l01265"></a>01265 <span class="comment"> will make it invisible for most Rock Ridge readers.</span> <a name="l01266"></a>01266 <span class="comment"> bit1= not settable via API (used internally)</span> <a name="l01267"></a>01267 <span class="comment"> @return > 0 success, <= 0 failure</span> <a name="l01268"></a>01268 <span class="comment">*/</span> <a name="l01269"></a>01269 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a91b3b35e43460d6966fbac10cca893a1" title="If not isoburn_igopt_allow_deep_paths is in effect, then it may become necessary to relocate director...">isoburn_igopt_set_rr_reloc</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">char</span> *name, <a name="l01270"></a>01270 <span class="keywordtype">int</span> flags); <a name="l01271"></a>01271 <span class="comment"></span> <a name="l01272"></a>01272 <span class="comment">/** Obtain the settings of isoburn_igopt_set_rr_reloc().</span> <a name="l01273"></a>01273 <span class="comment"> @since 1.2.2</span> <a name="l01274"></a>01274 <span class="comment"> @param o The option set to work on</span> <a name="l01275"></a>01275 <span class="comment"> @param name Will return NULL or a pointer to the name of the relocation</span> <a name="l01276"></a>01276 <span class="comment"> directory in the root directory. Do not alter or dispose the</span> <a name="l01277"></a>01277 <span class="comment"> memory which holds this name.</span> <a name="l01278"></a>01278 <span class="comment"> @param flags Will return the flags bitfield.</span> <a name="l01279"></a>01279 <span class="comment"> @return > 0 success, <= 0 failure</span> <a name="l01280"></a>01280 <span class="comment">*/</span> <a name="l01281"></a>01281 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a57cddb62d2cc2215e4962bd579f52122" title="Obtain the settings of isoburn_igopt_set_rr_reloc().">isoburn_igopt_get_rr_reloc</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">char</span> **name, <a name="l01282"></a>01282 <span class="keywordtype">int</span> *flags); <a name="l01283"></a>01283 <a name="l01284"></a>01284 <span class="comment"></span> <a name="l01285"></a>01285 <span class="comment">/** Caution: This option breaks any assumptions about names that</span> <a name="l01286"></a>01286 <span class="comment"> are supported by ECMA-119 specifications.</span> <a name="l01287"></a>01287 <span class="comment"> Try to omit any translation which would make a file name compliant to the</span> <a name="l01288"></a>01288 <span class="comment"> ECMA-119 rules. This includes and exceeds omit_version_numbers,</span> <a name="l01289"></a>01289 <span class="comment"> max_37_char_filenames, no_force_dots bit0, allow_full_ascii. Further it</span> <a name="l01290"></a>01290 <span class="comment"> prevents the conversion from local character set to ASCII.</span> <a name="l01291"></a>01291 <span class="comment"> The maximum name length is given by this call. If a filename exceeds</span> <a name="l01292"></a>01292 <span class="comment"> this length or cannot be recorded untranslated for other reasons, then</span> <a name="l01293"></a>01293 <span class="comment"> image production gets aborted.</span> <a name="l01294"></a>01294 <span class="comment"> Currently the length limit is 96 characters, because an ECMA-119 directory</span> <a name="l01295"></a>01295 <span class="comment"> record may at most have 254 bytes and up to 158 other bytes must fit into</span> <a name="l01296"></a>01296 <span class="comment"> the record. Probably 96 more bytes can be made free for the name in future.</span> <a name="l01297"></a>01297 <span class="comment"> @since 1.0.0</span> <a name="l01298"></a>01298 <span class="comment"> @param o The option set to work on</span> <a name="l01299"></a>01299 <span class="comment"> @param len 0 = disable this feature and perform name translation</span> <a name="l01300"></a>01300 <span class="comment"> according to other settings.</span> <a name="l01301"></a>01301 <span class="comment"> >0 = Omit any translation. Eventually abort image production</span> <a name="l01302"></a>01302 <span class="comment"> if a name is longer than the given value.</span> <a name="l01303"></a>01303 <span class="comment"> -1 = Like >0. Allow maximum possible length.</span> <a name="l01304"></a>01304 <span class="comment"> isoburn_igopt_get_untranslated_name_len() will tell the</span> <a name="l01305"></a>01305 <span class="comment"> effectively resulting value.</span> <a name="l01306"></a>01306 <span class="comment"> @return >0 success, <=0 failure</span> <a name="l01307"></a>01307 <span class="comment">*/</span> <a name="l01308"></a>01308 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#abc43f9c136f9b6204b95246c9e1b30d9" title="Caution: This option breaks any assumptions about names that are supported by ECMA-119 specifications...">isoburn_igopt_set_untranslated_name_len</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01309"></a>01309 <span class="keywordtype">int</span> len); <a name="l01310"></a>01310 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a73ebd3605b86af3dc31aea554bef624d">isoburn_igopt_get_untranslated_name_len</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01311"></a>01311 <span class="keywordtype">int</span> *len); <a name="l01312"></a>01312 <a name="l01313"></a>01313 <span class="comment"></span> <a name="l01314"></a>01314 <span class="comment">/** Whether and how files should be sorted.</span> <a name="l01315"></a>01315 <span class="comment"> @since 0.1.0</span> <a name="l01316"></a>01316 <span class="comment"> @param o The option set to work on</span> <a name="l01317"></a>01317 <span class="comment"> @param value Bitfield: bit0= sort_files_by_weight</span> <a name="l01318"></a>01318 <span class="comment"> files should be sorted based on their weight.</span> <a name="l01319"></a>01319 <span class="comment"> Weight is attributed to files in the image</span> <a name="l01320"></a>01320 <span class="comment"> by libisofs call iso_node_set_sort_weight().</span> <a name="l01321"></a>01321 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01322"></a>01322 <span class="comment">*/</span> <a name="l01323"></a><a class="code" href="libisoburn_8h.html#a1a3cf53e17ea0c8bae47eea38e060338">01323</a> <span class="preprocessor">#define isoburn_igopt_sort_files_by_weight 1</span> <a name="l01324"></a>01324 <span class="preprocessor"></span><span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#acd64727805d94584c2ec006348b5975b">isoburn_igopt_set_sort_files</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> value); <a name="l01325"></a>01325 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#adbb5f5230f8ade1a3c233ff7b32b3513">isoburn_igopt_get_sort_files</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *value); <a name="l01326"></a>01326 <a name="l01327"></a>01327 <span class="comment"></span> <a name="l01328"></a>01328 <span class="comment">/** Set the override values for files and directory permissions.</span> <a name="l01329"></a>01329 <span class="comment"> The parameters replace_* these take one of three values: 0, 1 or 2.</span> <a name="l01330"></a>01330 <span class="comment"> If 0, the corresponding attribute will be kept as set in the IsoNode</span> <a name="l01331"></a>01331 <span class="comment"> at the time of image generation.</span> <a name="l01332"></a>01332 <span class="comment"> If set to 1, the corresponding attrib. will be changed by a default</span> <a name="l01333"></a>01333 <span class="comment"> suitable value.</span> <a name="l01334"></a>01334 <span class="comment"> With value 2, the attrib. will be changed with the value specified</span> <a name="l01335"></a>01335 <span class="comment"> in the corresponding *_mode options. Note that only the permissions</span> <a name="l01336"></a>01336 <span class="comment"> are set, the file type remains unchanged.</span> <a name="l01337"></a>01337 <span class="comment"> @since 0.1.0</span> <a name="l01338"></a>01338 <span class="comment"> @param o The option set to work on</span> <a name="l01339"></a>01339 <span class="comment"> @param replace_dir_mode whether and how to override directories</span> <a name="l01340"></a>01340 <span class="comment"> @param replace_file_mode whether and how to override files of other type</span> <a name="l01341"></a>01341 <span class="comment"> @param dir_mode Mode to use on dirs with replace_dir_mode == 2.</span> <a name="l01342"></a>01342 <span class="comment"> @param file_mode; Mode to use on files with replace_file_mode == 2.</span> <a name="l01343"></a>01343 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01344"></a>01344 <span class="comment">*/</span> <a name="l01345"></a>01345 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a162f602a7923008f10328f7225f1db72" title="Set the override values for files and directory permissions.">isoburn_igopt_set_over_mode</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01346"></a>01346 <span class="keywordtype">int</span> replace_dir_mode, <span class="keywordtype">int</span> replace_file_mode, <a name="l01347"></a>01347 mode_t dir_mode, mode_t file_mode); <a name="l01348"></a>01348 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a405f8f5e44b56f568a172fa43a01d7e4">isoburn_igopt_get_over_mode</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01349"></a>01349 <span class="keywordtype">int</span> *replace_dir_mode, <span class="keywordtype">int</span> *replace_file_mode, <a name="l01350"></a>01350 mode_t *dir_mode, mode_t *file_mode); <a name="l01351"></a>01351 <span class="comment"></span> <a name="l01352"></a>01352 <span class="comment">/** Set the override values values for group id and user id.</span> <a name="l01353"></a>01353 <span class="comment"> The rules are like with above overriding of mode values. replace_* controls</span> <a name="l01354"></a>01354 <span class="comment"> whether and how. The other two parameters provide values for eventual use.</span> <a name="l01355"></a>01355 <span class="comment"> @since 0.1.0</span> <a name="l01356"></a>01356 <span class="comment"> @param o The option set to work on</span> <a name="l01357"></a>01357 <span class="comment"> @param replace_uid whether and how to override user ids</span> <a name="l01358"></a>01358 <span class="comment"> @param replace_gid whether and how to override group ids</span> <a name="l01359"></a>01359 <span class="comment"> @param uid User id to use with replace_uid == 2.</span> <a name="l01360"></a>01360 <span class="comment"> @param gid Group id to use on files with replace_gid == 2.</span> <a name="l01361"></a>01361 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01362"></a>01362 <span class="comment">*/</span> <a name="l01363"></a>01363 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a22a2a7ecc04fb62140ecf517ea055036" title="Set the override values values for group id and user id.">isoburn_igopt_set_over_ugid</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01364"></a>01364 <span class="keywordtype">int</span> replace_uid, <span class="keywordtype">int</span> replace_gid, <a name="l01365"></a>01365 uid_t uid, gid_t gid); <a name="l01366"></a>01366 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aac14c7f35e77cc847c1525a3fcc7b7d1">isoburn_igopt_get_over_ugid</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01367"></a>01367 <span class="keywordtype">int</span> *replace_uid, <span class="keywordtype">int</span> *replace_gid, <a name="l01368"></a>01368 uid_t *uid, gid_t *gid); <a name="l01369"></a>01369 <span class="comment"></span> <a name="l01370"></a>01370 <span class="comment">/** Set the charcter set to use for representing RR filenames in the image.</span> <a name="l01371"></a>01371 <span class="comment"> @since 0.1.0</span> <a name="l01372"></a>01372 <span class="comment"> @param o The option set to work on</span> <a name="l01373"></a>01373 <span class="comment"> @param output_charset Set this to NULL to use the default output charset.</span> <a name="l01374"></a>01374 <span class="comment"> For selecting a particular character set, submit its</span> <a name="l01375"></a>01375 <span class="comment"> name, e.g. as listed by program iconv -l.</span> <a name="l01376"></a>01376 <span class="comment"> Example: "UTF-8". </span> <a name="l01377"></a>01377 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01378"></a>01378 <span class="comment">*/</span> <a name="l01379"></a>01379 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a9f8dfcbf05419cc9e97c1b97f7f29d85" title="Set the charcter set to use for representing RR filenames in the image.">isoburn_igopt_set_out_charset</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01380"></a>01380 <span class="keywordtype">char</span> *output_charset); <a name="l01381"></a>01381 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#abe1e4a1c63370fda9dcf6c0b34702f95">isoburn_igopt_get_out_charset</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01382"></a>01382 <span class="keywordtype">char</span> **output_charset); <a name="l01383"></a>01383 <a name="l01384"></a>01384 <span class="comment"></span> <a name="l01385"></a>01385 <span class="comment">/** The number of bytes to be used for the fifo which decouples libisofs</span> <a name="l01386"></a>01386 <span class="comment"> and libburn for better throughput and for reducing the risk of</span> <a name="l01387"></a>01387 <span class="comment"> interrupting signals hitting the libburn thread which operates the</span> <a name="l01388"></a>01388 <span class="comment"> MMC drive.</span> <a name="l01389"></a>01389 <span class="comment"> The size will be rounded up to the next full 2048.</span> <a name="l01390"></a>01390 <span class="comment"> Minimum is 64kiB, maximum is 1 GiB (but that is too much anyway).</span> <a name="l01391"></a>01391 <span class="comment"> @since 0.1.0</span> <a name="l01392"></a>01392 <span class="comment"> @param o The option set to work on</span> <a name="l01393"></a>01393 <span class="comment"> @param fifo_size Number of bytes to use</span> <a name="l01394"></a>01394 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01395"></a>01395 <span class="comment">*/</span> <a name="l01396"></a>01396 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a04ff57f2dd9d134322775720981ca4da" title="The number of bytes to be used for the fifo which decouples libisofs and libburn for better throughpu...">isoburn_igopt_set_fifo_size</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> fifo_size); <a name="l01397"></a>01397 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ade16306ae6c130a3b301f246cc0625fa">isoburn_igopt_get_fifo_size</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *fifo_size); <a name="l01398"></a>01398 <a name="l01399"></a>01399 <span class="comment"></span> <a name="l01400"></a>01400 <span class="comment">/** Obtain after image preparation the block address where the session will</span> <a name="l01401"></a>01401 <span class="comment"> start on the medium.</span> <a name="l01402"></a>01402 <span class="comment"> This value cannot be set by the application but only be inquired.</span> <a name="l01403"></a>01403 <span class="comment"> @since 0.1.4</span> <a name="l01404"></a>01404 <span class="comment"> @param o The option set to work on</span> <a name="l01405"></a>01405 <span class="comment"> @param lba The block number of the session start on the medium.</span> <a name="l01406"></a>01406 <span class="comment"> <0 means that no address has been determined yet.</span> <a name="l01407"></a>01407 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01408"></a>01408 <span class="comment">*/</span> <a name="l01409"></a>01409 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a2d36049096b69b6ca5ec9d3fa6779df0" title="Obtain after image preparation the block address where the session will start on the medium...">isoburn_igopt_get_effective_lba</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *lba); <a name="l01410"></a>01410 <a name="l01411"></a>01411 <span class="comment"></span> <a name="l01412"></a>01412 <span class="comment">/** Obtain after image preparation the lowest block address of file content</span> <a name="l01413"></a>01413 <span class="comment"> data. Failure can occur if libisofs is too old to provide this information,</span> <a name="l01414"></a>01414 <span class="comment"> if the result exceeds 31 bit, or if the call is made before image</span> <a name="l01415"></a>01415 <span class="comment"> preparation.</span> <a name="l01416"></a>01416 <span class="comment"> This value cannot be set by the application but only be inquired.</span> <a name="l01417"></a>01417 <span class="comment"> @since 0.3.6</span> <a name="l01418"></a>01418 <span class="comment"> @param o The option set to work on</span> <a name="l01419"></a>01419 <span class="comment"> @param lba The block number of the session start on the medium.</span> <a name="l01420"></a>01420 <span class="comment"> <0 means that no address has been determined yet.</span> <a name="l01421"></a>01421 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01422"></a>01422 <span class="comment">*/</span> <a name="l01423"></a>01423 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a14093a7eedc9126cc4427ece9b6fa660" title="Obtain after image preparation the lowest block address of file content data.">isoburn_igopt_get_data_start</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">int</span> *lba); <a name="l01424"></a>01424 <a name="l01425"></a>01425 <span class="comment"></span> <a name="l01426"></a>01426 <span class="comment">/** Set resp. get parameters "name" and "timestamp" for a scdbackup checksum</span> <a name="l01427"></a>01427 <span class="comment"> tag. It will be appended to the libisofs session tag if the image starts at</span> <a name="l01428"></a>01428 <span class="comment"> LBA 0. See isoburn_disc_track_lba_nwa. The scdbackup tag can be used</span> <a name="l01429"></a>01429 <span class="comment"> to verify the image by command scdbackup_verify $device -auto_end.</span> <a name="l01430"></a>01430 <span class="comment"> See scdbackup/README appendix VERIFY for its inner details.</span> <a name="l01431"></a>01431 <span class="comment"> @since 0.4.4</span> <a name="l01432"></a>01432 <span class="comment"> @param o The option set to work on</span> <a name="l01433"></a>01433 <span class="comment"> @param name The tag name. 80 characters max.</span> <a name="l01434"></a>01434 <span class="comment"> @param timestamp A string of up to 13 characters YYMMDD.hhmmss</span> <a name="l01435"></a>01435 <span class="comment"> A9 = 2009, B0 = 2010, B1 = 2011, ... C0 = 2020, ...</span> <a name="l01436"></a>01436 <span class="comment"> @param tag_written Either NULL or the address of an array with at least 512</span> <a name="l01437"></a>01437 <span class="comment"> characters. In the latter case the eventually produced</span> <a name="l01438"></a>01438 <span class="comment"> scdbackup tag will be copied to this array when the image</span> <a name="l01439"></a>01439 <span class="comment"> gets written. This call sets scdbackup_tag_written[0] = 0</span> <a name="l01440"></a>01440 <span class="comment"> to mark its preliminary invalidity.</span> <a name="l01441"></a>01441 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01442"></a>01442 <span class="comment"> */</span> <a name="l01443"></a>01443 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a6218bd4518e69a3eab832d4f89697c34" title="Set resp.">isoburn_igopt_set_scdbackup_tag</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <span class="keywordtype">char</span> *name, <a name="l01444"></a>01444 <span class="keywordtype">char</span> *timestamp, <span class="keywordtype">char</span> *tag_written); <a name="l01445"></a>01445 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ab2eb2308527e2a1c8d1cf08d85f6439f">isoburn_igopt_get_scdbackup_tag</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01446"></a>01446 <span class="keywordtype">char</span> name[81], <span class="keywordtype">char</span> timestamp[19], <a name="l01447"></a>01447 <span class="keywordtype">char</span> **tag_written); <a name="l01448"></a>01448 <a name="l01449"></a>01449 <span class="comment"></span> <a name="l01450"></a>01450 <span class="comment">/** Attach 32 kB of binary data which shall get written to the first 32 kB</span> <a name="l01451"></a>01451 <span class="comment"> of the ISO image, the System Area.</span> <a name="l01452"></a>01452 <span class="comment"> options can cause manipulations of these data before writing happens.</span> <a name="l01453"></a>01453 <span class="comment"> If system area data are giveni or options bit0 is set, then bit1 of</span> <a name="l01454"></a>01454 <span class="comment"> el_torito_set_isolinux_options() is automatically disabled.</span> <a name="l01455"></a>01455 <span class="comment"> @since 0.5.4</span> <a name="l01456"></a>01456 <span class="comment"> @param o The option set to work on</span> <a name="l01457"></a>01457 <span class="comment"> @param data Either NULL or 32 kB of data. Do not submit less bytes !</span> <a name="l01458"></a>01458 <span class="comment"> @param options Can cause manipulations of submitted data before they</span> <a name="l01459"></a>01459 <span class="comment"> get written:</span> <a name="l01460"></a>01460 <span class="comment"> bit0= apply a --protective-msdos-label as of grub-mkisofs.</span> <a name="l01461"></a>01461 <span class="comment"> This means to patch bytes 446 to 512 of the system</span> <a name="l01462"></a>01462 <span class="comment"> area so that one partition is defined which begins</span> <a name="l01463"></a>01463 <span class="comment"> at the second 512-byte block of the image and ends</span> <a name="l01464"></a>01464 <span class="comment"> where the image ends.</span> <a name="l01465"></a>01465 <span class="comment"> This works with and without system_area_data.</span> <a name="l01466"></a>01466 <span class="comment"> bit1= apply isohybrid MBR patching to the system area.</span> <a name="l01467"></a>01467 <span class="comment"> This works only with system area data from</span> <a name="l01468"></a>01468 <span class="comment"> SYSLINUX plus an ISOLINUX boot image (see</span> <a name="l01469"></a>01469 <span class="comment"> iso_image_set_boot_image()) and only if not bit0</span> <a name="l01470"></a>01470 <span class="comment"> is set.</span> <a name="l01471"></a>01471 <span class="comment"> bit2-7= System area type</span> <a name="l01472"></a>01472 <span class="comment"> 0= with bit0 or bit1: MBR</span> <a name="l01473"></a>01473 <span class="comment"> else: unspecified type </span> <a name="l01474"></a>01474 <span class="comment"> @since 0.6.4</span> <a name="l01475"></a>01475 <span class="comment"> 1= MIPS Big Endian Volume Header</span> <a name="l01476"></a>01476 <span class="comment"> Submit up to 15 MIPS Big Endian boot files by</span> <a name="l01477"></a>01477 <span class="comment"> iso_image_add_mips_boot_file() of libisofs.</span> <a name="l01478"></a>01478 <span class="comment"> This will overwrite the first 512 bytes of</span> <a name="l01479"></a>01479 <span class="comment"> the submitted data.</span> <a name="l01480"></a>01480 <span class="comment"> 2= DEC Boot Block for MIPS Little Endian</span> <a name="l01481"></a>01481 <span class="comment"> The first boot file submitted by</span> <a name="l01482"></a>01482 <span class="comment"> iso_image_add_mips_boot_file() will be activated.</span> <a name="l01483"></a>01483 <span class="comment"> This will overwrite the first 512 bytes of</span> <a name="l01484"></a>01484 <span class="comment"> the submitted data.</span> <a name="l01485"></a>01485 <span class="comment"> @since 0.6.6</span> <a name="l01486"></a>01486 <span class="comment"> 3= SUN Disk Label for SUN SPARC</span> <a name="l01487"></a>01487 <span class="comment"> Submit up to 7 SPARC boot images by</span> <a name="l01488"></a>01488 <span class="comment"> isoburn_igopt_set_partition_img() for partition</span> <a name="l01489"></a>01489 <span class="comment"> numbers 2 to 8.</span> <a name="l01490"></a>01490 <span class="comment"> This will overwrite the first 512 bytes of</span> <a name="l01491"></a>01491 <span class="comment"> the submitted data.</span> <a name="l01492"></a>01492 <span class="comment"> bit8-9= Only with System area type 0 = MBR</span> <a name="l01493"></a>01493 <span class="comment"> @since 1.0.4</span> <a name="l01494"></a>01494 <span class="comment"> Cylinder alignment mode eventually pads the image</span> <a name="l01495"></a>01495 <span class="comment"> to make it end at a cylinder boundary.</span> <a name="l01496"></a>01496 <span class="comment"> 0 = auto (align if bit1)</span> <a name="l01497"></a>01497 <span class="comment"> 1 = always align to cylinder boundary</span> <a name="l01498"></a>01498 <span class="comment"> 2 = never align to cylinder boundary</span> <a name="l01499"></a>01499 <span class="comment"></span> <a name="l01500"></a>01500 <span class="comment"> @return 1 success, 0 no data to get, <0 failure</span> <a name="l01501"></a>01501 <span class="comment">*/</span> <a name="l01502"></a>01502 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a47ca66aae70bd4c87801ac5d147aaa8e" title="Attach 32 kB of binary data which shall get written to the first 32 kB of the ISO image...">isoburn_igopt_set_system_area</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01503"></a>01503 <span class="keywordtype">char</span> data[32768], <span class="keywordtype">int</span> options); <a name="l01504"></a>01504 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a38b6cdf1540f11ed87f52134d19bc7ea">isoburn_igopt_get_system_area</a>(<span class="keyword">struct</span> isoburn_imgen_opts *o, <a name="l01505"></a>01505 <span class="keywordtype">char</span> data[32768], <span class="keywordtype">int</span> *options); <a name="l01506"></a>01506 <span class="comment"></span> <a name="l01507"></a>01507 <span class="comment">/** Control production of a second set of volume descriptors (superblock)</span> <a name="l01508"></a>01508 <span class="comment"> and directory trees, together with a partition table in the MBR where the</span> <a name="l01509"></a>01509 <span class="comment"> first partition has non-zero start address and the others are zeroed.</span> <a name="l01510"></a>01510 <span class="comment"> The first partition stretches to the end of the whole ISO image.</span> <a name="l01511"></a>01511 <span class="comment"> The additional volume descriptor set and trees will allow to mount the</span> <a name="l01512"></a>01512 <span class="comment"> ISO image at the start of the first partition, while it is still possible</span> <a name="l01513"></a>01513 <span class="comment"> to mount it via the normal first volume descriptor set and tree at the</span> <a name="l01514"></a>01514 <span class="comment"> start of the image resp. storage device.</span> <a name="l01515"></a>01515 <span class="comment"> This makes few sense on optical media. But on USB sticks it creates a</span> <a name="l01516"></a>01516 <span class="comment"> conventional partition table which makes it mountable on e.g. Linux via</span> <a name="l01517"></a>01517 <span class="comment"> /dev/sdb and /dev/sdb1 alike.</span> <a name="l01518"></a>01518 <span class="comment"> @since 0.6.2</span> <a name="l01519"></a>01519 <span class="comment"> @param opts</span> <a name="l01520"></a>01520 <span class="comment"> The option set to be manipulated.</span> <a name="l01521"></a>01521 <span class="comment"> @param block_offset_2k</span> <a name="l01522"></a>01522 <span class="comment"> The offset of the partition start relative to device start.</span> <a name="l01523"></a>01523 <span class="comment"> This is counted in 2 kB blocks. The partition table will show the</span> <a name="l01524"></a>01524 <span class="comment"> according number of 512 byte sectors.</span> <a name="l01525"></a>01525 <span class="comment"> Default is 0 which causes no second set and trees.</span> <a name="l01526"></a>01526 <span class="comment"> If it is not 0 then it must not be smaller than 16.</span> <a name="l01527"></a>01527 <span class="comment"> @param secs_512_per_head</span> <a name="l01528"></a>01528 <span class="comment"> Number of 512 byte sectors per head. 1 to 63. 0=automatic.</span> <a name="l01529"></a>01529 <span class="comment"> @param heads_per_cyl</span> <a name="l01530"></a>01530 <span class="comment"> Number of heads per cylinder. 1 to 255. 0=automatic.</span> <a name="l01531"></a>01531 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01532"></a>01532 <span class="comment"> */</span> <a name="l01533"></a>01533 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a94d4c9a0d61e472d81a8784cc09c5369" title="Control production of a second set of volume descriptors (superblock) and directory trees...">isoburn_igopt_set_part_offset</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01534"></a>01534 uint32_t block_offset_2k, <a name="l01535"></a>01535 <span class="keywordtype">int</span> secs_512_per_head, <span class="keywordtype">int</span> heads_per_cyl); <a name="l01536"></a>01536 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a889b3847aba5d4d27e7eb231713c27ca">isoburn_igopt_get_part_offset</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01537"></a>01537 uint32_t *block_offset_2k, <a name="l01538"></a>01538 <span class="keywordtype">int</span> *secs_512_per_head, <span class="keywordtype">int</span> *heads_per_cyl); <a name="l01539"></a>01539 <a name="l01540"></a>01540 <span class="comment"></span> <a name="l01541"></a>01541 <span class="comment">/** Explicitely set the four timestamps of the emerging ISO image.</span> <a name="l01542"></a>01542 <span class="comment"> Default with all parameters is 0.</span> <a name="l01543"></a>01543 <span class="comment"> @since 0.5.4</span> <a name="l01544"></a>01544 <span class="comment"> @param opts</span> <a name="l01545"></a>01545 <span class="comment"> The option set to work on</span> <a name="l01546"></a>01546 <span class="comment"> @param creation_time</span> <a name="l01547"></a>01547 <span class="comment"> ECMA-119 Volume Creation Date and Time</span> <a name="l01548"></a>01548 <span class="comment"> When "the information in the volume was created."</span> <a name="l01549"></a>01549 <span class="comment"> A value of 0 means that the timepoint of write start is to be used.</span> <a name="l01550"></a>01550 <span class="comment"> @param modification_time</span> <a name="l01551"></a>01551 <span class="comment"> ECMA-119 Volume Modification Date and Time</span> <a name="l01552"></a>01552 <span class="comment"> When "the informationin the volume was last modified."</span> <a name="l01553"></a>01553 <span class="comment"> A value of 0 means that the timepoint of write start is to be used.</span> <a name="l01554"></a>01554 <span class="comment"> @param expiration_time</span> <a name="l01555"></a>01555 <span class="comment"> ECMA-119 Volume Expiration Date and Time</span> <a name="l01556"></a>01556 <span class="comment"> When "the information in the volume may be regarded as obsolete."</span> <a name="l01557"></a>01557 <span class="comment"> A value of 0 means that the information never shall expire.</span> <a name="l01558"></a>01558 <span class="comment"> @param effective_time</span> <a name="l01559"></a>01559 <span class="comment"> ECMA-119 Volume Effective Date and Time</span> <a name="l01560"></a>01560 <span class="comment"> When "the information in the volume may be used."</span> <a name="l01561"></a>01561 <span class="comment"> A value of 0 means that not such retention is intended.</span> <a name="l01562"></a>01562 <span class="comment"> @param uuid</span> <a name="l01563"></a>01563 <span class="comment"> If this text is not empty, then it overrides vol_modification_time</span> <a name="l01564"></a>01564 <span class="comment"> by copying the first 16 decimal digits from uuid, eventually</span> <a name="l01565"></a>01565 <span class="comment"> padding up with decimal '1', and writing a NUL-byte as timezone GMT.</span> <a name="l01566"></a>01566 <span class="comment"> It should express a reasonable time in form YYYYMMDDhhmmsscc</span> <a name="l01567"></a>01567 <span class="comment"> E.g.: 2010040711405800 = 7 Apr 2010 11:40:58 (+0 centiseconds)</span> <a name="l01568"></a>01568 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01569"></a>01569 <span class="comment"> */</span> <a name="l01570"></a>01570 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a073b1872db96ab12239daf5d84135685" title="Explicitely set the four timestamps of the emerging ISO image.">isoburn_igopt_set_pvd_times</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01571"></a>01571 time_t creation_time, time_t modification_time, <a name="l01572"></a>01572 time_t expiration_time, time_t effective_time, <a name="l01573"></a>01573 <span class="keywordtype">char</span> *uuid); <a name="l01574"></a>01574 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#af255e2c5455cf9b06c4ea1611a405c63">isoburn_igopt_get_pvd_times</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01575"></a>01575 time_t *creation_time, time_t *modification_time, <a name="l01576"></a>01576 time_t *expiration_time, time_t *effective_time, <a name="l01577"></a>01577 <span class="keywordtype">char</span> uuid[17]); <a name="l01578"></a>01578 <a name="l01579"></a>01579 <span class="comment"></span> <a name="l01580"></a>01580 <span class="comment">/** Associate a libjte environment object to the upcomming write run.</span> <a name="l01581"></a>01581 <span class="comment"> libjte implements Jigdo Template Extraction as of Steve McIntyre and</span> <a name="l01582"></a>01582 <span class="comment"> Richard Atterer.</span> <a name="l01583"></a>01583 <span class="comment"> A non-NULL libjte_handle will cause failure to write if libjte was not</span> <a name="l01584"></a>01584 <span class="comment"> enabled in libisofs at compile time.</span> <a name="l01585"></a>01585 <span class="comment"> @since 0.6.4</span> <a name="l01586"></a>01586 <span class="comment"> @param opts</span> <a name="l01587"></a>01587 <span class="comment"> The option set to work on</span> <a name="l01588"></a>01588 <span class="comment"> @param libjte_handle</span> <a name="l01589"></a>01589 <span class="comment"> Pointer to a struct libjte_env e.g. created by libjte_new().</span> <a name="l01590"></a>01590 <span class="comment"> It must stay existent from the start of image writing by</span> <a name="l01591"></a>01591 <span class="comment"> isoburn_prepare_*() until the write thread has ended.</span> <a name="l01592"></a>01592 <span class="comment"> E.g. until libburn indicates the end of its write run.</span> <a name="l01593"></a>01593 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01594"></a>01594 <span class="comment">*/</span> <a name="l01595"></a>01595 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a2d4b29514c5b8bd041481fa09a5b2319" title="Associate a libjte environment object to the upcomming write run.">isoburn_igopt_attach_jte</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01596"></a>01596 <span class="keywordtype">void</span> *libjte_handle); <a name="l01597"></a>01597 <span class="comment"></span> <a name="l01598"></a>01598 <span class="comment">/** Remove eventual association to a libjte environment handle.</span> <a name="l01599"></a>01599 <span class="comment"> @since 0.6.4</span> <a name="l01600"></a>01600 <span class="comment"> @param opts</span> <a name="l01601"></a>01601 <span class="comment"> The option set to work on</span> <a name="l01602"></a>01602 <span class="comment"> @param libjte_handle</span> <a name="l01603"></a>01603 <span class="comment"> If not submitted as NULL, this will return the previously set</span> <a name="l01604"></a>01604 <span class="comment"> libjte handle. </span> <a name="l01605"></a>01605 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01606"></a>01606 <span class="comment">*/</span> <a name="l01607"></a>01607 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a1f77d95e88e97db6145ee408f3fdc115" title="Remove eventual association to a libjte environment handle.">isoburn_igopt_detach_jte</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01608"></a>01608 <span class="keywordtype">void</span> **libjte_handle); <a name="l01609"></a>01609 <a name="l01610"></a>01610 <span class="comment"></span> <a name="l01611"></a>01611 <span class="comment">/** Set resp. get the number of trailing zero byte blocks to be written by</span> <a name="l01612"></a>01612 <span class="comment"> libisofs. The image size counter of the emerging ISO image will include</span> <a name="l01613"></a>01613 <span class="comment"> them. Eventual checksums will take them into respect.</span> <a name="l01614"></a>01614 <span class="comment"> They will be written immediately before the eventual image checksum area</span> <a name="l01615"></a>01615 <span class="comment"> which is at the very end of the image.</span> <a name="l01616"></a>01616 <span class="comment"> For a motivation see iso_write_opts_set_tail_blocks() in libisofs.h .</span> <a name="l01617"></a>01617 <span class="comment"> @since 0.6.4</span> <a name="l01618"></a>01618 <span class="comment"> @param opts</span> <a name="l01619"></a>01619 <span class="comment"> The option set to work on</span> <a name="l01620"></a>01620 <span class="comment"> @aram num_blocks</span> <a name="l01621"></a>01621 <span class="comment"> Number of extra 2 kB blocks to be written by libisofs.</span> <a name="l01622"></a>01622 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01623"></a>01623 <span class="comment">*/</span> <a name="l01624"></a>01624 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a4c7d96edbffbeb9eab2d82f5c14fe64d" title="Set resp.">isoburn_igopt_set_tail_blocks</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01625"></a>01625 uint32_t num_blocks); <a name="l01626"></a>01626 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a8c06efaffd6aa1e72a55e4cdf61669ba">isoburn_igopt_get_tail_blocks</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01627"></a>01627 uint32_t *num_blocks); <a name="l01628"></a>01628 <a name="l01629"></a>01629 <span class="comment"></span> <a name="l01630"></a>01630 <span class="comment">/** Cause an arbitrary data file to be appended to the ISO image and to be</span> <a name="l01631"></a>01631 <span class="comment"> described by a partition table entry in an MBR or SUN Disk Label at the</span> <a name="l01632"></a>01632 <span class="comment"> start of the ISO image.</span> <a name="l01633"></a>01633 <span class="comment"> The partition entry will bear the size of the image file rounded up to</span> <a name="l01634"></a>01634 <span class="comment"> the next multiple of 2048 bytes.</span> <a name="l01635"></a>01635 <span class="comment"> MBR or SUN Disk Label are selected by isoburn_igopt_set_system_area()</span> <a name="l01636"></a>01636 <span class="comment"> system area type: 0 selects MBR partition table. 3 selects a SUN partition</span> <a name="l01637"></a>01637 <span class="comment"> table with 320 kB start alignment.</span> <a name="l01638"></a>01638 <span class="comment"> @since 0.6.4</span> <a name="l01639"></a>01639 <span class="comment"> @param opts</span> <a name="l01640"></a>01640 <span class="comment"> The option set to be manipulated.</span> <a name="l01641"></a>01641 <span class="comment"> @param partition_number</span> <a name="l01642"></a>01642 <span class="comment"> Depicts the partition table entry which shall describe the</span> <a name="l01643"></a>01643 <span class="comment"> appended image.</span> <a name="l01644"></a>01644 <span class="comment"> Range with MBR: 1 to 4. 1 will cause the whole ISO image to be</span> <a name="l01645"></a>01645 <span class="comment"> unclaimable space before partition 1.</span> <a name="l01646"></a>01646 <span class="comment"> @since 0.6.6</span> <a name="l01647"></a>01647 <span class="comment"> Range with SUN Disk Label: 2 to 8.</span> <a name="l01648"></a>01648 <span class="comment"> @param image_path </span> <a name="l01649"></a>01649 <span class="comment"> File address in the local file system.</span> <a name="l01650"></a>01650 <span class="comment"> With SUN Disk Label: an empty name causes the partition to become</span> <a name="l01651"></a>01651 <span class="comment"> a copy of the next lower partition.</span> <a name="l01652"></a>01652 <span class="comment"> @param image_type</span> <a name="l01653"></a>01653 <span class="comment"> The MBR partition type. E.g. FAT12 = 0x01 , FAT16 = 0x06,</span> <a name="l01654"></a>01654 <span class="comment"> Linux Native Partition = 0x83. See fdisk command L.</span> <a name="l01655"></a>01655 <span class="comment"> This parameter is ignored with SUN Disk Label.</span> <a name="l01656"></a>01656 <span class="comment"> @return</span> <a name="l01657"></a>01657 <span class="comment"> <=0 = error, 1 = success</span> <a name="l01658"></a>01658 <span class="comment">*/</span> <a name="l01659"></a>01659 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a5362ff90d7b9b139090d4bfd23022151" title="Cause an arbitrary data file to be appended to the ISO image and to be described by a partition table...">isoburn_igopt_set_partition_img</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01660"></a>01660 <span class="keywordtype">int</span> partition_number, uint8_t partition_type, <a name="l01661"></a>01661 <span class="keywordtype">char</span> *image_path); <a name="l01662"></a>01662 <span class="comment"></span> <a name="l01663"></a>01663 <span class="comment">/** Inquire the current settings made by isoburn_igopt_set_partition_img().</span> <a name="l01664"></a>01664 <span class="comment"> @since 0.6.4</span> <a name="l01665"></a>01665 <span class="comment"> @param opts</span> <a name="l01666"></a>01666 <span class="comment"> The option set to be inquired.</span> <a name="l01667"></a>01667 <span class="comment"> @param num_entries</span> <a name="l01668"></a>01668 <span class="comment"> Number of array elements in partition_types[] and image_paths[].</span> <a name="l01669"></a>01669 <span class="comment"> @param partition_types</span> <a name="l01670"></a>01670 <span class="comment"> The partition type associated with the partition. Valid only if</span> <a name="l01671"></a>01671 <span class="comment"> image_paths[] of the same index is not NULL.</span> <a name="l01672"></a>01672 <span class="comment"> @param image_paths</span> <a name="l01673"></a>01673 <span class="comment"> Its elements get filled with either NULL or a pointer to a string</span> <a name="l01674"></a>01674 <span class="comment"> with a file address resp. an empty text.</span> <a name="l01675"></a>01675 <span class="comment"> @return</span> <a name="l01676"></a>01676 <span class="comment"> <0 = error</span> <a name="l01677"></a>01677 <span class="comment"> 0 = no partition image set</span> <a name="l01678"></a>01678 <span class="comment"> >0 highest used partition number</span> <a name="l01679"></a>01679 <span class="comment">*/</span> <a name="l01680"></a>01680 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a38b8d2adabdbdf25a618392c9faa04c8" title="Inquire the current settings made by isoburn_igopt_set_partition_img().">isoburn_igopt_get_partition_img</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01681"></a>01681 <span class="keywordtype">int</span> num_entries, <a name="l01682"></a>01682 uint8_t partition_types[], <a name="l01683"></a>01683 <span class="keywordtype">char</span> *image_paths[]); <a name="l01684"></a>01684 <a name="l01685"></a>01685 <span class="comment"></span> <a name="l01686"></a>01686 <span class="comment">/** Set a name for the system area. This setting is ignored unless system area</span> <a name="l01687"></a>01687 <span class="comment"> type 3 "SUN Disk Label" is in effect by iso_write_opts_set_system_area().</span> <a name="l01688"></a>01688 <span class="comment"> In this case it will replace the default text at the start of the image:</span> <a name="l01689"></a>01689 <span class="comment"> "CD-ROM Disc with Sun sparc boot created by libisofs"</span> <a name="l01690"></a>01690 <span class="comment"> @since 0.6.6</span> <a name="l01691"></a>01691 <span class="comment"> @param opts</span> <a name="l01692"></a>01692 <span class="comment"> The option set to be manipulated.</span> <a name="l01693"></a>01693 <span class="comment"> @param label</span> <a name="l01694"></a>01694 <span class="comment"> A text of up to 128 characters.</span> <a name="l01695"></a>01695 <span class="comment"> @return</span> <a name="l01696"></a>01696 <span class="comment"> <=0 = error, 1 = success</span> <a name="l01697"></a>01697 <span class="comment">*/</span> <a name="l01698"></a>01698 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a1220212e6f46e8745b971dbfedc6a5d4" title="Set a name for the system area.">isoburn_igopt_set_disc_label</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <span class="keywordtype">char</span> *label); <a name="l01699"></a>01699 <span class="comment"></span> <a name="l01700"></a>01700 <span class="comment">/** Inquire the current setting made by isoburn_igopt_set_disc_label().</span> <a name="l01701"></a>01701 <span class="comment"> @since 0.6.6</span> <a name="l01702"></a>01702 <span class="comment"> @param opts</span> <a name="l01703"></a>01703 <span class="comment"> The option set to be inquired.</span> <a name="l01704"></a>01704 <span class="comment"> @param label</span> <a name="l01705"></a>01705 <span class="comment"> Returns a pointer to the currently set label string.</span> <a name="l01706"></a>01706 <span class="comment"> Do not alter this string.</span> <a name="l01707"></a>01707 <span class="comment"> Use only as long as the opts object exists.</span> <a name="l01708"></a>01708 <span class="comment"> @return</span> <a name="l01709"></a>01709 <span class="comment"> <=0 = error, 1 = success</span> <a name="l01710"></a>01710 <span class="comment">*/</span> <a name="l01711"></a>01711 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#acc260f16e79dced148401d8f64e415f0" title="Inquire the current setting made by isoburn_igopt_set_disc_label().">isoburn_igopt_get_disc_label</a>(<span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01712"></a>01712 <span class="keywordtype">char</span> **label); <a name="l01713"></a>01713 <a name="l01714"></a>01714 <a name="l01715"></a>01715 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01716"></a>01716 <span class="comment">/* End of Options for image generation */</span> <a name="l01717"></a>01717 <span class="comment">/* ----------------------------------------------------------------------- */</span> <a name="l01718"></a>01718 <a name="l01719"></a>01719 <span class="comment"></span> <a name="l01720"></a>01720 <span class="comment">/** Get the image attached to a drive, if any.</span> <a name="l01721"></a>01721 <span class="comment"> @since 0.1.0</span> <a name="l01722"></a>01722 <span class="comment"> @param d The drive to inquire</span> <a name="l01723"></a>01723 <span class="comment"> @return A reference to attached image, or NULL if the drive has no image</span> <a name="l01724"></a>01724 <span class="comment"> attached. This reference needs to be released via iso_image_unref()</span> <a name="l01725"></a>01725 <span class="comment"> when it is not longer needed.</span> <a name="l01726"></a>01726 <span class="comment">*/</span> <a name="l01727"></a>01727 IsoImage *<a class="code" href="libisoburn_8h.html#ad1c454c7feeca570b91f92e2422d35c0" title="Get the image attached to a drive, if any.">isoburn_get_attached_image</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l01728"></a>01728 <span class="comment"></span> <a name="l01729"></a>01729 <span class="comment">/** Get the start address of the image that is attached to the drive, if any.</span> <a name="l01730"></a>01730 <span class="comment"> @since 1.2.2</span> <a name="l01731"></a>01731 <span class="comment"> @param d The drive to inquire</span> <a name="l01732"></a>01732 <span class="comment"> @return The logical block address where the System Area of the image</span> <a name="l01733"></a>01733 <span class="comment"> starts. <0 means that the address is invalid.</span> <a name="l01734"></a>01734 <span class="comment">*/</span> <a name="l01735"></a>01735 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a9d07b4de01e6bec46dcfd1ab90f7bd97" title="Get the start address of the image that is attached to the drive, if any.">isoburn_get_attached_start_lba</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l01736"></a>01736 <a name="l01737"></a>01737 <span class="comment"></span> <a name="l01738"></a>01738 <span class="comment">/** Load the ISO filesystem directory tree from the medium in the given drive.</span> <a name="l01739"></a>01739 <span class="comment"> This will give libisoburn the base on which it can let libisofs perform</span> <a name="l01740"></a>01740 <span class="comment"> image growing or image modification. The loaded volset gets attached</span> <a name="l01741"></a>01741 <span class="comment"> to the drive object and handed out to the application.</span> <a name="l01742"></a>01742 <span class="comment"> Not a wrapper, but peculiar to libisoburn.</span> <a name="l01743"></a>01743 <span class="comment"> @since 0.1.0</span> <a name="l01744"></a>01744 <span class="comment"> @param d The drive which holds an existing ISO filesystem or blank media.</span> <a name="l01745"></a>01745 <span class="comment"> d is allowed to be NULL which produces an empty ISO image. In</span> <a name="l01746"></a>01746 <span class="comment"> this case one has to call before writing isoburn_attach_volset()</span> <a name="l01747"></a>01747 <span class="comment"> with the volset from this call and with the intended output</span> <a name="l01748"></a>01748 <span class="comment"> drive.</span> <a name="l01749"></a>01749 <span class="comment"> @param read_opts The read options which can be chosen by the application</span> <a name="l01750"></a>01750 <span class="comment"> @param image the image read, if the disc is blank it will have no files.</span> <a name="l01751"></a>01751 <span class="comment"> This reference needs to be released via iso_image_unref() when</span> <a name="l01752"></a>01752 <span class="comment"> it is not longer needed. The drive, if not NULL, will hold an</span> <a name="l01753"></a>01753 <span class="comment"> own reference which it will release when it gets a new volset</span> <a name="l01754"></a>01754 <span class="comment"> or when it gets released via isoburn_drive_release().</span> <a name="l01755"></a>01755 <span class="comment"> You can pass NULL if you already have a reference or you plan to</span> <a name="l01756"></a>01756 <span class="comment"> obtain it later with isoburn_get_attached_image(). Of course, if</span> <a name="l01757"></a>01757 <span class="comment"> you haven't specified a valid drive (i.e., if d == NULL), this</span> <a name="l01758"></a>01758 <span class="comment"> parameter can't be NULL.</span> <a name="l01759"></a>01759 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01760"></a>01760 <span class="comment">*/</span> <a name="l01761"></a>01761 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aaeb4a658003768fc9bc6602417d65a70" title="Load the ISO filesystem directory tree from the medium in the given drive.">isoburn_read_image</a>(<span class="keyword">struct</span> burn_drive *d, <a name="l01762"></a>01762 <span class="keyword">struct</span> isoburn_read_opts *read_opts, <a name="l01763"></a>01763 IsoImage **image); <a name="l01764"></a>01764 <span class="comment"></span> <a name="l01765"></a>01765 <span class="comment">/** Set a callback function for producing pacifier messages during the lengthy</span> <a name="l01766"></a>01766 <span class="comment"> process of image reading. The callback function and the application handle</span> <a name="l01767"></a>01767 <span class="comment"> are stored until they are needed for the underlying call to libisofs.</span> <a name="l01768"></a>01768 <span class="comment"> Other than with libisofs the handle is managed entirely by the application.</span> <a name="l01769"></a>01769 <span class="comment"> An idle .free() function is exposed to libisofs. The handle has to stay</span> <a name="l01770"></a>01770 <span class="comment"> valid until isoburn_read_image() is done. It has to be detached by</span> <a name="l01771"></a>01771 <span class="comment"> isoburn_set_read_pacifier(drive, NULL, NULL);</span> <a name="l01772"></a>01772 <span class="comment"> before it may be removed from memory.</span> <a name="l01773"></a>01773 <span class="comment"> @since 0.1.0</span> <a name="l01774"></a>01774 <span class="comment"> @param drive The drive which will be used with isoburn_read_image()</span> <a name="l01775"></a>01775 <span class="comment"> It has to be acquired by an isoburn_* wrapper call.</span> <a name="l01776"></a>01776 <span class="comment"> @param read_pacifier The callback function</span> <a name="l01777"></a>01777 <span class="comment"> @param app_handle The app handle which the callback function can obtain</span> <a name="l01778"></a>01778 <span class="comment"> via iso_image_get_attached_data() from its IsoImage*</span> <a name="l01779"></a>01779 <span class="comment"> @return 1 success, <=0 failure</span> <a name="l01780"></a>01780 <span class="comment">*/</span> <a name="l01781"></a>01781 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a2cd28c4901e3f9a750dbd45b4b3fb4a9" title="Set a callback function for producing pacifier messages during the lengthy process of image reading...">isoburn_set_read_pacifier</a>(<span class="keyword">struct</span> burn_drive *drive, <a name="l01782"></a>01782 <span class="keywordtype">int</span> (*read_pacifier)(IsoImage*, IsoFileSource*), <a name="l01783"></a>01783 <span class="keywordtype">void</span> *app_handle); <a name="l01784"></a>01784 <span class="comment"></span> <a name="l01785"></a>01785 <span class="comment">/** Inquire the partition offset of the loaded image. The first 512 bytes of</span> <a name="l01786"></a>01786 <span class="comment"> the image get examined whether they bear an MBR signature and a first</span> <a name="l01787"></a>01787 <span class="comment"> partition table entry which matches the size of the image. In this case</span> <a name="l01788"></a>01788 <span class="comment"> the start address is recorded as partition offset and internal buffers</span> <a name="l01789"></a>01789 <span class="comment"> get adjusted.</span> <a name="l01790"></a>01790 <span class="comment"> See also isoburn_igopt_set_part_offset().</span> <a name="l01791"></a>01791 <span class="comment"> @since 0.6.2</span> <a name="l01792"></a>01792 <span class="comment"> @param drive The drive with the loaded image</span> <a name="l01793"></a>01793 <span class="comment"> @param block_offset_2k returns the recognized partition offset</span> <a name="l01794"></a>01794 <span class="comment"> @return <0 = error</span> <a name="l01795"></a>01795 <span class="comment"> 0 = no partition offset recognized</span> <a name="l01796"></a>01796 <span class="comment"> 1 = acceptable non-zero offset, buffers are adjusted</span> <a name="l01797"></a>01797 <span class="comment"> 2 = offset is credible but not acceptable for buffer size</span> <a name="l01798"></a>01798 <span class="comment">*/</span> <a name="l01799"></a>01799 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a0dc8674158253803b8ce399ded79ee83" title="Inquire the partition offset of the loaded image.">isoburn_get_img_partition_offset</a>(<span class="keyword">struct</span> burn_drive *drive, <a name="l01800"></a>01800 uint32_t *block_offset_2k); <a name="l01801"></a>01801 <a name="l01802"></a>01802 <span class="comment"></span> <a name="l01803"></a>01803 <span class="comment">/** Set the IsoImage to be used with a drive. This eventually releases</span> <a name="l01804"></a>01804 <span class="comment"> the reference to the old IsoImage attached to the drive.</span> <a name="l01805"></a>01805 <span class="comment"> Caution: Use with care. It hardly makes sense to replace an image that</span> <a name="l01806"></a>01806 <span class="comment"> reflects a valid ISO image on the medium.</span> <a name="l01807"></a>01807 <span class="comment"> This call is rather intended for writing a newly created and populated</span> <a name="l01808"></a>01808 <span class="comment"> image to blank media. The use case in xorriso is to let an image survive</span> <a name="l01809"></a>01809 <span class="comment"> the change or demise of the outdev target drive. </span> <a name="l01810"></a>01810 <span class="comment"> @since 0.1.0</span> <a name="l01811"></a>01811 <span class="comment"> @param d The drive which shall be write target of the volset.</span> <a name="l01812"></a>01812 <span class="comment"> @param image The image that represents the image to be written.</span> <a name="l01813"></a>01813 <span class="comment"> This image pointer MUST already be a valid reference suitable</span> <a name="l01814"></a>01814 <span class="comment"> for iso_image_unref().</span> <a name="l01815"></a>01815 <span class="comment"> It may have been obtained by appropriate libisofs calls or by</span> <a name="l01816"></a>01816 <span class="comment"> isoburn_read_image() with d==NULL.</span> <a name="l01817"></a>01817 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01818"></a>01818 <span class="comment">*/</span> <a name="l01819"></a>01819 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a0229645be21da6d649f3659e6e023e4c" title="Set the IsoImage to be used with a drive.">isoburn_attach_image</a>(<span class="keyword">struct</span> burn_drive *d, IsoImage *image); <a name="l01820"></a>01820 <a name="l01821"></a>01821 <span class="comment"></span> <a name="l01822"></a>01822 <span class="comment">/** Set the start address of the image that is attached to the drive, if any.</span> <a name="l01823"></a>01823 <span class="comment"> @since 1.2.2</span> <a name="l01824"></a>01824 <span class="comment"> @param d The drive to inquire</span> <a name="l01825"></a>01825 <span class="comment"> @param lba The logical block address where the System Area of the image</span> <a name="l01826"></a>01826 <span class="comment"> starts. <0 means that the address is invalid.</span> <a name="l01827"></a>01827 <span class="comment"> @param flag Bitfield, submit 0 for now.</span> <a name="l01828"></a>01828 <span class="comment"> @return <=0 error (e.g. because no image is attached), 1 = success</span> <a name="l01829"></a>01829 <span class="comment">*/</span> <a name="l01830"></a>01830 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ac3e1ed822342c5f1a4f94c7dd34ac11d" title="Set the start address of the image that is attached to the drive, if any.">isoburn_attach_start_lba</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keywordtype">int</span> lba, <span class="keywordtype">int</span> flag); <a name="l01831"></a>01831 <a name="l01832"></a>01832 <span class="comment"></span> <a name="l01833"></a>01833 <span class="comment">/** Return the best possible estimation of the currently available capacity of</span> <a name="l01834"></a>01834 <span class="comment"> the medium. This might depend on particular write option settings and on</span> <a name="l01835"></a>01835 <span class="comment"> drive state.</span> <a name="l01836"></a>01836 <span class="comment"> An eventual start address for emulated multi-session will be subtracted</span> <a name="l01837"></a>01837 <span class="comment"> from the capacity estimation given by burn_disc_available_space().</span> <a name="l01838"></a>01838 <span class="comment"> Negative results get defaulted to 0.</span> <a name="l01839"></a>01839 <span class="comment"> Wrapper for: burn_disc_available_space()</span> <a name="l01840"></a>01840 <span class="comment"> @since 0.1.0</span> <a name="l01841"></a>01841 <span class="comment"> @param d The drive to query.</span> <a name="l01842"></a>01842 <span class="comment"> @param o If not NULL: write parameters to be set on drive before query</span> <a name="l01843"></a>01843 <span class="comment"> @return number of most probably available free bytes</span> <a name="l01844"></a>01844 <span class="comment">*/</span> <a name="l01845"></a>01845 off_t <a class="code" href="libisoburn_8h.html#a48b888c53c0a1e057e9fd88314791368" title="Return the best possible estimation of the currently available capacity of the medium.">isoburn_disc_available_space</a>(<span class="keyword">struct</span> burn_drive *d, <a name="l01846"></a>01846 <span class="keyword">struct</span> burn_write_opts *o); <a name="l01847"></a>01847 <a name="l01848"></a>01848 <span class="comment"></span> <a name="l01849"></a>01849 <span class="comment">/** Obtain the start block number of the most recent session on the medium. In</span> <a name="l01850"></a>01850 <span class="comment"> case of random access media this will normally be 0. Successfull return is</span> <a name="l01851"></a>01851 <span class="comment"> not a guarantee that there is a ISO-9660 image at all. The call will fail,</span> <a name="l01852"></a>01852 <span class="comment"> nevertheless,if isoburn_disc_get_status() returns not BURN_DISC_APPENDABLE</span> <a name="l01853"></a>01853 <span class="comment"> or BURN_DISC_FULL.</span> <a name="l01854"></a>01854 <span class="comment"> Note: The result of this call may be fabricated by a previous call of</span> <a name="l01855"></a>01855 <span class="comment"> isoburn_set_msc1() which can override the rule to load the most recent</span> <a name="l01856"></a>01856 <span class="comment"> session.</span> <a name="l01857"></a>01857 <span class="comment"> Wrapper for: burn_disc_get_msc1()</span> <a name="l01858"></a>01858 <span class="comment"> @since 0.1.0</span> <a name="l01859"></a>01859 <span class="comment"> @param d The drive to inquire</span> <a name="l01860"></a>01860 <span class="comment"> @param start_lba Contains on success the start address in 2048 byte blocks</span> <a name="l01861"></a>01861 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01862"></a>01862 <span class="comment">*/</span> <a name="l01863"></a>01863 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a8b7dc7378375c69c7853436a3da9c8ba" title="Obtain the start block number of the most recent session on the medium.">isoburn_disc_get_msc1</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keywordtype">int</span> *start_lba); <a name="l01864"></a>01864 <a name="l01865"></a>01865 <span class="comment"></span> <a name="l01866"></a>01866 <span class="comment">/** Use this with trackno==0 to obtain the predicted start block number of the</span> <a name="l01867"></a>01867 <span class="comment"> new session. The interesting number is returned in parameter nwa.</span> <a name="l01868"></a>01868 <span class="comment"> Wrapper for: burn_disc_track_lba_nwa()</span> <a name="l01869"></a>01869 <span class="comment"> @since 0.1.0</span> <a name="l01870"></a>01870 <span class="comment"> @param d The drive to inquire</span> <a name="l01871"></a>01871 <span class="comment"> @param o If not NULL: write parameters to be set on drive before query</span> <a name="l01872"></a>01872 <span class="comment"> @param trackno Submit 0.</span> <a name="l01873"></a>01873 <span class="comment"> @param lba return value: start lba</span> <a name="l01874"></a>01874 <span class="comment"> @param nwa return value: Next Writeable Address</span> <a name="l01875"></a>01875 <span class="comment"> @return 1=nwa is valid , 0=nwa is not valid , -1=error</span> <a name="l01876"></a>01876 <span class="comment">*/</span> <a name="l01877"></a>01877 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a6c308a88020e4749b320978060c3450a" title="Use this with trackno==0 to obtain the predicted start block number of the new session.">isoburn_disc_track_lba_nwa</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keyword">struct</span> burn_write_opts *o, <a name="l01878"></a>01878 <span class="keywordtype">int</span> trackno, <span class="keywordtype">int</span> *lba, <span class="keywordtype">int</span> *nwa); <a name="l01879"></a>01879 <a name="l01880"></a>01880 <span class="comment"></span> <a name="l01881"></a>01881 <span class="comment">/** Obtain the size which was attributed to an emulated appendable on actually</span> <a name="l01882"></a>01882 <span class="comment"> overwriteable media. This value is supposed to be <= 2048 * nwa as of</span> <a name="l01883"></a>01883 <span class="comment"> isoburn_disc_track_lba_nwa().</span> <a name="l01884"></a>01884 <span class="comment"> @since 0.1.0</span> <a name="l01885"></a>01885 <span class="comment"> @param d The drive holding the medium.</span> <a name="l01886"></a>01886 <span class="comment"> @param start_byte The reply value counted in bytes, not in sectors.</span> <a name="l01887"></a>01887 <span class="comment"> @param flag Unused yet. Submit 0.</span> <a name="l01888"></a>01888 <span class="comment"> @return 1=stat_byte is valid, 0=not an emulated appendable, -1=error </span> <a name="l01889"></a>01889 <span class="comment">*/</span> <a name="l01890"></a>01890 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a5987342968b361b40a62cb2f3d280ebd" title="Obtain the size which was attributed to an emulated appendable on actually overwriteable media...">isoburn_get_min_start_byte</a>(<span class="keyword">struct</span> burn_drive *d, off_t *start_byte, <a name="l01891"></a>01891 <span class="keywordtype">int</span> flag); <a name="l01892"></a>01892 <a name="l01893"></a>01893 <span class="comment"></span> <a name="l01894"></a>01894 <span class="comment">/** To choose the expansion method of Growing:</span> <a name="l01895"></a>01895 <span class="comment"> Create a disc object for writing the new session from the created or loaded</span> <a name="l01896"></a>01896 <span class="comment"> iso_volset which has been manipulated via libisofs, to the same medium from</span> <a name="l01897"></a>01897 <span class="comment"> where the image was eventually loaded. This struct burn_disc is ready for</span> <a name="l01898"></a>01898 <span class="comment"> use by a subsequent call to isoburn_disc_write().</span> <a name="l01899"></a>01899 <span class="comment"> After this asynchronous writing has ended and the drive is BURN_DRIVE_IDLE</span> <a name="l01900"></a>01900 <span class="comment"> again, the burn_disc object has to be disposed by burn_disc_free().</span> <a name="l01901"></a>01901 <span class="comment"> @since 0.1.0</span> <a name="l01902"></a>01902 <span class="comment"> @param drive The combined source and target drive, grabbed with</span> <a name="l01903"></a>01903 <span class="comment"> isoburn_drive_scan_and_grab(). .</span> <a name="l01904"></a>01904 <span class="comment"> @param disc Returns the newly created burn_disc object.</span> <a name="l01905"></a>01905 <span class="comment"> @param opts Image generation options, see isoburn_igopt_*()</span> <a name="l01906"></a>01906 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01907"></a>01907 <span class="comment">*/</span> <a name="l01908"></a>01908 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a0192faac91cdaedc4d6f34bf71c1e3e7" title="To choose the expansion method of Growing: Create a disc object for writing the new session from the ...">isoburn_prepare_disc</a>(<span class="keyword">struct</span> burn_drive *drive, <span class="keyword">struct</span> burn_disc **disc, <a name="l01909"></a>01909 <span class="keyword">struct</span> isoburn_imgen_opts *opts); <a name="l01910"></a>01910 <a name="l01911"></a>01911 <span class="comment"></span> <a name="l01912"></a>01912 <span class="comment">/** To choose the expansion method of Modifying:</span> <a name="l01913"></a>01913 <span class="comment"> Create a disc object for producing a new image from a previous image</span> <a name="l01914"></a>01914 <span class="comment"> plus the changes made by user. The generated burn_disc is suitable</span> <a name="l01915"></a>01915 <span class="comment"> to be written to a grabbed drive with blank writeable medium.</span> <a name="l01916"></a>01916 <span class="comment"> But you must not use the same drive for input and output, because data</span> <a name="l01917"></a>01917 <span class="comment"> will be read from the source drive while at the same time the target</span> <a name="l01918"></a>01918 <span class="comment"> drive is already writing.</span> <a name="l01919"></a>01919 <span class="comment"> The resulting burn_disc object has to be disposed when all its writing</span> <a name="l01920"></a>01920 <span class="comment"> is done and the drive is BURN_DRIVE_IDLE again after asynchronous</span> <a name="l01921"></a>01921 <span class="comment"> burn_disc_write().</span> <a name="l01922"></a>01922 <span class="comment"> @since 0.1.0</span> <a name="l01923"></a>01923 <span class="comment"> @param in_drive The input drive, grabbed with isoburn_drive_aquire() or</span> <a name="l01924"></a>01924 <span class="comment"> one of its alternatives.</span> <a name="l01925"></a>01925 <span class="comment"> @param disc Returns the newly created burn_disc object.</span> <a name="l01926"></a>01926 <span class="comment"> @param opts Options for image generation and data transport to the</span> <a name="l01927"></a>01927 <span class="comment"> medium.</span> <a name="l01928"></a>01928 <span class="comment"> @param out_drive The output drive, from isoburn_drive_aquire() et.al..</span> <a name="l01929"></a>01929 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01930"></a>01930 <span class="comment">*/</span> <a name="l01931"></a>01931 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ae012d63826b607c9cd5c8f60d13e6529" title="To choose the expansion method of Modifying: Create a disc object for producing a new image from a pr...">isoburn_prepare_new_image</a>(<span class="keyword">struct</span> burn_drive *in_drive, <a name="l01932"></a>01932 <span class="keyword">struct</span> burn_disc **disc, <a name="l01933"></a>01933 <span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01934"></a>01934 <span class="keyword">struct</span> burn_drive *out_drive); <a name="l01935"></a>01935 <a name="l01936"></a>01936 <span class="comment"></span> <a name="l01937"></a>01937 <span class="comment">/** To choose the expansion method of Blind Growing:</span> <a name="l01938"></a>01938 <span class="comment"> Create a disc object for writing an add-on session from the created or</span> <a name="l01939"></a>01939 <span class="comment"> loaded IsoImage which has been manipulated via libisofs, to a different</span> <a name="l01940"></a>01940 <span class="comment"> drive than the one from where it was loaded.</span> <a name="l01941"></a>01941 <span class="comment"> Usually output will be stdio:/dev/fd/1 (i.e. stdout) being piped</span> <a name="l01942"></a>01942 <span class="comment"> into some burn program like with this classic gesture:</span> <a name="l01943"></a>01943 <span class="comment"> mkisofs -M $dev -C $msc1,$nwa | cdrecord -waiti dev=$dev</span> <a name="l01944"></a>01944 <span class="comment"> Parameter translation into libisoburn:</span> <a name="l01945"></a>01945 <span class="comment"> $dev is the address by which parameter in_drive of this call was</span> <a name="l01946"></a>01946 <span class="comment"> acquired $msc1 was set by isoburn_set_msc1() before image reading</span> <a name="l01947"></a>01947 <span class="comment"> or was detected from the in_drive medium</span> <a name="l01948"></a>01948 <span class="comment"> $nwa is a parameter of this call</span> <a name="l01949"></a>01949 <span class="comment"> or can be used as detected from the in_drive medium</span> <a name="l01950"></a>01950 <span class="comment"></span> <a name="l01951"></a>01951 <span class="comment"> This call waits for libisofs output to become available and then detaches</span> <a name="l01952"></a>01952 <span class="comment"> the input drive object from the data source object by which libisofs was</span> <a name="l01953"></a>01953 <span class="comment"> reading from the input drive.</span> <a name="l01954"></a>01954 <span class="comment"> So, as far as libisofs is concerned, that drive may be released immediately</span> <a name="l01955"></a>01955 <span class="comment"> after this call in order to allow the consumer to access the drive for</span> <a name="l01956"></a>01956 <span class="comment"> writing.</span> <a name="l01957"></a>01957 <span class="comment"> The consumer should wait for input to become available and only then open</span> <a name="l01958"></a>01958 <span class="comment"> its burn drive. With cdrecord this is caused by option -waiti.</span> <a name="l01959"></a>01959 <span class="comment"> </span> <a name="l01960"></a>01960 <span class="comment"> The resulting burn_disc object has to be disposed when all its writing</span> <a name="l01961"></a>01961 <span class="comment"> is done and the drive is BURN_DRIVE_IDLE again after asynchronous</span> <a name="l01962"></a>01962 <span class="comment"> burn_disc_write().</span> <a name="l01963"></a>01963 <span class="comment"> @since 0.2.2</span> <a name="l01964"></a>01964 <span class="comment"> @param in_drive The input drive,grabbed with isoburn_drive_scan_and_grab().</span> <a name="l01965"></a>01965 <span class="comment"> @param disc Returns the newly created burn_disc object.</span> <a name="l01966"></a>01966 <span class="comment"> @param opts Options for image generation and data transport to media.</span> <a name="l01967"></a>01967 <span class="comment"> @param out_drive The output drive, from isoburn_drive_aquire() et.al..</span> <a name="l01968"></a>01968 <span class="comment"> typically stdio:/dev/fd/1 .</span> <a name="l01969"></a>01969 <span class="comment"> @param nwa The address (2048 byte block count) where the add-on</span> <a name="l01970"></a>01970 <span class="comment"> session will be finally stored on a mountable medium</span> <a name="l01971"></a>01971 <span class="comment"> or in a mountable file.</span> <a name="l01972"></a>01972 <span class="comment"> If nwa is -1 then the address is used as determined from</span> <a name="l01973"></a>01973 <span class="comment"> the in_drive medium.</span> <a name="l01974"></a>01974 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l01975"></a>01975 <span class="comment">*/</span> <a name="l01976"></a>01976 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#ad07a270a45cccc93304e51ca80a628ad" title="To choose the expansion method of Blind Growing: Create a disc object for writing an add-on session f...">isoburn_prepare_blind_grow</a>(<span class="keyword">struct</span> burn_drive *in_drive, <a name="l01977"></a>01977 <span class="keyword">struct</span> burn_disc **disc, <a name="l01978"></a>01978 <span class="keyword">struct</span> isoburn_imgen_opts *opts, <a name="l01979"></a>01979 <span class="keyword">struct</span> burn_drive *out_drive, <span class="keywordtype">int</span> nwa); <a name="l01980"></a>01980 <a name="l01981"></a>01981 <span class="comment"></span> <a name="l01982"></a>01982 <span class="comment">/**</span> <a name="l01983"></a>01983 <span class="comment"> Revoke isoburn_prepare_*() instead of running isoburn_disc_write().</span> <a name="l01984"></a>01984 <span class="comment"> libisofs reserves resources and maybe already starts generating the</span> <a name="l01985"></a>01985 <span class="comment"> image stream when one of above three calls is performed. It is mandatory to</span> <a name="l01986"></a>01986 <span class="comment"> either run isoburn_disc_write() or to revoke the preparations by the</span> <a name="l01987"></a>01987 <span class="comment"> call described here.</span> <a name="l01988"></a>01988 <span class="comment"> If this call returns 0 or 1 then the write thread of libisofs has ended.</span> <a name="l01989"></a>01989 <span class="comment"> @since 0.1.0</span> <a name="l01990"></a>01990 <span class="comment"> @param input_drive The drive resp. in_drive which was used with the</span> <a name="l01991"></a>01991 <span class="comment"> preparation call.</span> <a name="l01992"></a>01992 <span class="comment"> @param output_drive The out_drive used with isoburn_prepare_new_image(),</span> <a name="l01993"></a>01993 <span class="comment"> NULL if none.</span> <a name="l01994"></a>01994 <span class="comment"> @param flag Bitfield, submit 0 for now.</span> <a name="l01995"></a>01995 <span class="comment"> bit0= -reserved for internal use-</span> <a name="l01996"></a>01996 <span class="comment"> @return <0 error, 0= no pending preparations detectable, 1 = canceled</span> <a name="l01997"></a>01997 <span class="comment">*/</span> <a name="l01998"></a>01998 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#add8b62ad07af3e4ae9e5cc9aebd37dd5" title="Revoke isoburn_prepare_*() instead of running isoburn_disc_write().">isoburn_cancel_prepared_write</a>(<span class="keyword">struct</span> burn_drive *input_drive, <a name="l01999"></a>01999 <span class="keyword">struct</span> burn_drive *output_drive, <span class="keywordtype">int</span> flag); <a name="l02000"></a>02000 <a name="l02001"></a>02001 <span class="comment"></span> <a name="l02002"></a>02002 <span class="comment">/**</span> <a name="l02003"></a>02003 <span class="comment"> Override the truncation setting that was made with flag bit2 during the</span> <a name="l02004"></a>02004 <span class="comment"> call of isoburn_drive_aquire. This applies only to stdio pseudo drives.</span> <a name="l02005"></a>02005 <span class="comment"> @since 0.1.6</span> <a name="l02006"></a>02006 <span class="comment"> @param drive The drive which was acquired and shall be used for writing.</span> <a name="l02007"></a>02007 <span class="comment"> @param flag Bitfield controlling the setting:</span> <a name="l02008"></a>02008 <span class="comment"> bit0= truncate (else do not truncate)</span> <a name="l02009"></a>02009 <span class="comment"> bit1= do not warn if call is inappropriate to drive</span> <a name="l02010"></a>02010 <span class="comment"> bit2= only set if truncation is currently enabled</span> <a name="l02011"></a>02011 <span class="comment"> do not warn if call is inappropriate to drive</span> <a name="l02012"></a>02012 <span class="comment"> @return 1 success, 0 inappropriate drive, <0 severe error</span> <a name="l02013"></a>02013 <span class="comment">*/</span> <a name="l02014"></a>02014 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a08672ff943123e9943267c9ca6aac889" title="Override the truncation setting that was made with flag bit2 during the call of isoburn_drive_aquire...">isoburn_set_truncate</a>(<span class="keyword">struct</span> burn_drive *drive, <span class="keywordtype">int</span> flag); <a name="l02015"></a>02015 <a name="l02016"></a>02016 <span class="comment"></span> <a name="l02017"></a>02017 <span class="comment">/** Start writing of the new session.</span> <a name="l02018"></a>02018 <span class="comment"> This call is asynchrounous. I.e. it returns quite soon and the progress has</span> <a name="l02019"></a>02019 <span class="comment"> to be watched by a loop with call burn_drive_get_status() until</span> <a name="l02020"></a>02020 <span class="comment"> BURN_DRIVE_IDLE is returned.</span> <a name="l02021"></a>02021 <span class="comment"> Wrapper for: burn_disc_write()</span> <a name="l02022"></a>02022 <span class="comment"> @since 0.1.0</span> <a name="l02023"></a>02023 <span class="comment"> @param o Options which control the burn process. See burnwrite_opts_*()</span> <a name="l02024"></a>02024 <span class="comment"> in libburn.h.</span> <a name="l02025"></a>02025 <span class="comment"> @param disc Disc object created either by isoburn_prepare_disc() or by</span> <a name="l02026"></a>02026 <span class="comment"> isoburn_prepare_new_image().</span> <a name="l02027"></a>02027 <span class="comment">*/</span> <a name="l02028"></a>02028 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#afb64b8b1557b8cac52e59cd51b731d91" title="Start writing of the new session.">isoburn_disc_write</a>(<span class="keyword">struct</span> burn_write_opts *o, <span class="keyword">struct</span> burn_disc *disc); <a name="l02029"></a>02029 <a name="l02030"></a>02030 <span class="comment"></span> <a name="l02031"></a>02031 <span class="comment">/** Inquire state and fill parameters of the fifo which is attached to</span> <a name="l02032"></a>02032 <span class="comment"> the emerging track. This should be done in the pacifier loop while</span> <a name="l02033"></a>02033 <span class="comment"> isoburn_disc_write() or burn_disc_write() are active.</span> <a name="l02034"></a>02034 <span class="comment"> This works only with drives obtained by isoburn_drive_scan_and_grab()</span> <a name="l02035"></a>02035 <span class="comment"> or isoburn_drive_grab(). If isoburn_prepare_new_image() was used, then</span> <a name="l02036"></a>02036 <span class="comment"> parameter out_drive must have announced the track output drive.</span> <a name="l02037"></a>02037 <span class="comment"> Hint: If only burn_write_opts and not burn_drive is known, then the drive</span> <a name="l02038"></a>02038 <span class="comment"> can be obtained by burn_write_opts_get_drive().</span> <a name="l02039"></a>02039 <span class="comment"> @since 0.1.0</span> <a name="l02040"></a>02040 <span class="comment"> @param d The drive to which the track with the fifo gets burned.</span> <a name="l02041"></a>02041 <span class="comment"> @param size The total size of the fifo</span> <a name="l02042"></a>02042 <span class="comment"> @param free_bytes The current free capacity of the fifo</span> <a name="l02043"></a>02043 <span class="comment"> @param status_text Returns a pointer to a constant text, see below</span> <a name="l02044"></a>02044 <span class="comment"> @return <0 reply invalid, >=0 fifo status code:</span> <a name="l02045"></a>02045 <span class="comment"> bit0+1=input status, bit2=consumption status, i.e:</span> <a name="l02046"></a>02046 <span class="comment"> 0="standby" : data processing not started yet</span> <a name="l02047"></a>02047 <span class="comment"> 1="active" : input and consumption are active</span> <a name="l02048"></a>02048 <span class="comment"> 2="ending" : input has ended without error</span> <a name="l02049"></a>02049 <span class="comment"> 3="failing" : input had error and ended,</span> <a name="l02050"></a>02050 <span class="comment"> 4="unused" : ( consumption has ended before processing start )</span> <a name="l02051"></a>02051 <span class="comment"> 5="abandoned" : consumption has ended prematurely</span> <a name="l02052"></a>02052 <span class="comment"> 6="ended" : consumption has ended without input error</span> <a name="l02053"></a>02053 <span class="comment"> 7="aborted" : consumption has ended after input error</span> <a name="l02054"></a>02054 <span class="comment">*/</span> <a name="l02055"></a>02055 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a78e42c91f429199d4d803d747f64c5a7" title="Inquire state and fill parameters of the fifo which is attached to the emerging track.">isoburn_get_fifo_status</a>(<span class="keyword">struct</span> burn_drive *d, <span class="keywordtype">int</span> *size, <span class="keywordtype">int</span> *free_bytes, <a name="l02056"></a>02056 <span class="keywordtype">char</span> **status_text); <a name="l02057"></a>02057 <a name="l02058"></a>02058 <span class="comment"></span> <a name="l02059"></a>02059 <span class="comment">/** Inquire whether the most recent write run was successful.</span> <a name="l02060"></a>02060 <span class="comment"> Wrapper for: burn_drive_wrote_well()</span> <a name="l02061"></a>02061 <span class="comment"> @since 0.1.0</span> <a name="l02062"></a>02062 <span class="comment"> @param d The drive to inquire</span> <a name="l02063"></a>02063 <span class="comment"> @return 1=burn seems to have went well, 0=burn failed</span> <a name="l02064"></a>02064 <span class="comment">*/</span> <a name="l02065"></a>02065 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a154ff3286da356c87784d98537c76a2a" title="Inquire whether the most recent write run was successful.">isoburn_drive_wrote_well</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l02066"></a>02066 <a name="l02067"></a>02067 <span class="comment"></span> <a name="l02068"></a>02068 <span class="comment">/** Call this after isoburn_disc_write has finished and burn_drive_wrote_well()</span> <a name="l02069"></a>02069 <span class="comment"> indicates success. It will eventually complete the emulation of</span> <a name="l02070"></a>02070 <span class="comment"> multi-session functionality, if needed at all. Let libisoburn decide.</span> <a name="l02071"></a>02071 <span class="comment"> Not a wrapper, but peculiar to libisoburn.</span> <a name="l02072"></a>02072 <span class="comment"> @since 0.1.0</span> <a name="l02073"></a>02073 <span class="comment"> @param d The output drive to which the session was written</span> <a name="l02074"></a>02074 <span class="comment"> @return 1 success , <=0 failure</span> <a name="l02075"></a>02075 <span class="comment">*/</span> <a name="l02076"></a>02076 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#aff42634c291ec9d69d1de1019669466e" title="Call this after isoburn_disc_write has finished and burn_drive_wrote_well() indicates success...">isoburn_activate_session</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l02077"></a>02077 <a name="l02078"></a>02078 <span class="comment"></span> <a name="l02079"></a>02079 <span class="comment">/** Wait after normal end of operations until libisofs ended all write</span> <a name="l02080"></a>02080 <span class="comment"> threads and freed resource reservations.</span> <a name="l02081"></a>02081 <span class="comment"> This call is not mandatory. But without it, messages from the ending</span> <a name="l02082"></a>02082 <span class="comment"> threads might appear after the application ended its write procedure.</span> <a name="l02083"></a>02083 <span class="comment"> @since 0.1.0</span> <a name="l02084"></a>02084 <span class="comment"> @param input_drive The drive resp. in_drive which was used with the</span> <a name="l02085"></a>02085 <span class="comment"> preparation call.</span> <a name="l02086"></a>02086 <span class="comment"> @param output_drive The out_drive used with isoburn_prepare_new_image(),</span> <a name="l02087"></a>02087 <span class="comment"> NULL if none.</span> <a name="l02088"></a>02088 <span class="comment"> @param flag Bitfield, submit 0 for now.</span> <a name="l02089"></a>02089 <span class="comment"> @return <=0 error , 1 = success</span> <a name="l02090"></a>02090 <span class="comment">*/</span> <a name="l02091"></a>02091 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a4b66eeee54065fdf2aeec54f963b96dc" title="Wait after normal end of operations until libisofs ended all write threads and freed resource reserva...">isoburn_sync_after_write</a>(<span class="keyword">struct</span> burn_drive *input_drive, <a name="l02092"></a>02092 <span class="keyword">struct</span> burn_drive *output_drive, <span class="keywordtype">int</span> flag); <a name="l02093"></a>02093 <a name="l02094"></a>02094 <span class="comment"></span> <a name="l02095"></a>02095 <span class="comment">/** Release an acquired drive.</span> <a name="l02096"></a>02096 <span class="comment"> Wrapper for: burn_drive_release()</span> <a name="l02097"></a>02097 <span class="comment"> @since 0.1.0</span> <a name="l02098"></a>02098 <span class="comment"> @param drive The drive to be released</span> <a name="l02099"></a>02099 <span class="comment"> @param eject 1= eject medium from drive , 0= do not eject</span> <a name="l02100"></a>02100 <span class="comment">*/</span> <a name="l02101"></a>02101 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#ae27964b4041db06e93cc6536d9f6a5d5" title="Release an acquired drive.">isoburn_drive_release</a>(<span class="keyword">struct</span> burn_drive *drive, <span class="keywordtype">int</span> eject); <a name="l02102"></a>02102 <a name="l02103"></a>02103 <span class="comment"></span> <a name="l02104"></a>02104 <span class="comment">/** Shutdown all three libraries.</span> <a name="l02105"></a>02105 <span class="comment"> Wrapper for : iso_finish() and burn_finish().</span> <a name="l02106"></a>02106 <span class="comment"> @since 0.1.0</span> <a name="l02107"></a>02107 <span class="comment">*/</span> <a name="l02108"></a>02108 <span class="keywordtype">void</span> <a class="code" href="libisoburn_8h.html#a845daef73309e7b200d74d9384b88cdf" title="Shutdown all three libraries.">isoburn_finish</a>(<span class="keywordtype">void</span>); <a name="l02109"></a>02109 <a name="l02110"></a>02110 <a name="l02111"></a>02111 <span class="comment">/*</span> <a name="l02112"></a>02112 <span class="comment"> The following calls are for expert applications only.</span> <a name="l02113"></a>02113 <span class="comment"> An application should have a special reason to use them.</span> <a name="l02114"></a>02114 <span class="comment">*/</span> <a name="l02115"></a>02115 <a name="l02116"></a>02116 <span class="comment"></span> <a name="l02117"></a>02117 <span class="comment">/** Inquire wether the medium needs emulation or would be suitable for</span> <a name="l02118"></a>02118 <span class="comment"> generic multi-session via libburn.</span> <a name="l02119"></a>02119 <span class="comment"> @since 0.1.0</span> <a name="l02120"></a>02120 <span class="comment"> @param d The drive to inquire</span> <a name="l02121"></a>02121 <span class="comment"> @return 0 is generic multi-session </span> <a name="l02122"></a>02122 <span class="comment"> 1 is emulated multi-session</span> <a name="l02123"></a>02123 <span class="comment"> -1 is not suitable for isoburn</span> <a name="l02124"></a>02124 <span class="comment">*/</span> <a name="l02125"></a>02125 <span class="keywordtype">int</span> <a class="code" href="libisoburn_8h.html#a18197ed88f597bed7f0ff61e690be0b9" title="Inquire wether the medium needs emulation or would be suitable for generic multi-session via libburn...">isoburn_needs_emulation</a>(<span class="keyword">struct</span> burn_drive *d); <a name="l02126"></a>02126 <a name="l02127"></a>02127 <a name="l02128"></a>02128 <span class="comment">/* ---------------------------- Test area ----------------------------- */</span> <a name="l02129"></a>02129 <a name="l02130"></a>02130 <span class="comment">/* no tests active, currently */</span> <a name="l02131"></a>02131 </pre></div></div> </div> <hr size="1"><address style="text-align: right;"><small>Generated for libisoburn by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.7.4 </small></address> </body> </html>