📁 File Manager Pro
v10.0.3 | PHP: 8.1.34
Server: Apache
2026-06-22 07:40:14
📂
/ (Root)
/
opt
/
alt
/
ruby21
/
share
/
doc
/
ruby
/
capi
/
html
/
da
/
d58
📍 /opt/alt/ruby21/share/doc/ruby/capi/html/da/d58
🔄 Refresh
✏️
Editing: nonblock_8c_source.html
Read Only
<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.14"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Ruby: ext/io/nonblock/nonblock.c Source File</title> <link href="../../tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="../../jquery.js"></script> <script type="text/javascript" src="../../dynsections.js"></script> <link href="../../doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">Ruby  <span id="projectnumber">2.1.10p492(2016-04-01revision54464)</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.14 --> <script type="text/javascript" src="../../menudata.js"></script> <script type="text/javascript" src="../../menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('../../',false,false,'search.php','Search'); }); /* @license-end */</script> <div id="main-nav"></div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="../../dir_31cedd4509e06940f559c1ca2f722e02.html">ext</a></li><li class="navelem"><a class="el" href="../../dir_9c666a50e7113ab35ff62afe9b9a906c.html">io</a></li><li class="navelem"><a class="el" href="../../dir_9963093d0d0be86ca25d1db90ee356d0.html">nonblock</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">nonblock.c</div> </div> </div><!--header--> <div class="contents"> <a href="../../da/d58/nonblock_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/**********************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> io/wait.c -</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> $Author: zzak $</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> created at: Tue Jul 14 21:53:18 2009</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> All the files in this distribution are covered under the Ruby's</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> license (see the file COPYING).</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">**********************************************************************/</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="../../d9/d3f/ruby_8h.html">ruby.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="../../dc/dac/io_8h.html">ruby/io.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="../../da/d6f/unistd_8h.html">unistd.h</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifdef F_GETFL</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <a class="code" href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36">io_nonblock_mode</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">int</span> <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> = <a class="code" href="../../dc/db1/win32_8h.html#aa7a55dad56032ce4c5a40eab1d9c8e01">fcntl</a>(fd, F_GETFL);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> == -1) <a class="code" href="../../db/dcc/error_8c.html#aec0502b6d84cff19bb2071d1386ff177">rb_sys_fail</a>(0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">return</span> <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36"> 29</a></span> <span class="preprocessor">#define io_nonblock_mode(fd) ((void)(fd), 0)</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#ifdef F_GETFL</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">/*</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * call-seq:</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * io.nonblock? -> boolean</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> *</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * Returns +true+ if an IO object is in non-blocking mode.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> */</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">static</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <a class="code" href="../../da/d58/nonblock_8c.html#a90b39bc196c603e86cbe7d533a2fa77c">rb_io_nonblock_p</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> io)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="../../dd/d7e/structrb__io__t.html">rb_io_t</a> *fptr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="../../dc/dac/io_8h.html#aa00f0dca97539a5dd0c4e67ad5be93a3">GetOpenFile</a>(io, fptr);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36">io_nonblock_mode</a>(fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>) & <a class="code" href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aacea3516b33941ce8149098e223a7466">Qtrue</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba0717d2689eb68797421a02ab9295c6">Qfalse</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../da/d58/nonblock_8c.html#a90b39bc196c603e86cbe7d533a2fa77c"> 49</a></span> <span class="preprocessor">#define rb_io_nonblock_p rb_f_notimplement</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#ifdef F_SETFL</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> io_nonblock_set(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>, <span class="keywordtype">int</span> nb)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (nb) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> & <a class="code" href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>) != 0)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> |= <a class="code" href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> & <a class="code" href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>) == 0)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> &= ~<a class="code" href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (<a class="code" href="../../dc/db1/win32_8h.html#aa7a55dad56032ce4c5a40eab1d9c8e01">fcntl</a>(fd, <a class="code" href="../../dc/db1/win32_8h.html#af2939853c650561d3495ed40f68f6249">F_SETFL</a>, <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>) == -1)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="../../db/dcc/error_8c.html#aec0502b6d84cff19bb2071d1386ff177">rb_sys_fail</a>(0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">/*</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> * call-seq:</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> * io.nonblock = boolean -> boolean</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> *</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> * Enables non-blocking mode on a stream when set to</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"> * +true+, and blocking mode when set to +false+.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">static</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <a class="code" href="../../da/d58/nonblock_8c.html#ac810c535c912ce3a5eab5a5a62cf6544">rb_io_nonblock_set</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> io, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> nb)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="../../dd/d7e/structrb__io__t.html">rb_io_t</a> *fptr;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="../../dc/dac/io_8h.html#aa00f0dca97539a5dd0c4e67ad5be93a3">GetOpenFile</a>(io, fptr);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  io_nonblock_set(fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>, <a class="code" href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36">io_nonblock_mode</a>(fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>), <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a117741045763c090b26e30a85bd0e0a6">RTEST</a>(nb));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> io;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">static</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> io_nonblock_restore(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> arg)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">int</span> *restore = (<span class="keywordtype">int</span> *)arg;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (<a class="code" href="../../dc/db1/win32_8h.html#aa7a55dad56032ce4c5a40eab1d9c8e01">fcntl</a>(restore[0], <a class="code" href="../../dc/db1/win32_8h.html#af2939853c650561d3495ed40f68f6249">F_SETFL</a>, restore[1]) == -1)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="../../db/dcc/error_8c.html#aec0502b6d84cff19bb2071d1386ff177">rb_sys_fail</a>(0);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">/*</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> * call-seq:</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> * io.nonblock {|io| } -> io</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * io.nonblock(boolean) {|io| } -> io</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> *</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> * Yields +self+ in non-blocking mode.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> *</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> * When +false+ is given as an argument, +self+ is yielded in blocking mode.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> * The original mode is restored after the block is executed.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment"> */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">static</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <a class="code" href="../../da/d58/nonblock_8c.html#a9a26f982c446f948559ce2f83010ad16">rb_io_nonblock_block</a>(<span class="keywordtype">int</span> <a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *<a class="code" href="../../df/d77/ruby_8c.html#af2efa898e9eed6fe6715279cb1ec35b0">argv</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> io)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">int</span> nb = 1;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="../../dd/d7e/structrb__io__t.html">rb_io_t</a> *fptr;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">int</span> <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>, restore[2];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="../../dc/dac/io_8h.html#aa00f0dca97539a5dd0c4e67ad5be93a3">GetOpenFile</a>(io, fptr);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (<a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a> > 0) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> v;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="../../d7/d19/group__defmethod.html#gaa7bed88640f01bee619f85fda09d28d7">rb_scan_args</a>(<a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a>, <a class="code" href="../../df/d77/ruby_8c.html#af2efa898e9eed6fe6715279cb1ec35b0">argv</a>, <span class="stringliteral">"01"</span>, &v);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  nb = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a117741045763c090b26e30a85bd0e0a6">RTEST</a>(v);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a> = <a class="code" href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36">io_nonblock_mode</a>(fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  restore[0] = fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  restore[1] = <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  io_nonblock_set(fptr-><a class="code" href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">fd</a>, <a class="code" href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a>, nb);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="../../d3/d57/eval_8c.html#a8061198378fb16adeb931f90540b2839">rb_ensure</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#ae6bd0c4ea4db971ebd569ca8f05c6b4a">rb_yield</a>, io, io_nonblock_restore, (<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a>)restore);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="../../da/d58/nonblock_8c.html#ac810c535c912ce3a5eab5a5a62cf6544"> 125</a></span> <span class="preprocessor">#define rb_io_nonblock_set rb_f_notimplement</span></div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="../../da/d58/nonblock_8c.html#a9a26f982c446f948559ce2f83010ad16"> 126</a></span> <span class="preprocessor">#define rb_io_nonblock_block rb_f_notimplement</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="../../da/d58/nonblock_8c.html#a916f88d1fb3675c09df8bf2917fc0a04"> 130</a></span> <a class="code" href="../../da/d58/nonblock_8c.html#a916f88d1fb3675c09df8bf2917fc0a04">Init_nonblock</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="../../d7/d19/group__defmethod.html#ga118dc7abcdb97f56fe35727ac0ff6eb8">rb_define_method</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#aed01d7f8e7222def13a869f4bc45530a">rb_cIO</a>, <span class="stringliteral">"nonblock?"</span>, <a class="code" href="../../da/d58/nonblock_8c.html#a90b39bc196c603e86cbe7d533a2fa77c">rb_io_nonblock_p</a>, 0);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="../../d7/d19/group__defmethod.html#ga118dc7abcdb97f56fe35727ac0ff6eb8">rb_define_method</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#aed01d7f8e7222def13a869f4bc45530a">rb_cIO</a>, <span class="stringliteral">"nonblock="</span>, <a class="code" href="../../da/d58/nonblock_8c.html#ac810c535c912ce3a5eab5a5a62cf6544">rb_io_nonblock_set</a>, 1);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="../../d7/d19/group__defmethod.html#ga118dc7abcdb97f56fe35727ac0ff6eb8">rb_define_method</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#aed01d7f8e7222def13a869f4bc45530a">rb_cIO</a>, <span class="stringliteral">"nonblock"</span>, <a class="code" href="../../da/d58/nonblock_8c.html#a9a26f982c446f948559ce2f83010ad16">rb_io_nonblock_block</a>, -1);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="ruby_2ruby_8h_html_aacea3516b33941ce8149098e223a7466"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aacea3516b33941ce8149098e223a7466">Qtrue</a></div><div class="ttdeci">#define Qtrue</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00426">ruby.h:426</a></div></div> <div class="ttc" id="structrb__io__t_html"><div class="ttname"><a href="../../dd/d7e/structrb__io__t.html">rb_io_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dac/io_8h_source.html#l00061">io.h:61</a></div></div> <div class="ttc" id="nonblock_8c_html_a11dd39044451ed32646e27fac4b43f36"><div class="ttname"><a href="../../da/d58/nonblock_8c.html#a11dd39044451ed32646e27fac4b43f36">io_nonblock_mode</a></div><div class="ttdeci">#define io_nonblock_mode(fd)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d58/nonblock_8c_source.html#l00029">nonblock.c:29</a></div></div> <div class="ttc" id="ruby_8h_html"><div class="ttname"><a href="../../d9/d3f/ruby_8h.html">ruby.h</a></div></div> <div class="ttc" id="nonblock_8c_html_a916f88d1fb3675c09df8bf2917fc0a04"><div class="ttname"><a href="../../da/d58/nonblock_8c.html#a916f88d1fb3675c09df8bf2917fc0a04">Init_nonblock</a></div><div class="ttdeci">void Init_nonblock(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d58/nonblock_8c_source.html#l00130">nonblock.c:130</a></div></div> <div class="ttc" id="win32_8h_html_aa7a55dad56032ce4c5a40eab1d9c8e01"><div class="ttname"><a href="../../dc/db1/win32_8h.html#aa7a55dad56032ce4c5a40eab1d9c8e01">fcntl</a></div><div class="ttdeci">int fcntl(int, int,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/df2/win32_8c_source.html#l04089">win32.c:4089</a></div></div> <div class="ttc" id="io_8h_html_aa00f0dca97539a5dd0c4e67ad5be93a3"><div class="ttname"><a href="../../dc/dac/io_8h.html#aa00f0dca97539a5dd0c4e67ad5be93a3">GetOpenFile</a></div><div class="ttdeci">#define GetOpenFile(obj, fp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dac/io_8h_source.html#l00118">io.h:118</a></div></div> <div class="ttc" id="io_8h_html"><div class="ttname"><a href="../../dc/dac/io_8h.html">io.h</a></div></div> <div class="ttc" id="win32_8h_html_af2939853c650561d3495ed40f68f6249"><div class="ttname"><a href="../../dc/db1/win32_8h.html#af2939853c650561d3495ed40f68f6249">F_SETFL</a></div><div class="ttdeci">#define F_SETFL</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/db1/win32_8h_source.html#l00622">win32.h:622</a></div></div> <div class="ttc" id="structrb__io__t_html_a0d48f8e91d24ff4f382564b30c1b41c2"><div class="ttname"><a href="../../dd/d7e/structrb__io__t.html#a0d48f8e91d24ff4f382564b30c1b41c2">rb_io_t::fd</a></div><div class="ttdeci">int fd</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dac/io_8h_source.html#l00062">io.h:62</a></div></div> <div class="ttc" id="unistd_8h_html"><div class="ttname"><a href="../../da/d6f/unistd_8h.html">unistd.h</a></div></div> <div class="ttc" id="ruby_8c_html_ad1447518f4372828b8435ae82e48499e"><div class="ttname"><a href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a></div><div class="ttdeci">int argc</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d77/ruby_8c_source.html#l00131">ruby.c:131</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_aba0717d2689eb68797421a02ab9295c6"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aba0717d2689eb68797421a02ab9295c6">Qfalse</a></div><div class="ttdeci">#define Qfalse</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00425">ruby.h:425</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_aed01d7f8e7222def13a869f4bc45530a"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aed01d7f8e7222def13a869f4bc45530a">rb_cIO</a></div><div class="ttdeci">RUBY_EXTERN VALUE rb_cIO</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l01577">ruby.h:1577</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_ae6bd0c4ea4db971ebd569ca8f05c6b4a"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#ae6bd0c4ea4db971ebd569ca8f05c6b4a">rb_yield</a></div><div class="ttdeci">VALUE rb_yield(VALUE)</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d80/vm__eval_8c_source.html#l00948">vm_eval.c:948</a></div></div> <div class="ttc" id="group__defmethod_html_gaa7bed88640f01bee619f85fda09d28d7"><div class="ttname"><a href="../../d7/d19/group__defmethod.html#gaa7bed88640f01bee619f85fda09d28d7">rb_scan_args</a></div><div class="ttdeci">int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d0c/class_8c_source.html#l01719">class.c:1719</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_aba03c3c4ff187bbda6c4459e2dc9f6c6"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a></div><div class="ttdeci">#define Qnil</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00427">ruby.h:427</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_a3c1d4bfc6a81af60bdcb48744c35f760"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="ttdeci">unsigned long VALUE</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00088">ruby.h:88</a></div></div> <div class="ttc" id="eval_8c_html_a8061198378fb16adeb931f90540b2839"><div class="ttname"><a href="../../d3/d57/eval_8c.html#a8061198378fb16adeb931f90540b2839">rb_ensure</a></div><div class="ttdeci">VALUE rb_ensure(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*e_proc)(ANYARGS), VALUE data2)</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d57/eval_8c_source.html#l00839">eval.c:839</a></div></div> <div class="ttc" id="error_8c_html_aec0502b6d84cff19bb2071d1386ff177"><div class="ttname"><a href="../../db/dcc/error_8c.html#aec0502b6d84cff19bb2071d1386ff177">rb_sys_fail</a></div><div class="ttdeci">void rb_sys_fail(const char *mesg)</div><div class="ttdef"><b>Definition:</b> <a href="../../db/dcc/error_8c_source.html#l01976">error.c:1976</a></div></div> <div class="ttc" id="nonblock_8c_html_a9a26f982c446f948559ce2f83010ad16"><div class="ttname"><a href="../../da/d58/nonblock_8c.html#a9a26f982c446f948559ce2f83010ad16">rb_io_nonblock_block</a></div><div class="ttdeci">#define rb_io_nonblock_block</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d58/nonblock_8c_source.html#l00126">nonblock.c:126</a></div></div> <div class="ttc" id="sprintf_8c_html_a7a51ed112e9b79f89e3e70beb8db8bf5"><div class="ttname"><a href="../../d9/d2d/sprintf_8c.html#a7a51ed112e9b79f89e3e70beb8db8bf5">f</a></div><div class="ttdeci">#define f</div></div> <div class="ttc" id="win32_8h_html_a39d33ce33804efd4d52606d59071c6d8"><div class="ttname"><a href="../../dc/db1/win32_8h.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a></div><div class="ttdeci">#define O_NONBLOCK</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/db1/win32_8h_source.html#l00626">win32.h:626</a></div></div> <div class="ttc" id="ruby_2ruby_8h_html_a117741045763c090b26e30a85bd0e0a6"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a117741045763c090b26e30a85bd0e0a6">RTEST</a></div><div class="ttdeci">#define RTEST(v)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00437">ruby.h:437</a></div></div> <div class="ttc" id="nonblock_8c_html_a90b39bc196c603e86cbe7d533a2fa77c"><div class="ttname"><a href="../../da/d58/nonblock_8c.html#a90b39bc196c603e86cbe7d533a2fa77c">rb_io_nonblock_p</a></div><div class="ttdeci">#define rb_io_nonblock_p</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d58/nonblock_8c_source.html#l00049">nonblock.c:49</a></div></div> <div class="ttc" id="group__defmethod_html_ga118dc7abcdb97f56fe35727ac0ff6eb8"><div class="ttname"><a href="../../d7/d19/group__defmethod.html#ga118dc7abcdb97f56fe35727ac0ff6eb8">rb_define_method</a></div><div class="ttdeci">void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d0c/class_8c_source.html#l01479">class.c:1479</a></div></div> <div class="ttc" id="ruby_8c_html_af2efa898e9eed6fe6715279cb1ec35b0"><div class="ttname"><a href="../../df/d77/ruby_8c.html#af2efa898e9eed6fe6715279cb1ec35b0">argv</a></div><div class="ttdeci">char ** argv</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d77/ruby_8c_source.html#l00132">ruby.c:132</a></div></div> <div class="ttc" id="nonblock_8c_html_ac810c535c912ce3a5eab5a5a62cf6544"><div class="ttname"><a href="../../da/d58/nonblock_8c.html#ac810c535c912ce3a5eab5a5a62cf6544">rb_io_nonblock_set</a></div><div class="ttdeci">#define rb_io_nonblock_set</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d58/nonblock_8c_source.html#l00125">nonblock.c:125</a></div></div> </div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="../../doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> </body> </html>
💾 Save Changes
❌ Cancel