📄 bstream.c.htm
字号:
<a class="l" name="57"> 57 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_NO_READ_STDIN">STR_ERR_NO_READ_STDIN</a>:<a class="l" name="58"> 58 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Stdin not open for reading"</span>));<a class="l" name="59"> 59 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_AU_READ_ERR">STR_ERR_AU_READ_ERR</a>:<a class="hl" name="60"> 60 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unable to read au header"</span>));<a class="l" name="61"> 61 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_AU_UNSUPPORTED_FORMAT">STR_ERR_AU_UNSUPPORTED_FORMAT</a>:<a class="l" name="62"> 62 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unsupported au format"</span>));<a class="l" name="63"> 63 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_AU_BAD_HEADER">STR_ERR_AU_BAD_HEADER</a>:<a class="l" name="64"> 64 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Bad au header"</span>));<a class="l" name="65"> 65 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_WAV_READ_ERR">STR_ERR_WAV_READ_ERR</a>:<a class="l" name="66"> 66 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unable to read wav header"</span>));<a class="l" name="67"> 67 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_WAV_UNSUPPORTED_FORMAT">STR_ERR_WAV_UNSUPPORTED_FORMAT</a>:<a class="l" name="68"> 68 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unsupported wav format"</span>));<a class="l" name="69"> 69 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_WAV_BAD_HEADER">STR_ERR_WAV_BAD_HEADER</a>:<a class="hl" name="70"> 70 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Bad wav header"</span>));<a class="l" name="71"> 71 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_ISO_READ_ERR">STR_ERR_ISO_READ_ERR</a>:<a class="l" name="72"> 72 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Unable to read ISO header"</span>));<a class="l" name="73"> 73 </a> <b>case</b> <a href="/source/s?defs=STR_ERR_ISO_BAD_HEADER">STR_ERR_ISO_BAD_HEADER</a>:<a class="l" name="74"> 74 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Invalid ISO header or not an ISO"</span>));<a class="l" name="75"> 75 </a> <b>default</b>:<a class="l" name="76"> 76 </a> <b>return</b> (<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"unknown error"</span>));<a class="l" name="77"> 77 </a> }<a class="l" name="78"> 78 </a>}<a class="l" name="79"> 79 </a><a class="hl" name="80"> 80 </a><b>static</b> <b>int</b><a class="l" name="81"> 81 </a><a href="/source/s?defs=file_stream_size">file_stream_size</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=off_t">off_t</a> *<a href="/source/s?defs=size">size</a>)<a class="l" name="82"> 82 </a>{<a class="l" name="83"> 83 </a> <b>struct</b> <a href="/source/s?defs=stat">stat</a> <a href="/source/s?defs=st">st</a>;<a class="l" name="84"> 84 </a><a class="l" name="85"> 85 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="86"> 86 </a><a class="l" name="87"> 87 </a> <b>if</b> (<a href="/source/s?defs=fstat">fstat</a>(h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>, &<a href="/source/s?defs=st">st</a>) < <span class="n">0</span>)<a class="l" name="88"> 88 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="89"> 89 </a> <b>if</b> ((<a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_mode">st_mode</a> & <a href="/source/s?defs=S_IFMT">S_IFMT</a>) != <a href="/source/s?defs=S_IFREG">S_IFREG</a>) {<a class="hl" name="90"> 90 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_NO_REG_FILE">STR_ERR_NO_REG_FILE</a>;<a class="l" name="91"> 91 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="92"> 92 </a> }<a class="l" name="93"> 93 </a> *<a href="/source/s?defs=size">size</a> = <a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_size">st_size</a>;<a class="l" name="94"> 94 </a> <b>return</b> (<span class="n">1</span>);<a class="l" name="95"> 95 </a>}<a class="l" name="96"> 96 </a><a class="l" name="97"> 97 </a><b>static</b> <b>int</b><a class="l" name="98"> 98 </a><a href="/source/s?defs=audio_stream_size">audio_stream_size</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=off_t">off_t</a> *<a href="/source/s?defs=size">size</a>)<a class="l" name="99"> 99 </a>{<a class="hl" name="100"> 100 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="101"> 101 </a> *<a href="/source/s?defs=size">size</a> = (<a href="/source/s?defs=off_t">off_t</a>)(<a href="/source/s?defs=uintptr_t">uintptr_t</a>)(h-><a href="/source/s?defs=bstr_private">bstr_private</a>);<a class="l" name="102"> 102 </a> <b>return</b> (<span class="n">1</span>);<a class="l" name="103"> 103 </a>}<a class="l" name="104"> 104 </a><a class="l" name="105"> 105 </a><b>static</b> <b>int</b><a class="l" name="106"> 106 </a><a href="/source/s?defs=file_stream_read">file_stream_read</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=off_t">off_t</a> <a href="/source/s?defs=size">size</a>)<a class="l" name="107"> 107 </a>{<a class="l" name="108"> 108 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="109"> 109 </a> <b>return</b> (<a href="/source/s?defs=read">read</a>(h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>, <a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=size">size</a>));<a class="hl" name="110"> 110 </a>}<a class="l" name="111"> 111 </a><a class="l" name="112"> 112 </a><b>static</b> <b>int</b><a class="l" name="113"> 113 </a><a href="/source/s?defs=file_stream_write">file_stream_write</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=off_t">off_t</a> <a href="/source/s?defs=size">size</a>)<a class="l" name="114"> 114 </a>{<a class="l" name="115"> 115 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="116"> 116 </a> <b>return</b> (<a href="/source/s?defs=write">write</a>(h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>, <a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=size">size</a>));<a class="l" name="117"> 117 </a>}<a class="l" name="118"> 118 </a><a class="l" name="119"> 119 </a><span class="c">/*<a class="hl" name="120"> 120 </a> * with reverse byteorder<a class="l" name="121"> 121 </a> */</span><a class="l" name="122"> 122 </a><b>static</b> <b>int</b><a class="l" name="123"> 123 </a><a href="/source/s?defs=file_stream_read_wrbo">file_stream_read_wrbo</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=off_t">off_t</a> <a href="/source/s?defs=size">size</a>)<a class="l" name="124"> 124 </a>{<a class="l" name="125"> 125 </a> <b>int</b> <a href="/source/s?defs=cnt">cnt</a>;<a class="l" name="126"> 126 </a><a class="l" name="127"> 127 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="128"> 128 </a> <a href="/source/s?defs=cnt">cnt</a> = <a href="/source/s?defs=read">read</a>(h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>, <a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=size">size</a>);<a class="l" name="129"> 129 </a> <b>if</b> (<a href="/source/s?defs=cnt">cnt</a> > <span class="n">0</span>) {<a class="hl" name="130"> 130 </a> <b>int</b> i;<a class="l" name="131"> 131 </a> <a href="/source/s?defs=uchar_t">uchar_t</a> <a href="/source/s?defs=ch">ch</a>;<a class="l" name="132"> 132 </a><a class="l" name="133"> 133 </a> <b>for</b> (i = <span class="n">0</span>; i < <a href="/source/s?defs=cnt">cnt</a>; i += <span class="n">2</span>) {<a class="l" name="134"> 134 </a> <a href="/source/s?defs=ch">ch</a> = <a href="/source/s?defs=buf">buf</a>[i];<a class="l" name="135"> 135 </a> <a href="/source/s?defs=buf">buf</a>[i] = <a href="/source/s?defs=buf">buf</a>[i+<span class="n">1</span>];<a class="l" name="136"> 136 </a> <a href="/source/s?defs=buf">buf</a>[i+<span class="n">1</span>] = <a href="/source/s?defs=ch">ch</a>;<a class="l" name="137"> 137 </a> }<a class="l" name="138"> 138 </a> }<a class="l" name="139"> 139 </a> <b>return</b> (<a href="/source/s?defs=cnt">cnt</a>);<a class="hl" name="140"> 140 </a>}<a class="l" name="141"> 141 </a><a class="l" name="142"> 142 </a><span class="c">/*<a class="l" name="143"> 143 </a> * This will change the byteorder in the buffer but that is fine with us.<a class="l" name="144"> 144 </a> */</span><a class="l" name="145"> 145 </a><b>static</b> <b>int</b><a class="l" name="146"> 146 </a><a href="/source/s?defs=file_stream_write_wrbo">file_stream_write_wrbo</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h, <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=off_t">off_t</a> <a href="/source/s?defs=size">size</a>)<a class="l" name="147"> 147 </a>{<a class="l" name="148"> 148 </a> <b>int</b> i;<a class="l" name="149"> 149 </a> <a href="/source/s?defs=uchar_t">uchar_t</a> <a href="/source/s?defs=ch">ch</a>;<a class="hl" name="150"> 150 </a><a class="l" name="151"> 151 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="152"> 152 </a> <b>if</b> (<a href="/source/s?defs=size">size</a> > <span class="n">0</span>) {<a class="l" name="153"> 153 </a> <b>for</b> (i = <span class="n">0</span>; i < <a href="/source/s?defs=size">size</a>; i += <span class="n">2</span>) {<a class="l" name="154"> 154 </a> <a href="/source/s?defs=ch">ch</a> = <a href="/source/s?defs=buf">buf</a>[i];<a class="l" name="155"> 155 </a> <a href="/source/s?defs=buf">buf</a>[i] = <a href="/source/s?defs=buf">buf</a>[i+<span class="n">1</span>];<a class="l" name="156"> 156 </a> <a href="/source/s?defs=buf">buf</a>[i+<span class="n">1</span>] = <a href="/source/s?defs=ch">ch</a>;<a class="l" name="157"> 157 </a> }<a class="l" name="158"> 158 </a> }<a class="l" name="159"> 159 </a> <b>return</b> (<a href="/source/s?defs=write">write</a>(h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>, <a href="/source/s?defs=buf">buf</a>, <a href="/source/s?defs=size">size</a>));<a class="hl" name="160"> 160 </a>}<a class="l" name="161"> 161 </a><a class="l" name="162"> 162 </a><b>static</b> <b>int</b><a class="l" name="163"> 163 </a><a href="/source/s?defs=file_stream_close">file_stream_close</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h)<a class="l" name="164"> 164 </a>{<a class="l" name="165"> 165 </a> <b>int</b> <a href="/source/s?defs=fd">fd</a>;<a class="l" name="166"> 166 </a><a class="l" name="167"> 167 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="168"> 168 </a> <a href="/source/s?defs=fd">fd</a> = h-><a href="/source/s?defs=bstr_fd">bstr_fd</a>;<a class="l" name="169"> 169 </a> <a href="/source/s?defs=free">free</a>(h);<a class="hl" name="170"> 170 </a> <b>return</b> (<a href="/source/s?defs=close">close</a>(<a href="/source/s?defs=fd">fd</a>));<a class="l" name="171"> 171 </a>}<a class="l" name="172"> 172 </a><a class="l" name="173"> 173 </a><b>static</b> <b>int</b><a class="l" name="174"> 174 </a><a href="/source/s?defs=stdin_stream_close">stdin_stream_close</a>(<a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h)<a class="l" name="175"> 175 </a>{<a class="l" name="176"> 176 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="177"> 177 </a> <a href="/source/s?defs=free">free</a>(h);<a class="l" name="178"> 178 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="179"> 179 </a>}<a class="hl" name="180"> 180 </a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -