📄 dumpinfo.c.htm
字号:
<a class="l" name="66"> 66 </a> <b>if</b> (<a href="/source/s?defs=verbose">verbose</a> != <span class="n">0</span>) {<a class="l" name="67"> 67 </a> <span class="c">/*<a class="l" name="68"> 68 </a> * Determine the media type by reading the active profile<a class="l" name="69"> 69 </a> * from the profile list.<a class="hl" name="70"> 70 </a> */</span><a class="l" name="71"> 71 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Media Type : "</span>));<a class="l" name="72"> 72 </a><a class="l" name="73"> 73 </a> <a href="/source/s?defs=conf">conf</a> = (<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<a href="/source/s?defs=MMC_FTR_HDR_LEN">MMC_FTR_HDR_LEN</a>);<a class="l" name="74"> 74 </a><a class="l" name="75"> 75 </a> <b>if</b> (<a href="/source/s?defs=get_configuration">get_configuration</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=MMC_FTR_PRFL_LIST">MMC_FTR_PRFL_LIST</a>,<a class="l" name="76"> 76 </a> <a href="/source/s?defs=MMC_FTR_HDR_LEN">MMC_FTR_HDR_LEN</a>, <a href="/source/s?defs=conf">conf</a>))<a class="l" name="77"> 77 </a> <a href="/source/s?defs=print_profile_name">print_profile_name</a>(<a href="/source/s?defs=read_scsi16">read_scsi16</a>(&<a href="/source/s?defs=conf">conf</a>[<span class="n">6</span>]), <span class="n">0</span>, <span class="n">1</span>);<a class="l" name="78"> 78 </a> <b>else</b><a class="l" name="79"> 79 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"UNKNOWN\n"</span>));<a class="hl" name="80"> 80 </a><a class="l" name="81"> 81 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=conf">conf</a>);<a class="l" name="82"> 82 </a><a class="l" name="83"> 83 </a> <span class="c">/*<a class="l" name="84"> 84 </a> * Get the start address of the last possible lead out.<a class="l" name="85"> 85 </a> */</span><a class="l" name="86"> 86 </a> <a href="/source/s?defs=cap">cap</a> = <a href="/source/s?defs=get_last_possible_lba">get_last_possible_lba</a>(<a href="/source/s?defs=target">target</a>);<a class="l" name="87"> 87 </a><a class="l" name="88"> 88 </a> <span class="c">/*<a class="l" name="89"> 89 </a> * The start address of the last possible leadout will only<a class="hl" name="90"> 90 </a> * be zero if the disc is full or this drive does not support<a class="l" name="91"> 91 </a> * this method of determining capacity.<a class="l" name="92"> 92 </a> */</span><a class="l" name="93"> 93 </a> <b>if</b> (<a href="/source/s?defs=cap">cap</a> == <span class="n">0</span>)<a class="l" name="94"> 94 </a> <a href="/source/s?defs=cap">cap</a> = <a href="/source/s?defs=read_format_capacity">read_format_capacity</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, &<a href="/source/s?defs=bsize">bsize</a>);<a class="l" name="95"> 95 </a><a class="l" name="96"> 96 </a> <span class="c">/*<a class="l" name="97"> 97 </a> * Since both methods of determining the capacity of the<a class="l" name="98"> 98 </a> * media count the correct number of blocks, just multiply<a class="l" name="99"> 99 </a> * the capacity by the block size.<a class="hl" name="100"> 100 </a> */</span><a class="l" name="101"> 101 </a> <a href="/source/s?defs=cap">cap</a> *= <a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_blksize">d_blksize</a>;<a class="l" name="102"> 102 </a><a class="l" name="103"> 103 </a> <b>if</b> (<a href="/source/s?defs=device_type">device_type</a> == <a href="/source/s?defs=CD_RW">CD_RW</a>) {<a class="l" name="104"> 104 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Media Capacity : %.2f MB "</span>),<a class="l" name="105"> 105 </a> ((<b>double</b>)<a href="/source/s?defs=cap">cap</a>/<a href="/source/s?defs=ONE_MB_BASE2">ONE_MB_BASE2</a>));<a class="l" name="106"> 106 </a> } <b>else</b> {<a class="l" name="107"> 107 </a> <span class="c">/*<a class="l" name="108"> 108 </a> * For DVD's make sure we print out "Formatted Media<a class="l" name="109"> 109 </a> * Capacity". Don't do this for CD-RWs as only<a class="hl" name="110"> 110 </a> * DVDs are formatted.<a class="l" name="111"> 111 </a> */</span><a class="l" name="112"> 112 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Formatted Media Capacity : "</span><a class="l" name="113"> 113 </a> <span class="s">"%.2f GB "</span>), ((<b>double</b>)<a href="/source/s?defs=cap">cap</a>/<a href="/source/s?defs=ONE_GB_BASE10">ONE_GB_BASE10</a>));<a class="l" name="114"> 114 </a> }<a class="l" name="115"> 115 </a><a class="l" name="116"> 116 </a> <a href="/source/s?defs=cap">cap</a> /= <a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_blksize">d_blksize</a>;<a class="l" name="117"> 117 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"(%u blocks)\n"</span>), (<a href="/source/s?defs=uint_t">uint_t</a>)<a href="/source/s?defs=cap">cap</a>);<a class="l" name="118"> 118 </a> }<a class="l" name="119"> 119 </a><a class="hl" name="120"> 120 </a> <b>if</b> (!<a href="/source/s?defs=check_device">check_device</a>(<a href="/source/s?defs=target">target</a>, <a href="/source/s?defs=CHECK_MEDIA_IS_NOT_BLANK">CHECK_MEDIA_IS_NOT_BLANK</a>)) {<a class="l" name="121"> 121 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Media is blank\n"</span>));<a class="l" name="122"> 122 </a> <a href="/source/s?defs=exit">exit</a>(<span class="n">0</span>);<a class="l" name="123"> 123 </a> }<a class="l" name="124"> 124 </a><a class="l" name="125"> 125 </a> <span class="c">/* Find out the number of entries in the toc */</span><a class="l" name="126"> 126 </a> <a href="/source/s?defs=toc">toc</a> = (<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<span class="n">12</span>);<a class="l" name="127"> 127 </a> <b>if</b> (!<a href="/source/s?defs=read_toc">read_toc</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <span class="n">0</span>, <span class="n">1</span>, <span class="n">4</span>, <a href="/source/s?defs=toc">toc</a>)) {<a class="l" name="128"> 128 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=msg">msg</a>);<a class="l" name="129"> 129 </a> } <b>else</b> {<a class="hl" name="130"> 130 </a> <a href="/source/s?defs=toc_size">toc_size</a> = <span class="n">256</span>*<a href="/source/s?defs=toc">toc</a>[<span class="n">0</span>] + <a href="/source/s?defs=toc">toc</a>[<span class="n">1</span>] + <span class="n">2</span>;<a class="l" name="131"> 131 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=toc">toc</a>);<a class="l" name="132"> 132 </a><a class="l" name="133"> 133 </a> <span class="c">/* allocate enough space for each track entry */</span><a class="l" name="134"> 134 </a> <a href="/source/s?defs=toc">toc</a> = (<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<a href="/source/s?defs=toc_size">toc_size</a>);<a class="l" name="135"> 135 </a><a class="l" name="136"> 136 </a> <b>if</b> (!<a href="/source/s?defs=read_toc">read_toc</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <span class="n">0</span>, <span class="n">1</span>, <a href="/source/s?defs=toc_size">toc_size</a>, <a href="/source/s?defs=toc">toc</a>)) {<a class="l" name="137"> 137 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=msg">msg</a>);<a class="l" name="138"> 138 </a> <a href="/source/s?defs=exit">exit</a>(<span class="n">1</span>);<a class="l" name="139"> 139 </a> }<a class="hl" name="140"> 140 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"\n"</span>);<a class="l" name="141"> 141 </a><a class="l" name="142"> 142 </a> <span class="c">/* l10n_NOTE : Preserve column numbers of '|' character */</span><a class="l" name="143"> 143 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Track No. |Type |Start address\n"</span>));<a class="l" name="144"> 144 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"----------+--------+-------------\n"</span>);<a class="l" name="145"> 145 </a><a class="l" name="146"> 146 </a><a class="l" name="147"> 147 </a> <span class="c">/* look at each track and display it's type. */</span><a class="l" name="148"> 148 </a><a class="l" name="149"> 149 </a> <b>for</b> (p = &<a href="/source/s?defs=toc">toc</a>[<span class="n">4</span>]; p < (<a href="/source/s?defs=toc">toc</a> + <a href="/source/s?defs=toc_size">toc_size</a>); p += <span class="n">8</span>) {<a class="hl" name="150"> 150 </a> <b>if</b> (p[<span class="n">2</span>] != <span class="n">0xAA</span>)<a class="l" name="151"> 151 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">" %-3d |"</span>, p[<span class="n">2</span>]);<a class="l" name="152"> 152 </a> <b>else</b><a class="l" name="153"> 153 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"Leadout |"</span>);<a class="l" name="154"> 154 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"%s |"</span>, (p[<span class="n">1</span>] & <span class="n">4</span>) ? <a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Data "</span>) :<a class="l" name="155"> 155 </a> <a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Audio"</span>));<a class="l" name="156"> 156 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"%u\n"</span>, <a href="/source/s?defs=read_scsi32">read_scsi32</a>(&p[<span class="n">4</span>]));<a class="l" name="157"> 157 </a> }<a class="l" name="158"> 158 </a> }<a class="l" name="159"> 159 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"\n"</span>);<a class="hl" name="160"> 160 </a> <a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=read_toc">read_toc</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">12</span>, <a href="/source/s?defs=toc">toc</a>);<a class="l" name="161"> 161 </a> <b>if</b> ((<a href="/source/s?defs=ret">ret</a> == <span class="n">0</span>) || (<a href="/source/s?defs=toc">toc</a>[<span class="n">1</span>] != <span class="n">0x0a</span>))<a class="l" name="162"> 162 </a> <span class="c">/* For ATAPI drives or old Toshiba drives */</span><a class="l" name="163"> 163 </a> <a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=read_toc_as_per_8020">read_toc_as_per_8020</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">12</span>, <a href="/source/s?defs=toc">toc</a>);<a class="l" name="164"> 164 </a><a class="l" name="165"> 165 </a> <b>if</b> (<a href="/source/s?defs=ret">ret</a> && (<a href="/source/s?defs=toc">toc</a>[<span class="n">1</span>] == <span class="n">0x0a</span>)) {<a class="l" name="166"> 166 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Last session start address: %u\n"</span>),<a class="l" name="167"> 167 </a> <a href="/source/s?defs=read_scsi32">read_scsi32</a>(&<a href="/source/s?defs=toc">toc</a>[<span class="n">8</span>]));<a class="l" name="168"> 168 </a> }<a class="l" name="169"> 169 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=toc">toc</a>);<a class="hl" name="170"> 170 </a> <a href="/source/s?defs=ti">ti</a> = (<b>struct</b> <a href="/source/s?defs=track_info">track_info</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<b>sizeof</b> (<b>struct</b> <a href="/source/s?defs=track_info">track_info</a>));<a class="l" name="171"> 171 </a><a class="l" name="172"> 172 </a> <b>if</b> (<a href="/source/s?defs=build_track_info">build_track_info</a>(<a href="/source/s?defs=target">target</a>, -<span class="n">1</span>, <a href="/source/s?defs=ti">ti</a>) && (<a href="/source/s?defs=ti">ti</a>-><a href="/source/s?defs=ti_flags">ti_flags</a> & <a href="/source/s?defs=TI_NWA_VALID">TI_NWA_VALID</a>)) {<a class="l" name="173"> 173 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Next writable address: %u\n"</span>),<a class="l" name="174"> 174 </a> <a href="/source/s?defs=ti">ti</a>-><a href="/source/s?defs=ti_nwa">ti_nwa</a>);<a class="l" name="175"> 175 </a> }<a class="l" name="176"> 176 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=ti">ti</a>);<a class="l" name="177"> 177 </a> <a href="/source/s?defs=exit">exit</a>(<span class="n">0</span>);<a class="l" name="178"> 178 </a>}<a class="l" name="179"> 179 </a></pre></div><div id="Footer"><p class="Center"><a href="http://www.opensolaris.org/os/project/opengrok/"><img src="/source/default/img/servedby.png" alt="Served by OpenGrok" title="Served by OpenGrok"/></a></p><p class="Center"><a href="http://www.opensolaris.org/os/tou/">Terms of Use</a> |<a href="http://www.sun.com/privacy/">Privacy</a> |<a href="http://www.opensolaris.org/os/trademark/">Trademarks</a> |<a href="http://www.opensolaris.org/os/copyrights/">Copyright Policy</a> |<a href="http://www.opensolaris.org/os/site_guidelines/">Site Guidelines</a> |<a href="http://www.opensolaris.org/os/about/help/">Help</a><br />Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.<br />Copyright © 1995-2008 Sun Microsystems, Inc.<br /></p><script type="text/javascript" src="http://www.opensolaris.org/js/s_code_remote.js"></script></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -