<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Reading</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="bkisofs Usage and Reference Manual" HREF="book1.html"><LINK REL="UP" TITLE="Function Reference" HREF="c73.html"><LINK REL="PREVIOUS" TITLE="Function Reference" HREF="c73.html"><LINK REL="NEXT" TITLE="Adding" HREF="x153.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >bkisofs Usage and Reference Manual</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="c73.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Function Reference</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x153.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="AEN95" >Reading</A ></H1 ><P ></P ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="AEN98" ><TT CLASS="FUNCTION" >bk_open_image()</TT ></A ></H2 ><DIV CLASS="FUNCSYNOPSIS" ><P ></P ><A NAME="AEN101" ></A ><P ><CODE ><CODE CLASS="FUNCDEF" >int <TT CLASS="FUNCTION" >bk_open_image</TT ></CODE >(VolInfo* <TT CLASS="PARAMETER" ><I >volInfo</I ></TT >, const char* <TT CLASS="PARAMETER" ><I >filename</I ></TT >);</CODE ></P ><P ></P ></DIV ><P >This basically just opens the ISO file for reading. The parameter <TT CLASS="PARAMETER" ><I >filename</I ></TT > can have any string in it that would work with the C function <TT CLASS="FUNCTION" >open()</TT >, i.e. it can have a full or relative or no path plus the name of the file.</P ><P >Call <TT CLASS="FUNCTION" >bk_open_image()</TT > after <TT CLASS="FUNCTION" >bk_init_vol_info()</TT > and before <TT CLASS="FUNCTION" >bk_read_vol_info()</TT >.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="AEN116" ><TT CLASS="FUNCTION" >bk_read_vol_info()</TT ></A ></H2 ><DIV CLASS="FUNCSYNOPSIS" ><P ></P ><A NAME="AEN119" ></A ><P ><CODE ><CODE CLASS="FUNCDEF" >int <TT CLASS="FUNCTION" >bk_read_vol_info</TT ></CODE >(VolInfo* <TT CLASS="PARAMETER" ><I >volInfo</I ></TT >);</CODE ></P ><P ></P ></DIV ><P >This reads information about the ISO: things like the volume name, creation time and the types of directory trees available (ISO9660, Rockrdge, Joliet). Also some boot record information is read (complete boot record info is not guaranteed until after the directory tree is read).</P ><P >Important to know is that <TT CLASS="FUNCTION" >bk_estimate_iso_size()</TT > will not work at this point, you must read the directory tree first.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="AEN128" ><TT CLASS="FUNCTION" >bk_read_dir_tree()</TT ></A ></H2 ><DIV CLASS="FUNCSYNOPSIS" ><P ></P ><A NAME="AEN131" ></A ><P ><CODE ><CODE CLASS="FUNCDEF" >int <TT CLASS="FUNCTION" >bk_read_dir_tree</TT ></CODE >(VolInfo* <TT CLASS="PARAMETER" ><I >volInfo</I ></TT >, int <TT CLASS="PARAMETER" ><I >filenameType</I ></TT >, bool <TT CLASS="PARAMETER" ><I >keepPosixPermissions</I ></TT >, void(*<TT CLASS="PARAMETER" ><I >progressFunction</I ></TT >)(VolInfo*));</CODE ></P ><P ></P ></DIV ><P >This function reads a set of entire directory trees (all the directories and files) from the ISO. bk is capable of reading ISO9660, RockRidge, and Joliet filenames so you can ask to read any of those. You have to decide which one you want based on the available types in <CODE CLASS="CLASSNAME" >VolInfo</CODE >.<CODE CLASS="CLASSNAME" >filenameTypes</CODE >. I recommend that you choose RockRidge over Joliet and Joliet over ISO9660. To illustrate, here's an example:</P ><P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > if(GBLvolInfo.filenameTypes & FNTYPE_ROCKRIDGE) rc = bk_read_dir_tree(&GBLvolInfo, FNTYPE_ROCKRIDGE, true, activityProgressUpdaterCbk); else if(GBLvolInfo.filenameTypes & FNTYPE_JOLIET) rc = bk_read_dir_tree(&GBLvolInfo, FNTYPE_JOLIET, false, activityProgressUpdaterCbk); else rc = bk_read_dir_tree(&GBLvolInfo, FNTYPE_9660, false, activityProgressUpdaterCbk);</PRE ></TD ></TR ></TABLE ></P ><P ><TT CLASS="PARAMETER" ><I >progressFunction</I ></TT > is a pointer to a function that takes a <CODE CLASS="CLASSNAME" >VolInfo*</CODE > as a parameter and returns <CODE CLASS="CLASSNAME" >void</CODE >. bk will call this function every 1 second or so. You can pass in NULL if you like but in that case control won't be returned to your code until <TT CLASS="FUNCTION" >bk_add()</TT > is finished doing what it has to do so you can't update a progress bar or cancel adding.</P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="c73.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x153.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Function Reference</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c73.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Adding</TD ></TR ></TABLE ></DIV ></BODY ></HTML >