rhodes 3.2.0.beta.4 → 3.2.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (667) hide show
  1. data/CHANGELOG +2 -0
  2. data/Manifest.txt +517 -23
  3. data/Rakefile +52 -7
  4. data/doc/build.txt +7 -1
  5. data/doc/device-caps.txt +1 -1
  6. data/doc/install.txt +12 -0
  7. data/doc/jqt-jqm-transition.txt +121 -0
  8. data/doc/release.txt +6 -1
  9. data/doc/ui.txt +4 -2
  10. data/installer/icon.ico +0 -0
  11. data/lib/extensions/barcode/ext/barcode/shared/src/zbar.c +7 -0
  12. data/lib/extensions/barcode/ext/barcode/shared/zbar/rho_bridge.c +3 -3
  13. data/lib/extensions/barcode/ext/barcode/shared/zbar/zbar/README.TXT +74 -3
  14. data/lib/extensions/fcntl/ext/Rakefile +57 -38
  15. data/lib/extensions/fcntl/ext/build.bat +1 -0
  16. data/lib/extensions/fcntl/ext/fcntl.vcproj +323 -0
  17. data/lib/extensions/fileutils/fileutils.rb +57 -33
  18. data/lib/extensions/net-http/net/ftp.rb +40 -36
  19. data/lib/extensions/net-http/net/http.rb +98 -38
  20. data/lib/extensions/net-http/net/https.rb +3 -13
  21. data/lib/extensions/net-http/net/protocol.rb +20 -4
  22. data/lib/extensions/rexml/rexml/document.rb +11 -9
  23. data/lib/extensions/rexml/rexml/element.rb +1 -1
  24. data/lib/extensions/rexml/rexml/entity.rb +1 -1
  25. data/lib/extensions/rexml/rexml/formatters/default.rb +3 -1
  26. data/lib/extensions/rexml/rexml/formatters/pretty.rb +1 -1
  27. data/lib/extensions/rexml/rexml/light/node.rb +1 -2
  28. data/lib/extensions/rexml/rexml/parent.rb +1 -0
  29. data/lib/extensions/rexml/rexml/parsers/xpathparser.rb +2 -1
  30. data/lib/extensions/rexml/rexml/quickpath.rb +4 -1
  31. data/lib/extensions/rexml/rexml/rexml.rb +1 -1
  32. data/lib/extensions/rexml/rexml/source.rb +25 -14
  33. data/lib/extensions/rexml/rexml/text.rb +20 -21
  34. data/lib/extensions/rexml/rexml/xmldecl.rb +2 -2
  35. data/lib/extensions/rexml/rexml/xmltokens.rb +2 -2
  36. data/lib/extensions/rexml/rexml/xpath_parser.rb +2 -1
  37. data/lib/extensions/set/set.rb +100 -25
  38. data/lib/extensions/uri/uri/common.rb +134 -4
  39. data/lib/extensions/uri/uri/ftp.rb +14 -3
  40. data/lib/extensions/uri/uri/generic.rb +53 -44
  41. data/lib/extensions/uri/uri/http.rb +1 -1
  42. data/lib/extensions/uri/uri/https.rb +1 -1
  43. data/lib/extensions/uri/uri/ldap.rb +1 -1
  44. data/lib/extensions/uri/uri/mailto.rb +9 -9
  45. data/lib/framework/rho/rhoviewhelpers.rb +3 -2
  46. data/lib/framework/rholang/localization_simplified.rb +5 -3
  47. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java +14 -1
  48. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +1 -1
  49. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCaptureCallback.java +0 -1
  50. data/platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java +12 -5
  51. data/platform/android/build/android.rake +7 -7
  52. data/platform/iphone/Classes/AppManager/AppManager.m +19 -7
  53. data/platform/iphone/rbuild/iphone.rake +1 -1
  54. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore +0 -0
  55. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui +0 -0
  56. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork +0 -0
  57. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtWebKit.framework/Versions/4/QtWebKit +0 -0
  58. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/phonon.framework/Versions/4/phonon +0 -0
  59. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  60. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  61. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/accessible/libqtaccessiblewidgets.dylib +0 -0
  62. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqgenericbearer.dylib +0 -0
  63. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqcncodecs.dylib +0 -0
  64. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqjpcodecs.dylib +0 -0
  65. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqkrcodecs.dylib +0 -0
  66. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqtwcodecs.dylib +0 -0
  67. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/graphicssystems/libqtracegraphicssystem.dylib +0 -0
  68. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqgif.dylib +0 -0
  69. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqico.dylib +0 -0
  70. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqjpeg.dylib +0 -0
  71. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqmng.dylib +0 -0
  72. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtiff.dylib +0 -0
  73. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/phonon_backend/libphonon_qt7.dylib +0 -0
  74. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_tcp.dylib +0 -0
  75. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Resources/rho.icns +0 -0
  76. data/platform/osx/build/osx.rake +25 -3
  77. data/platform/shared/common/AutoPointer.h +1 -1
  78. data/platform/shared/common/RhoStd.h +10 -10
  79. data/platform/shared/common/RhodesAppBase.cpp +3 -0
  80. data/platform/shared/logging/RhoLogConf.cpp +1 -1
  81. data/platform/shared/qt/rhodes/QtMainWindow.cpp +7 -0
  82. data/platform/shared/qt/rhodes/RhoSimulator.h +3 -1
  83. data/platform/shared/qt/rhodes/main.cpp +3 -0
  84. data/platform/shared/qt/rhodes/resources/rho.icns +0 -0
  85. data/platform/shared/qt/rhodes/resources/rho.ico +0 -0
  86. data/platform/shared/qt/rhodes/resources/rho.png +0 -0
  87. data/platform/shared/qt/rhodes/resources/simulator.qrc +5 -0
  88. data/platform/shared/qt/rhodes/rhodes.pro +2 -0
  89. data/platform/shared/ruby/ext/rho/rhosupport.c +21 -2
  90. data/platform/shared/ruby/ext/socket_192/addrinfo.h +191 -0
  91. data/platform/shared/ruby/ext/socket_192/ancdata.c +1800 -0
  92. data/platform/shared/ruby/ext/socket_192/basicsocket.c +771 -0
  93. data/platform/shared/ruby/ext/socket_192/constants.c +145 -0
  94. data/platform/shared/ruby/ext/socket_192/depend +25 -0
  95. data/platform/shared/ruby/ext/socket_192/extconf.rb +365 -0
  96. data/platform/shared/ruby/ext/socket_192/getaddrinfo.c +674 -0
  97. data/platform/shared/ruby/ext/socket_192/getnameinfo.c +260 -0
  98. data/platform/shared/ruby/ext/socket_192/init.c +575 -0
  99. data/platform/shared/ruby/ext/socket_192/ipsocket.c +308 -0
  100. data/platform/shared/ruby/ext/socket_192/lib/socket.rb +755 -0
  101. data/platform/shared/ruby/ext/socket_192/mkconstants.rb +696 -0
  102. data/platform/shared/ruby/ext/socket_192/option.c +692 -0
  103. data/platform/shared/ruby/ext/socket_192/raddrinfo.c +2211 -0
  104. data/platform/shared/ruby/ext/socket_192/rubysocket.h +306 -0
  105. data/platform/shared/ruby/ext/socket_192/socket.c +1870 -0
  106. data/platform/shared/ruby/ext/socket_192/sockport.h +84 -0
  107. data/platform/shared/ruby/ext/socket_192/sockssocket.c +58 -0
  108. data/platform/shared/ruby/ext/socket_192/tcpserver.c +145 -0
  109. data/platform/shared/ruby/ext/socket_192/tcpsocket.c +69 -0
  110. data/platform/shared/ruby/ext/socket_192/udpsocket.c +264 -0
  111. data/platform/shared/ruby/ext/socket_192/unixserver.c +154 -0
  112. data/platform/shared/ruby/ext/socket_192/unixsocket.c +514 -0
  113. data/platform/shared/ruby/ext/stringio/stringio.c +158 -61
  114. data/platform/shared/ruby/ext/strscan/strscan.c +18 -31
  115. data/platform/shared/ruby/iphone/ruby/config.h +2 -1
  116. data/platform/shared/ruby/linux/ruby/config.h +2 -1
  117. data/platform/shared/ruby/symbian/ruby/config.h +2 -1
  118. data/platform/shared/ruby/win32/ruby/config.h +1 -0
  119. data/platform/shared/ruby/win32/ruby/constdefs.c +5866 -0
  120. data/platform/shared/ruby/win32/ruby/constdefs.h +1788 -0
  121. data/platform/shared/ruby/wince/ruby/config.h +1 -0
  122. data/platform/shared/ruby/wince/ruby/constdefs.c +5866 -0
  123. data/platform/shared/ruby/wince/ruby/constdefs.h +1788 -0
  124. data/platform/symbian/build/symbian.rake +8 -0
  125. data/platform/symbian/rhodes/rhodes.pro +3 -3
  126. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  127. data/platform/wm/build/wm.rake +1 -1
  128. data/platform/wm/rhodes/Rhodes.cpp +3 -0
  129. data/platform/wm/rhodes/rhodes.vcproj +612 -6
  130. data/platform/wm/rhodes/rhosim.rc +394 -0
  131. data/platform/wm/rhodes/simulator/MainWindowQt.cpp +2 -2
  132. data/platform/wp7/RhoRubyLib/common/RhodesApp.cs +8 -2
  133. data/platform/wp7/RhoRubyLib/net/NetRequest.cs +5 -1
  134. data/platform/wp7/build/wp.rake +1 -1
  135. data/rakefile.rb +52 -7
  136. data/res/generators/templates/application/app/layout.erb +4 -4
  137. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b3.css → jquery.mobile-1.0rc1.css} +507 -457
  138. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b3.js → jquery.mobile-1.0rc1.js} +565 -458
  139. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0rc1.min.css +12 -0
  140. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0rc1.min.js +170 -0
  141. data/res/generators/templates/application/public/jquery/{jquery-1.6.3.js → jquery-1.6.4.js} +10 -8
  142. data/res/generators/templates/application/public/jquery/jquery-1.6.4.min.js +4 -0
  143. data/res/generators/templates/application/public/js/jqmobile-patch.js +47 -1
  144. data/res/icons/rho.icns +0 -0
  145. data/res/icons/rho.ico +0 -0
  146. data/res/icons/rho.png +0 -0
  147. data/res/icons/rho.psd +0 -0
  148. data/res/icons/rhodes.icns +0 -0
  149. data/res/icons/rhodes.ico +0 -0
  150. data/res/icons/rhodes.png +0 -0
  151. data/res/icons/rhodes.psd +0 -0
  152. data/res/icons/rhosim.icns +0 -0
  153. data/res/icons/rhosim.ico +0 -0
  154. data/res/icons/rhosim.png +0 -0
  155. data/res/icons/rhosim.psd +0 -0
  156. data/rhodes.gemspec +1 -1
  157. data/spec/framework_spec/app/spec/core/file/expand_path_spec.rb +4 -4
  158. data/spec/framework_spec/app/spec/library/net/FTPError_spec.rb +8 -0
  159. data/spec/framework_spec/app/spec/library/net/FTPPermError_spec.rb +12 -0
  160. data/spec/framework_spec/app/spec/library/net/FTPProtoError_spec.rb +12 -0
  161. data/spec/framework_spec/app/spec/library/net/FTPReplyError_spec.rb +12 -0
  162. data/spec/framework_spec/app/spec/library/net/FTPTempError_spec.rb +12 -0
  163. data/spec/framework_spec/app/spec/library/net/ftp/abort_spec.rb +62 -0
  164. data/spec/framework_spec/app/spec/library/net/ftp/acct_spec.rb +58 -0
  165. data/spec/framework_spec/app/spec/library/net/ftp/binary_spec.rb +24 -0
  166. data/spec/framework_spec/app/spec/library/net/ftp/chdir_spec.rb +101 -0
  167. data/spec/framework_spec/app/spec/library/net/ftp/close_spec.rb +28 -0
  168. data/spec/framework_spec/app/spec/library/net/ftp/closed_spec.rb +21 -0
  169. data/spec/framework_spec/app/spec/library/net/ftp/connect_spec.rb +49 -0
  170. data/spec/framework_spec/app/spec/library/net/ftp/debug_mode_spec.rb +23 -0
  171. data/spec/framework_spec/app/spec/library/net/ftp/delete_spec.rb +59 -0
  172. data/spec/framework_spec/app/spec/library/net/ftp/dir_spec.rb +8 -0
  173. data/spec/framework_spec/app/spec/library/net/ftp/fixtures/putbinaryfile +3 -0
  174. data/spec/framework_spec/app/spec/library/net/ftp/fixtures/puttextfile +3 -0
  175. data/spec/framework_spec/app/spec/library/net/ftp/fixtures/server.rb +258 -0
  176. data/spec/framework_spec/app/spec/library/net/ftp/get_spec.rb +21 -0
  177. data/spec/framework_spec/app/spec/library/net/ftp/getbinaryfile_spec.rb +8 -0
  178. data/spec/framework_spec/app/spec/library/net/ftp/getdir_spec.rb +7 -0
  179. data/spec/framework_spec/app/spec/library/net/ftp/gettextfile_spec.rb +8 -0
  180. data/spec/framework_spec/app/spec/library/net/ftp/help_spec.rb +66 -0
  181. data/spec/framework_spec/app/spec/library/net/ftp/initialize_spec.rb +87 -0
  182. data/spec/framework_spec/app/spec/library/net/ftp/last_response_code_spec.rb +8 -0
  183. data/spec/framework_spec/app/spec/library/net/ftp/last_response_spec.rb +25 -0
  184. data/spec/framework_spec/app/spec/library/net/ftp/lastresp_spec.rb +8 -0
  185. data/spec/framework_spec/app/spec/library/net/ftp/list_spec.rb +8 -0
  186. data/spec/framework_spec/app/spec/library/net/ftp/login_spec.rb +216 -0
  187. data/spec/framework_spec/app/spec/library/net/ftp/ls_spec.rb +8 -0
  188. data/spec/framework_spec/app/spec/library/net/ftp/mdtm_spec.rb +38 -0
  189. data/spec/framework_spec/app/spec/library/net/ftp/mkdir_spec.rb +61 -0
  190. data/spec/framework_spec/app/spec/library/net/ftp/mtime_spec.rb +50 -0
  191. data/spec/framework_spec/app/spec/library/net/ftp/nlst_spec.rb +122 -0
  192. data/spec/framework_spec/app/spec/library/net/ftp/noop_spec.rb +38 -0
  193. data/spec/framework_spec/app/spec/library/net/ftp/open_spec.rb +55 -0
  194. data/spec/framework_spec/app/spec/library/net/ftp/passive_spec.rb +24 -0
  195. data/spec/framework_spec/app/spec/library/net/ftp/put_spec.rb +21 -0
  196. data/spec/framework_spec/app/spec/library/net/ftp/putbinaryfile_spec.rb +8 -0
  197. data/spec/framework_spec/app/spec/library/net/ftp/puttextfile_spec.rb +8 -0
  198. data/spec/framework_spec/app/spec/library/net/ftp/pwd_spec.rb +53 -0
  199. data/spec/framework_spec/app/spec/library/net/ftp/quit_spec.rb +33 -0
  200. data/spec/framework_spec/app/spec/library/net/ftp/rename_spec.rb +94 -0
  201. data/spec/framework_spec/app/spec/library/net/ftp/resume_spec.rb +23 -0
  202. data/spec/framework_spec/app/spec/library/net/ftp/retrbinary_spec.rb +31 -0
  203. data/spec/framework_spec/app/spec/library/net/ftp/retrlines_spec.rb +35 -0
  204. data/spec/framework_spec/app/spec/library/net/ftp/return_code_spec.rb +24 -0
  205. data/spec/framework_spec/app/spec/library/net/ftp/rmdir_spec.rb +58 -0
  206. data/spec/framework_spec/app/spec/library/net/ftp/sendcmd_spec.rb +54 -0
  207. data/spec/framework_spec/app/spec/library/net/ftp/set_socket_spec.rb +8 -0
  208. data/spec/framework_spec/app/spec/library/net/ftp/shared/getbinaryfile.rb +180 -0
  209. data/spec/framework_spec/app/spec/library/net/ftp/shared/gettextfile.rb +130 -0
  210. data/spec/framework_spec/app/spec/library/net/ftp/shared/last_response_code.rb +25 -0
  211. data/spec/framework_spec/app/spec/library/net/ftp/shared/list.rb +134 -0
  212. data/spec/framework_spec/app/spec/library/net/ftp/shared/putbinaryfile.rb +233 -0
  213. data/spec/framework_spec/app/spec/library/net/ftp/shared/puttextfile.rb +150 -0
  214. data/spec/framework_spec/app/spec/library/net/ftp/shared/pwd.rb +3 -0
  215. data/spec/framework_spec/app/spec/library/net/ftp/site_spec.rb +53 -0
  216. data/spec/framework_spec/app/spec/library/net/ftp/size_spec.rb +48 -0
  217. data/spec/framework_spec/app/spec/library/net/ftp/status_spec.rb +63 -0
  218. data/spec/framework_spec/app/spec/library/net/ftp/storbinary_spec.rb +49 -0
  219. data/spec/framework_spec/app/spec/library/net/ftp/storlines_spec.rb +44 -0
  220. data/spec/framework_spec/app/spec/library/net/ftp/system_spec.rb +48 -0
  221. data/spec/framework_spec/app/spec/library/net/ftp/voidcmd_spec.rb +54 -0
  222. data/spec/framework_spec/app/spec/library/net/ftp/welcome_spec.rb +25 -0
  223. data/spec/framework_spec/app/spec/library/net/http/HTTPBadResponse_spec.rb +8 -0
  224. data/spec/framework_spec/app/spec/library/net/http/HTTPError_spec.rb +12 -0
  225. data/spec/framework_spec/app/spec/library/net/http/HTTPFatalError_spec.rb +12 -0
  226. data/spec/framework_spec/app/spec/library/net/http/HTTPHeaderSyntaxError_spec.rb +8 -0
  227. data/spec/framework_spec/app/spec/library/net/http/HTTPRetriableError_spec.rb +12 -0
  228. data/spec/framework_spec/app/spec/library/net/http/HTTPServerException_spec.rb +12 -0
  229. data/spec/framework_spec/app/spec/library/net/http/http/Proxy_spec.rb +35 -0
  230. data/spec/framework_spec/app/spec/library/net/http/http/active_spec.rb +8 -0
  231. data/spec/framework_spec/app/spec/library/net/http/http/address_spec.rb +9 -0
  232. data/spec/framework_spec/app/spec/library/net/http/http/close_on_empty_response_spec.rb +10 -0
  233. data/spec/framework_spec/app/spec/library/net/http/http/copy_spec.rb +23 -0
  234. data/spec/framework_spec/app/spec/library/net/http/http/default_port_spec.rb +8 -0
  235. data/spec/framework_spec/app/spec/library/net/http/http/delete_spec.rb +23 -0
  236. data/spec/framework_spec/app/spec/library/net/http/http/finish_spec.rb +31 -0
  237. data/spec/framework_spec/app/spec/library/net/http/http/fixtures/http_server.rb +97 -0
  238. data/spec/framework_spec/app/spec/library/net/http/http/get2_spec.rb +8 -0
  239. data/spec/framework_spec/app/spec/library/net/http/http/get_print_spec.rb +29 -0
  240. data/spec/framework_spec/app/spec/library/net/http/http/get_response_spec.rb +29 -0
  241. data/spec/framework_spec/app/spec/library/net/http/http/get_spec.rb +52 -0
  242. data/spec/framework_spec/app/spec/library/net/http/http/head2_spec.rb +9 -0
  243. data/spec/framework_spec/app/spec/library/net/http/http/head_spec.rb +27 -0
  244. data/spec/framework_spec/app/spec/library/net/http/http/http_default_port_spec.rb +8 -0
  245. data/spec/framework_spec/app/spec/library/net/http/http/https_default_port_spec.rb +8 -0
  246. data/spec/framework_spec/app/spec/library/net/http/http/initialize_spec.rb +46 -0
  247. data/spec/framework_spec/app/spec/library/net/http/http/inspect_spec.rb +26 -0
  248. data/spec/framework_spec/app/spec/library/net/http/http/is_version_1_1_spec.rb +7 -0
  249. data/spec/framework_spec/app/spec/library/net/http/http/is_version_1_2_spec.rb +7 -0
  250. data/spec/framework_spec/app/spec/library/net/http/http/lock_spec.rb +23 -0
  251. data/spec/framework_spec/app/spec/library/net/http/http/mkcol_spec.rb +23 -0
  252. data/spec/framework_spec/app/spec/library/net/http/http/move_spec.rb +27 -0
  253. data/spec/framework_spec/app/spec/library/net/http/http/new_spec.rb +86 -0
  254. data/spec/framework_spec/app/spec/library/net/http/http/newobj_spec.rb +48 -0
  255. data/spec/framework_spec/app/spec/library/net/http/http/open_timeout_spec.rb +24 -0
  256. data/spec/framework_spec/app/spec/library/net/http/http/options_spec.rb +27 -0
  257. data/spec/framework_spec/app/spec/library/net/http/http/port_spec.rb +9 -0
  258. data/spec/framework_spec/app/spec/library/net/http/http/post2_spec.rb +8 -0
  259. data/spec/framework_spec/app/spec/library/net/http/http/post_form_spec.rb +21 -0
  260. data/spec/framework_spec/app/spec/library/net/http/http/post_spec.rb +40 -0
  261. data/spec/framework_spec/app/spec/library/net/http/http/propfind_spec.rb +26 -0
  262. data/spec/framework_spec/app/spec/library/net/http/http/proppatch_spec.rb +26 -0
  263. data/spec/framework_spec/app/spec/library/net/http/http/proxy_address_spec.rb +31 -0
  264. data/spec/framework_spec/app/spec/library/net/http/http/proxy_class_spec.rb +9 -0
  265. data/spec/framework_spec/app/spec/library/net/http/http/proxy_pass_spec.rb +39 -0
  266. data/spec/framework_spec/app/spec/library/net/http/http/proxy_port_spec.rb +39 -0
  267. data/spec/framework_spec/app/spec/library/net/http/http/proxy_user_spec.rb +39 -0
  268. data/spec/framework_spec/app/spec/library/net/http/http/put2_spec.rb +8 -0
  269. data/spec/framework_spec/app/spec/library/net/http/http/put_spec.rb +26 -0
  270. data/spec/framework_spec/app/spec/library/net/http/http/read_timeout_spec.rb +24 -0
  271. data/spec/framework_spec/app/spec/library/net/http/http/request_get_spec.rb +8 -0
  272. data/spec/framework_spec/app/spec/library/net/http/http/request_head_spec.rb +8 -0
  273. data/spec/framework_spec/app/spec/library/net/http/http/request_post_spec.rb +8 -0
  274. data/spec/framework_spec/app/spec/library/net/http/http/request_put_spec.rb +8 -0
  275. data/spec/framework_spec/app/spec/library/net/http/http/request_spec.rb +111 -0
  276. data/spec/framework_spec/app/spec/library/net/http/http/request_types_spec.rb +254 -0
  277. data/spec/framework_spec/app/spec/library/net/http/http/send_request_spec.rb +120 -0
  278. data/spec/framework_spec/app/spec/library/net/http/http/set_debug_output_spec.rb +35 -0
  279. data/spec/framework_spec/app/spec/library/net/http/http/shared/request_get.rb +45 -0
  280. data/spec/framework_spec/app/spec/library/net/http/http/shared/request_head.rb +45 -0
  281. data/spec/framework_spec/app/spec/library/net/http/http/shared/request_post.rb +45 -0
  282. data/spec/framework_spec/app/spec/library/net/http/http/shared/request_put.rb +45 -0
  283. data/spec/framework_spec/app/spec/library/net/http/http/shared/started.rb +28 -0
  284. data/spec/framework_spec/app/spec/library/net/http/http/shared/version_1_1.rb +19 -0
  285. data/spec/framework_spec/app/spec/library/net/http/http/shared/version_1_2.rb +6 -0
  286. data/spec/framework_spec/app/spec/library/net/http/http/socket_type_spec.rb +8 -0
  287. data/spec/framework_spec/app/spec/library/net/http/http/start_spec.rb +103 -0
  288. data/spec/framework_spec/app/spec/library/net/http/http/started_spec.rb +8 -0
  289. data/spec/framework_spec/app/spec/library/net/http/http/trace_spec.rb +26 -0
  290. data/spec/framework_spec/app/spec/library/net/http/http/unlock_spec.rb +26 -0
  291. data/spec/framework_spec/app/spec/library/net/http/http/use_ssl_spec.rb +9 -0
  292. data/spec/framework_spec/app/spec/library/net/http/http/version_1_1_spec.rb +22 -0
  293. data/spec/framework_spec/app/spec/library/net/http/http/version_1_2_spec.rb +20 -0
  294. data/spec/framework_spec/app/spec/library/net/http/httpexceptions/fixtures/classes.rb +5 -0
  295. data/spec/framework_spec/app/spec/library/net/http/httpexceptions/initialize_spec.rb +17 -0
  296. data/spec/framework_spec/app/spec/library/net/http/httpexceptions/response_spec.rb +10 -0
  297. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/body_exist_spec.rb +27 -0
  298. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/body_spec.rb +30 -0
  299. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/body_stream_spec.rb +32 -0
  300. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/exec_spec.rb +122 -0
  301. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/inspect_spec.rb +25 -0
  302. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/method_spec.rb +15 -0
  303. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/path_spec.rb +12 -0
  304. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/request_body_permitted_spec.rb +12 -0
  305. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/response_body_permitted_spec.rb +12 -0
  306. data/spec/framework_spec/app/spec/library/net/http/httpgenericrequest/set_body_internal_spec.rb +21 -0
  307. data/spec/framework_spec/app/spec/library/net/http/httpheader/add_field_spec.rb +31 -0
  308. data/spec/framework_spec/app/spec/library/net/http/httpheader/basic_auth_spec.rb +14 -0
  309. data/spec/framework_spec/app/spec/library/net/http/httpheader/canonical_each_spec.rb +8 -0
  310. data/spec/framework_spec/app/spec/library/net/http/httpheader/chunked_spec.rb +22 -0
  311. data/spec/framework_spec/app/spec/library/net/http/httpheader/content_length_spec.rb +54 -0
  312. data/spec/framework_spec/app/spec/library/net/http/httpheader/content_range_spec.rb +34 -0
  313. data/spec/framework_spec/app/spec/library/net/http/httpheader/content_type_spec.rb +26 -0
  314. data/spec/framework_spec/app/spec/library/net/http/httpheader/delete_spec.rb +30 -0
  315. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_capitalized_name_spec.rb +45 -0
  316. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_capitalized_spec.rb +9 -0
  317. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_header_spec.rb +8 -0
  318. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_key_spec.rb +8 -0
  319. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_name_spec.rb +8 -0
  320. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_spec.rb +8 -0
  321. data/spec/framework_spec/app/spec/library/net/http/httpheader/each_value_spec.rb +46 -0
  322. data/spec/framework_spec/app/spec/library/net/http/httpheader/element_reference_spec.rb +39 -0
  323. data/spec/framework_spec/app/spec/library/net/http/httpheader/element_set_spec.rb +41 -0
  324. data/spec/framework_spec/app/spec/library/net/http/httpheader/fetch_spec.rb +69 -0
  325. data/spec/framework_spec/app/spec/library/net/http/httpheader/fixtures/classes.rb +11 -0
  326. data/spec/framework_spec/app/spec/library/net/http/httpheader/form_data_spec.rb +8 -0
  327. data/spec/framework_spec/app/spec/library/net/http/httpheader/get_fields_spec.rb +39 -0
  328. data/spec/framework_spec/app/spec/library/net/http/httpheader/initialize_http_header_spec.rb +29 -0
  329. data/spec/framework_spec/app/spec/library/net/http/httpheader/key_spec.rb +21 -0
  330. data/spec/framework_spec/app/spec/library/net/http/httpheader/length_spec.rb +8 -0
  331. data/spec/framework_spec/app/spec/library/net/http/httpheader/main_type_spec.rb +24 -0
  332. data/spec/framework_spec/app/spec/library/net/http/httpheader/proxy_basic_auth_spec.rb +14 -0
  333. data/spec/framework_spec/app/spec/library/net/http/httpheader/range_length_spec.rb +32 -0
  334. data/spec/framework_spec/app/spec/library/net/http/httpheader/range_spec.rb +48 -0
  335. data/spec/framework_spec/app/spec/library/net/http/httpheader/set_content_type_spec.rb +8 -0
  336. data/spec/framework_spec/app/spec/library/net/http/httpheader/set_form_data_spec.rb +8 -0
  337. data/spec/framework_spec/app/spec/library/net/http/httpheader/set_range_spec.rb +8 -0
  338. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/each_capitalized.rb +42 -0
  339. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/each_header.rb +42 -0
  340. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/each_name.rb +39 -0
  341. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/set_content_type.rb +18 -0
  342. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/set_form_data.rb +27 -0
  343. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/set_range.rb +89 -0
  344. data/spec/framework_spec/app/spec/library/net/http/httpheader/shared/size.rb +18 -0
  345. data/spec/framework_spec/app/spec/library/net/http/httpheader/size_spec.rb +8 -0
  346. data/spec/framework_spec/app/spec/library/net/http/httpheader/sub_type_spec.rb +32 -0
  347. data/spec/framework_spec/app/spec/library/net/http/httpheader/to_hash_spec.rb +25 -0
  348. data/spec/framework_spec/app/spec/library/net/http/httpheader/type_params_spec.rb +24 -0
  349. data/spec/framework_spec/app/spec/library/net/http/httprequest/initialize_spec.rb +45 -0
  350. data/spec/framework_spec/app/spec/library/net/http/httpresponse/body_permitted_spec.rb +13 -0
  351. data/spec/framework_spec/app/spec/library/net/http/httpresponse/body_spec.rb +7 -0
  352. data/spec/framework_spec/app/spec/library/net/http/httpresponse/code_spec.rb +24 -0
  353. data/spec/framework_spec/app/spec/library/net/http/httpresponse/code_type_spec.rb +24 -0
  354. data/spec/framework_spec/app/spec/library/net/http/httpresponse/entity_spec.rb +7 -0
  355. data/spec/framework_spec/app/spec/library/net/http/httpresponse/error_spec.rb +24 -0
  356. data/spec/framework_spec/app/spec/library/net/http/httpresponse/error_type_spec.rb +24 -0
  357. data/spec/framework_spec/app/spec/library/net/http/httpresponse/exception_type_spec.rb +13 -0
  358. data/spec/framework_spec/app/spec/library/net/http/httpresponse/header_spec.rb +9 -0
  359. data/spec/framework_spec/app/spec/library/net/http/httpresponse/http_version_spec.rb +12 -0
  360. data/spec/framework_spec/app/spec/library/net/http/httpresponse/initialize_spec.rb +11 -0
  361. data/spec/framework_spec/app/spec/library/net/http/httpresponse/inspect_spec.rb +15 -0
  362. data/spec/framework_spec/app/spec/library/net/http/httpresponse/message_spec.rb +9 -0
  363. data/spec/framework_spec/app/spec/library/net/http/httpresponse/msg_spec.rb +9 -0
  364. data/spec/framework_spec/app/spec/library/net/http/httpresponse/read_body_spec.rb +86 -0
  365. data/spec/framework_spec/app/spec/library/net/http/httpresponse/read_header_spec.rb +9 -0
  366. data/spec/framework_spec/app/spec/library/net/http/httpresponse/read_new_spec.rb +22 -0
  367. data/spec/framework_spec/app/spec/library/net/http/httpresponse/reading_body_spec.rb +58 -0
  368. data/spec/framework_spec/app/spec/library/net/http/httpresponse/response_spec.rb +9 -0
  369. data/spec/framework_spec/app/spec/library/net/http/httpresponse/shared/body.rb +18 -0
  370. data/spec/framework_spec/app/spec/library/net/http/httpresponse/to_ary_spec.rb +26 -0
  371. data/spec/framework_spec/app/spec/library/net/http/httpresponse/value_spec.rb +24 -0
  372. data/spec/framework_spec/app/spec/library/rexml/attribute/clone_spec.rb +11 -0
  373. data/spec/framework_spec/app/spec/library/rexml/attribute/element_spec.rb +23 -0
  374. data/spec/framework_spec/app/spec/library/rexml/attribute/equal_value_spec.rb +18 -0
  375. data/spec/framework_spec/app/spec/library/rexml/attribute/hash_spec.rb +13 -0
  376. data/spec/framework_spec/app/spec/library/rexml/attribute/initialize_spec.rb +29 -0
  377. data/spec/framework_spec/app/spec/library/rexml/attribute/inspect_spec.rb +20 -0
  378. data/spec/framework_spec/app/spec/library/rexml/attribute/namespace_spec.rb +24 -0
  379. data/spec/framework_spec/app/spec/library/rexml/attribute/node_type_spec.rb +10 -0
  380. data/spec/framework_spec/app/spec/library/rexml/attribute/prefix_spec.rb +18 -0
  381. data/spec/framework_spec/app/spec/library/rexml/attribute/remove_spec.rb +20 -0
  382. data/spec/framework_spec/app/spec/library/rexml/attribute/to_s_spec.rb +14 -0
  383. data/spec/framework_spec/app/spec/library/rexml/attribute/to_string_spec.rb +15 -0
  384. data/spec/framework_spec/app/spec/library/rexml/attribute/value_spec.rb +15 -0
  385. data/spec/framework_spec/app/spec/library/rexml/attribute/write_spec.rb +23 -0
  386. data/spec/framework_spec/app/spec/library/rexml/attribute/xpath_spec.rb +20 -0
  387. data/spec/framework_spec/app/spec/library/rexml/attributes/add_spec.rb +7 -0
  388. data/spec/framework_spec/app/spec/library/rexml/attributes/append_spec.rb +7 -0
  389. data/spec/framework_spec/app/spec/library/rexml/attributes/delete_all_spec.rb +31 -0
  390. data/spec/framework_spec/app/spec/library/rexml/attributes/delete_spec.rb +27 -0
  391. data/spec/framework_spec/app/spec/library/rexml/attributes/each_attribute_spec.rb +24 -0
  392. data/spec/framework_spec/app/spec/library/rexml/attributes/each_spec.rb +24 -0
  393. data/spec/framework_spec/app/spec/library/rexml/attributes/element_reference_spec.rb +19 -0
  394. data/spec/framework_spec/app/spec/library/rexml/attributes/element_set_spec.rb +26 -0
  395. data/spec/framework_spec/app/spec/library/rexml/attributes/get_attribute_ns_spec.rb +14 -0
  396. data/spec/framework_spec/app/spec/library/rexml/attributes/get_attribute_spec.rb +29 -0
  397. data/spec/framework_spec/app/spec/library/rexml/attributes/initialize_spec.rb +19 -0
  398. data/spec/framework_spec/app/spec/library/rexml/attributes/length_spec.rb +7 -0
  399. data/spec/framework_spec/app/spec/library/rexml/attributes/namespaces_spec.rb +6 -0
  400. data/spec/framework_spec/app/spec/library/rexml/attributes/prefixes_spec.rb +24 -0
  401. data/spec/framework_spec/app/spec/library/rexml/attributes/shared/add.rb +17 -0
  402. data/spec/framework_spec/app/spec/library/rexml/attributes/shared/length.rb +13 -0
  403. data/spec/framework_spec/app/spec/library/rexml/attributes/size_spec.rb +7 -0
  404. data/spec/framework_spec/app/spec/library/rexml/attributes/to_a_spec.rb +20 -0
  405. data/spec/framework_spec/app/spec/library/rexml/cdata/clone_spec.rb +10 -0
  406. data/spec/framework_spec/app/spec/library/rexml/cdata/initialize_spec.rb +25 -0
  407. data/spec/framework_spec/app/spec/library/rexml/cdata/shared/to_s.rb +11 -0
  408. data/spec/framework_spec/app/spec/library/rexml/cdata/to_s_spec.rb +7 -0
  409. data/spec/framework_spec/app/spec/library/rexml/cdata/value_spec.rb +7 -0
  410. data/spec/framework_spec/app/spec/library/rexml/document/add_element_spec.rb +31 -0
  411. data/spec/framework_spec/app/spec/library/rexml/document/add_spec.rb +61 -0
  412. data/spec/framework_spec/app/spec/library/rexml/document/clone_spec.rb +20 -0
  413. data/spec/framework_spec/app/spec/library/rexml/document/doctype_spec.rb +15 -0
  414. data/spec/framework_spec/app/spec/library/rexml/document/encoding_spec.rb +22 -0
  415. data/spec/framework_spec/app/spec/library/rexml/document/expanded_name_spec.rb +16 -0
  416. data/spec/framework_spec/app/spec/library/rexml/document/new_spec.rb +38 -0
  417. data/spec/framework_spec/app/spec/library/rexml/document/node_type_spec.rb +8 -0
  418. data/spec/framework_spec/app/spec/library/rexml/document/root_spec.rb +12 -0
  419. data/spec/framework_spec/app/spec/library/rexml/document/stand_alone_spec.rb +19 -0
  420. data/spec/framework_spec/app/spec/library/rexml/document/version_spec.rb +14 -0
  421. data/spec/framework_spec/app/spec/library/rexml/document/write_spec.rb +39 -0
  422. data/spec/framework_spec/app/spec/library/rexml/document/xml_decl_spec.rb +15 -0
  423. data/spec/framework_spec/app/spec/library/rexml/element/add_attribute_spec.rb +41 -0
  424. data/spec/framework_spec/app/spec/library/rexml/element/add_attributes_spec.rb +22 -0
  425. data/spec/framework_spec/app/spec/library/rexml/element/add_element_spec.rb +39 -0
  426. data/spec/framework_spec/app/spec/library/rexml/element/add_namespace_spec.rb +24 -0
  427. data/spec/framework_spec/app/spec/library/rexml/element/add_text_spec.rb +24 -0
  428. data/spec/framework_spec/app/spec/library/rexml/element/attribute_spec.rb +17 -0
  429. data/spec/framework_spec/app/spec/library/rexml/element/attributes_spec.rb +19 -0
  430. data/spec/framework_spec/app/spec/library/rexml/element/cdatas_spec.rb +24 -0
  431. data/spec/framework_spec/app/spec/library/rexml/element/clone_spec.rb +29 -0
  432. data/spec/framework_spec/app/spec/library/rexml/element/comments_spec.rb +21 -0
  433. data/spec/framework_spec/app/spec/library/rexml/element/delete_attribute_spec.rb +39 -0
  434. data/spec/framework_spec/app/spec/library/rexml/element/delete_element_spec.rb +51 -0
  435. data/spec/framework_spec/app/spec/library/rexml/element/delete_namespace_spec.rb +25 -0
  436. data/spec/framework_spec/app/spec/library/rexml/element/document_spec.rb +18 -0
  437. data/spec/framework_spec/app/spec/library/rexml/element/each_element_with_attribute_spec.rb +35 -0
  438. data/spec/framework_spec/app/spec/library/rexml/element/each_element_with_text_spec.rb +31 -0
  439. data/spec/framework_spec/app/spec/library/rexml/element/get_text_spec.rb +18 -0
  440. data/spec/framework_spec/app/spec/library/rexml/element/has_attributes_spec.rb +17 -0
  441. data/spec/framework_spec/app/spec/library/rexml/element/has_elements_spec.rb +18 -0
  442. data/spec/framework_spec/app/spec/library/rexml/element/has_text_spec.rb +16 -0
  443. data/spec/framework_spec/app/spec/library/rexml/element/inspect_spec.rb +27 -0
  444. data/spec/framework_spec/app/spec/library/rexml/element/instructions_spec.rb +21 -0
  445. data/spec/framework_spec/app/spec/library/rexml/element/namespace_spec.rb +27 -0
  446. data/spec/framework_spec/app/spec/library/rexml/element/namespaces_spec.rb +32 -0
  447. data/spec/framework_spec/app/spec/library/rexml/element/new_spec.rb +35 -0
  448. data/spec/framework_spec/app/spec/library/rexml/element/next_element_spec.rb +19 -0
  449. data/spec/framework_spec/app/spec/library/rexml/element/node_type_spec.rb +8 -0
  450. data/spec/framework_spec/app/spec/library/rexml/element/prefixes_spec.rb +23 -0
  451. data/spec/framework_spec/app/spec/library/rexml/element/previous_element_spec.rb +20 -0
  452. data/spec/framework_spec/app/spec/library/rexml/element/raw_spec.rb +24 -0
  453. data/spec/framework_spec/app/spec/library/rexml/element/root_spec.rb +28 -0
  454. data/spec/framework_spec/app/spec/library/rexml/element/text_spec.rb +46 -0
  455. data/spec/framework_spec/app/spec/library/rexml/element/texts_spec.rb +16 -0
  456. data/spec/framework_spec/app/spec/library/rexml/element/whitespace_spec.rb +23 -0
  457. data/spec/framework_spec/app/spec/library/rexml/node/each_recursive_spec.rb +21 -0
  458. data/spec/framework_spec/app/spec/library/rexml/node/find_first_recursive_spec.rb +25 -0
  459. data/spec/framework_spec/app/spec/library/rexml/node/index_in_parent_spec.rb +15 -0
  460. data/spec/framework_spec/app/spec/library/rexml/node/next_sibling_node_spec.rb +21 -0
  461. data/spec/framework_spec/app/spec/library/rexml/node/parent_spec.rb +21 -0
  462. data/spec/framework_spec/app/spec/library/rexml/node/previous_sibling_node_spec.rb +21 -0
  463. data/spec/framework_spec/app/spec/library/rexml/shared/each_element.rb +36 -0
  464. data/spec/framework_spec/app/spec/library/rexml/shared/elements_to_a.rb +36 -0
  465. data/spec/framework_spec/app/spec/library/rexml/text/append_spec.rb +10 -0
  466. data/spec/framework_spec/app/spec/library/rexml/text/clone_spec.rb +10 -0
  467. data/spec/framework_spec/app/spec/library/rexml/text/comparison_spec.rb +25 -0
  468. data/spec/framework_spec/app/spec/library/rexml/text/empty_spec.rb +12 -0
  469. data/spec/framework_spec/app/spec/library/rexml/text/indent_text_spec.rb +24 -0
  470. data/spec/framework_spec/app/spec/library/rexml/text/inspect_spec.rb +8 -0
  471. data/spec/framework_spec/app/spec/library/rexml/text/new_spec.rb +49 -0
  472. data/spec/framework_spec/app/spec/library/rexml/text/node_type_spec.rb +8 -0
  473. data/spec/framework_spec/app/spec/library/rexml/text/normalize_spec.rb +8 -0
  474. data/spec/framework_spec/app/spec/library/rexml/text/read_with_substitution_spec.rb +13 -0
  475. data/spec/framework_spec/app/spec/library/rexml/text/to_s_spec.rb +18 -0
  476. data/spec/framework_spec/app/spec/library/rexml/text/unnormalize_spec.rb +8 -0
  477. data/spec/framework_spec/app/spec/library/rexml/text/value_spec.rb +37 -0
  478. data/spec/framework_spec/app/spec/library/rexml/text/wrap_spec.rb +21 -0
  479. data/spec/framework_spec/app/spec/library/rexml/text/write_with_substitution_spec.rb +33 -0
  480. data/spec/framework_spec/app/spec/library/set/exclusion_spec.rb +2 -2
  481. data/spec/framework_spec/app/spec/library/set/merge_spec.rb +2 -2
  482. data/spec/framework_spec/app/spec/library/set/shared/difference.rb +2 -2
  483. data/spec/framework_spec/app/spec/library/set/shared/intersection.rb +2 -2
  484. data/spec/framework_spec/app/spec/library/set/shared/union.rb +2 -2
  485. data/spec/framework_spec/app/spec/library/set/sortedset/exclusion_spec.rb +2 -2
  486. data/spec/framework_spec/app/spec/library/set/sortedset/merge_spec.rb +2 -2
  487. data/spec/framework_spec/app/spec/library/set/sortedset/shared/difference.rb +2 -2
  488. data/spec/framework_spec/app/spec/library/set/sortedset/shared/intersection.rb +2 -2
  489. data/spec/framework_spec/app/spec/library/set/sortedset/shared/union.rb +2 -2
  490. data/spec/framework_spec/app/spec/library/timeout/timeout_spec.rb +37 -0
  491. data/spec/framework_spec/app/spec/library/uri/eql_spec.rb +12 -0
  492. data/spec/framework_spec/app/spec/library/uri/equality_spec.rb +48 -0
  493. data/spec/framework_spec/app/spec/library/uri/escape/decode_spec.rb +6 -0
  494. data/spec/framework_spec/app/spec/library/uri/escape/encode_spec.rb +6 -0
  495. data/spec/framework_spec/app/spec/library/uri/escape/escape_spec.rb +6 -0
  496. data/spec/framework_spec/app/spec/library/uri/escape/unescape_spec.rb +6 -0
  497. data/spec/framework_spec/app/spec/library/uri/extract_spec.rb +86 -0
  498. data/spec/framework_spec/app/spec/library/uri/fixtures/classes.rb +11 -0
  499. data/spec/framework_spec/app/spec/library/uri/fixtures/normalization.rb +54 -0
  500. data/spec/framework_spec/app/spec/library/uri/ftp/build_spec.rb +6 -0
  501. data/spec/framework_spec/app/spec/library/uri/ftp/merge_spec.rb +6 -0
  502. data/spec/framework_spec/app/spec/library/uri/ftp/new2_spec.rb +6 -0
  503. data/spec/framework_spec/app/spec/library/uri/ftp/path_spec.rb +56 -0
  504. data/spec/framework_spec/app/spec/library/uri/ftp/set_typecode_spec.rb +6 -0
  505. data/spec/framework_spec/app/spec/library/uri/ftp/to_s_spec.rb +25 -0
  506. data/spec/framework_spec/app/spec/library/uri/ftp/typecode_spec.rb +10 -0
  507. data/spec/framework_spec/app/spec/library/uri/generic/absolute_spec.rb +10 -0
  508. data/spec/framework_spec/app/spec/library/uri/generic/build2_spec.rb +6 -0
  509. data/spec/framework_spec/app/spec/library/uri/generic/build_spec.rb +6 -0
  510. data/spec/framework_spec/app/spec/library/uri/generic/coerce_spec.rb +6 -0
  511. data/spec/framework_spec/app/spec/library/uri/generic/component_ary_spec.rb +6 -0
  512. data/spec/framework_spec/app/spec/library/uri/generic/component_spec.rb +10 -0
  513. data/spec/framework_spec/app/spec/library/uri/generic/default_port_spec.rb +10 -0
  514. data/spec/framework_spec/app/spec/library/uri/generic/eql_spec.rb +6 -0
  515. data/spec/framework_spec/app/spec/library/uri/generic/equal_value_spec.rb +6 -0
  516. data/spec/framework_spec/app/spec/library/uri/generic/fragment_spec.rb +10 -0
  517. data/spec/framework_spec/app/spec/library/uri/generic/hash_spec.rb +6 -0
  518. data/spec/framework_spec/app/spec/library/uri/generic/hierarchical_spec.rb +6 -0
  519. data/spec/framework_spec/app/spec/library/uri/generic/host_spec.rb +10 -0
  520. data/spec/framework_spec/app/spec/library/uri/generic/inspect_spec.rb +6 -0
  521. data/spec/framework_spec/app/spec/library/uri/generic/merge_spec.rb +10 -0
  522. data/spec/framework_spec/app/spec/library/uri/generic/minus_spec.rb +6 -0
  523. data/spec/framework_spec/app/spec/library/uri/generic/normalize_spec.rb +10 -0
  524. data/spec/framework_spec/app/spec/library/uri/generic/opaque_spec.rb +10 -0
  525. data/spec/framework_spec/app/spec/library/uri/generic/password_spec.rb +10 -0
  526. data/spec/framework_spec/app/spec/library/uri/generic/path_spec.rb +10 -0
  527. data/spec/framework_spec/app/spec/library/uri/generic/plus_spec.rb +6 -0
  528. data/spec/framework_spec/app/spec/library/uri/generic/port_spec.rb +10 -0
  529. data/spec/framework_spec/app/spec/library/uri/generic/query_spec.rb +10 -0
  530. data/spec/framework_spec/app/spec/library/uri/generic/registry_spec.rb +10 -0
  531. data/spec/framework_spec/app/spec/library/uri/generic/relative_spec.rb +6 -0
  532. data/spec/framework_spec/app/spec/library/uri/generic/route_from_spec.rb +6 -0
  533. data/spec/framework_spec/app/spec/library/uri/generic/route_to_spec.rb +6 -0
  534. data/spec/framework_spec/app/spec/library/uri/generic/scheme_spec.rb +10 -0
  535. data/spec/framework_spec/app/spec/library/uri/generic/select_spec.rb +6 -0
  536. data/spec/framework_spec/app/spec/library/uri/generic/set_fragment_spec.rb +6 -0
  537. data/spec/framework_spec/app/spec/library/uri/generic/set_host_spec.rb +6 -0
  538. data/spec/framework_spec/app/spec/library/uri/generic/set_opaque_spec.rb +6 -0
  539. data/spec/framework_spec/app/spec/library/uri/generic/set_password_spec.rb +6 -0
  540. data/spec/framework_spec/app/spec/library/uri/generic/set_path_spec.rb +6 -0
  541. data/spec/framework_spec/app/spec/library/uri/generic/set_port_spec.rb +6 -0
  542. data/spec/framework_spec/app/spec/library/uri/generic/set_query_spec.rb +6 -0
  543. data/spec/framework_spec/app/spec/library/uri/generic/set_registry_spec.rb +6 -0
  544. data/spec/framework_spec/app/spec/library/uri/generic/set_scheme_spec.rb +6 -0
  545. data/spec/framework_spec/app/spec/library/uri/generic/set_user_spec.rb +6 -0
  546. data/spec/framework_spec/app/spec/library/uri/generic/set_userinfo_spec.rb +6 -0
  547. data/spec/framework_spec/app/spec/library/uri/generic/to_s_spec.rb +6 -0
  548. data/spec/framework_spec/app/spec/library/uri/generic/use_registry_spec.rb +6 -0
  549. data/spec/framework_spec/app/spec/library/uri/generic/user_spec.rb +10 -0
  550. data/spec/framework_spec/app/spec/library/uri/generic/userinfo_spec.rb +10 -0
  551. data/spec/framework_spec/app/spec/library/uri/http/build_spec.rb +6 -0
  552. data/spec/framework_spec/app/spec/library/uri/http/request_uri_spec.rb +16 -0
  553. data/spec/framework_spec/app/spec/library/uri/join_spec.rb +61 -0
  554. data/spec/framework_spec/app/spec/library/uri/ldap/attributes_spec.rb +10 -0
  555. data/spec/framework_spec/app/spec/library/uri/ldap/build_spec.rb +6 -0
  556. data/spec/framework_spec/app/spec/library/uri/ldap/dn_spec.rb +10 -0
  557. data/spec/framework_spec/app/spec/library/uri/ldap/extensions_spec.rb +10 -0
  558. data/spec/framework_spec/app/spec/library/uri/ldap/filter_spec.rb +10 -0
  559. data/spec/framework_spec/app/spec/library/uri/ldap/hierarchical_spec.rb +6 -0
  560. data/spec/framework_spec/app/spec/library/uri/ldap/scope_spec.rb +10 -0
  561. data/spec/framework_spec/app/spec/library/uri/ldap/set_attributes_spec.rb +6 -0
  562. data/spec/framework_spec/app/spec/library/uri/ldap/set_dn_spec.rb +6 -0
  563. data/spec/framework_spec/app/spec/library/uri/ldap/set_extensions_spec.rb +6 -0
  564. data/spec/framework_spec/app/spec/library/uri/ldap/set_filter_spec.rb +6 -0
  565. data/spec/framework_spec/app/spec/library/uri/ldap/set_scope_spec.rb +6 -0
  566. data/spec/framework_spec/app/spec/library/uri/mailto/build_spec.rb +99 -0
  567. data/spec/framework_spec/app/spec/library/uri/mailto/headers_spec.rb +10 -0
  568. data/spec/framework_spec/app/spec/library/uri/mailto/set_headers_spec.rb +6 -0
  569. data/spec/framework_spec/app/spec/library/uri/mailto/set_to_spec.rb +6 -0
  570. data/spec/framework_spec/app/spec/library/uri/mailto/to_mailtext_spec.rb +6 -0
  571. data/spec/framework_spec/app/spec/library/uri/mailto/to_rfc822text_spec.rb +6 -0
  572. data/spec/framework_spec/app/spec/library/uri/mailto/to_s_spec.rb +6 -0
  573. data/spec/framework_spec/app/spec/library/uri/mailto/to_spec.rb +10 -0
  574. data/spec/framework_spec/app/spec/library/uri/merge_spec.rb +22 -0
  575. data/spec/framework_spec/app/spec/library/uri/normalize_spec.rb +35 -0
  576. data/spec/framework_spec/app/spec/library/uri/parse_spec.rb +249 -0
  577. data/spec/framework_spec/app/spec/library/uri/plus_spec.rb +489 -0
  578. data/spec/framework_spec/app/spec/library/uri/regexp_spec.rb +18 -0
  579. data/spec/framework_spec/app/spec/library/uri/route_from_spec.rb +25 -0
  580. data/spec/framework_spec/app/spec/library/uri/route_to_spec.rb +28 -0
  581. data/spec/framework_spec/app/spec/library/uri/select_spec.rb +31 -0
  582. data/spec/framework_spec/app/spec/library/uri/set_component_spec.rb +47 -0
  583. data/spec/framework_spec/app/spec/library/uri/shared/eql.rb +17 -0
  584. data/spec/framework_spec/app/spec/library/uri/split_spec.rb +6 -0
  585. data/spec/framework_spec/app/spec/library/uri/uri_spec.rb +31 -0
  586. data/spec/framework_spec/app/spec/library/uri/util/make_components_hash_spec.rb +6 -0
  587. data/spec/framework_spec/build.yml +2 -2
  588. data/spec/framework_spec/extensions/test-libs/test/unit.rb +328 -0
  589. data/spec/framework_spec/extensions/test-libs/test/unit/assertionfailederror.rb +25 -0
  590. data/spec/framework_spec/extensions/test-libs/test/unit/assertions.rb +1878 -0
  591. data/spec/framework_spec/extensions/test-libs/test/unit/attribute.rb +129 -0
  592. data/spec/framework_spec/extensions/test-libs/test/unit/autorunner.rb +422 -0
  593. data/spec/framework_spec/extensions/test-libs/test/unit/collector.rb +38 -0
  594. data/spec/framework_spec/extensions/test-libs/test/unit/collector/descendant.rb +23 -0
  595. data/spec/framework_spec/extensions/test-libs/test/unit/collector/dir.rb +108 -0
  596. data/spec/framework_spec/extensions/test-libs/test/unit/collector/load.rb +187 -0
  597. data/spec/framework_spec/extensions/test-libs/test/unit/collector/objectspace.rb +34 -0
  598. data/spec/framework_spec/extensions/test-libs/test/unit/collector/xml.rb +250 -0
  599. data/spec/framework_spec/extensions/test-libs/test/unit/color-scheme.rb +153 -0
  600. data/spec/framework_spec/extensions/test-libs/test/unit/color.rb +123 -0
  601. data/spec/framework_spec/extensions/test-libs/test/unit/data.rb +80 -0
  602. data/spec/framework_spec/extensions/test-libs/test/unit/diff.rb +740 -0
  603. data/spec/framework_spec/extensions/test-libs/test/unit/error.rb +151 -0
  604. data/spec/framework_spec/extensions/test-libs/test/unit/exceptionhandler.rb +39 -0
  605. data/spec/framework_spec/extensions/test-libs/test/unit/failure.rb +136 -0
  606. data/spec/framework_spec/extensions/test-libs/test/unit/fixture.rb +214 -0
  607. data/spec/framework_spec/extensions/test-libs/test/unit/notification.rb +133 -0
  608. data/spec/framework_spec/extensions/test-libs/test/unit/omission.rb +191 -0
  609. data/spec/framework_spec/extensions/test-libs/test/unit/pending.rb +150 -0
  610. data/spec/framework_spec/extensions/test-libs/test/unit/priority.rb +182 -0
  611. data/spec/framework_spec/extensions/test-libs/test/unit/runner/console.rb +59 -0
  612. data/spec/framework_spec/extensions/test-libs/test/unit/runner/emacs.rb +8 -0
  613. data/spec/framework_spec/extensions/test-libs/test/unit/runner/tap.rb +8 -0
  614. data/spec/framework_spec/extensions/test-libs/test/unit/runner/xml.rb +15 -0
  615. data/spec/framework_spec/extensions/test-libs/test/unit/testcase.rb +601 -0
  616. data/spec/framework_spec/extensions/test-libs/test/unit/testresult.rb +125 -0
  617. data/spec/framework_spec/extensions/test-libs/test/unit/testsuite.rb +134 -0
  618. data/spec/framework_spec/extensions/test-libs/test/unit/testsuitecreator.rb +79 -0
  619. data/spec/framework_spec/extensions/test-libs/test/unit/ui/console/outputlevel.rb +15 -0
  620. data/spec/framework_spec/extensions/test-libs/test/unit/ui/console/testrunner.rb +561 -0
  621. data/spec/framework_spec/extensions/test-libs/test/unit/ui/emacs/testrunner.rb +63 -0
  622. data/spec/framework_spec/extensions/test-libs/test/unit/ui/tap/testrunner.rb +82 -0
  623. data/spec/framework_spec/extensions/test-libs/test/unit/ui/testrunner.rb +53 -0
  624. data/spec/framework_spec/extensions/test-libs/test/unit/ui/testrunnermediator.rb +86 -0
  625. data/spec/framework_spec/extensions/test-libs/test/unit/ui/testrunnerutilities.rb +41 -0
  626. data/spec/framework_spec/extensions/test-libs/test/unit/ui/xml/testrunner.rb +224 -0
  627. data/spec/framework_spec/extensions/test-libs/test/unit/util/backtracefilter.rb +42 -0
  628. data/spec/framework_spec/extensions/test-libs/test/unit/util/method-owner-finder.rb +28 -0
  629. data/spec/framework_spec/extensions/test-libs/test/unit/util/observable.rb +90 -0
  630. data/spec/framework_spec/extensions/test-libs/test/unit/util/output.rb +31 -0
  631. data/spec/framework_spec/extensions/test-libs/test/unit/util/procwrapper.rb +48 -0
  632. data/spec/framework_spec/extensions/test-libs/test/unit/version.rb +5 -0
  633. data/spec/framework_spec/extensions/test-libs/webrick/accesslog.rb +10 -2
  634. data/spec/framework_spec/extensions/test-libs/webrick/cgi.rb +1 -1
  635. data/spec/framework_spec/extensions/test-libs/webrick/config.rb +1 -1
  636. data/spec/framework_spec/extensions/test-libs/webrick/httpauth/digestauth.rb +1 -1
  637. data/spec/framework_spec/extensions/test-libs/webrick/httpresponse.rb +1 -1
  638. data/spec/framework_spec/extensions/test-libs/webrick/https.rb +2 -2
  639. data/spec/framework_spec/extensions/test-libs/webrick/httpservlet/abstract.rb +1 -2
  640. data/spec/framework_spec/extensions/test-libs/webrick/httpservlet/cgihandler.rb +2 -2
  641. data/spec/framework_spec/extensions/test-libs/webrick/httpservlet/filehandler.rb +9 -5
  642. data/spec/framework_spec/extensions/test-libs/webrick/httpstatus.rb +32 -321
  643. data/spec/framework_spec/extensions/test-libs/webrick/httputils.rb +3 -3
  644. data/spec/framework_spec/extensions/test-libs/webrick/ssl.rb +3 -2
  645. data/spec/phone_spec/build.yml +1 -1
  646. data/version +1 -0
  647. metadata +521 -27
  648. data/lib/extensions/net-http/monitor.rb +0 -265
  649. data/lib/extensions/net-http/thread.rb +0 -367
  650. data/lib/extensions/net-http/timeout.rb +0 -114
  651. data/lib/extensions/net-http/uri.rb +0 -29
  652. data/lib/extensions/net-http/uri/common.rb +0 -727
  653. data/lib/extensions/net-http/uri/ftp.rb +0 -198
  654. data/lib/extensions/net-http/uri/generic.rb +0 -1128
  655. data/lib/extensions/net-http/uri/http.rb +0 -100
  656. data/lib/extensions/net-http/uri/https.rb +0 -20
  657. data/lib/extensions/net-http/uri/ldap.rb +0 -190
  658. data/lib/extensions/net-http/uri/ldaps.rb +0 -12
  659. data/lib/extensions/net-http/uri/mailto.rb +0 -266
  660. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtDBus.framework/Versions/4/QtDBus +0 -0
  661. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtXml.framework/Versions/4/QtXml +0 -0
  662. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libtcpserver.dylib +0 -0
  663. data/res/generators/templates/application/public/jqmobile/images/icon-search-black.png +0 -0
  664. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.css +0 -8
  665. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.js +0 -169
  666. data/res/generators/templates/application/public/jquery/jquery-1.6.3.min.js +0 -4
  667. data/spec/framework_spec/extensions/test-libs/thread.rb +0 -391
@@ -0,0 +1,771 @@
1
+ /************************************************
2
+
3
+ basicsocket.c -
4
+
5
+ created at: Thu Mar 31 12:21:29 JST 1994
6
+
7
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
8
+
9
+ ************************************************/
10
+
11
+ #include "rubysocket.h"
12
+
13
+ /*
14
+ * call-seq:
15
+ * BasicSocket.for_fd(fd) => basicsocket
16
+ *
17
+ * Returns a socket object which contains the file descriptor, _fd_.
18
+ *
19
+ * # If invoked by inetd, STDIN/STDOUT/STDERR is a socket.
20
+ * STDIN_SOCK = Socket.for_fd(STDIN.fileno)
21
+ * p STDIN_SOCK.remote_address
22
+ *
23
+ */
24
+ static VALUE
25
+ bsock_s_for_fd(VALUE klass, VALUE fd)
26
+ {
27
+ rb_io_t *fptr;
28
+ VALUE sock = rsock_init_sock(rb_obj_alloc(klass), NUM2INT(fd));
29
+
30
+ GetOpenFile(sock, fptr);
31
+
32
+ return sock;
33
+ }
34
+
35
+ /*
36
+ * call-seq:
37
+ * basicsocket.shutdown([how]) => 0
38
+ *
39
+ * Calls shutdown(2) system call.
40
+ *
41
+ * s.shutdown(Socket::SHUT_RD) disallows further read.
42
+ *
43
+ * s.shutdown(Socket::SHUT_WR) disallows further write.
44
+ *
45
+ * s.shutdown(Socket::SHUT_RDWR) disallows further read and write.
46
+ *
47
+ * _how_ can be symbol or string:
48
+ * - :RD, :SHUT_RD, "RD" and "SHUT_RD" are accepted as Socket::SHUT_RD.
49
+ * - :WR, :SHUT_WR, "WR" and "SHUT_WR" are accepted as Socket::SHUT_WR.
50
+ * - :RDWR, :SHUT_RDWR, "RDWR" and "SHUT_RDWR" are accepted as Socket::SHUT_RDWR.
51
+ *
52
+ * UNIXSocket.pair {|s1, s2|
53
+ * s1.puts "ping"
54
+ * s1.shutdown(:WR)
55
+ * p s2.read #=> "ping\n"
56
+ * s2.puts "pong"
57
+ * s2.close
58
+ * p s1.read #=> "pong\n"
59
+ * }
60
+ *
61
+ */
62
+ static VALUE
63
+ bsock_shutdown(int argc, VALUE *argv, VALUE sock)
64
+ {
65
+ VALUE howto;
66
+ int how;
67
+ rb_io_t *fptr;
68
+
69
+ if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) {
70
+ rb_raise(rb_eSecurityError, "Insecure: can't shutdown socket");
71
+ }
72
+ rb_scan_args(argc, argv, "01", &howto);
73
+ if (howto == Qnil)
74
+ how = SHUT_RDWR;
75
+ else {
76
+ how = rsock_shutdown_how_arg(howto);
77
+ if (how != SHUT_WR && how != SHUT_RD && how != SHUT_RDWR) {
78
+ rb_raise(rb_eArgError, "`how' should be either :SHUT_RD, :SHUT_WR, :SHUT_RDWR");
79
+ }
80
+ }
81
+ GetOpenFile(sock, fptr);
82
+ if (shutdown(fptr->fd, how) == -1)
83
+ rb_sys_fail(0);
84
+
85
+ return INT2FIX(0);
86
+ }
87
+
88
+ /*
89
+ * call-seq:
90
+ * basicsocket.close_read => nil
91
+ *
92
+ * Disallows further read using shutdown system call.
93
+ *
94
+ * s1, s2 = UNIXSocket.pair
95
+ * s1.close_read
96
+ * s2.puts #=> Broken pipe (Errno::EPIPE)
97
+ */
98
+ static VALUE
99
+ bsock_close_read(VALUE sock)
100
+ {
101
+ rb_io_t *fptr;
102
+
103
+ if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) {
104
+ rb_raise(rb_eSecurityError, "Insecure: can't close socket");
105
+ }
106
+ GetOpenFile(sock, fptr);
107
+ shutdown(fptr->fd, 0);
108
+ if (!(fptr->mode & FMODE_WRITABLE)) {
109
+ return rb_io_close(sock);
110
+ }
111
+ fptr->mode &= ~FMODE_READABLE;
112
+
113
+ return Qnil;
114
+ }
115
+
116
+ /*
117
+ * call-seq:
118
+ * basicsocket.close_write => nil
119
+ *
120
+ * Disallows further write using shutdown system call.
121
+ *
122
+ * UNIXSocket.pair {|s1, s2|
123
+ * s1.print "ping"
124
+ * s1.close_write
125
+ * p s2.read #=> "ping"
126
+ * s2.print "pong"
127
+ * s2.close
128
+ * p s1.read #=> "pong"
129
+ * }
130
+ */
131
+ static VALUE
132
+ bsock_close_write(VALUE sock)
133
+ {
134
+ rb_io_t *fptr;
135
+
136
+ if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) {
137
+ rb_raise(rb_eSecurityError, "Insecure: can't close socket");
138
+ }
139
+ GetOpenFile(sock, fptr);
140
+ if (!(fptr->mode & FMODE_READABLE)) {
141
+ return rb_io_close(sock);
142
+ }
143
+ shutdown(fptr->fd, 1);
144
+ fptr->mode &= ~FMODE_WRITABLE;
145
+
146
+ return Qnil;
147
+ }
148
+
149
+ /*
150
+ * Document-method: setsockopt
151
+ * call-seq:
152
+ * setsockopt(level, optname, optval)
153
+ * setsockopt(socketoption)
154
+ *
155
+ * Sets a socket option. These are protocol and system specific, see your
156
+ * local system documentation for details.
157
+ *
158
+ * === Parameters
159
+ * * +level+ is an integer, usually one of the SOL_ constants such as
160
+ * Socket::SOL_SOCKET, or a protocol level.
161
+ * A string or symbol of the name, possibly without prefix, is also
162
+ * accepted.
163
+ * * +optname+ is an integer, usually one of the SO_ constants, such
164
+ * as Socket::SO_REUSEADDR.
165
+ * A string or symbol of the name, possibly without prefix, is also
166
+ * accepted.
167
+ * * +optval+ is the value of the option, it is passed to the underlying
168
+ * setsockopt() as a pointer to a certain number of bytes. How this is
169
+ * done depends on the type:
170
+ * - Fixnum: value is assigned to an int, and a pointer to the int is
171
+ * passed, with length of sizeof(int).
172
+ * - true or false: 1 or 0 (respectively) is assigned to an int, and the
173
+ * int is passed as for a Fixnum. Note that +false+ must be passed,
174
+ * not +nil+.
175
+ * - String: the string's data and length is passed to the socket.
176
+ * * +socketoption+ is an instance of Socket::Option
177
+ *
178
+ * === Examples
179
+ *
180
+ * Some socket options are integers with boolean values, in this case
181
+ * #setsockopt could be called like this:
182
+ * sock.setsockopt(:SOCKET, :REUSEADDR, true)
183
+ * sock.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true)
184
+ * sock.setsockopt(Socket::Option.bool(:INET, :SOCKET, :REUSEADDR, true))
185
+ *
186
+ * Some socket options are integers with numeric values, in this case
187
+ * #setsockopt could be called like this:
188
+ * sock.setsockopt(:IP, :TTL, 255)
189
+ * sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_TTL, 255)
190
+ * sock.setsockopt(Socket::Option.int(:INET, :IP, :TTL, 255))
191
+ *
192
+ * Option values may be structs. Passing them can be complex as it involves
193
+ * examining your system headers to determine the correct definition. An
194
+ * example is an +ip_mreq+, which may be defined in your system headers as:
195
+ * struct ip_mreq {
196
+ * struct in_addr imr_multiaddr;
197
+ * struct in_addr imr_interface;
198
+ * };
199
+ *
200
+ * In this case #setsockopt could be called like this:
201
+ * optval = IPAddr.new("224.0.0.251").hton +
202
+ * IPAddr.new(Socket::INADDR_ANY, Socket::AF_INET).hton
203
+ * sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, optval)
204
+ *
205
+ */
206
+ static VALUE
207
+ bsock_setsockopt(int argc, VALUE *argv, VALUE sock)
208
+ {
209
+ VALUE lev, optname, val;
210
+ int family, level, option;
211
+ rb_io_t *fptr;
212
+ int i;
213
+ char *v;
214
+ int vlen;
215
+
216
+ if (argc == 1) {
217
+ lev = rb_funcall(argv[0], rb_intern("level"), 0);
218
+ optname = rb_funcall(argv[0], rb_intern("optname"), 0);
219
+ val = rb_funcall(argv[0], rb_intern("data"), 0);
220
+ }
221
+ else {
222
+ rb_scan_args(argc, argv, "30", &lev, &optname, &val);
223
+ }
224
+
225
+ rb_secure(2);
226
+ GetOpenFile(sock, fptr);
227
+ family = rsock_getfamily(fptr->fd);
228
+ level = rsock_level_arg(family, lev);
229
+ option = rsock_optname_arg(family, level, optname);
230
+
231
+ switch (TYPE(val)) {
232
+ case T_FIXNUM:
233
+ i = FIX2INT(val);
234
+ goto numval;
235
+ case T_FALSE:
236
+ i = 0;
237
+ goto numval;
238
+ case T_TRUE:
239
+ i = 1;
240
+ numval:
241
+ v = (char*)&i; vlen = (int)sizeof(i);
242
+ break;
243
+ default:
244
+ StringValue(val);
245
+ v = RSTRING_PTR(val);
246
+ vlen = RSTRING_LENINT(val);
247
+ break;
248
+ }
249
+
250
+ #define rb_sys_fail_path(path) rb_sys_fail(NIL_P(path) ? 0 : RSTRING_PTR(path))
251
+
252
+ rb_io_check_closed(fptr);
253
+ if (setsockopt(fptr->fd, level, option, v, vlen) < 0)
254
+ rb_sys_fail_path(fptr->pathv);
255
+
256
+ return INT2FIX(0);
257
+ }
258
+
259
+ #if !defined(__BEOS__)
260
+ /*
261
+ * Document-method: getsockopt
262
+ * call-seq:
263
+ * getsockopt(level, optname) => socketoption
264
+ *
265
+ * Gets a socket option. These are protocol and system specific, see your
266
+ * local system documentation for details. The option is returned as
267
+ * a Socket::Option object.
268
+ *
269
+ * === Parameters
270
+ * * +level+ is an integer, usually one of the SOL_ constants such as
271
+ * Socket::SOL_SOCKET, or a protocol level.
272
+ * A string or symbol of the name, possibly without prefix, is also
273
+ * accepted.
274
+ * * +optname+ is an integer, usually one of the SO_ constants, such
275
+ * as Socket::SO_REUSEADDR.
276
+ * A string or symbol of the name, possibly without prefix, is also
277
+ * accepted.
278
+ *
279
+ * === Examples
280
+ *
281
+ * Some socket options are integers with boolean values, in this case
282
+ * #getsockopt could be called like this:
283
+ *
284
+ * reuseaddr = sock.getsockopt(:SOCKET, :REUSEADDR).bool
285
+ *
286
+ * optval = sock.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR)
287
+ * optval = optval.unpack "i"
288
+ * reuseaddr = optval[0] == 0 ? false : true
289
+ *
290
+ * Some socket options are integers with numeric values, in this case
291
+ * #getsockopt could be called like this:
292
+ *
293
+ * ipttl = sock.getsockopt(:IP, :TTL).int
294
+ *
295
+ * optval = sock.getsockopt(Socket::IPPROTO_IP, Socket::IP_TTL)
296
+ * ipttl = optval.unpack("i")[0]
297
+ *
298
+ * Option values may be structs. Decoding them can be complex as it involves
299
+ * examining your system headers to determine the correct definition. An
300
+ * example is a +struct linger+, which may be defined in your system headers
301
+ * as:
302
+ * struct linger {
303
+ * int l_onoff;
304
+ * int l_linger;
305
+ * };
306
+ *
307
+ * In this case #getsockopt could be called like this:
308
+ *
309
+ * # Socket::Option knows linger structure.
310
+ * onoff, linger = sock.getsockopt(:SOCKET, :LINGER).linger
311
+ *
312
+ * optval = sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER)
313
+ * onoff, linger = optval.unpack "ii"
314
+ * onoff = onoff == 0 ? false : true
315
+ */
316
+ static VALUE
317
+ bsock_getsockopt(VALUE sock, VALUE lev, VALUE optname)
318
+ {
319
+ int level, option;
320
+ socklen_t len;
321
+ char *buf;
322
+ rb_io_t *fptr;
323
+ int family;
324
+
325
+ GetOpenFile(sock, fptr);
326
+ family = rsock_getfamily(fptr->fd);
327
+ level = rsock_level_arg(family, lev);
328
+ option = rsock_optname_arg(family, level, optname);
329
+ len = 256;
330
+ buf = ALLOCA_N(char,len);
331
+
332
+ rb_io_check_closed(fptr);
333
+
334
+ if (getsockopt(fptr->fd, level, option, buf, &len) < 0)
335
+ rb_sys_fail_path(fptr->pathv);
336
+
337
+ return rsock_sockopt_new(family, level, option, rb_str_new(buf, len));
338
+ }
339
+ #else
340
+ #define bsock_getsockopt rb_f_notimplement
341
+ #endif
342
+
343
+ /*
344
+ * call-seq:
345
+ * basicsocket.getsockname => sockaddr
346
+ *
347
+ * Returns the local address of the socket as a sockaddr string.
348
+ *
349
+ * TCPServer.open("127.0.0.1", 15120) {|serv|
350
+ * p serv.getsockname #=> "\x02\x00;\x10\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
351
+ * }
352
+ *
353
+ * If Addrinfo object is preferred over the binary string,
354
+ * use BasicSocket#local_address.
355
+ */
356
+ static VALUE
357
+ bsock_getsockname(VALUE sock)
358
+ {
359
+ struct sockaddr_storage buf;
360
+ socklen_t len = (socklen_t)sizeof buf;
361
+ rb_io_t *fptr;
362
+
363
+ GetOpenFile(sock, fptr);
364
+ if (getsockname(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
365
+ rb_sys_fail("getsockname(2)");
366
+ return rb_str_new((char*)&buf, len);
367
+ }
368
+
369
+ /*
370
+ * call-seq:
371
+ * basicsocket.getpeername => sockaddr
372
+ *
373
+ * Returns the remote address of the socket as a sockaddr string.
374
+ *
375
+ * TCPServer.open("127.0.0.1", 1440) {|serv|
376
+ * c = TCPSocket.new("127.0.0.1", 1440)
377
+ * s = serv.accept
378
+ * p s.getpeername #=> "\x02\x00\x82u\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
379
+ * }
380
+ *
381
+ * If Addrinfo object is preferred over the binary string,
382
+ * use BasicSocket#remote_address.
383
+ *
384
+ */
385
+ static VALUE
386
+ bsock_getpeername(VALUE sock)
387
+ {
388
+ struct sockaddr_storage buf;
389
+ socklen_t len = (socklen_t)sizeof buf;
390
+ rb_io_t *fptr;
391
+
392
+ GetOpenFile(sock, fptr);
393
+ if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
394
+ rb_sys_fail("getpeername(2)");
395
+ return rb_str_new((char*)&buf, len);
396
+ }
397
+
398
+ #if defined(HAVE_GETPEEREID) || defined(SO_PEERCRED) || defined(HAVE_GETPEERUCRED)
399
+ /*
400
+ * call-seq:
401
+ * basicsocket.getpeereid => [euid, egid]
402
+ *
403
+ * Returns the user and group on the peer of the UNIX socket.
404
+ * The result is a two element array which contains the effective uid and the effective gid.
405
+ *
406
+ * Socket.unix_server_loop("/tmp/sock") {|s|
407
+ * begin
408
+ * euid, egid = s.getpeereid
409
+ *
410
+ * # Check the connected client is myself or not.
411
+ * next if euid != Process.uid
412
+ *
413
+ * # do something about my resource.
414
+ *
415
+ * ensure
416
+ * s.close
417
+ * end
418
+ * }
419
+ *
420
+ */
421
+ static VALUE
422
+ bsock_getpeereid(VALUE self)
423
+ {
424
+ #if defined(HAVE_GETPEEREID)
425
+ rb_io_t *fptr;
426
+ uid_t euid;
427
+ gid_t egid;
428
+ GetOpenFile(self, fptr);
429
+ if (getpeereid(fptr->fd, &euid, &egid) == -1)
430
+ rb_sys_fail("getpeereid");
431
+ return rb_assoc_new(UIDT2NUM(euid), GIDT2NUM(egid));
432
+ #elif defined(SO_PEERCRED) /* GNU/Linux */
433
+ rb_io_t *fptr;
434
+ struct ucred cred;
435
+ socklen_t len = sizeof(cred);
436
+ GetOpenFile(self, fptr);
437
+ if (getsockopt(fptr->fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1)
438
+ rb_sys_fail("getsockopt(SO_PEERCRED)");
439
+ return rb_assoc_new(UIDT2NUM(cred.uid), GIDT2NUM(cred.gid));
440
+ #elif defined(HAVE_GETPEERUCRED) /* Solaris */
441
+ rb_io_t *fptr;
442
+ ucred_t *uc = NULL;
443
+ VALUE ret;
444
+ GetOpenFile(self, fptr);
445
+ if (getpeerucred(fptr->fd, &uc) == -1)
446
+ rb_sys_fail("getpeerucred");
447
+ ret = rb_assoc_new(UIDT2NUM(ucred_geteuid(uc)), GIDT2NUM(ucred_getegid(uc)));
448
+ ucred_free(uc);
449
+ return ret;
450
+ #endif
451
+ }
452
+ #else
453
+ #define bsock_getpeereid rb_f_notimplement
454
+ #endif
455
+
456
+ /*
457
+ * call-seq:
458
+ * bsock.local_address => addrinfo
459
+ *
460
+ * Returns an Addrinfo object for local address obtained by getsockname.
461
+ *
462
+ * Note that addrinfo.protocol is filled by 0.
463
+ *
464
+ * TCPSocket.open("www.ruby-lang.org", 80) {|s|
465
+ * p s.local_address #=> #<Addrinfo: 192.168.0.129:36873 TCP>
466
+ * }
467
+ *
468
+ * TCPServer.open("127.0.0.1", 1512) {|serv|
469
+ * p serv.local_address #=> #<Addrinfo: 127.0.0.1:1512 TCP>
470
+ * }
471
+ *
472
+ */
473
+ static VALUE
474
+ bsock_local_address(VALUE sock)
475
+ {
476
+ struct sockaddr_storage buf;
477
+ socklen_t len = (socklen_t)sizeof buf;
478
+ rb_io_t *fptr;
479
+
480
+ GetOpenFile(sock, fptr);
481
+ if (getsockname(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
482
+ rb_sys_fail("getsockname(2)");
483
+ return rsock_fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
484
+ }
485
+
486
+ /*
487
+ * call-seq:
488
+ * bsock.remote_address => addrinfo
489
+ *
490
+ * Returns an Addrinfo object for remote address obtained by getpeername.
491
+ *
492
+ * Note that addrinfo.protocol is filled by 0.
493
+ *
494
+ * TCPSocket.open("www.ruby-lang.org", 80) {|s|
495
+ * p s.remote_address #=> #<Addrinfo: 221.186.184.68:80 TCP>
496
+ * }
497
+ *
498
+ * TCPServer.open("127.0.0.1", 1728) {|serv|
499
+ * c = TCPSocket.new("127.0.0.1", 1728)
500
+ * s = serv.accept
501
+ * p s.remote_address #=> #<Addrinfo: 127.0.0.1:36504 TCP>
502
+ * }
503
+ *
504
+ */
505
+ static VALUE
506
+ bsock_remote_address(VALUE sock)
507
+ {
508
+ struct sockaddr_storage buf;
509
+ socklen_t len = (socklen_t)sizeof buf;
510
+ rb_io_t *fptr;
511
+
512
+ GetOpenFile(sock, fptr);
513
+ if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
514
+ rb_sys_fail("getpeername(2)");
515
+ return rsock_fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
516
+ }
517
+
518
+ /*
519
+ * call-seq:
520
+ * basicsocket.send(mesg, flags [, dest_sockaddr]) => numbytes_sent
521
+ *
522
+ * send _mesg_ via _basicsocket_.
523
+ *
524
+ * _mesg_ should be a string.
525
+ *
526
+ * _flags_ should be a bitwise OR of Socket::MSG_* constants.
527
+ *
528
+ * _dest_sockaddr_ should be a packed sockaddr string or an addrinfo.
529
+ *
530
+ * TCPSocket.open("localhost", 80) {|s|
531
+ * s.send "GET / HTTP/1.0\r\n\r\n", 0
532
+ * p s.read
533
+ * }
534
+ */
535
+ VALUE
536
+ rsock_bsock_send(int argc, VALUE *argv, VALUE sock)
537
+ {
538
+ struct rsock_send_arg arg;
539
+ VALUE flags, to;
540
+ rb_io_t *fptr;
541
+ int n;
542
+ rb_blocking_function_t *func;
543
+
544
+ rb_secure(4);
545
+ rb_scan_args(argc, argv, "21", &arg.mesg, &flags, &to);
546
+
547
+ StringValue(arg.mesg);
548
+ if (!NIL_P(to)) {
549
+ SockAddrStringValue(to);
550
+ to = rb_str_new4(to);
551
+ arg.to = (struct sockaddr *)RSTRING_PTR(to);
552
+ arg.tolen = (socklen_t)RSTRING_LENINT(to);
553
+ func = rsock_sendto_blocking;
554
+ }
555
+ else {
556
+ func = rsock_send_blocking;
557
+ }
558
+ GetOpenFile(sock, fptr);
559
+ arg.fd = fptr->fd;
560
+ arg.flags = NUM2INT(flags);
561
+ while (rb_thread_fd_writable(arg.fd),
562
+ (n = (int)BLOCKING_REGION(func, &arg)) < 0) {
563
+ if (rb_io_wait_writable(arg.fd)) {
564
+ continue;
565
+ }
566
+ rb_sys_fail("send(2)");
567
+ }
568
+ return INT2FIX(n);
569
+ }
570
+
571
+ /*
572
+ * call-seq:
573
+ * basicsocket.do_not_reverse_lookup => true or false
574
+ *
575
+ * Gets the do_not_reverse_lookup flag of _basicsocket_.
576
+ *
577
+ * TCPSocket.open("www.ruby-lang.org", 80) {|sock|
578
+ * p sock.do_not_reverse_lookup #=> false
579
+ * p sock.peeraddr #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"]
580
+ * sock.do_not_reverse_lookup = true
581
+ * p sock.peeraddr #=> ["AF_INET", 80, "221.186.184.68", "221.186.184.68"]
582
+ * }
583
+ */
584
+ static VALUE
585
+ bsock_do_not_reverse_lookup(VALUE sock)
586
+ {
587
+ rb_io_t *fptr;
588
+
589
+ GetOpenFile(sock, fptr);
590
+ return (fptr->mode & FMODE_NOREVLOOKUP) ? Qtrue : Qfalse;
591
+ }
592
+
593
+ /*
594
+ * call-seq:
595
+ * basicsocket.do_not_reverse_lookup = bool
596
+ *
597
+ * Sets the do_not_reverse_lookup flag of _basicsocket_.
598
+ *
599
+ * BasicSocket.do_not_reverse_lookup = false
600
+ * p TCPSocket.new("127.0.0.1", 80).do_not_reverse_lookup #=> false
601
+ * BasicSocket.do_not_reverse_lookup = true
602
+ * p TCPSocket.new("127.0.0.1", 80).do_not_reverse_lookup #=> true
603
+ *
604
+ */
605
+ static VALUE
606
+ bsock_do_not_reverse_lookup_set(VALUE sock, VALUE state)
607
+ {
608
+ rb_io_t *fptr;
609
+
610
+ rb_secure(4);
611
+ GetOpenFile(sock, fptr);
612
+ if (RTEST(state)) {
613
+ fptr->mode |= FMODE_NOREVLOOKUP;
614
+ }
615
+ else {
616
+ fptr->mode &= ~FMODE_NOREVLOOKUP;
617
+ }
618
+ return sock;
619
+ }
620
+
621
+ /*
622
+ * call-seq:
623
+ * basicsocket.recv(maxlen) => mesg
624
+ * basicsocket.recv(maxlen, flags) => mesg
625
+ *
626
+ * Receives a message.
627
+ *
628
+ * _maxlen_ is the maximum number of bytes to receive.
629
+ *
630
+ * _flags_ should be a bitwise OR of Socket::MSG_* constants.
631
+ *
632
+ * UNIXSocket.pair {|s1, s2|
633
+ * s1.puts "Hello World"
634
+ * p s2.recv(4) #=> "Hell"
635
+ * p s2.recv(4, Socket::MSG_PEEK) #=> "o Wo"
636
+ * p s2.recv(4) #=> "o Wo"
637
+ * p s2.recv(10) #=> "rld\n"
638
+ * }
639
+ */
640
+ static VALUE
641
+ bsock_recv(int argc, VALUE *argv, VALUE sock)
642
+ {
643
+ return rsock_s_recvfrom(sock, argc, argv, RECV_RECV);
644
+ }
645
+
646
+ /*
647
+ * call-seq:
648
+ * basicsocket.recv_nonblock(maxlen) => mesg
649
+ * basicsocket.recv_nonblock(maxlen, flags) => mesg
650
+ *
651
+ * Receives up to _maxlen_ bytes from +socket+ using recvfrom(2) after
652
+ * O_NONBLOCK is set for the underlying file descriptor.
653
+ * _flags_ is zero or more of the +MSG_+ options.
654
+ * The result, _mesg_, is the data received.
655
+ *
656
+ * When recvfrom(2) returns 0, Socket#recv_nonblock returns
657
+ * an empty string as data.
658
+ * The meaning depends on the socket: EOF on TCP, empty packet on UDP, etc.
659
+ *
660
+ * === Parameters
661
+ * * +maxlen+ - the number of bytes to receive from the socket
662
+ * * +flags+ - zero or more of the +MSG_+ options
663
+ *
664
+ * === Example
665
+ * serv = TCPServer.new("127.0.0.1", 0)
666
+ * af, port, host, addr = serv.addr
667
+ * c = TCPSocket.new(addr, port)
668
+ * s = serv.accept
669
+ * c.send "aaa", 0
670
+ * begin # emulate blocking recv.
671
+ * p s.recv_nonblock(10) #=> "aaa"
672
+ * rescue IO::WaitReadable
673
+ * IO.select([s])
674
+ * retry
675
+ * end
676
+ *
677
+ * Refer to Socket#recvfrom for the exceptions that may be thrown if the call
678
+ * to _recv_nonblock_ fails.
679
+ *
680
+ * BasicSocket#recv_nonblock may raise any error corresponding to recvfrom(2) failure,
681
+ * including Errno::EWOULDBLOCK.
682
+ *
683
+ * If the exception is Errno::EWOULDBLOCK or Errno::AGAIN,
684
+ * it is extended by IO::WaitReadable.
685
+ * So IO::WaitReadable can be used to rescue the exceptions for retrying recv_nonblock.
686
+ *
687
+ * === See
688
+ * * Socket#recvfrom
689
+ */
690
+
691
+ static VALUE
692
+ bsock_recv_nonblock(int argc, VALUE *argv, VALUE sock)
693
+ {
694
+ return rsock_s_recvfrom_nonblock(sock, argc, argv, RECV_RECV);
695
+ }
696
+
697
+ /*
698
+ * call-seq:
699
+ * BasicSocket.do_not_reverse_lookup => true or false
700
+ *
701
+ * Gets the global do_not_reverse_lookup flag.
702
+ *
703
+ * BasicSocket.do_not_reverse_lookup #=> false
704
+ */
705
+ static VALUE
706
+ bsock_do_not_rev_lookup(void)
707
+ {
708
+ return rsock_do_not_reverse_lookup?Qtrue:Qfalse;
709
+ }
710
+
711
+ /*
712
+ * call-seq:
713
+ * BasicSocket.do_not_reverse_lookup = bool
714
+ *
715
+ * Sets the global do_not_reverse_lookup flag.
716
+ *
717
+ * The flag is used for initial value of do_not_reverse_lookup for each socket.
718
+ *
719
+ * s1 = TCPSocket.new("localhost", 80)
720
+ * p s1.do_not_reverse_lookup #=> true
721
+ * BasicSocket.do_not_reverse_lookup = false
722
+ * s2 = TCPSocket.new("localhost", 80)
723
+ * p s2.do_not_reverse_lookup #=> false
724
+ * p s1.do_not_reverse_lookup #=> true
725
+ *
726
+ */
727
+ static VALUE
728
+ bsock_do_not_rev_lookup_set(VALUE self, VALUE val)
729
+ {
730
+ rb_secure(4);
731
+ rsock_do_not_reverse_lookup = RTEST(val);
732
+ return val;
733
+ }
734
+
735
+ /*
736
+ * BasicSocket is the super class for the all socket classes.
737
+ */
738
+ void
739
+ rsock_init_basicsocket(void)
740
+ {
741
+ rb_cBasicSocket = rb_define_class("BasicSocket", rb_cIO);
742
+ rb_undef_method(rb_cBasicSocket, "initialize");
743
+
744
+ rb_define_singleton_method(rb_cBasicSocket, "do_not_reverse_lookup",
745
+ bsock_do_not_rev_lookup, 0);
746
+ rb_define_singleton_method(rb_cBasicSocket, "do_not_reverse_lookup=",
747
+ bsock_do_not_rev_lookup_set, 1);
748
+ rb_define_singleton_method(rb_cBasicSocket, "for_fd", bsock_s_for_fd, 1);
749
+
750
+ rb_define_method(rb_cBasicSocket, "close_read", bsock_close_read, 0);
751
+ rb_define_method(rb_cBasicSocket, "close_write", bsock_close_write, 0);
752
+ rb_define_method(rb_cBasicSocket, "shutdown", bsock_shutdown, -1);
753
+ rb_define_method(rb_cBasicSocket, "setsockopt", bsock_setsockopt, -1);
754
+ rb_define_method(rb_cBasicSocket, "getsockopt", bsock_getsockopt, 2);
755
+ rb_define_method(rb_cBasicSocket, "getsockname", bsock_getsockname, 0);
756
+ rb_define_method(rb_cBasicSocket, "getpeername", bsock_getpeername, 0);
757
+ rb_define_method(rb_cBasicSocket, "getpeereid", bsock_getpeereid, 0);
758
+ rb_define_method(rb_cBasicSocket, "local_address", bsock_local_address, 0);
759
+ rb_define_method(rb_cBasicSocket, "remote_address", bsock_remote_address, 0);
760
+ rb_define_method(rb_cBasicSocket, "send", rsock_bsock_send, -1);
761
+ rb_define_method(rb_cBasicSocket, "recv", bsock_recv, -1);
762
+ rb_define_method(rb_cBasicSocket, "recv_nonblock", bsock_recv_nonblock, -1);
763
+ rb_define_method(rb_cBasicSocket, "do_not_reverse_lookup", bsock_do_not_reverse_lookup, 0);
764
+ rb_define_method(rb_cBasicSocket, "do_not_reverse_lookup=", bsock_do_not_reverse_lookup_set, 1);
765
+
766
+ rb_define_method(rb_cBasicSocket, "sendmsg", rsock_bsock_sendmsg, -1); /* in ancdata.c */
767
+ rb_define_method(rb_cBasicSocket, "sendmsg_nonblock", rsock_bsock_sendmsg_nonblock, -1); /* in ancdata.c */
768
+ rb_define_method(rb_cBasicSocket, "recvmsg", rsock_bsock_recvmsg, -1); /* in ancdata.c */
769
+ rb_define_method(rb_cBasicSocket, "recvmsg_nonblock", rsock_bsock_recvmsg_nonblock, -1); /* in ancdata.c */
770
+
771
+ }