util.c.htm

来自「光驱cdrom读写源代码,scsi命令解析」· HTM 代码 · 共 382 行 · 第 1/3 页

HTM
382
字号
<a class="l" name="61">     61 </a><a class="l" name="62">     62 </a>		<span class="c">/* Lets wait a sec. and try again */</span><a class="l" name="63">     63 </a>		<b>if</b> (<a href="/source/s?defs=errno">errno</a> == <a href="/source/s?defs=EAGAIN">EAGAIN</a>) {<a class="l" name="64">     64 </a>			(<b>void</b>) <a href="/source/s?defs=sleep">sleep</a>(<span class="n">1</span>);<a class="l" name="65">     65 </a>			<a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=malloc">malloc</a>(<a href="/source/s?defs=size">size</a>);<a class="l" name="66">     66 </a>		}<a class="l" name="67">     67 </a><a class="l" name="68">     68 </a>		<b>if</b> (<a href="/source/s?defs=ret">ret</a> == <a href="/source/s?defs=NULL">NULL</a>) {<a class="l" name="69">     69 </a>			(<b>void</b>) <a href="/source/s?defs=err_msg">err_msg</a>(<span class="s">"%s\n"</span>, <a href="/source/s?defs=gettext">gettext</a>(<a href="/source/s?defs=strerror">strerror</a>(<a href="/source/s?defs=errno">errno</a>)));<a class="hl" name="70">     70 </a>			(<b>void</b>) <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<a class="l" name="71">     71 </a>			    <span class="s">"Memory allocation failure, Exiting...\n"</span>));<a class="l" name="72">     72 </a>			<a href="/source/s?defs=exit">exit</a>(<span class="n">1</span>);<a class="l" name="73">     73 </a>		}<a class="l" name="74">     74 </a>	}<a class="l" name="75">     75 </a>	(<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=ret">ret</a>, <span class="n">0</span>, <a href="/source/s?defs=size">size</a>);<a class="l" name="76">     76 </a>	<b>return</b> (<a href="/source/s?defs=ret">ret</a>);<a class="l" name="77">     77 </a>}<a class="l" name="78">     78 </a><a class="l" name="79">     79 </a><span class="c">/*<a class="hl" name="80">     80 </a> * Prints a string after going back pos number of steps.<a class="l" name="81">     81 </a> * Mainly used to show %age complete.<a class="l" name="82">     82 </a> */</span><a class="l" name="83">     83 </a><b>int</b><a class="l" name="84">     84 </a><a href="/source/s?defs=str_print">str_print</a>(<b>char</b> *<a href="/source/s?defs=str">str</a>, <b>int</b> <a href="/source/s?defs=pos">pos</a>)<a class="l" name="85">     85 </a>{<a class="l" name="86">     86 </a>	<b>if</b> ((<a href="/source/s?defs=pos">pos</a> &gt; <span class="n">0</span>) &amp;&amp; (<a href="/source/s?defs=pos">pos</a> &lt; <span class="n">80</span>)) {<a class="l" name="87">     87 </a>		(<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=strbuf">strbuf</a>, <span class="n">8</span>, <a href="/source/s?defs=pos">pos</a>);<a class="l" name="88">     88 </a>		<a href="/source/s?defs=strbuf">strbuf</a>[<a href="/source/s?defs=pos">pos</a>] = <span class="n">0</span>;<a class="l" name="89">     89 </a>		(<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=strbuf">strbuf</a>);<a class="hl" name="90">     90 </a>		(<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=strbuf">strbuf</a>, <span class="s">' '</span>, <a href="/source/s?defs=pos">pos</a>);<a class="l" name="91">     91 </a>		<a href="/source/s?defs=strbuf">strbuf</a>[<a href="/source/s?defs=pos">pos</a>] = <span class="n">0</span>;<a class="l" name="92">     92 </a>		(<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=strbuf">strbuf</a>);<a class="l" name="93">     93 </a>		(<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=strbuf">strbuf</a>, <span class="n">8</span>, <a href="/source/s?defs=pos">pos</a>);<a class="l" name="94">     94 </a>		<a href="/source/s?defs=strbuf">strbuf</a>[<a href="/source/s?defs=pos">pos</a>] = <span class="n">0</span>;<a class="l" name="95">     95 </a>		(<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<a href="/source/s?defs=strbuf">strbuf</a>);<a class="l" name="96">     96 </a>	}<a class="l" name="97">     97 </a><a class="l" name="98">     98 </a>	(<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"%s"</span>, <a href="/source/s?defs=str">str</a>);<a class="l" name="99">     99 </a>	(<b>void</b>) <a href="/source/s?defs=fflush">fflush</a>(<a href="/source/s?defs=stdout">stdout</a>);<a class="hl" name="100">    100 </a>	<b>return</b> (<a href="/source/s?defs=strlen">strlen</a>(<a href="/source/s?defs=str">str</a>));<a class="l" name="101">    101 </a>}<a class="l" name="102">    102 </a><a class="l" name="103">    103 </a><span class="c">/*<a class="l" name="104">    104 </a> * dump the trackio_error struct.<a class="l" name="105">    105 </a> */</span><a class="l" name="106">    106 </a><b>void</b><a class="l" name="107">    107 </a><a href="/source/s?defs=print_trackio_error">print_trackio_error</a>(<b>struct</b> <a href="/source/s?defs=trackio_error">trackio_error</a> *<a href="/source/s?defs=te">te</a>)<a class="l" name="108">    108 </a>{<a class="l" name="109">    109 </a>	<b>char</b> *<a href="/source/s?defs=msg">msg</a>, *<a href="/source/s?defs=msg1">msg1</a>;<a class="hl" name="110">    110 </a><a class="l" name="111">    111 </a>	<a href="/source/s?defs=msg">msg</a> = <a href="/source/s?defs=gettext">gettext</a>(<span class="s">"System could not supply data at the required rate.\n"</span>);<a class="l" name="112">    112 </a>	<a href="/source/s?defs=msg1">msg1</a> = <a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Try using a lower speed for write\n"</span>);<a class="l" name="113">    113 </a><a class="l" name="114">    114 </a>	<b>switch</b> (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=err_type">err_type</a>) {<a class="l" name="115">    115 </a>	<b>case</b> <a href="/source/s?defs=TRACKIO_ERR_SYSTEM">TRACKIO_ERR_SYSTEM</a>:<a class="l" name="116">    116 </a>		<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"System error: %s\n"</span>), <a href="/source/s?defs=strerror">strerror</a>(<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=te_errno">te_errno</a>));<a class="l" name="117">    117 </a>		<b>return</b>;<a class="l" name="118">    118 </a>	<b>case</b> <a href="/source/s?defs=TRACKIO_ERR_TRANSPORT">TRACKIO_ERR_TRANSPORT</a>:<a class="l" name="119">    119 </a>		<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Transport mechanism error:\n"</span>));<a class="hl" name="120">    120 </a>		<b>if</b> (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=status">status</a> == <span class="n">2</span>) {<a class="l" name="121">    121 </a>			<b>if</b> ((<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=key">key</a> == <span class="n">3</span>) &amp;&amp; (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=asc">asc</a> == <span class="n">0x0c</span>) &amp;&amp;<a class="l" name="122">    122 </a>			    (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=ascq">ascq</a> == <span class="n">9</span>)) {<a class="l" name="123">    123 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=msg">msg</a>);<a class="l" name="124">    124 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=msg1">msg1</a>);<a class="l" name="125">    125 </a>				<b>return</b>;<a class="l" name="126">    126 </a>			}<a class="l" name="127">    127 </a>			<b>if</b> (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=key">key</a> == <span class="n">3</span>) {<a class="l" name="128">    128 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Bad media.\n"</span>));<a class="l" name="129">    129 </a>				<b>return</b>;<a class="hl" name="130">    130 </a>			}<a class="l" name="131">    131 </a>			<b>if</b> (<a href="/source/s?defs=debug">debug</a>) {<a class="l" name="132">    132 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<span class="s">"Sense key %x, <a href="/source/s?path=asc/">asc</a>/<a href="/source/s?path=asc/asq">asq</a> %x/%x\n"</span>,<a class="l" name="133">    133 </a>				    <a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=key">key</a>, <a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=asc">asc</a>, <a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=ascq">ascq</a>);<a class="l" name="134">    134 </a>			} <b>else</b> {<a class="l" name="135">    135 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"I/O error\n"</span>));<a class="l" name="136">    136 </a>			}<a class="l" name="137">    137 </a>			<b>return</b>;<a class="l" name="138">    138 </a>		}<a class="l" name="139">    139 </a>		<b>if</b> (<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=te_errno">te_errno</a> != <span class="n">0</span>)<a class="hl" name="140">    140 </a>			<a href="/source/s?defs=err_msg">err_msg</a>(<span class="s">"%s\n"</span>, <a href="/source/s?defs=strerror">strerror</a>(<a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=te_errno">te_errno</a>));<a class="l" name="141">    141 </a>		<b>return</b>;<a class="l" name="142">    142 </a>	<b>case</b> <a href="/source/s?defs=TRACKIO_ERR_USER_ABORT">TRACKIO_ERR_USER_ABORT</a>:<a class="l" name="143">    143 </a>		<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"User abort.\n"</span>));<a class="l" name="144">    144 </a>		<b>return</b>;<a class="l" name="145">    145 </a>	<b>default</b>:<a class="l" name="146">    146 </a>		<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unknown error type.\n"</span>));<a class="l" name="147">    147 </a>		<b>if</b> (<a href="/source/s?defs=debug">debug</a>) {<a class="l" name="148">    148 </a>			<a href="/source/s?defs=err_msg">err_msg</a>(<span class="s">"Trackio err type %d\n"</span>, <a href="/source/s?defs=te">te</a>-&gt;<a href="/source/s?defs=err_type">err_type</a>);<a class="l" name="149">    149 </a>		}<a class="hl" name="150">    150 </a>	}<a class="l" name="151">    151 </a>}<a class="l" name="152">    152 </a><a class="l" name="153">    153 </a><b>char</b> *<a class="l" name="154">    154 </a><a href="/source/s?defs=get_err_str">get_err_str</a>(<b>void</b>)<a class="l" name="155">    155 </a>{<a class="l" name="156">    156 </a>	<b>if</b> (<a href="/source/s?defs=str_errno">str_errno</a> != <span class="n">0</span>)<a class="l" name="157">    157 </a>		<b>return</b> (<a href="/source/s?defs=str_errno_to_string">str_errno_to_string</a>(<a href="/source/s?defs=str_errno">str_errno</a>));<a class="l" name="158">    158 </a>	<b>return</b> (<a href="/source/s?defs=strerror">strerror</a>(<a href="/source/s?defs=errno">errno</a>));<a class="l" name="159">    159 </a>}<a class="hl" name="160">    160 </a><a class="l" name="161">    161 </a><b>int</b><a class="l" name="162">    162 </a><a href="/source/s?defs=get_audio_type">get_audio_type</a>(<b>char</b> *<a href="/source/s?defs=ext">ext</a>)<a class="l" name="163">    163 </a>{<a class="l" name="164">    164 </a>	<b>if</b> ((<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"au"</span>) == <span class="n">0</span>) ||<a class="l" name="165">    165 </a>	    (<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"sun"</span>) == <span class="n">0</span>))<a class="l" name="166">    166 </a>		<b>return</b> (<a href="/source/s?defs=AUDIO_TYPE_SUN">AUDIO_TYPE_SUN</a>);<a class="l" name="167">    167 </a>	<b>if</b> ((<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"wav"</span>) == <span class="n">0</span>) ||<a class="l" name="168">    168 </a>	    (<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"riff"</span>) == <span class="n">0</span>))<a class="l" name="169">    169 </a>		<b>return</b> (<a href="/source/s?defs=AUDIO_TYPE_WAV">AUDIO_TYPE_WAV</a>);<a class="hl" name="170">    170 </a>	<b>if</b> (<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"cda"</span>) == <span class="n">0</span>)<a class="l" name="171">    171 </a>		<b>return</b> (<a href="/source/s?defs=AUDIO_TYPE_CDA">AUDIO_TYPE_CDA</a>);<a class="l" name="172">    172 </a>	<b>if</b> (<a href="/source/s?defs=strcasecmp">strcasecmp</a>(<a href="/source/s?defs=ext">ext</a>, <span class="s">"aur"</span>) == <span class="n">0</span>)<a class="l" name="173">    173 </a>		<b>return</b> (<a href="/source/s?defs=AUDIO_TYPE_AUR">AUDIO_TYPE_AUR</a>);<a class="l" name="174">    174 </a><a class="l" name="175">    175 </a>	<b>return</b> (-<span class="n">1</span>);<a class="l" name="176">    176 </a>}<a class="l" name="177">    177 </a><a class="l" name="178">    178 </a><span class="c">/*<a class="l" name="179">    179 </a> * common routines for showing progress.<a class="hl" name="180">    180 </a> */</span><a class="l" name="181">    181 </a><a class="l" name="182">    182 </a><b>int</b> <a href="/source/s?defs=progress_pos">progress_pos</a>;<a class="l" name="183">    183 </a><b>static</b> <a href="/source/s?defs=uint64_t">uint64_t</a> <a href="/source/s?defs=last_total">last_total</a>;<a class="l" name="184">    184 </a><a href="/source/s?defs=time_t">time_t</a> <a href="/source/s?defs=tm">tm</a>;<a class="l" name="185">    185 </a><a class="l" name="186">    186 </a><b>void</b><a class="l" name="187">    187 </a><a href="/source/s?defs=init_progress">init_progress</a>(<b>void</b>)<a class="l" name="188">    188 </a>{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?