rhodes 3.1.1 → 3.2.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -2
- data/doc/alert-api.txt +51 -0
- data/doc/build.txt +52 -43
- data/doc/configuration.txt +9 -5
- data/doc/connect-to-web-services.txt +4 -4
- data/doc/device-caps.txt +80 -28
- data/doc/extensions.txt +1 -1
- data/doc/install.txt +1 -1
- data/doc/introduction.txt +1 -1
- data/doc/rhodes-api.txt +62 -62
- data/doc/rhom.txt +36 -23
- data/doc/{rhodes-api/ringtonemanager-api.txt → ringtonemanager-api.txt} +0 -0
- data/doc/scanner.txt +507 -0
- data/doc/simulator.txt +6 -1
- data/doc/synchronization.txt +32 -27
- data/doc/{rhodes-api/timer-api.txt → timer-api.txt} +1 -1
- data/doc/tutorial.txt +8 -8
- data/installer/OLD-README.html +81 -0
- data/installer/README.html +6 -4
- data/installer/RHOSTUDIO-LICENSE.txt +675 -0
- data/installer/rhostudio.nsi +147 -20
- data/lib/build/compileRB/compileRB.rb +5 -2
- data/lib/build/jake.rb +3 -2
- data/lib/extensions/barcode/ext/barcode/platform/android/Rakefile +1 -1
- data/lib/extensions/barcode/ext/barcode/platform/bb/Rakefile +1 -1
- data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode_wrap.c +391 -111
- data/lib/extensions/digest-md5/ext/Rakefile +1 -1
- data/lib/extensions/digest-sha1/ext/Rakefile +1 -1
- data/lib/extensions/digest/ext/Rakefile +1 -1
- data/lib/extensions/fcntl/ext/Rakefile +1 -1
- data/lib/extensions/mspec/mspec/expectations/expectations.rb +4 -4
- data/lib/extensions/mspec/mspec/expectations/should.rb +9 -8
- data/lib/extensions/mspec/mspec/guards.rb +3 -0
- data/lib/extensions/mspec/mspec/guards/conflict.rb +7 -2
- data/lib/extensions/mspec/mspec/guards/endian.rb +7 -10
- data/lib/extensions/mspec/mspec/guards/feature.rb +47 -0
- data/lib/extensions/mspec/mspec/guards/guard.rb +18 -13
- data/lib/extensions/mspec/mspec/guards/platform.rb +4 -0
- data/lib/extensions/mspec/mspec/guards/specified.rb +66 -0
- data/lib/extensions/mspec/mspec/guards/user.rb +17 -0
- data/lib/extensions/mspec/mspec/helpers.rb +6 -4
- data/lib/extensions/mspec/mspec/helpers/const_lookup.rb +2 -1
- data/lib/extensions/mspec/mspec/helpers/datetime.rb +30 -0
- data/lib/extensions/mspec/mspec/helpers/ducktype.rb +4 -4
- data/lib/extensions/mspec/mspec/helpers/encode.rb +21 -0
- data/lib/extensions/mspec/mspec/helpers/environment.rb +13 -9
- data/lib/extensions/mspec/mspec/helpers/fixture.rb +2 -1
- data/lib/extensions/mspec/mspec/helpers/flunk.rb +1 -1
- data/lib/extensions/mspec/mspec/helpers/fmode.rb +15 -0
- data/lib/extensions/mspec/mspec/helpers/io.rb +21 -2
- data/lib/extensions/mspec/mspec/helpers/language_version.rb +13 -3
- data/lib/extensions/mspec/mspec/helpers/numeric.rb +89 -0
- data/lib/extensions/mspec/mspec/helpers/ruby_exe.rb +138 -123
- data/lib/extensions/mspec/mspec/helpers/singleton_class.rb +7 -0
- data/lib/extensions/mspec/mspec/helpers/stasy.rb +33 -0
- data/lib/extensions/mspec/mspec/helpers/tmp.rb +34 -26
- data/lib/extensions/mspec/mspec/matchers.rb +9 -0
- data/lib/extensions/mspec/mspec/matchers/base.rb +14 -14
- data/lib/extensions/mspec/mspec/matchers/be_computed_by.rb +36 -0
- data/lib/extensions/mspec/mspec/matchers/be_computed_by_function.rb +35 -0
- data/lib/extensions/mspec/mspec/matchers/be_valid_dns_name.rb +24 -0
- data/lib/extensions/mspec/mspec/matchers/equal_utf16.rb +5 -7
- data/lib/extensions/mspec/mspec/matchers/have_class_variable.rb +12 -0
- data/lib/extensions/mspec/mspec/matchers/have_constant.rb +6 -24
- data/lib/extensions/mspec/mspec/matchers/have_data.rb +49 -0
- data/lib/extensions/mspec/mspec/matchers/have_instance_method.rb +1 -1
- data/lib/extensions/mspec/mspec/matchers/have_instance_variable.rb +12 -0
- data/lib/extensions/mspec/mspec/matchers/have_method.rb +1 -1
- data/lib/extensions/mspec/mspec/matchers/have_private_instance_method.rb +1 -1
- data/lib/extensions/mspec/mspec/matchers/have_private_method.rb +24 -0
- data/lib/extensions/mspec/mspec/matchers/have_protected_instance_method.rb +24 -0
- data/lib/extensions/mspec/mspec/matchers/have_public_instance_method.rb +1 -1
- data/lib/extensions/mspec/mspec/matchers/have_singleton_method.rb +24 -0
- data/lib/extensions/mspec/mspec/matchers/output_to_fd.rb +71 -71
- data/lib/extensions/mspec/mspec/matchers/raise_error.rb +4 -3
- data/lib/extensions/mspec/mspec/matchers/stringsymboladapter.rb +1 -1
- data/lib/extensions/mspec/mspec/matchers/variable.rb +28 -0
- data/lib/extensions/mspec/mspec/mocks/mock.rb +102 -60
- data/lib/extensions/mspec/mspec/mocks/object.rb +5 -1
- data/lib/extensions/mspec/mspec/mocks/proxy.rb +41 -6
- data/lib/extensions/mspec/mspec/runner.rb +1 -0
- data/lib/extensions/mspec/mspec/runner/actions/debug.rb +2 -0
- data/lib/extensions/mspec/mspec/runner/context.rb +58 -13
- data/lib/extensions/mspec/mspec/runner/exception.rb +7 -6
- data/lib/extensions/mspec/mspec/runner/formatters.rb +1 -0
- data/lib/extensions/mspec/mspec/runner/formatters/dotted.rb +15 -3
- data/lib/extensions/mspec/mspec/runner/formatters/profile.rb +70 -0
- data/lib/extensions/mspec/mspec/runner/mspec.rb +32 -19
- data/lib/extensions/mspec/mspec/runner/object.rb +4 -0
- data/lib/extensions/mspec/mspec/runner/shared.rb +1 -1
- data/lib/extensions/mspec/mspec/utils/name_map.rb +8 -1
- data/lib/extensions/mspec/mspec/utils/options.rb +25 -8
- data/lib/extensions/mspec/mspec/utils/ruby_name.rb +1 -1
- data/lib/extensions/mspec/mspec/utils/script.rb +4 -4
- data/lib/extensions/mspec/mspec/version.rb +1 -1
- data/lib/extensions/nfc/ext/nfc/platform/android/Rakefile +1 -1
- data/lib/extensions/nfc/ext/nfc/shared/ruby/nfc_wrap.c +427 -149
- data/lib/extensions/set/tsort.rb +242 -0
- data/lib/extensions/thread/monitor.rb +277 -0
- data/lib/extensions/thread/thread.rb +357 -0
- data/lib/framework/base64.rb +4 -4
- data/lib/framework/date/format.rb +36 -64
- data/lib/framework/dateOrig.rb +40 -23
- data/lib/framework/ostruct.rb +14 -8
- data/lib/framework/rational.rb +2 -2
- data/lib/framework/rbconfig.rb +71 -0
- data/lib/framework/rho/rho.rb +46 -43
- data/lib/framework/rho/rhocontact.rb +60 -36
- data/lib/framework/rho/rhofsconnector.rb +2 -2
- data/lib/framework/rho/rhoutils.rb +10 -6
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rhoframework.rb +0 -13
- data/lib/framework/rhom/rhom.rb +64 -1
- data/lib/framework/rhom/rhom_object_factory.rb +4 -4
- data/lib/framework/rhosystem.rb +27 -25
- data/lib/framework/time.rb +48 -16
- data/lib/framework/version.rb +1 -1
- data/lib/rhodes.rb +1 -1
- data/lib/test/framework_test.rb +1 -1
- data/platform/android/Rhodes/AndroidManifest.xml +35 -9
- data/platform/android/Rhodes/default.properties +1 -1
- data/platform/android/Rhodes/jni/Android.mk +5 -4
- data/platform/android/Rhodes/jni/include/rhodes.h +65 -3
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +3 -1
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_geolocation_GeoLocationImpl.h +12 -2
- data/platform/android/Rhodes/jni/src/callbacks.cpp +6 -2
- data/platform/android/Rhodes/jni/src/event.cpp +60 -1
- data/platform/android/Rhodes/jni/src/geolocation.cpp +42 -13
- data/platform/android/Rhodes/jni/src/mapview.cpp +169 -42
- data/platform/android/Rhodes/jni/src/phonebook.cpp +90 -74
- data/platform/android/Rhodes/jni/src/rhodes.cpp +91 -3
- data/platform/android/Rhodes/jni/src/rhodesapp.cpp +1 -1
- data/platform/android/Rhodes/res/drawable/callout_a1.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_a2.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_a3.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_b1.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_b2.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_b3.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_c1.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_c2.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_c3.png +0 -0
- data/platform/android/Rhodes/res/drawable/callout_d.png +0 -0
- data/platform/android/Rhodes/res/drawable/google.png +0 -0
- data/platform/android/Rhodes/res/drawable/location.png +0 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +12 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +44 -21
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +12 -25
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/PopupActivity.java +2 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +2 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSettings.java +11 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +13 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +7 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +127 -37
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +69 -23
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +287 -124
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Annotation.java +6 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/AnnotationsOverlay.java +57 -6
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Callout.java +296 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/CalloutOverlay.java +143 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/GoogleMapView.java +109 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +53 -5
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java +16 -119
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessor.java +4 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java +284 -120
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java +58 -23
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java +42 -77
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/util/PerformOnUiThread.java +1 -1
- data/platform/android/build/RhodesSRC_build.files +2 -0
- data/platform/android/build/android.rake +90 -40
- data/platform/android/build/android_tools.rb +16 -0
- data/platform/android/build/androidcommon.rb +2 -0
- data/platform/android/build/librhocommon_build.files +3 -0
- data/platform/android/build/libruby_build.files +2 -1
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +6 -2
- data/platform/bb/RubyVM/src/com/rho/sync/ClientRegister.java +3 -2
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +17 -24
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +26 -2
- data/platform/bb/RubyVM/src/com/rho/sync/SyncProtocol_3.java +6 -1
- data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +4 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +50 -54
- data/platform/bb/build/bb.rake +4 -4
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoPhonebook.java +6 -6
- data/platform/bb/rhodes/src/rhomobile/camera/Camera.java +7 -0
- data/platform/bb/rhodes/src/rhomobile/mapview/MapView.java +10 -0
- data/platform/iphone/Classes/AppManager/AppManager.m +29 -0
- data/platform/iphone/Classes/Dispatcher/Dispatcher.c +1 -1
- data/platform/iphone/Classes/GeoLocation/LocationController.h +2 -1
- data/platform/iphone/Classes/GeoLocation/LocationController.m +23 -0
- data/platform/iphone/Classes/MapView/MapAnnotation.h +6 -0
- data/platform/iphone/Classes/MapView/MapAnnotation.m +5 -1
- data/platform/iphone/Classes/MapView/MapViewController.m +48 -4
- data/platform/iphone/Classes/MapView/MapViewManager.m +7 -0
- data/platform/iphone/Classes/Phonebook/phonebook.m +44 -0
- data/platform/iphone/Classes/Rhodes.m +1 -1
- data/platform/iphone/Info.plist +1 -1
- data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +3 -3
- data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +3 -3
- data/platform/iphone/rbuild/iphone.rake +3 -1
- data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +3 -3
- data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +18 -7
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +3 -2
- data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +3 -3
- data/platform/linux/files.txt +2 -2
- data/platform/linux/target/compiler/rubylinux +0 -0
- data/platform/mac/RubyMac/RubyMac.xcodeproj/project.pbxproj +8 -2
- data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
- data/platform/osx/build/osx.rake +1 -3
- data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +65 -26
- data/platform/shared/RhoConnectClient/RhoConnectClient.h +5 -1
- data/platform/shared/common/Android.mk +3 -0
- data/platform/shared/common/AppMenu.cpp +2 -2
- data/platform/shared/common/RhoPort.h +2 -2
- data/platform/shared/common/RhodesApp.cpp +20 -2
- data/platform/shared/common/RhodesApp.h +1 -0
- data/platform/shared/common/ThreadQueue.cpp +5 -0
- data/platform/shared/common/ThreadQueue.h +1 -0
- data/platform/shared/common/map/BaseMapEngine.cpp +1393 -0
- data/platform/shared/common/map/BaseMapEngine.h +368 -0
- data/platform/shared/common/map/ESRIMapEngine.cpp +23 -896
- data/platform/shared/common/map/ESRIMapEngine.h +11 -243
- data/platform/shared/common/map/GeocodingMapEngine.cpp +200 -0
- data/platform/shared/common/map/GeocodingMapEngine.h +86 -0
- data/platform/shared/common/map/GoogleMapEngine.cpp +70 -135
- data/platform/shared/common/map/GoogleMapEngine.h +21 -38
- data/platform/shared/common/map/MapEngine.cpp +145 -24
- data/platform/shared/common/map/MapEngine.h +156 -54
- data/platform/shared/common/map/OSMMapEngine.cpp +94 -0
- data/platform/shared/common/map/OSMMapEngine.h +65 -0
- data/platform/shared/curl/lib/config-symbian.h +3 -1
- data/platform/shared/db/DBAdapter.cpp +30 -4
- data/platform/shared/db/DBAdapter.h +24 -1
- data/platform/shared/logging/RhoLog.h +26 -0
- data/platform/shared/net/AsyncHttp.cpp +6 -2
- data/platform/shared/net/CompatWince.cpp +1 -0
- data/platform/shared/net/HttpServer.cpp +5 -2
- data/platform/shared/qt/rhodes/RhoSimulator.h +1 -1
- data/platform/shared/qt/rhodes/impl/GeoLocationImpl.cpp +6 -0
- data/platform/shared/qt/rhodes/impl/MapViewImpl.cpp +4 -0
- data/platform/shared/qt/rhodes/impl/PhonebookImpl.cpp +12 -0
- data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +26 -0
- data/platform/shared/qt/rholib/rholib.pro +14 -19
- data/platform/shared/qt/rubylib/rubylib.pro +7 -4
- data/platform/shared/ruby/Android.mk +3 -2
- data/platform/shared/ruby/GPL +340 -0
- data/platform/shared/ruby/android/ruby/config.h +283 -0
- data/platform/shared/ruby/array.c +1318 -595
- data/platform/shared/ruby/bignum.c +1092 -278
- data/platform/shared/ruby/class.c +689 -201
- data/platform/shared/ruby/compar.c +22 -20
- data/platform/shared/ruby/compile.c +327 -249
- data/platform/shared/ruby/complex.c +593 -138
- data/platform/shared/ruby/cont.c +213 -95
- data/platform/shared/ruby/debug.c +15 -10
- data/platform/shared/ruby/debug.h +1 -1
- data/platform/shared/ruby/dir.c +247 -104
- data/platform/shared/ruby/dln.c +102 -309
- data/platform/shared/ruby/dln.h +3 -3
- data/platform/shared/ruby/dln_find.c +305 -0
- data/platform/shared/ruby/dmydln.c +7 -2
- data/platform/shared/ruby/dmyversion.c +2 -0
- data/platform/shared/ruby/enc/Makefile.in +1 -0
- data/platform/shared/ruby/enc/big5.c +142 -5
- data/platform/shared/ruby/enc/depend +1 -0
- data/platform/shared/ruby/enc/emacs_mule.c +1 -1
- data/platform/shared/ruby/enc/encdb.c +3 -1
- data/platform/shared/ruby/enc/euc_tw.c +1 -10
- data/platform/shared/ruby/enc/iso_2022_jp.h +36 -0
- data/platform/shared/ruby/enc/iso_8859_5.c +1 -1
- data/platform/shared/ruby/enc/koi8_r.c +1 -1
- data/platform/shared/ruby/enc/koi8_u.c +1 -1
- data/platform/shared/ruby/enc/prelude.rb +1 -1
- data/platform/shared/ruby/enc/shift_jis.c +3 -3
- data/platform/shared/ruby/enc/trans/big5-hkscs-tbl.rb +18385 -0
- data/platform/shared/ruby/enc/trans/big5-uao-tbl.rb +19784 -0
- data/platform/shared/ruby/enc/trans/big5.c +53810 -12566
- data/platform/shared/ruby/enc/trans/big5.trans +10 -1
- data/platform/shared/ruby/enc/trans/chinese.c +113 -71
- data/platform/shared/ruby/enc/trans/chinese.trans +6 -4
- data/platform/shared/ruby/enc/trans/escape.c +3 -3
- data/platform/shared/ruby/enc/trans/escape.trans +3 -3
- data/platform/shared/ruby/enc/trans/gb18030-tbl.rb +32 -0
- data/platform/shared/ruby/enc/trans/gb18030.c +17431 -91305
- data/platform/shared/ruby/enc/trans/gb18030.trans +105 -5
- data/platform/shared/ruby/enc/trans/gbk.c +13 -13
- data/platform/shared/ruby/enc/trans/iso2022.c +374 -13
- data/platform/shared/ruby/enc/trans/iso2022.trans +313 -0
- data/platform/shared/ruby/enc/trans/japanese.c +26 -24
- data/platform/shared/ruby/enc/trans/japanese_euc.c +30 -30
- data/platform/shared/ruby/enc/trans/japanese_sjis.c +282 -276
- data/platform/shared/ruby/enc/trans/korean.c +182 -159
- data/platform/shared/ruby/enc/trans/newline.c +18 -14
- data/platform/shared/ruby/enc/trans/newline.trans +15 -11
- data/platform/shared/ruby/enc/trans/single_byte.c +497 -394
- data/platform/shared/ruby/enc/trans/single_byte.trans +1 -2
- data/platform/shared/ruby/enc/trans/transdb.c +1 -1
- data/platform/shared/ruby/enc/trans/utf8_mac-tbl.rb +945 -0
- data/platform/shared/ruby/enc/trans/utf8_mac.c +10853 -0
- data/platform/shared/ruby/enc/trans/utf8_mac.trans +242 -0
- data/platform/shared/ruby/enc/trans/utf_16_32.c +89 -86
- data/platform/shared/ruby/enc/unicode.c +30 -8779
- data/platform/shared/ruby/enc/unicode/name2ctype.h +17985 -0
- data/platform/shared/ruby/enc/unicode/name2ctype.h.blt +17985 -0
- data/platform/shared/ruby/enc/unicode/name2ctype.kwd +16711 -0
- data/platform/shared/ruby/enc/unicode/name2ctype.src +16711 -0
- data/platform/shared/ruby/enc/utf_16be.c +3 -4
- data/platform/shared/ruby/enc/utf_16le.c +3 -4
- data/platform/shared/ruby/enc/utf_8.c +3 -1
- data/platform/shared/ruby/enc/x_emoji.h +26 -0
- data/platform/shared/ruby/encdb.h +18 -2
- data/platform/shared/ruby/encoding.c +248 -111
- data/platform/shared/ruby/enum.c +1006 -200
- data/platform/shared/ruby/enumerator.c +555 -254
- data/platform/shared/ruby/error.c +478 -79
- data/platform/shared/ruby/eval.c +186 -94
- data/platform/shared/ruby/eval_error.c +16 -10
- data/platform/shared/ruby/eval_intern.h +24 -9
- data/platform/shared/ruby/eval_jump.c +2 -1
- data/platform/shared/ruby/ext/geolocation/geolocation.i +10 -1
- data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +49 -6
- data/platform/shared/ruby/ext/mapview/mapview.i +6 -0
- data/platform/shared/ruby/ext/mapview/mapview_wrap.c +279 -0
- data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +402 -124
- data/platform/shared/ruby/ext/phonebook/phonebook.i +41 -7
- data/platform/shared/ruby/ext/phonebook/phonebook_wrap.c +216 -47
- data/platform/shared/ruby/ext/rho/rhoruby.c +9 -5
- data/platform/shared/ruby/ext/rho/rhosupport.c +1 -1
- data/platform/shared/ruby/ext/socket/getaddrinfo.c +4 -0
- data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +2 -2
- data/platform/shared/ruby/ext/syncengine/syncengine.i +14 -5
- data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +55 -7
- data/platform/shared/ruby/ext/system/system.i +7 -2
- data/platform/shared/ruby/ext/system/system_wrap.c +28 -2
- data/platform/shared/ruby/file.c +1243 -683
- data/platform/shared/ruby/gc.c +509 -217
- data/platform/shared/ruby/gc.h +7 -5
- data/platform/shared/ruby/generated/insns.inc +11 -9
- data/platform/shared/ruby/generated/insns_info.inc +69 -62
- data/platform/shared/ruby/generated/known_errors.inc +360 -245
- data/platform/shared/ruby/generated/lex.c +49 -47
- data/platform/shared/ruby/generated/node_name.inc +0 -8
- data/platform/shared/ruby/generated/optinsn.inc +1 -1
- data/platform/shared/ruby/generated/parse.c +4480 -4162
- data/platform/shared/ruby/generated/parse.h +13 -14
- data/platform/shared/ruby/generated/vm.inc +485 -269
- data/platform/shared/ruby/generated/vmtc.inc +2 -1
- data/platform/shared/ruby/golf_prelude.c +21 -4
- data/platform/shared/ruby/goruby.c +1 -1
- data/platform/shared/ruby/hash.c +429 -180
- data/platform/shared/ruby/ia64.s +42 -0
- data/platform/shared/ruby/id.c +13 -14
- data/platform/shared/ruby/id.h +25 -18
- data/platform/shared/ruby/include/ruby.h +1 -1
- data/platform/shared/ruby/include/ruby/backward/rubysig.h +2 -2
- data/platform/shared/ruby/include/ruby/defines.h +50 -29
- data/platform/shared/ruby/include/ruby/encoding.h +40 -14
- data/platform/shared/ruby/include/ruby/intern.h +81 -24
- data/platform/shared/ruby/include/ruby/io.h +4 -4
- data/platform/shared/ruby/include/ruby/missing.h +28 -18
- data/platform/shared/ruby/include/ruby/oniguruma.h +22 -7
- data/platform/shared/ruby/include/ruby/re.h +4 -4
- data/platform/shared/ruby/include/ruby/ruby.h +294 -76
- data/platform/shared/ruby/include/ruby/st.h +27 -9
- data/platform/shared/ruby/include/ruby/util.h +14 -6
- data/platform/shared/ruby/include/ruby/version.h +61 -0
- data/platform/shared/ruby/include/ruby/vm.h +21 -1
- data/platform/shared/ruby/include/ruby/win32.h +223 -63
- data/platform/shared/ruby/inits.c +1 -1
- data/platform/shared/ruby/insns.def +236 -111
- data/platform/shared/ruby/io.c +2188 -774
- data/platform/shared/ruby/iphone/ruby/config.h +75 -45
- data/platform/shared/ruby/iseq.c +261 -104
- data/platform/shared/ruby/iseq.h +13 -11
- data/platform/shared/ruby/linux/ruby/config.h +95 -100
- data/platform/shared/ruby/load.c +115 -81
- data/platform/shared/ruby/main.c +122 -0
- data/platform/shared/ruby/marshal.c +418 -230
- data/platform/shared/ruby/math.c +219 -152
- data/platform/shared/ruby/method.h +103 -0
- data/platform/shared/ruby/miniprelude.c +35 -23
- data/platform/shared/ruby/missing/acosh.c +4 -4
- data/platform/shared/ruby/missing/alloca.c +4 -1
- data/platform/shared/ruby/missing/close.c +67 -0
- data/platform/shared/ruby/missing/crypt.c +9 -9
- data/platform/shared/ruby/missing/dup2.c +0 -1
- data/platform/shared/ruby/missing/langinfo.c +4 -3
- data/platform/shared/ruby/missing/signbit.c +19 -0
- data/platform/shared/ruby/newline.c +18 -14
- data/platform/shared/ruby/node.c +921 -0
- data/platform/shared/ruby/node.h +14 -47
- data/platform/shared/ruby/numeric.c +544 -302
- data/platform/shared/ruby/object.c +430 -426
- data/platform/shared/ruby/pack.c +677 -628
- data/platform/shared/ruby/parse.y +847 -523
- data/platform/shared/ruby/proc.c +631 -341
- data/platform/shared/ruby/process.c +811 -421
- data/platform/shared/ruby/random.c +858 -177
- data/platform/shared/ruby/range.c +234 -133
- data/platform/shared/ruby/rational.c +936 -173
- data/platform/shared/ruby/re.c +351 -192
- data/platform/shared/ruby/regcomp.c +125 -138
- data/platform/shared/ruby/regenc.c +26 -25
- data/platform/shared/ruby/regenc.h +7 -3
- data/platform/shared/ruby/regerror.c +44 -34
- data/platform/shared/ruby/regexec.c +31 -38
- data/platform/shared/ruby/regint.h +16 -17
- data/platform/shared/ruby/regparse.c +266 -136
- data/platform/shared/ruby/regparse.h +4 -1
- data/platform/shared/ruby/regsyntax.c +2 -2
- data/platform/shared/ruby/revision.h +0 -1
- data/platform/shared/ruby/ruby.c +276 -248
- data/platform/shared/ruby/safe.c +14 -8
- data/platform/shared/ruby/signal.c +61 -68
- data/platform/shared/ruby/sprintf.c +77 -38
- data/platform/shared/ruby/st.c +437 -61
- data/platform/shared/ruby/strftime.c +252 -110
- data/platform/shared/ruby/string.c +1361 -1009
- data/platform/shared/ruby/struct.c +200 -133
- data/platform/shared/ruby/symbian/ruby/config.h +56 -24
- data/platform/shared/ruby/thread.c +732 -247
- data/platform/shared/ruby/thread_pthread.c +122 -69
- data/platform/shared/ruby/thread_pthread.h +4 -1
- data/platform/shared/ruby/thread_win32.c +73 -41
- data/platform/shared/ruby/thread_win32.h +1 -1
- data/platform/shared/ruby/time.c +3271 -919
- data/platform/shared/ruby/timev.h +21 -0
- data/platform/shared/ruby/transcode.c +289 -95
- data/platform/shared/ruby/transcode_data.h +17 -14
- data/platform/shared/ruby/transdb.h +32 -0
- data/platform/shared/ruby/util.c +330 -123
- data/platform/shared/ruby/variable.c +294 -176
- data/platform/shared/ruby/version.c +71 -2
- data/platform/shared/ruby/version.h +22 -19
- data/platform/shared/ruby/vm.c +368 -203
- data/platform/shared/ruby/vm_core.h +110 -66
- data/platform/shared/ruby/vm_dump.c +51 -44
- data/platform/shared/ruby/vm_eval.c +547 -230
- data/platform/shared/ruby/vm_exec.c +3 -3
- data/platform/shared/ruby/vm_insnhelper.c +397 -200
- data/platform/shared/ruby/vm_insnhelper.h +27 -14
- data/platform/shared/ruby/vm_method.c +493 -296
- data/platform/shared/ruby/vm_opts.h +1 -1
- data/platform/shared/ruby/{missing/vsnprintf.c → vsnprintf.c} +114 -74
- data/platform/shared/ruby/win32/dir.h +5 -4
- data/platform/shared/ruby/win32/miniprelude.c +34 -21
- data/platform/shared/ruby/win32/newline.c +18 -14
- data/platform/shared/ruby/win32/ruby/config.h +58 -20
- data/platform/shared/ruby/win32/win32.c +1398 -475
- data/platform/shared/ruby/wince/direct.c +17 -1
- data/platform/shared/ruby/wince/io_wce.c +16 -8
- data/platform/shared/ruby/wince/ruby/config.h +54 -24
- data/platform/shared/ruby/wince/sys/stat.c +81 -0
- data/platform/shared/ruby/wince/time_wce.c +47 -4
- data/platform/shared/ruby/wince/wince.h +16 -0
- data/platform/shared/rubyext/Android.mk +1 -1
- data/platform/shared/rubyext/GeoLocation.cpp +93 -48
- data/platform/shared/rubyext/GeoLocation.h +9 -4
- data/platform/shared/rubyext/System.cpp +6 -0
- data/platform/shared/sync/ClientRegister.cpp +1 -1
- data/platform/shared/sync/SyncEngine.cpp +15 -55
- data/platform/shared/sync/SyncEngine.h +4 -4
- data/platform/shared/sync/SyncProtocol_3.h +6 -1
- data/platform/shared/sync/SyncSource.cpp +6 -1
- data/platform/shared/sync/SyncSource.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +20 -9
- data/platform/shared/sync/SyncThread.h +14 -9
- data/platform/shared/wtl80/include/atlapp.h +2 -0
- data/platform/symbian/build/symbian.rake +56 -5
- data/platform/symbian/curl/curl.pro +4 -0
- data/platform/symbian/rhodes/rhodes.pro +16 -4
- data/platform/symbian/rhodes/src/phonebook/ruby_phonebook.cpp +10 -0
- data/platform/symbian/rholib/rholib.pro +4 -0
- data/platform/symbian/rubylib/rubylib.pro +6 -2
- data/platform/symbian/sqlite3/sqlite3.pro +2 -1
- data/platform/symbian/syncengine/syncengine.pro +4 -0
- data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
- data/platform/wm/RhoLib/RhoLib.vcproj +333 -0
- data/platform/wm/build/build_inf.js +1 -0
- data/platform/wm/build/wm.rake +43 -17
- data/platform/wm/rhodes.sln +140 -76
- data/platform/wm/rhodes/Alert.cpp +1 -1
- data/platform/wm/rhodes/IBrowserEngine.cpp +10 -0
- data/platform/wm/rhodes/IBrowserEngine.h +24 -0
- data/platform/wm/rhodes/IEBrowserEngine.cpp +179 -0
- data/platform/wm/rhodes/IEBrowserEngine.h +36 -0
- data/platform/wm/rhodes/MainWindow.cpp +176 -178
- data/platform/wm/rhodes/MainWindow.h +78 -20
- data/platform/wm/rhodes/MapView/Graphics.h +10 -0
- data/platform/wm/rhodes/MapView/MapViewManager.cpp +7 -0
- data/platform/wm/rhodes/OutlookApp.cpp +3 -3
- data/platform/wm/rhodes/RhoWebKitBrowser.cpp +10 -0
- data/platform/wm/rhodes/Rhodes.cpp +499 -443
- data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1 -4
- data/platform/wm/rhodes/bluetooth/Bluetooth.h +1 -1
- data/platform/wm/rhodes/camera/Camera.cpp +3 -6
- data/platform/wm/rhodes/phonebook/phonebook.cpp +20 -11
- data/platform/wm/rhodes/phonebook/phonebook.h +4 -2
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +3 -3
- data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.cpp +12 -7
- data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.h +1 -1
- data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +24 -6
- data/platform/wm/rhodes/rho/rubyext/WebView.cpp +0 -32
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +1 -1
- data/platform/wm/rhodes/rhodes.vcproj +1792 -129
- data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.cpp +384 -0
- data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.h +41 -0
- data/platform/wm/rhodes/signature/Signature.cpp +4 -8
- data/platform/wm/rhodes/signature/Signature.h +1 -1
- data/platform/wm/rhodes/simulator/MainWindowQt.cpp +1 -0
- data/platform/wm/rhodes/simulator/MainWindowQt.h +2 -0
- data/platform/wm/rhodes/stdafx.h +17 -5
- data/platform/wm/rhoelements.sln +447 -0
- data/platform/wm/rubylib/rubylib.vcproj +355 -10
- data/platform/wm/sqlite3/sqlite3.vcproj +305 -0
- data/platform/wm/syncengine/syncengine.vcproj +309 -0
- data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.Libraries.dll +0 -0
- data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.dll +0 -0
- data/platform/wp7/RhoAppRunner/Program.cs +2 -2
- data/platform/wp7/RhoRubyExtGen/RhoCamera.cs +59 -0
- data/platform/wp7/RhoRubyExtGen/RhoNativeBar.cs +3 -20
- data/platform/wp7/RhoRubyExtGen/RhoRubyExtGen.csproj +1 -0
- data/platform/wp7/RhoRubyLib/Initializers.Generated.cs +6 -9
- data/platform/wp7/RhoRubyLib/RhoRubyLib.csproj +2 -1
- data/platform/wp7/RhoRubyLib/rubyext/RhoCamera.cs +130 -0
- data/platform/wp7/RhoRubyLib/rubyext/RhoNativeBar.cs +5 -73
- data/res/build-tools/RhoRuby.exe +0 -0
- data/res/build-tools/RubyMac +0 -0
- data/res/build-tools/detool.exe +0 -0
- data/res/build-tools/rubylinux +0 -0
- data/res/generators/rhogen.rb +5 -0
- data/res/generators/templates/application/app/helpers/browser_helper.rb +4 -0
- data/res/generators/templates/application/app/index.erb +6 -2
- data/res/generators/templates/application/app/layout.erb +8 -5
- data/res/generators/templates/application/build.yml +3 -1
- data/res/generators/templates/application/gitignore +7 -0
- data/res/generators/templates/application/public/css/android.css +366 -5
- data/res/generators/templates/application/public/css/blackberry.css +16 -5
- data/res/generators/templates/application/public/css/iphone.css +349 -5
- data/res/generators/templates/application/public/css/windows_mobile.css +105 -0
- data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b2.css → jquery.mobile-1.0b3.css} +64 -5
- data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b2.js → jquery.mobile-1.0b3.js} +1125 -727
- data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.css +8 -0
- data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.js +169 -0
- data/res/generators/templates/application/public/jquery/{jquery-1.6.2.js → jquery-1.6.3.js} +226 -163
- data/res/generators/templates/application/public/jquery/jquery-1.6.3.min.js +4 -0
- data/res/generators/templates/application/public/js/wp7.js +5 -0
- data/res/generators/templates/model/edit.erb +6 -2
- data/res/generators/templates/model/index.erb +8 -4
- data/res/generators/templates/model/new.erb +3 -1
- data/res/generators/templates/model/show.erb +6 -2
- data/rhobuild.yml.example +0 -1
- data/rhodes.gemspec +1 -1
- data/spec/framework_spec/app/spec/core/argf/argf_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/argf/binmode_spec.rb +19 -7
- data/spec/framework_spec/app/spec/core/argf/bytes_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/chars_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/close_spec.rb +31 -5
- data/spec/framework_spec/app/spec/core/argf/closed_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/argf/each_byte_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/each_char_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/each_line_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/each_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/eof_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/file_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/argf/filename_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/fileno_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/getc_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/argf/gets_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/argf/lineno_spec.rb +24 -18
- data/spec/framework_spec/app/spec/core/argf/path_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/pos_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/argf/read_spec.rb +19 -20
- data/spec/framework_spec/app/spec/core/argf/readchar_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/argf/readline_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/argf/readlines_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/rewind_spec.rb +18 -4
- data/spec/framework_spec/app/spec/core/argf/seek_spec.rb +6 -4
- data/spec/framework_spec/app/spec/core/argf/shared/each_byte.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/each_char.rb +4 -4
- data/spec/framework_spec/app/spec/core/argf/shared/each_line.rb +9 -3
- data/spec/framework_spec/app/spec/core/argf/shared/eof.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/filename.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/fileno.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/getc.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/gets.rb +41 -43
- data/spec/framework_spec/app/spec/core/argf/shared/pos.rb +3 -3
- data/spec/framework_spec/app/spec/core/argf/shared/readlines.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/skip_spec.rb +12 -4
- data/spec/framework_spec/app/spec/core/argf/tell_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/to_a_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/to_i_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/argf/to_io_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/argf/to_s_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/array/allocate_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/append_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/array_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/array/assoc_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/array/at_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/array/choice_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/clear_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/clone_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/collect_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/combination_spec.rb +38 -13
- data/spec/framework_spec/app/spec/core/array/compact_spec.rb +33 -11
- data/spec/framework_spec/app/spec/core/array/comparison_spec.rb +11 -5
- data/spec/framework_spec/app/spec/core/array/concat_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/array/constructor_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/array/count_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/cycle_spec.rb +82 -14
- data/spec/framework_spec/app/spec/core/array/delete_at_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/delete_if_spec.rb +16 -7
- data/spec/framework_spec/app/spec/core/array/delete_spec.rb +8 -2
- data/spec/framework_spec/app/spec/core/array/drop_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/drop_while_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/dup_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/each_index_spec.rb +29 -30
- data/spec/framework_spec/app/spec/core/array/each_spec.rb +8 -33
- data/spec/framework_spec/app/spec/core/array/element_reference_spec.rb +30 -6
- data/spec/framework_spec/app/spec/core/array/element_set_spec.rb +19 -2
- data/spec/framework_spec/app/spec/core/array/empty_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/eql_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/equal_value_spec.rb +34 -3
- data/spec/framework_spec/app/spec/core/array/fetch_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/array/fill_spec.rb +27 -12
- data/spec/framework_spec/app/spec/core/array/find_index_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/first_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/array/fixtures/classes.rb +447 -6
- data/spec/framework_spec/app/spec/core/array/flatten_spec.rb +42 -19
- data/spec/framework_spec/app/spec/core/array/frozen_spec.rb +17 -15
- data/spec/framework_spec/app/spec/core/array/hash_spec.rb +22 -3
- data/spec/framework_spec/app/spec/core/array/include_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/index_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/array/indexes_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/indices_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/initialize_copy_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/initialize_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/insert_spec.rb +13 -11
- data/spec/framework_spec/app/spec/core/array/inspect_spec.rb +33 -3
- data/spec/framework_spec/app/spec/core/array/intersection_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/array/join_spec.rb +24 -4
- data/spec/framework_spec/app/spec/core/array/keep_if_spec.rb +12 -0
- data/spec/framework_spec/app/spec/core/array/last_spec.rb +11 -11
- data/spec/framework_spec/app/spec/core/array/length_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/map_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/minus_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/array/multiply_spec.rb +23 -10
- data/spec/framework_spec/app/spec/core/array/new_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/array/nitems_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/pack/a_spec.rb +59 -0
- data/spec/framework_spec/app/spec/core/array/pack/at_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/array/pack/b_spec.rb +109 -0
- data/spec/framework_spec/app/spec/core/array/pack/c_spec.rb +83 -0
- data/spec/framework_spec/app/spec/core/array/pack/comment_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/array/pack/d_spec.rb +39 -0
- data/spec/framework_spec/app/spec/core/array/pack/e_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/array/pack/f_spec.rb +39 -0
- data/spec/framework_spec/app/spec/core/array/pack/g_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/array/pack/h_spec.rb +201 -0
- data/spec/framework_spec/app/spec/core/array/pack/i_spec.rb +73 -0
- data/spec/framework_spec/app/spec/core/array/pack/l_spec.rb +193 -0
- data/spec/framework_spec/app/spec/core/array/pack/m_spec.rb +337 -0
- data/spec/framework_spec/app/spec/core/array/pack/n_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/array/pack/percent_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/pack/q_spec.rb +43 -0
- data/spec/framework_spec/app/spec/core/array/pack/s_spec.rb +73 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/basic.rb +57 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/encodings.rb +16 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/float.rb +277 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/integer.rb +381 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/numeric_basic.rb +54 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/string.rb +83 -0
- data/spec/framework_spec/app/spec/core/array/pack/shared/unicode.rb +89 -0
- data/spec/framework_spec/app/spec/core/array/pack/u_spec.rb +130 -0
- data/spec/framework_spec/app/spec/core/array/pack/v_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/array/pack/w_spec.rb +44 -0
- data/spec/framework_spec/app/spec/core/array/pack/x_spec.rb +64 -0
- data/spec/framework_spec/app/spec/core/array/pack/z_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/array/pack_spec.rb +409 -369
- data/spec/framework_spec/app/spec/core/array/partition_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/array/permutation_spec.rb +34 -15
- data/spec/framework_spec/app/spec/core/array/plus_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/array/pop_spec.rb +17 -4
- data/spec/framework_spec/app/spec/core/array/product_spec.rb +49 -5
- data/spec/framework_spec/app/spec/core/array/push_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/array/rassoc_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/reject_spec.rb +42 -29
- data/spec/framework_spec/app/spec/core/array/repeated_combination_spec.rb +59 -0
- data/spec/framework_spec/app/spec/core/array/repeated_permutation_spec.rb +72 -0
- data/spec/framework_spec/app/spec/core/array/replace_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/reverse_each_spec.rb +26 -39
- data/spec/framework_spec/app/spec/core/array/reverse_spec.rb +15 -7
- data/spec/framework_spec/app/spec/core/array/rindex_spec.rb +28 -16
- data/spec/framework_spec/app/spec/core/array/rotate_spec.rb +85 -0
- data/spec/framework_spec/app/spec/core/array/sample_spec.rb +4 -10
- data/spec/framework_spec/app/spec/core/array/select_spec.rb +16 -3
- data/spec/framework_spec/app/spec/core/array/shared/clone.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/shared/collect.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/shared/enumeratorize.rb +12 -0
- data/spec/framework_spec/app/spec/core/array/shared/eql.rb +9 -5
- data/spec/framework_spec/app/spec/core/array/shared/indexes.rb +1 -1
- data/spec/framework_spec/app/spec/core/array/shared/join.rb +122 -90
- data/spec/framework_spec/app/spec/core/array/shared/keep_if.rb +11 -0
- data/spec/framework_spec/app/spec/core/array/shared/slice.rb +67 -6
- data/spec/framework_spec/app/spec/core/array/shift_spec.rb +18 -4
- data/spec/framework_spec/app/spec/core/array/shuffle_spec.rb +23 -14
- data/spec/framework_spec/app/spec/core/array/size_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/array/slice_spec.rb +19 -3
- data/spec/framework_spec/app/spec/core/array/sort_by_spec.rb +48 -0
- data/spec/framework_spec/app/spec/core/array/sort_spec.rb +65 -65
- data/spec/framework_spec/app/spec/core/array/take_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/take_while_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/array/to_a_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/array/to_ary_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/array/to_s_spec.rb +2 -5
- data/spec/framework_spec/app/spec/core/array/transpose_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/array/try_convert_spec.rb +15 -17
- data/spec/framework_spec/app/spec/core/array/union_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/array/uniq_spec.rb +41 -15
- data/spec/framework_spec/app/spec/core/array/unshift_spec.rb +9 -7
- data/spec/framework_spec/app/spec/core/array/values_at_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/array/zip_spec.rb +15 -3
- data/spec/framework_spec/app/spec/core/basicobject/__send___spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/basicobject/ancestors_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/basicobject/basicobject_spec.rb +67 -0
- data/spec/framework_spec/app/spec/core/basicobject/class_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/basicobject/equal_spec.rb +20 -0
- data/spec/framework_spec/app/spec/core/basicobject/equal_value_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/basicobject/fixtures/common.rb +5 -0
- data/spec/framework_spec/app/spec/core/basicobject/fixtures/remove_method_missing.rb +9 -0
- data/spec/framework_spec/app/spec/core/basicobject/initialize_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/basicobject/instance_eval_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/basicobject/instance_exec_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/basicobject/method_missing_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/basicobject/new_spec.rb +7 -5
- data/spec/framework_spec/app/spec/core/basicobject/not_equal_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/basicobject/not_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/basicobject/singleton_method_added_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/basicobject/singleton_method_removed_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/basicobject/singleton_method_undefined_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/basicobject/superclass_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/bignum/abs_spec.rb +4 -5
- data/spec/framework_spec/app/spec/core/bignum/bit_and_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/bignum/bit_or_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/bignum/bit_xor_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/bignum/case_compare_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/bignum/coerce_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/comparison_spec.rb +143 -20
- data/spec/framework_spec/app/spec/core/bignum/complement_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/div_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/divide_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/divmod_spec.rb +11 -6
- data/spec/framework_spec/app/spec/core/bignum/element_reference_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/bignum/eql_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/equal_value_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/bignum/even_spec.rb +21 -0
- data/spec/framework_spec/app/spec/core/bignum/exponent_spec.rb +16 -2
- data/spec/framework_spec/app/spec/core/bignum/fdiv_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/bignum/gt_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/bignum/gte_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/hash_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/left_shift_spec.rb +64 -40
- data/spec/framework_spec/app/spec/core/bignum/lt_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/bignum/lte_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/magnitude_spec.rb +10 -0
- data/spec/framework_spec/app/spec/core/bignum/minus_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/bignum/modulo_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/multiply_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/odd_spec.rb +21 -0
- data/spec/framework_spec/app/spec/core/bignum/plus_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/bignum/quo_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/remainder_spec.rb +19 -8
- data/spec/framework_spec/app/spec/core/bignum/right_shift_spec.rb +93 -34
- data/spec/framework_spec/app/spec/core/bignum/shared/abs.rb +6 -0
- data/spec/framework_spec/app/spec/core/bignum/shared/divide.rb +2 -2
- data/spec/framework_spec/app/spec/core/bignum/shared/modulo.rb +13 -4
- data/spec/framework_spec/app/spec/core/bignum/size_spec.rb +15 -1
- data/spec/framework_spec/app/spec/core/bignum/to_f_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/bignum/to_s_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/bignum/uminus_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/binding/clone_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/binding/dup_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/binding/eval_spec.rb +19 -25
- data/spec/framework_spec/app/spec/core/binding/fixtures/classes.rb +1 -1
- data/spec/framework_spec/app/spec/core/builtin_constants/builtin_constants_spec.rb +57 -0
- data/spec/framework_spec/app/spec/core/class/allocate_spec.rb +11 -5
- data/spec/framework_spec/app/spec/core/class/dup_spec.rb +72 -0
- data/spec/framework_spec/app/spec/core/class/fixtures/classes.rb +5 -5
- data/spec/framework_spec/app/spec/core/class/inherited_spec.rb +22 -22
- data/spec/framework_spec/app/spec/core/class/initialize_copy_spec.rb +22 -1
- data/spec/framework_spec/app/spec/core/class/initialize_spec.rb +37 -6
- data/spec/framework_spec/app/spec/core/class/new_spec.rb +11 -2
- data/spec/framework_spec/app/spec/core/class/superclass_spec.rb +37 -8
- data/spec/framework_spec/app/spec/core/comparable/between_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/comparable/equal_value_spec.rb +11 -11
- data/spec/framework_spec/app/spec/core/comparable/fixtures/classes.rb +3 -3
- data/spec/framework_spec/app/spec/core/comparable/gt_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/comparable/gte_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/comparable/lt_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/comparable/lte_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/complex/Complex_spec.rb +20 -0
- data/spec/framework_spec/app/spec/core/complex/abs2_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/complex/abs_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/complex/angle_spec.rb +10 -0
- data/spec/framework_spec/app/spec/core/complex/arg_spec.rb +10 -0
- data/spec/framework_spec/app/spec/core/complex/coerce_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/complex/conj_spec.rb +10 -0
- data/spec/framework_spec/app/spec/core/complex/conjugate_spec.rb +10 -0
- data/spec/framework_spec/app/spec/core/complex/denominator_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/complex/divide_spec.rb +24 -0
- data/spec/framework_spec/app/spec/core/complex/eql_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/equal_value_spec.rb +16 -0
- data/spec/framework_spec/app/spec/core/complex/exponent_spec.rb +24 -0
- data/spec/framework_spec/app/spec/core/complex/fdiv_spec.rb +131 -0
- data/spec/framework_spec/app/spec/core/complex/hash_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/complex/imag_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/imaginary_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/inspect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/integer_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/complex/magnitude_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/complex/marshal_dump_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/marshal_load_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/minus_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/complex/multiply_spec.rb +16 -0
- data/spec/framework_spec/app/spec/core/complex/numerator_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/phase_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/plus_spec.rb +16 -0
- data/spec/framework_spec/app/spec/core/complex/polar_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/complex/quo_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/rationalize_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/complex/real_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/complex/rect_spec.rb +11 -0
- data/spec/framework_spec/app/spec/core/complex/rectangular_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/complex/to_f_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/to_i_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/to_r_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/complex/to_s_spec.rb +12 -0
- data/spec/framework_spec/app/spec/core/complex/uminus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/continuation/call_spec.rb +8 -1
- data/spec/framework_spec/app/spec/core/continuation/element_reference_spec.rb +8 -1
- data/spec/framework_spec/app/spec/core/continuation/new_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/dir/chdir_spec.rb +64 -17
- data/spec/framework_spec/app/spec/core/dir/chroot_spec.rb +50 -26
- data/spec/framework_spec/app/spec/core/dir/close_spec.rb +32 -16
- data/spec/framework_spec/app/spec/core/dir/delete_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/dir/dir_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/dir/each_spec.rb +24 -8
- data/spec/framework_spec/app/spec/core/dir/element_reference_spec.rb +19 -3
- data/spec/framework_spec/app/spec/core/dir/entries_spec.rb +19 -3
- data/spec/framework_spec/app/spec/core/dir/exist_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/dir/exists_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/dir/fixtures/common.rb +96 -73
- data/spec/framework_spec/app/spec/core/dir/foreach_spec.rb +20 -4
- data/spec/framework_spec/app/spec/core/dir/getwd_spec.rb +12 -4
- data/spec/framework_spec/app/spec/core/dir/glob_spec.rb +60 -8
- data/spec/framework_spec/app/spec/core/dir/home_spec.rb +15 -6
- data/spec/framework_spec/app/spec/core/dir/initialize_spec.rb +29 -2
- data/spec/framework_spec/app/spec/core/dir/inspect_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/dir/mkdir_spec.rb +56 -21
- data/spec/framework_spec/app/spec/core/dir/open_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/dir/path_spec.rb +8 -24
- data/spec/framework_spec/app/spec/core/dir/pos_spec.rb +28 -4
- data/spec/framework_spec/app/spec/core/dir/pwd_spec.rb +44 -20
- data/spec/framework_spec/app/spec/core/dir/read_spec.rb +11 -5
- data/spec/framework_spec/app/spec/core/dir/rewind_spec.rb +13 -7
- data/spec/framework_spec/app/spec/core/dir/rmdir_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/dir/seek_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/dir/shared/chroot.rb +43 -0
- data/spec/framework_spec/app/spec/core/dir/shared/delete.rb +27 -8
- data/spec/framework_spec/app/spec/core/dir/shared/exists.rb +53 -0
- data/spec/framework_spec/app/spec/core/dir/shared/glob.rb +61 -8
- data/spec/framework_spec/app/spec/core/dir/shared/open.rb +18 -2
- data/spec/framework_spec/app/spec/core/dir/shared/path.rb +29 -0
- data/spec/framework_spec/app/spec/core/dir/shared/pos.rb +1 -1
- data/spec/framework_spec/app/spec/core/dir/shared/pwd.rb +13 -13
- data/spec/framework_spec/app/spec/core/dir/tell_spec.rb +12 -6
- data/spec/framework_spec/app/spec/core/dir/to_path.rb +17 -0
- data/spec/framework_spec/app/spec/core/dir/to_path_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/dir/unlink_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/encoding/_dump_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/_load_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/aliases_spec.rb +45 -0
- data/spec/framework_spec/app/spec/core/encoding/ascii_compatible_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/encoding/compatible_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/asciicompat_encoding_spec.rb +48 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/constants_spec.rb +133 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/convert_spec.rb +46 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/convpath_spec.rb +65 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/destination_encoding_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/finish_spec.rb +38 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/insert_output_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/inspect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/last_error_spec.rb +84 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/primitive_convert_spec.rb +137 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/primitive_errinfo_spec.rb +71 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/putback_spec.rb +49 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/replacement_spec.rb +63 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/search_convpath_spec.rb +73 -0
- data/spec/framework_spec/app/spec/core/encoding/converter/source_encoding_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/encoding/default_external_spec.rb +57 -0
- data/spec/framework_spec/app/spec/core/encoding/default_internal_spec.rb +83 -0
- data/spec/framework_spec/app/spec/core/encoding/dummy_spec.rb +16 -0
- data/spec/framework_spec/app/spec/core/encoding/find_spec.rb +82 -0
- data/spec/framework_spec/app/spec/core/encoding/fixtures/classes.rb +48 -0
- data/spec/framework_spec/app/spec/core/encoding/inspect_spec.rb +21 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/destination_encoding_name_spec.rb +20 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/destination_encoding_spec.rb +20 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/error_bytes_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/incomplete_input_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/readagain_bytes_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/source_encoding_name_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/source_encoding_spec.rb +35 -0
- data/spec/framework_spec/app/spec/core/encoding/list_spec.rb +43 -0
- data/spec/framework_spec/app/spec/core/encoding/locale_charmap_spec.rb +38 -0
- data/spec/framework_spec/app/spec/core/encoding/name_list_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/encoding/name_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/names_spec.rb +37 -0
- data/spec/framework_spec/app/spec/core/encoding/replicate_spec.rb +34 -0
- data/spec/framework_spec/app/spec/core/encoding/shared/name.rb +15 -0
- data/spec/framework_spec/app/spec/core/encoding/to_s_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/destination_encoding_name_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/destination_encoding_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/error_char_spec.rb +29 -0
- data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/source_encoding_name_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/source_encoding_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/enumerable/all_spec.rb +2 -15
- data/spec/framework_spec/app/spec/core/enumerable/any_spec.rb +2 -7
- data/spec/framework_spec/app/spec/core/enumerable/chunk_spec.rb +44 -0
- data/spec/framework_spec/app/spec/core/enumerable/collect_concat_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/enumerable/collect_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/count_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/cycle_spec.rb +20 -6
- data/spec/framework_spec/app/spec/core/enumerable/detect_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/drop_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/enumerable/drop_while_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/each_cons_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/enumerable/each_entry_spec.rb +40 -0
- data/spec/framework_spec/app/spec/core/enumerable/each_slice_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/enumerable/each_with_index_spec.rb +15 -15
- data/spec/framework_spec/app/spec/core/enumerable/each_with_object_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/enumerable/entries_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/find_all_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/{find_index.rb → find_index_spec.rb} +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/find_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/first_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/enumerable/fixtures/classes.rb +67 -16
- data/spec/framework_spec/app/spec/core/enumerable/flat_map_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/enumerable/grep_spec.rb +12 -7
- data/spec/framework_spec/app/spec/core/enumerable/group_by_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/include_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/inject_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/map_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/max_by_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/max_spec.rb +27 -12
- data/spec/framework_spec/app/spec/core/enumerable/member_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/min_by_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/min_spec.rb +27 -11
- data/spec/framework_spec/app/spec/core/enumerable/minmax_by_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/minmax_spec.rb +26 -10
- data/spec/framework_spec/app/spec/core/enumerable/none_spec.rb +42 -0
- data/spec/framework_spec/app/spec/core/enumerable/one_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/enumerable/partition_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/reduce_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/reject_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/reverse_each_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/select_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/enumerable/shared/collect.rb +13 -5
- data/spec/framework_spec/app/spec/core/enumerable/shared/collect_concat.rb +27 -0
- data/spec/framework_spec/app/spec/core/enumerable/shared/entries.rb +5 -1
- data/spec/framework_spec/app/spec/core/enumerable/shared/find.rb +24 -11
- data/spec/framework_spec/app/spec/core/enumerable/shared/find_all.rb +9 -3
- data/spec/framework_spec/app/spec/core/enumerable/shared/include.rb +14 -3
- data/spec/framework_spec/app/spec/core/enumerable/shared/inject.rb +8 -8
- data/spec/framework_spec/app/spec/core/enumerable/shared/take.rb +5 -3
- data/spec/framework_spec/app/spec/core/enumerable/slice_before_spec.rb +77 -0
- data/spec/framework_spec/app/spec/core/enumerable/sort_by_spec.rb +10 -2
- data/spec/framework_spec/app/spec/core/enumerable/sort_spec.rb +22 -9
- data/spec/framework_spec/app/spec/core/enumerable/take_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/take_while_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/enumerable/to_a_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/enumerable/zip_spec.rb +18 -7
- data/spec/framework_spec/app/spec/core/enumerator/each_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/each_with_index_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/enumerator/each_with_object_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/enumerator/enum_for_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/enumerator/feed_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/generator/each_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/inspect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/new_spec.rb +28 -0
- data/spec/framework_spec/app/spec/core/enumerator/next_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/enumerator/next_values_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/peek_spec.rb +38 -0
- data/spec/framework_spec/app/spec/core/enumerator/peek_values_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/enumerator/rewind_spec.rb +27 -0
- data/spec/framework_spec/app/spec/core/enumerator/to_enum_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/enumerator/with_index_spec.rb +68 -0
- data/spec/framework_spec/app/spec/core/enumerator/with_object_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/enumerator/yielder/append_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/enumerator/yielder/yield_spec.rb +18 -0
- data/spec/framework_spec/app/spec/core/env/clear_spec.rb +19 -13
- data/spec/framework_spec/app/spec/core/env/delete_if_spec.rb +26 -28
- data/spec/framework_spec/app/spec/core/env/delete_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/env/each_key_spec.rb +39 -33
- data/spec/framework_spec/app/spec/core/env/each_pair_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/each_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/each_value_spec.rb +39 -33
- data/spec/framework_spec/app/spec/core/env/element_reference_spec.rb +25 -2
- data/spec/framework_spec/app/spec/core/env/element_set_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/env/empty_spec.rb +23 -24
- data/spec/framework_spec/app/spec/core/env/fetch_spec.rb +6 -1
- data/spec/framework_spec/app/spec/core/env/has_key_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/env/has_value_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/include_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/env/index_spec.rb +6 -1
- data/spec/framework_spec/app/spec/core/env/indexes_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/env/indices_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/env/inspect_spec.rb +11 -12
- data/spec/framework_spec/app/spec/core/env/invert_spec.rb +12 -13
- data/spec/framework_spec/app/spec/core/env/key_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/env/keys_spec.rb +16 -9
- data/spec/framework_spec/app/spec/core/env/length_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/member_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/env/rehash_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/env/reject_spec.rb +88 -89
- data/spec/framework_spec/app/spec/core/env/replace_spec.rb +15 -16
- data/spec/framework_spec/app/spec/core/env/select_spec.rb +32 -23
- data/spec/framework_spec/app/spec/core/env/shared/each.rb +10 -1
- data/spec/framework_spec/app/spec/core/env/shared/key.rb +15 -0
- data/spec/framework_spec/app/spec/core/env/shared/store.rb +18 -12
- data/spec/framework_spec/app/spec/core/env/shared/value.rb +7 -0
- data/spec/framework_spec/app/spec/core/env/shift_spec.rb +27 -28
- data/spec/framework_spec/app/spec/core/env/size_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/store_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/env/to_a_spec.rb +21 -13
- data/spec/framework_spec/app/spec/core/env/to_hash_spec.rb +12 -13
- data/spec/framework_spec/app/spec/core/env/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/env/update_spec.rb +1 -2
- data/spec/framework_spec/app/spec/core/env/value_spec.rb +6 -7
- data/spec/framework_spec/app/spec/core/env/values_at_spec.rb +7 -1
- data/spec/framework_spec/app/spec/core/env/values_spec.rb +23 -16
- data/spec/framework_spec/app/spec/core/exception/args_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/arguments_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/exception/backtrace_spec.rb +51 -1
- data/spec/framework_spec/app/spec/core/exception/case_compare_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/exception/destination_encoding_name_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/exception/destination_encoding_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/exception/equal_value_spec.rb +84 -0
- data/spec/framework_spec/app/spec/core/exception/errno_spec.rb +16 -1
- data/spec/framework_spec/app/spec/core/exception/error_bytes_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/exception/error_char_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/exception/exception_spec.rb +69 -5
- data/spec/framework_spec/app/spec/core/exception/exit_value_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/exception/fixtures/common.rb +33 -1
- data/spec/framework_spec/app/spec/core/exception/incomplete_input_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/exception/initialize_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/exception/inspect_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/exception/io_error_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/exception/message_spec.rb +14 -4
- data/spec/framework_spec/app/spec/core/exception/name_error_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/exception/name_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/exception/new_spec.rb +3 -2
- data/spec/framework_spec/app/spec/core/exception/no_method_error_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/exception/range_error_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/exception/readagain_bytes_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/exception/reason_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/result_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/exception/script_error_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/exception/set_backtrace_spec.rb +10 -1
- data/spec/framework_spec/app/spec/core/exception/shared/new.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/shared/to_s.rb +3 -3
- data/spec/framework_spec/app/spec/core/exception/signm_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/signo_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/source_encoding_name_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/exception/source_encoding_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/exception/standard_error_spec.rb +56 -55
- data/spec/framework_spec/app/spec/core/exception/status_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/success_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/exception/system_call_error_spec.rb +14 -5
- data/spec/framework_spec/app/spec/core/exception/to_s_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/exception/to_str_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/false/and_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/false/inspect_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/false/or_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/false/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/false/xor_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fiber/new_spec.rb +48 -49
- data/spec/framework_spec/app/spec/core/fiber/resume_spec.rb +39 -23
- data/spec/framework_spec/app/spec/core/fiber/yield_spec.rb +34 -36
- data/spec/framework_spec/app/spec/core/file/absolute_path_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/file/atime_spec.rb +12 -5
- data/spec/framework_spec/app/spec/core/file/basename_spec.rb +25 -26
- data/spec/framework_spec/app/spec/core/file/blockdev_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/chardev_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/chmod_spec.rb +14 -10
- data/spec/framework_spec/app/spec/core/file/chown_spec.rb +22 -4
- data/spec/framework_spec/app/spec/core/file/constants/constants_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/file/constants_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/file/ctime_spec.rb +13 -6
- data/spec/framework_spec/app/spec/core/file/delete_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/directory_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/file/dirname_spec.rb +12 -2
- data/spec/framework_spec/app/spec/core/file/executable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/executable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/exist_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/exists_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/expand_path_spec.rb +133 -31
- data/spec/framework_spec/app/spec/core/file/extname_spec.rb +7 -1
- data/spec/framework_spec/app/spec/core/file/file_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/fixtures/common.rb +22 -0
- data/spec/framework_spec/app/spec/core/file/fixtures/file_types.rb +3 -9
- data/spec/framework_spec/app/spec/core/file/flock_spec.rb +56 -18
- data/spec/framework_spec/app/spec/core/file/fnmatch_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/ftype_spec.rb +43 -45
- data/spec/framework_spec/app/spec/core/file/grpowned_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/identical_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/initialize_spec.rb +25 -1
- data/spec/framework_spec/app/spec/core/file/inspect_spec.rb +14 -7
- data/spec/framework_spec/app/spec/core/file/join_spec.rb +37 -10
- data/spec/framework_spec/app/spec/core/file/lchmod_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/file/lchown_spec.rb +12 -6
- data/spec/framework_spec/app/spec/core/file/link_spec.rb +7 -9
- data/spec/framework_spec/app/spec/core/file/lstat_spec.rb +16 -11
- data/spec/framework_spec/app/spec/core/file/mtime_spec.rb +7 -6
- data/spec/framework_spec/app/spec/core/file/new_spec.rb +60 -44
- data/spec/framework_spec/app/spec/core/file/open_spec.rb +104 -120
- data/spec/framework_spec/app/spec/core/file/owned_spec.rb +26 -3
- data/spec/framework_spec/app/spec/core/file/path_spec.rb +11 -10
- data/spec/framework_spec/app/spec/core/file/pipe_spec.rb +25 -3
- data/spec/framework_spec/app/spec/core/file/read_spec.rb +6 -0
- data/spec/framework_spec/app/spec/core/file/readable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/readable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/readlink_spec.rb +17 -13
- data/spec/framework_spec/app/spec/core/file/realdirpath_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/file/realpath_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/file/rename_spec.rb +24 -27
- data/spec/framework_spec/app/spec/core/file/reopen_spec.rb +27 -0
- data/spec/framework_spec/app/spec/core/file/setgid_spec.rb +21 -21
- data/spec/framework_spec/app/spec/core/file/setuid_spec.rb +21 -21
- data/spec/framework_spec/app/spec/core/file/shared/fnmatch.rb +11 -5
- data/spec/framework_spec/app/spec/core/file/shared/open.rb +9 -0
- data/spec/framework_spec/app/spec/core/file/shared/read.rb +21 -0
- data/spec/framework_spec/app/spec/core/file/shared/stat.rb +31 -17
- data/spec/framework_spec/app/spec/core/file/shared/unlink.rb +8 -4
- data/spec/framework_spec/app/spec/core/file/size_spec.rb +111 -22
- data/spec/framework_spec/app/spec/core/file/socket_spec.rb +24 -3
- data/spec/framework_spec/app/spec/core/file/split_spec.rb +12 -7
- data/spec/framework_spec/app/spec/core/file/stat/atime_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/file/stat/blksize_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/file/stat/blockdev_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/blocks_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/file/stat/chardev_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/file/stat/comparison_spec.rb +14 -9
- data/spec/framework_spec/app/spec/core/file/stat/ctime_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/file/stat/dev_major_spec.rb +12 -3
- data/spec/framework_spec/app/spec/core/file/stat/dev_minor_spec.rb +13 -3
- data/spec/framework_spec/app/spec/core/file/stat/dev_spec.rb +10 -2
- data/spec/framework_spec/app/spec/core/file/stat/directory_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/executable_real_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/executable_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/file_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/ftype_spec.rb +14 -17
- data/spec/framework_spec/app/spec/core/file/stat/gid_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/file/stat/grpowned_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/ino_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/file/stat/inspect_spec.rb +8 -10
- data/spec/framework_spec/app/spec/core/file/stat/mode_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/file/stat/mtime_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/file/stat/new_spec.rb +11 -4
- data/spec/framework_spec/app/spec/core/file/stat/nlink_spec.rb +5 -6
- data/spec/framework_spec/app/spec/core/file/stat/owned_spec.rb +24 -4
- data/spec/framework_spec/app/spec/core/file/stat/pipe_spec.rb +25 -4
- data/spec/framework_spec/app/spec/core/file/stat/rdev_major_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/file/stat/rdev_minor_spec.rb +13 -3
- data/spec/framework_spec/app/spec/core/file/stat/rdev_spec.rb +10 -2
- data/spec/framework_spec/app/spec/core/file/stat/readable_real_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/readable_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/setgid_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/setuid_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/size_spec.rb +18 -4
- data/spec/framework_spec/app/spec/core/file/stat/socket_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/sticky_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/symlink_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/uid_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/file/stat/world_readable_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/file/stat/world_writable_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/file/stat/writable_real_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/writable_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat/zero_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/file/stat_spec.rb +23 -6
- data/spec/framework_spec/app/spec/core/file/sticky_spec.rb +49 -3
- data/spec/framework_spec/app/spec/core/file/symlink_spec.rb +18 -11
- data/spec/framework_spec/app/spec/core/file/to_path_spec.rb +48 -0
- data/spec/framework_spec/app/spec/core/file/truncate_spec.rb +34 -39
- data/spec/framework_spec/app/spec/core/file/umask_spec.rb +20 -21
- data/spec/framework_spec/app/spec/core/file/unlink_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/utime_spec.rb +20 -5
- data/spec/framework_spec/app/spec/core/file/world_readable_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/file/world_writable_spec.rb +16 -0
- data/spec/framework_spec/app/spec/core/file/writable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/writable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/file/zero_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/blockdev_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/chardev_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/filetest/directory_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/executable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/executable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/exist_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/exists_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/file_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/grpowned_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/identical_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/owned_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/pipe_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/readable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/readable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/setgid_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/setuid_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/size_spec.rb +31 -4
- data/spec/framework_spec/app/spec/core/filetest/socket_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/filetest/sticky_spec.rb +3 -2
- data/spec/framework_spec/app/spec/core/filetest/symlink_spec.rb +5 -2
- data/spec/framework_spec/app/spec/core/filetest/world_readable_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/filetest/world_writable_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/filetest/writable_real_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/writable_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/filetest/zero_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/fixnum/abs_spec.rb +4 -8
- data/spec/framework_spec/app/spec/core/fixnum/bit_and_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/fixnum/bit_or_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/fixnum/bit_xor_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/fixnum/case_compare_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/fixnum/coerce_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/fixnum/comparison_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/fixnum/complement_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/div_spec.rb +17 -7
- data/spec/framework_spec/app/spec/core/fixnum/divide_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/fixnum/divmod_spec.rb +16 -6
- data/spec/framework_spec/app/spec/core/fixnum/element_reference_spec.rb +45 -19
- data/spec/framework_spec/app/spec/core/fixnum/equal_value_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/fixnum/even_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/fixnum/exponent_spec.rb +59 -7
- data/spec/framework_spec/app/spec/core/fixnum/fdiv_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/fixnum/gt_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/fixnum/gte_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/fixnum/hash_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/id2name_spec.rb +15 -13
- data/spec/framework_spec/app/spec/core/fixnum/induced_from_spec.rb +36 -35
- data/spec/framework_spec/app/spec/core/fixnum/left_shift_spec.rb +72 -42
- data/spec/framework_spec/app/spec/core/fixnum/lt_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/fixnum/lte_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/fixnum/magnitude_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/fixnum/minus_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/fixnum/modulo_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/fixnum/multiply_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/fixnum/odd_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/fixnum/plus_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/quo_spec.rb +16 -6
- data/spec/framework_spec/app/spec/core/fixnum/right_shift_spec.rb +84 -40
- data/spec/framework_spec/app/spec/core/fixnum/shared/abs.rb +9 -0
- data/spec/framework_spec/app/spec/core/fixnum/shared/modulo.rb +17 -7
- data/spec/framework_spec/app/spec/core/fixnum/size_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/succ_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/fixnum/to_f_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/to_s_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/fixnum/to_sym_spec.rb +16 -14
- data/spec/framework_spec/app/spec/core/fixnum/uminus_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/fixnum/zero_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/float/abs_spec.rb +2 -6
- data/spec/framework_spec/app/spec/core/float/angle_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/arg_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/case_compare_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/ceil_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/coerce_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/comparison_spec.rb +52 -1
- data/spec/framework_spec/app/spec/core/float/constants_spec.rb +25 -17
- data/spec/framework_spec/app/spec/core/float/denominator_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/float/divide_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/float/divmod_spec.rb +26 -1
- data/spec/framework_spec/app/spec/core/float/eql_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/equal_value_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/exponent_spec.rb +10 -2
- data/spec/framework_spec/app/spec/core/float/fdiv_spec.rb +68 -0
- data/spec/framework_spec/app/spec/core/float/finite_spec.rb +3 -1
- data/spec/framework_spec/app/spec/core/float/fixtures/coerce.rb +15 -0
- data/spec/framework_spec/app/spec/core/float/floor_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/gt_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/gte_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/hash_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/induced_from_spec.rb +38 -37
- data/spec/framework_spec/app/spec/core/float/infinite_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/lt_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/lte_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/magnitude_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/minus_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/modulo_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/float/multiply_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/float/nan_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/numerator_spec.rb +47 -0
- data/spec/framework_spec/app/spec/core/float/phase_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/plus_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/quo_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/rationalize_spec.rb +40 -0
- data/spec/framework_spec/app/spec/core/float/round_spec.rb +32 -6
- data/spec/framework_spec/app/spec/core/float/shared/abs.rb +9 -0
- data/spec/framework_spec/app/spec/core/float/shared/modulo.rb +14 -3
- data/spec/framework_spec/app/spec/core/float/to_f_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/to_i_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/float/to_int_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/float/to_r_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/float/to_s_spec.rb +93 -18
- data/spec/framework_spec/app/spec/core/float/truncate_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/float/uminus_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/float/uplus_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/float/zero_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/gc/count_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/disable_spec.rb +17 -1
- data/spec/framework_spec/app/spec/core/gc/enable_spec.rb +12 -1
- data/spec/framework_spec/app/spec/core/gc/garbage_collect_spec.rb +15 -1
- data/spec/framework_spec/app/spec/core/gc/profiler/clear_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/disable_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/enable_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/enabled_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/report_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/result_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/profiler/total_time_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/gc/start_spec.rb +8 -1
- data/spec/framework_spec/app/spec/core/gc/stress_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/hash/allocate_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/assoc_spec.rb +43 -0
- data/spec/framework_spec/app/spec/core/hash/clear_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/clone_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/hash/compare_by_identity_spec.rb +109 -0
- data/spec/framework_spec/app/spec/core/hash/constructor_spec.rb +8 -4
- data/spec/framework_spec/app/spec/core/hash/default_proc_spec.rb +24 -4
- data/spec/framework_spec/app/spec/core/hash/default_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/hash/delete_if_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/delete_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/each_key_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/each_pair_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/hash/each_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/hash/each_value_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/element_reference_spec.rb +111 -115
- data/spec/framework_spec/app/spec/core/hash/element_set_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/hash/empty_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/eql_spec.rb +18 -19
- data/spec/framework_spec/app/spec/core/hash/equal_value_spec.rb +18 -14
- data/spec/framework_spec/app/spec/core/hash/fetch_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/fixtures/classes.rb +1 -1
- data/spec/framework_spec/app/spec/core/hash/flatten_spec.rb +64 -0
- data/spec/framework_spec/app/spec/core/hash/has_key_spec.rb +8 -9
- data/spec/framework_spec/app/spec/core/hash/has_value_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/hash_spec.rb +20 -1
- data/spec/framework_spec/app/spec/core/hash/include_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/hash/index_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/indexes_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/indices_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/initialize_copy_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/initialize_spec.rb +8 -3
- data/spec/framework_spec/app/spec/core/hash/inspect_spec.rb +3 -41
- data/spec/framework_spec/app/spec/core/hash/invert_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/keep_if_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/hash/key_spec.rb +14 -15
- data/spec/framework_spec/app/spec/core/hash/keys_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/hash/length_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/member_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/hash/merge_spec.rb +10 -17
- data/spec/framework_spec/app/spec/core/hash/new_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/rassoc_spec.rb +39 -0
- data/spec/framework_spec/app/spec/core/hash/rehash_spec.rb +51 -60
- data/spec/framework_spec/app/spec/core/hash/reject_spec.rb +18 -12
- data/spec/framework_spec/app/spec/core/hash/replace_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/select_spec.rb +38 -5
- data/spec/framework_spec/app/spec/core/hash/shared/each.rb +46 -6
- data/spec/framework_spec/app/spec/core/hash/shared/eql.rb +14 -1
- data/spec/framework_spec/app/spec/core/hash/shared/index.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/shared/iteration.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/shared/key.rb +5 -3
- data/spec/framework_spec/app/spec/core/hash/shared/replace.rb +22 -11
- data/spec/framework_spec/app/spec/core/hash/shared/store.rb +14 -1
- data/spec/framework_spec/app/spec/core/hash/shared/to_s.rb +22 -21
- data/spec/framework_spec/app/spec/core/hash/shared/update.rb +27 -8
- data/spec/framework_spec/app/spec/core/hash/shift_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/size_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/sort_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/store_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/hash/to_a_spec.rb +16 -3
- data/spec/framework_spec/app/spec/core/hash/to_hash_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/hash/to_s_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/hash/try_convert_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/hash/update_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/value_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/hash/values_at_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/hash/values_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/integer/ceil_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/chr_spec.rb +141 -18
- data/spec/framework_spec/app/spec/core/integer/denominator_spec.rb +22 -0
- data/spec/framework_spec/app/spec/core/integer/downto_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/integer/even_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/floor_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/gcd_spec.rb +60 -0
- data/spec/framework_spec/app/spec/core/integer/gcdlcm_spec.rb +55 -0
- data/spec/framework_spec/app/spec/core/integer/induced_from_spec.rb +43 -42
- data/spec/framework_spec/app/spec/core/integer/integer_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/lcm_spec.rb +60 -0
- data/spec/framework_spec/app/spec/core/integer/next_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/numerator_spec.rb +20 -0
- data/spec/framework_spec/app/spec/core/integer/odd_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/integer/ord_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/integer/pred_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/integer/rationalize_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/integer/round_spec.rb +35 -2
- data/spec/framework_spec/app/spec/core/integer/shared/next.rb +1 -1
- data/spec/framework_spec/app/spec/core/integer/succ_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/times_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/integer/to_i_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/to_int_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/to_r_spec.rb +28 -0
- data/spec/framework_spec/app/spec/core/integer/truncate_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/integer/upto_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/io/binmode_spec.rb +21 -5
- data/spec/framework_spec/app/spec/core/io/binread_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/bytes_spec.rb +27 -16
- data/spec/framework_spec/app/spec/core/io/chars_spec.rb +35 -19
- data/spec/framework_spec/app/spec/core/io/close_on_exec_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/io/close_read_spec.rb +29 -29
- data/spec/framework_spec/app/spec/core/io/close_spec.rb +15 -19
- data/spec/framework_spec/app/spec/core/io/close_write_spec.rb +13 -14
- data/spec/framework_spec/app/spec/core/io/closed_spec.rb +15 -7
- data/spec/framework_spec/app/spec/core/io/codepoints_spec.rb +29 -0
- data/spec/framework_spec/app/spec/core/io/constants_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/io/copy_stream_spec.rb +50 -0
- data/spec/framework_spec/app/spec/core/io/dup_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/io/each_byte_spec.rb +32 -26
- data/spec/framework_spec/app/spec/core/io/each_char_spec.rb +35 -22
- data/spec/framework_spec/app/spec/core/io/each_codepoint_spec.rb +34 -0
- data/spec/framework_spec/app/spec/core/io/each_line_spec.rb +7 -5
- data/spec/framework_spec/app/spec/core/io/each_spec.rb +8 -6
- data/spec/framework_spec/app/spec/core/io/eof_spec.rb +59 -45
- data/spec/framework_spec/app/spec/core/io/external_encoding_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/fcntl_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/io/fdatasync_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/fileno_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/io/fixtures/classes.rb +57 -15
- data/spec/framework_spec/app/spec/core/io/fixtures/empty.txt +0 -0
- data/spec/framework_spec/app/spec/core/io/fixtures/{gets.txt → lines.txt} +0 -0
- data/spec/framework_spec/app/spec/core/io/fixtures/reopen_stdout.rb +3 -0
- data/spec/framework_spec/app/spec/core/io/flush_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/io/for_fd_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/io/foreach_spec.rb +132 -90
- data/spec/framework_spec/app/spec/core/io/fsync_spec.rb +15 -15
- data/spec/framework_spec/app/spec/core/io/getbyte_spec.rb +27 -21
- data/spec/framework_spec/app/spec/core/io/getc_spec.rb +30 -24
- data/spec/framework_spec/app/spec/core/io/gets_spec.rb +144 -127
- data/spec/framework_spec/app/spec/core/io/initialize_copy_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/io/initialize_spec.rb +33 -16
- data/spec/framework_spec/app/spec/core/io/inspect_spec.rb +4 -15
- data/spec/framework_spec/app/spec/core/io/internal_encoding_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/io_spec.rb +1 -5
- data/spec/framework_spec/app/spec/core/io/ioctl_spec.rb +42 -5
- data/spec/framework_spec/app/spec/core/io/isatty_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/io/lineno_spec.rb +65 -52
- data/spec/framework_spec/app/spec/core/io/lines_spec.rb +28 -22
- data/spec/framework_spec/app/spec/core/io/new_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/io/open_spec.rb +52 -49
- data/spec/framework_spec/app/spec/core/io/output_spec.rb +22 -14
- data/spec/framework_spec/app/spec/core/io/pid_spec.rb +20 -11
- data/spec/framework_spec/app/spec/core/io/pipe_spec.rb +10 -1
- data/spec/framework_spec/app/spec/core/io/popen_spec.rb +107 -37
- data/spec/framework_spec/app/spec/core/io/pos_spec.rb +5 -44
- data/spec/framework_spec/app/spec/core/io/print_spec.rb +56 -59
- data/spec/framework_spec/app/spec/core/io/printf_spec.rb +25 -19
- data/spec/framework_spec/app/spec/core/io/putc_spec.rb +5 -43
- data/spec/framework_spec/app/spec/core/io/puts_spec.rb +28 -16
- data/spec/framework_spec/app/spec/core/io/read_nonblock_spec.rb +54 -3
- data/spec/framework_spec/app/spec/core/io/read_spec.rb +127 -50
- data/spec/framework_spec/app/spec/core/io/readbyte_spec.rb +29 -0
- data/spec/framework_spec/app/spec/core/io/readchar_spec.rb +31 -31
- data/spec/framework_spec/app/spec/core/io/readline_spec.rb +29 -25
- data/spec/framework_spec/app/spec/core/io/readlines_spec.rb +174 -146
- data/spec/framework_spec/app/spec/core/io/readpartial_spec.rb +16 -4
- data/spec/framework_spec/app/spec/core/io/reopen_spec.rb +226 -82
- data/spec/framework_spec/app/spec/core/io/rewind_spec.rb +8 -9
- data/spec/framework_spec/app/spec/core/io/seek_spec.rb +21 -29
- data/spec/framework_spec/app/spec/core/io/select_spec.rb +34 -7
- data/spec/framework_spec/app/spec/core/io/set_encoding_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/shared/codepoints.rb +46 -0
- data/spec/framework_spec/app/spec/core/io/shared/each.rb +97 -112
- data/spec/framework_spec/app/spec/core/io/shared/gets_ascii.rb +27 -0
- data/spec/framework_spec/app/spec/core/io/shared/new.rb +74 -99
- data/spec/framework_spec/app/spec/core/io/shared/pos.rb +43 -4
- data/spec/framework_spec/app/spec/core/io/shared/tty.rb +10 -7
- data/spec/framework_spec/app/spec/core/io/shared/write.rb +4 -4
- data/spec/framework_spec/app/spec/core/io/stat_spec.rb +20 -7
- data/spec/framework_spec/app/spec/core/io/sync_spec.rb +12 -10
- data/spec/framework_spec/app/spec/core/io/sysopen_spec.rb +32 -14
- data/spec/framework_spec/app/spec/core/io/sysread_spec.rb +12 -10
- data/spec/framework_spec/app/spec/core/io/sysseek_spec.rb +17 -42
- data/spec/framework_spec/app/spec/core/io/syswrite_spec.rb +10 -9
- data/spec/framework_spec/app/spec/core/io/tell_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/io/to_i_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/io/to_io_spec.rb +15 -10
- data/spec/framework_spec/app/spec/core/io/try_convert_spec.rb +47 -0
- data/spec/framework_spec/app/spec/core/io/tty_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/io/ungetbyte_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/io/ungetc_spec.rb +55 -48
- data/spec/framework_spec/app/spec/core/io/write_nonblock_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/io/write_spec.rb +17 -12
- data/spec/framework_spec/app/spec/core/kernel/Array_spec.rb +76 -31
- data/spec/framework_spec/app/spec/core/kernel/Complex_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/Float_spec.rb +18 -13
- data/spec/framework_spec/app/spec/core/kernel/Integer_spec.rb +243 -7
- data/spec/framework_spec/app/spec/core/kernel/Rational_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/String_spec.rb +65 -33
- data/spec/framework_spec/app/spec/core/kernel/__callee___spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/kernel/__id___spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/kernel/__method___spec.rb +41 -0
- data/spec/framework_spec/app/spec/core/kernel/__send___spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/abort_spec.rb +6 -3
- data/spec/framework_spec/app/spec/core/kernel/at_exit_spec.rb +16 -11
- data/spec/framework_spec/app/spec/core/kernel/autoload_spec.rb +127 -114
- data/spec/framework_spec/app/spec/core/kernel/backtick_spec.rb +24 -24
- data/spec/framework_spec/app/spec/core/kernel/binding_spec.rb +45 -23
- data/spec/framework_spec/app/spec/core/kernel/block_given_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/kernel/callcc_spec.rb +9 -65
- data/spec/framework_spec/app/spec/core/kernel/caller_spec.rb +162 -91
- data/spec/framework_spec/app/spec/core/kernel/case_compare_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/catch_spec.rb +70 -13
- data/spec/framework_spec/app/spec/core/kernel/chomp_spec.rb +19 -15
- data/spec/framework_spec/app/spec/core/kernel/chop_spec.rb +19 -15
- data/spec/framework_spec/app/spec/core/kernel/class_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/clone_spec.rb +8 -2
- data/spec/framework_spec/app/spec/core/kernel/comparison_spec.rb +33 -0
- data/spec/framework_spec/app/spec/core/kernel/const_lookup_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/{define_singleton_method.rb → define_singleton_method_spec.rb} +31 -9
- data/spec/framework_spec/app/spec/core/kernel/display_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/dup_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/enum_for_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/eql_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/kernel/equal_spec.rb +32 -3
- data/spec/framework_spec/app/spec/core/kernel/equal_value_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/kernel/eval_spec.rb +285 -182
- data/spec/framework_spec/app/spec/core/kernel/exec_spec.rb +18 -5
- data/spec/framework_spec/app/spec/core/kernel/exit_spec.rb +70 -4
- data/spec/framework_spec/app/spec/core/kernel/extend_spec.rb +29 -7
- data/spec/framework_spec/app/spec/core/kernel/fail_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/kernel/fixtures/__method__.rb +25 -0
- data/spec/framework_spec/app/spec/core/kernel/fixtures/autoload_d.rb +5 -0
- data/spec/framework_spec/app/spec/core/kernel/fixtures/caller_fixture1.rb +1 -1
- data/spec/framework_spec/app/spec/core/kernel/fixtures/classes.rb +173 -67
- data/spec/framework_spec/app/spec/core/kernel/fixtures/eval_locals.rb +6 -0
- data/spec/framework_spec/app/spec/core/kernel/fixtures/test.rb +80 -80
- data/spec/framework_spec/app/spec/core/kernel/fork_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/kernel/format_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/freeze_spec.rb +75 -37
- data/spec/framework_spec/app/spec/core/kernel/frozen_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/getc_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/kernel/gets_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/global_variables_spec.rb +24 -12
- data/spec/framework_spec/app/spec/core/kernel/gsub_spec.rb +76 -72
- data/spec/framework_spec/app/spec/core/kernel/hash_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/id_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/initialize_clone_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/initialize_copy_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/initialize_dup_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/inspect_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/instance_eval_spec.rb +154 -113
- data/spec/framework_spec/app/spec/core/kernel/instance_of_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/kernel/instance_variable_defined_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/kernel/instance_variable_get_spec.rb +16 -2
- data/spec/framework_spec/app/spec/core/kernel/instance_variable_set_spec.rb +25 -12
- data/spec/framework_spec/app/spec/core/kernel/instance_variables_spec.rb +48 -3
- data/spec/framework_spec/app/spec/core/kernel/is_a_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/kernel/iterator_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/kind_of_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/kernel/lambda_spec.rb +68 -7
- data/spec/framework_spec/app/spec/core/kernel/load_spec.rb +22 -217
- data/spec/framework_spec/app/spec/core/kernel/local_variables_spec.rb +38 -18
- data/spec/framework_spec/app/spec/core/kernel/loop_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/kernel/match_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/method_missing_spec.rb +9 -54
- data/spec/framework_spec/app/spec/core/kernel/method_spec.rb +29 -31
- data/spec/framework_spec/app/spec/core/kernel/methods_spec.rb +93 -78
- data/spec/framework_spec/app/spec/core/kernel/nil_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/not_match_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/object_id_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/kernel/open_spec.rb +30 -32
- data/spec/framework_spec/app/spec/core/kernel/p_spec.rb +29 -29
- data/spec/framework_spec/app/spec/core/kernel/print_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/printf_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/private_methods_spec.rb +82 -14
- data/spec/framework_spec/app/spec/core/kernel/proc_spec.rb +22 -4
- data/spec/framework_spec/app/spec/core/kernel/protected_methods_spec.rb +44 -2
- data/spec/framework_spec/app/spec/core/kernel/public_method_spec.rb +37 -0
- data/spec/framework_spec/app/spec/core/kernel/public_methods_spec.rb +70 -12
- data/spec/framework_spec/app/spec/core/kernel/public_send_spec.rb +76 -0
- data/spec/framework_spec/app/spec/core/kernel/putc_spec.rb +31 -4
- data/spec/framework_spec/app/spec/core/kernel/puts_spec.rb +100 -87
- data/spec/framework_spec/app/spec/core/kernel/raise_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/kernel/rand_spec.rb +39 -13
- data/spec/framework_spec/app/spec/core/kernel/readline_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/readlines_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/remove_instance_variable_spec.rb +32 -2
- data/spec/framework_spec/app/spec/core/kernel/require_relative_spec.rb +154 -0
- data/spec/framework_spec/app/spec/core/kernel/require_spec.rb +20 -289
- data/spec/framework_spec/app/spec/core/kernel/respond_to_missing_spec.rb +88 -0
- data/spec/framework_spec/app/spec/core/kernel/respond_to_spec.rb +41 -33
- data/spec/framework_spec/app/spec/core/kernel/scan_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/kernel/select_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/send_spec.rb +31 -65
- data/spec/framework_spec/app/spec/core/kernel/set_trace_func_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/shared/__method__.rb +6 -7
- data/spec/framework_spec/app/spec/core/kernel/shared/abort.rb +26 -0
- data/spec/framework_spec/app/spec/core/kernel/shared/lambda.rb +12 -25
- data/spec/framework_spec/app/spec/core/kernel/shared/load.rb +93 -0
- data/spec/framework_spec/app/spec/core/kernel/shared/method.rb +59 -0
- data/spec/framework_spec/app/spec/core/kernel/shared/object_id.rb +22 -6
- data/spec/framework_spec/app/spec/core/kernel/shared/require.rb +529 -0
- data/spec/framework_spec/app/spec/core/kernel/shared/send.rb +110 -0
- data/spec/framework_spec/app/spec/core/kernel/singleton_class_spec.rb +30 -0
- data/spec/framework_spec/app/spec/core/kernel/singleton_method_added_spec.rb +6 -5
- data/spec/framework_spec/app/spec/core/kernel/singleton_method_removed_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/kernel/singleton_method_undefined_spec.rb +4 -5
- data/spec/framework_spec/app/spec/core/kernel/singleton_methods_spec.rb +179 -58
- data/spec/framework_spec/app/spec/core/kernel/sleep_spec.rb +18 -19
- data/spec/framework_spec/app/spec/core/kernel/spawn_spec.rb +152 -0
- data/spec/framework_spec/app/spec/core/kernel/split_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/kernel/sprintf_spec.rb +351 -5
- data/spec/framework_spec/app/spec/core/kernel/srand_spec.rb +33 -6
- data/spec/framework_spec/app/spec/core/kernel/sub_spec.rb +19 -15
- data/spec/framework_spec/app/spec/core/kernel/syscall_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/system_spec.rb +90 -61
- data/spec/framework_spec/app/spec/core/kernel/taint_spec.rb +9 -4
- data/spec/framework_spec/app/spec/core/kernel/tainted_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/kernel/tap_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/kernel/test_spec.rb +36 -16
- data/spec/framework_spec/app/spec/core/kernel/throw_spec.rb +29 -24
- data/spec/framework_spec/app/spec/core/kernel/to_a_spec.rb +17 -15
- data/spec/framework_spec/app/spec/core/kernel/to_enum_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/kernel/to_s_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/trace_var_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/trap_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/trust_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/type_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/untaint_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/untrace_var_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/untrust_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/untrusted_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/kernel/warn_spec.rb +59 -60
- data/spec/framework_spec/app/spec/core/marshal/dump_spec.rb +314 -70
- data/spec/framework_spec/app/spec/core/marshal/fixtures/marshal_data.rb +165 -0
- data/spec/framework_spec/app/spec/core/marshal/fixtures/random.dump +0 -0
- data/spec/framework_spec/app/spec/core/marshal/load_spec.rb +483 -170
- data/spec/framework_spec/app/spec/core/marshal/restore_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/matchdata/begin_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/captures_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/element_reference_spec.rb +3 -1
- data/spec/framework_spec/app/spec/core/matchdata/end_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/matchdata/eql_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/matchdata/equal_value_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/matchdata/hash_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/matchdata/initialize_copy_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/inspect_spec.rb +19 -1
- data/spec/framework_spec/app/spec/core/matchdata/length_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/matchdata/names_spec.rb +3 -0
- data/spec/framework_spec/app/spec/core/matchdata/offset_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/post_match_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/matchdata/pre_match_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/regexp_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/matchdata/select_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/shared/eql.rb +26 -0
- data/spec/framework_spec/app/spec/core/matchdata/size_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/matchdata/string_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/to_a_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/matchdata/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/values_at_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/matchdata/versions/element_reference_1.9.rb +35 -0
- data/spec/framework_spec/app/spec/core/matchdata/versions/names_1.9.rb +33 -0
- data/spec/framework_spec/app/spec/core/math/acos_spec.rb +31 -31
- data/spec/framework_spec/app/spec/core/math/acosh_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/math/asin_spec.rb +15 -15
- data/spec/framework_spec/app/spec/core/math/asinh_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/math/atan2_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/math/atan_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/math/atanh_spec.rb +8 -64
- data/spec/framework_spec/app/spec/core/math/cbrt_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/math/constants_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/math/cos_spec.rb +13 -13
- data/spec/framework_spec/app/spec/core/math/cosh_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/math/erf_spec.rb +14 -14
- data/spec/framework_spec/app/spec/core/math/erfc_spec.rb +12 -12
- data/spec/framework_spec/app/spec/core/math/exp_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/math/fixtures/classes.rb +2 -2
- data/spec/framework_spec/app/spec/core/math/frexp_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/math/gamma_spec.rb +71 -0
- data/spec/framework_spec/app/spec/core/math/hypot_spec.rb +11 -11
- data/spec/framework_spec/app/spec/core/math/ldexp_spec.rb +10 -10
- data/spec/framework_spec/app/spec/core/math/lgamma_spec.rb +87 -0
- data/spec/framework_spec/app/spec/core/math/log10_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/math/log2_spec.rb +30 -3
- data/spec/framework_spec/app/spec/core/math/log_spec.rb +30 -11
- data/spec/framework_spec/app/spec/core/math/sin_spec.rb +15 -15
- data/spec/framework_spec/app/spec/core/math/sinh_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/math/sqrt_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/math/tan_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/math/tanh_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/method/arity_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/method/call_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/method/clone_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/method/element_reference_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/method/eql_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/method/equal_value_spec.rb +3 -40
- data/spec/framework_spec/app/spec/core/method/fixtures/classes.rb +104 -13
- data/spec/framework_spec/app/spec/core/method/fixtures/classes_1.9.rb +12 -0
- data/spec/framework_spec/app/spec/core/method/hash_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/method/inspect_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/method/name_spec.rb +19 -5
- data/spec/framework_spec/app/spec/core/method/owner_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/method/parameters_spec.rb +3 -0
- data/spec/framework_spec/app/spec/core/method/receiver_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/method/shared/call.rb +2 -2
- data/spec/framework_spec/app/spec/core/method/shared/eql.rb +102 -0
- data/spec/framework_spec/app/spec/core/method/shared/to_s.rb +5 -5
- data/spec/framework_spec/app/spec/core/method/source_location_spec.rb +50 -0
- data/spec/framework_spec/app/spec/core/method/to_proc_spec.rb +20 -2
- data/spec/framework_spec/app/spec/core/method/to_s_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/method/unbind_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/method/versions/parameters_1.9.rb +189 -0
- data/spec/framework_spec/app/spec/core/module/alias_method_spec.rb +20 -8
- data/spec/framework_spec/app/spec/core/module/allocate_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/module/ancestors_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/append_features_spec.rb +15 -4
- data/spec/framework_spec/app/spec/core/module/attr_accessor_spec.rb +16 -7
- data/spec/framework_spec/app/spec/core/module/attr_reader_spec.rb +14 -5
- data/spec/framework_spec/app/spec/core/module/attr_spec.rb +61 -63
- data/spec/framework_spec/app/spec/core/module/attr_writer_spec.rb +23 -12
- data/spec/framework_spec/app/spec/core/module/autoload_spec.rb +177 -84
- data/spec/framework_spec/app/spec/core/module/case_compare_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/class_eval_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/module/class_exec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/module/class_variable_defined_spec.rb +22 -7
- data/spec/framework_spec/app/spec/core/module/class_variable_get_spec.rb +27 -12
- data/spec/framework_spec/app/spec/core/module/class_variable_set_spec.rb +37 -15
- data/spec/framework_spec/app/spec/core/module/class_variables_spec.rb +50 -17
- data/spec/framework_spec/app/spec/core/module/comparison_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/module/const_defined_spec.rb +41 -5
- data/spec/framework_spec/app/spec/core/module/const_get_spec.rb +14 -2
- data/spec/framework_spec/app/spec/core/module/const_missing_spec.rb +8 -2
- data/spec/framework_spec/app/spec/core/module/const_set_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/module/constants_spec.rb +26 -2
- data/spec/framework_spec/app/spec/core/module/define_method_spec.rb +283 -15
- data/spec/framework_spec/app/spec/core/module/eql_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/equal_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/equal_value_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/extend_object_spec.rb +23 -28
- data/spec/framework_spec/app/spec/core/module/extended_spec.rb +18 -10
- data/spec/framework_spec/app/spec/core/module/fixtures/autoload.rb +1 -1
- data/spec/framework_spec/app/spec/core/module/fixtures/autoload_ex1.rb +16 -0
- data/spec/framework_spec/app/spec/core/module/fixtures/autoload_k.rb +3 -1
- data/spec/framework_spec/app/spec/core/module/fixtures/autoload_s.rb +5 -0
- data/spec/framework_spec/app/spec/core/module/fixtures/autoload_w2.rb +1 -0
- data/spec/framework_spec/app/spec/core/module/fixtures/classes.rb +97 -0
- data/spec/framework_spec/app/spec/core/module/fixtures/name.rb +10 -0
- data/spec/framework_spec/app/spec/core/module/freeze_spec.rb +33 -13
- data/spec/framework_spec/app/spec/core/module/gt_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/module/gte_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/include_spec.rb +159 -33
- data/spec/framework_spec/app/spec/core/module/included_modules_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/module/included_spec.rb +12 -4
- data/spec/framework_spec/app/spec/core/module/initialize_copy_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/module/initialize_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/instance_method_spec.rb +16 -7
- data/spec/framework_spec/app/spec/core/module/instance_methods_spec.rb +51 -17
- data/spec/framework_spec/app/spec/core/module/lt_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/module/lte_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/method_added_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/module/method_defined_spec.rb +13 -6
- data/spec/framework_spec/app/spec/core/module/method_removed_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/method_undefined_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/module_eval_spec.rb +7 -8
- data/spec/framework_spec/app/spec/core/module/module_exec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/module/module_function_spec.rb +82 -76
- data/spec/framework_spec/app/spec/core/module/name_spec.rb +24 -6
- data/spec/framework_spec/app/spec/core/module/nesting_spec.rb +13 -9
- data/spec/framework_spec/app/spec/core/module/new_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/private_class_method_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/module/private_instance_methods_spec.rb +26 -2
- data/spec/framework_spec/app/spec/core/module/private_method_defined_spec.rb +16 -6
- data/spec/framework_spec/app/spec/core/module/private_spec.rb +21 -3
- data/spec/framework_spec/app/spec/core/module/protected_instance_methods_spec.rb +66 -18
- data/spec/framework_spec/app/spec/core/module/protected_method_defined_spec.rb +40 -18
- data/spec/framework_spec/app/spec/core/module/protected_spec.rb +24 -7
- data/spec/framework_spec/app/spec/core/module/public_class_method_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/module/public_instance_method_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/module/public_instance_methods_spec.rb +38 -14
- data/spec/framework_spec/app/spec/core/module/public_method_defined_spec.rb +28 -6
- data/spec/framework_spec/app/spec/core/module/public_spec.rb +26 -2
- data/spec/framework_spec/app/spec/core/module/remove_class_variable_spec.rb +46 -2
- data/spec/framework_spec/app/spec/core/module/remove_const_spec.rb +10 -3
- data/spec/framework_spec/app/spec/core/module/remove_method_spec.rb +10 -10
- data/spec/framework_spec/app/spec/core/module/shared/class_eval.rb +36 -14
- data/spec/framework_spec/app/spec/core/module/shared/class_exec.rb +24 -0
- data/spec/framework_spec/app/spec/core/module/shared/equal_value.rb +1 -1
- data/spec/framework_spec/app/spec/core/module/to_s_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/module/undef_method_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/mutex/lock_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/mutex/locked_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/mutex/sleep_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/mutex/synchronize_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/mutex/try_lock_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/mutex/unlock_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/nil/and_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/inspect_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/nil_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/or_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/rationalize_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/nil/to_a_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/to_c_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/nil/to_f_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/nil/to_i_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/nil/to_r_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/nil/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/nil/xor_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/numeric/abs2_spec.rb +36 -0
- data/spec/framework_spec/app/spec/core/numeric/abs_spec.rb +3 -17
- data/spec/framework_spec/app/spec/core/numeric/angle_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/arg_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/ceil_spec.rb +10 -9
- data/spec/framework_spec/app/spec/core/numeric/coerce_spec.rb +23 -6
- data/spec/framework_spec/app/spec/core/numeric/comparison_spec.rb +35 -6
- data/spec/framework_spec/app/spec/core/numeric/conj_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/conjugate_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/denominator_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/numeric/div_spec.rb +22 -10
- data/spec/framework_spec/app/spec/core/numeric/divmod_spec.rb +19 -8
- data/spec/framework_spec/app/spec/core/numeric/eql_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/fdiv_spec.rb +37 -0
- data/spec/framework_spec/app/spec/core/numeric/fixtures/classes.rb +16 -4
- data/spec/framework_spec/app/spec/core/numeric/floor_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/i_spec.rb +17 -0
- data/spec/framework_spec/app/spec/core/numeric/imag_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/imaginary_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/initialize_copy_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/integer_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/magnitude_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/numeric/modulo_spec.rb +33 -9
- data/spec/framework_spec/app/spec/core/numeric/nonzero_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/numeric/numerator_spec.rb +35 -0
- data/spec/framework_spec/app/spec/core/numeric/phase_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/polar_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/quo_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/rationalize_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/numeric/real_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/numeric/rect_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/rectangular_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/numeric/remainder_spec.rb +11 -11
- data/spec/framework_spec/app/spec/core/numeric/round_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/shared/abs.rb +19 -0
- data/spec/framework_spec/app/spec/core/numeric/shared/rect.rb +48 -0
- data/spec/framework_spec/app/spec/core/numeric/singleton_method_added_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/numeric/step_spec.rb +215 -162
- data/spec/framework_spec/app/spec/core/numeric/to_c_spec.rb +47 -0
- data/spec/framework_spec/app/spec/core/numeric/to_int_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/numeric/truncate_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/numeric/uminus_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/numeric/uplus_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/numeric/zero_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/object/clone_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/object/dup_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/object/fixtures/classes.rb +17 -0
- data/spec/framework_spec/app/spec/core/object/initialize_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/object/instance_exec_spec.rb +101 -0
- data/spec/framework_spec/app/spec/core/object/instance_of_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/object/is_a_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/object/kind_of_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/object/match_spec.rb +25 -10
- data/spec/framework_spec/app/spec/core/object/metaclass_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/object/new_spec.rb +18 -2
- data/spec/framework_spec/app/spec/core/object/shared/kind_of.rb +3 -3
- data/spec/framework_spec/app/spec/core/objectspace/_id2ref_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/objectspace/add_finalizer_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/objectspace/call_finalizer_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/objectspace/count_objects_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/objectspace/define_finalizer_spec.rb +44 -3
- data/spec/framework_spec/app/spec/core/objectspace/each_object_spec.rb +27 -5
- data/spec/framework_spec/app/spec/core/objectspace/finalizers_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/objectspace/fixtures.rb +5 -0
- data/spec/framework_spec/app/spec/core/objectspace/garbage_collect_spec.rb +22 -1
- data/spec/framework_spec/app/spec/core/objectspace/remove_finalizer_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/objectspace/undefine_finalizer_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/precision/included_spec.rb +14 -12
- data/spec/framework_spec/app/spec/core/precision/prec_f_spec.rb +9 -8
- data/spec/framework_spec/app/spec/core/precision/prec_i_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/precision/prec_spec.rb +19 -14
- data/spec/framework_spec/app/spec/core/proc/arity_spec.rb +104 -53
- data/spec/framework_spec/app/spec/core/proc/binding_spec.rb +14 -14
- data/spec/framework_spec/app/spec/core/proc/block_pass_spec.rb +21 -1
- data/spec/framework_spec/app/spec/core/proc/call_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/proc/case_compare_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/proc/clone_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/proc/curry_spec.rb +142 -0
- data/spec/framework_spec/app/spec/core/proc/dup_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/proc/element_reference_spec.rb +8 -2
- data/spec/framework_spec/app/spec/core/proc/eql_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/proc/equal_value_spec.rb +4 -12
- data/spec/framework_spec/app/spec/core/proc/fixtures/common.rb +42 -0
- data/spec/framework_spec/app/spec/core/proc/fixtures/source_location.rb +51 -0
- data/spec/framework_spec/app/spec/core/proc/hash_spec.rb +24 -0
- data/spec/framework_spec/app/spec/core/proc/lambda_spec.rb +62 -0
- data/spec/framework_spec/app/spec/core/proc/new_spec.rb +135 -46
- data/spec/framework_spec/app/spec/core/proc/parameters_spec.rb +2 -0
- data/spec/framework_spec/app/spec/core/proc/shared/call.rb +86 -34
- data/spec/framework_spec/app/spec/core/proc/shared/call_arguments.rb +7 -0
- data/spec/framework_spec/app/spec/core/proc/shared/equal.rb +93 -0
- data/spec/framework_spec/app/spec/core/proc/source_location_spec.rb +64 -0
- data/spec/framework_spec/app/spec/core/proc/to_proc_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/proc/to_s_spec.rb +16 -5
- data/spec/framework_spec/app/spec/core/proc/versions/call_1.8.7.rb +1 -0
- data/spec/framework_spec/app/spec/core/proc/versions/call_1.9.rb +1 -0
- data/spec/framework_spec/app/spec/core/proc/versions/parameters_1.9.rb +73 -0
- data/spec/framework_spec/app/spec/core/proc/yield_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/process/abort_spec.rb +16 -9
- data/spec/framework_spec/app/spec/core/process/constants_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/process/daemon_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/process/detach_spec.rb +5 -9
- data/spec/framework_spec/app/spec/core/process/egid_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/process/euid_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/process/exec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/process/exit_spec.rb +9 -1
- data/spec/framework_spec/app/spec/core/process/fork_spec.rb +38 -26
- data/spec/framework_spec/app/spec/core/process/getpgid_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/process/getpgrp_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/process/getpriority_spec.rb +8 -9
- data/spec/framework_spec/app/spec/core/process/getrlimit_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/process/gid/change_privilege_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/eid_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/process/gid/grant_privilege_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/re_exchange_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/re_exchangeable_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/rid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/sid_available_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid/switch_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/gid_spec.rb +11 -7
- data/spec/framework_spec/app/spec/core/process/groups_spec.rb +15 -17
- data/spec/framework_spec/app/spec/core/process/initgroups_spec.rb +3 -6
- data/spec/framework_spec/app/spec/core/process/kill_spec.rb +21 -17
- data/spec/framework_spec/app/spec/core/process/maxgroups_spec.rb +12 -5
- data/spec/framework_spec/app/spec/core/process/pid_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/process/ppid_spec.rb +16 -15
- data/spec/framework_spec/app/spec/core/process/setpgid_spec.rb +16 -21
- data/spec/framework_spec/app/spec/core/process/setpgrp_spec.rb +3 -8
- data/spec/framework_spec/app/spec/core/process/setpriority_spec.rb +42 -60
- data/spec/framework_spec/app/spec/core/process/setrlimit_spec.rb +38 -46
- data/spec/framework_spec/app/spec/core/process/setsid_spec.rb +20 -22
- data/spec/framework_spec/app/spec/core/process/spawn_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/process/status/_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/coredump_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/equal_value_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/exited_spec.rb +38 -0
- data/spec/framework_spec/app/spec/core/process/status/exitstatus_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/process/status/inspect_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/pid_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/process/status/right_shift_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/signaled_spec.rb +36 -0
- data/spec/framework_spec/app/spec/core/process/status/stopped_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/stopsig_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/success_spec.rb +53 -0
- data/spec/framework_spec/app/spec/core/process/status/termsig_spec.rb +41 -0
- data/spec/framework_spec/app/spec/core/process/status/to_i_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/to_int_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/status/to_s_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/getegid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/geteuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/getgid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/getuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/issetugid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setegid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/seteuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setgid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setregid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setresgid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setresuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setreuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setrgid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setruid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/sys/setuid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/times_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/process/uid/change_privilege_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/eid_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/process/uid/grant_privilege_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/re_exchange_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/re_exchangeable_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/rid_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/sid_available_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid/switch_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/process/uid_spec.rb +11 -7
- data/spec/framework_spec/app/spec/core/process/wait2_spec.rb +7 -6
- data/spec/framework_spec/app/spec/core/process/wait_spec.rb +25 -7
- data/spec/framework_spec/app/spec/core/process/waitall_spec.rb +10 -8
- data/spec/framework_spec/app/spec/core/process/waitpid2_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/process/waitpid_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/random/bytes_spec.rb +40 -0
- data/spec/framework_spec/app/spec/core/random/equal_value_spec.rb +39 -0
- data/spec/framework_spec/app/spec/core/random/new_seed_spec.rb +27 -0
- data/spec/framework_spec/app/spec/core/random/new_spec.rb +33 -0
- data/spec/framework_spec/app/spec/core/random/rand_spec.rb +218 -0
- data/spec/framework_spec/app/spec/core/random/seed_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/random/srand_spec.rb +43 -0
- data/spec/framework_spec/app/spec/core/range/begin_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/case_compare_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/cover_spec.rb +57 -0
- data/spec/framework_spec/app/spec/core/range/each_spec.rb +5 -4
- data/spec/framework_spec/app/spec/core/range/end_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/eql_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/equal_value_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/exclude_end_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/range/first_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/hash_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/include_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/initialize_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/range/inspect_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/last_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/max_spec.rb +55 -0
- data/spec/framework_spec/app/spec/core/range/member_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/min_spec.rb +55 -0
- data/spec/framework_spec/app/spec/core/range/new_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/range/shared/equal_value.rb +2 -2
- data/spec/framework_spec/app/spec/core/range/shared/include.rb +9 -0
- data/spec/framework_spec/app/spec/core/range/step_spec.rb +4 -3
- data/spec/framework_spec/app/spec/core/range/to_a_spec.rb +10 -3
- data/spec/framework_spec/app/spec/core/range/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/rational/Rational_spec.rb +35 -0
- data/spec/framework_spec/app/spec/core/rational/abs_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/ceil_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/coerce_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/comparison_spec.rb +23 -0
- data/spec/framework_spec/app/spec/core/rational/denominator_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/div_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/rational/divide_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/rational/divmod_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/rational/equal_value_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/rational/exponent_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/rational/fdiv_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/floor_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/hash_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/initialize_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/inspect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/integer_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/rational/magnitude_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/marshal_dump_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/marshal_load_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/minus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/modulo_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/multiply_spec.rb +19 -0
- data/spec/framework_spec/app/spec/core/rational/numerator_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/plus_spec.rb +18 -0
- data/spec/framework_spec/app/spec/core/rational/quo_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/rationalize_spec.rb +33 -0
- data/spec/framework_spec/app/spec/core/rational/remainder_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/round_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/to_f_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/to_i_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/to_r_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/to_s_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/truncate_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/rational/zero_spec.rb +15 -0
- data/spec/framework_spec/app/spec/core/regexp/case_compare_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/casefold_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/compile_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/encoding_spec.rb +56 -0
- data/spec/framework_spec/app/spec/core/regexp/eql_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/equal_value_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/escape_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/regexp/fixed_encoding_spec.rb +36 -0
- data/spec/framework_spec/app/spec/core/regexp/hash_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/initialize_copy_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/initialize_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/inspect_spec.rb +9 -1
- data/spec/framework_spec/app/spec/core/regexp/kcode_spec.rb +17 -16
- data/spec/framework_spec/app/spec/core/regexp/last_match_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/regexp/match_spec.rb +31 -3
- data/spec/framework_spec/app/spec/core/regexp/named_captures_spec.rb +1 -0
- data/spec/framework_spec/app/spec/core/regexp/names_spec.rb +1 -0
- data/spec/framework_spec/app/spec/core/regexp/new_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/options_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/regexp/quote_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/regexp/shared/match.rb +2 -2
- data/spec/framework_spec/app/spec/core/regexp/shared/new.rb +65 -53
- data/spec/framework_spec/app/spec/core/regexp/source_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/regexp/try_convert_spec.rb +21 -0
- data/spec/framework_spec/app/spec/core/regexp/union_spec.rb +18 -2
- data/spec/framework_spec/app/spec/core/regexp/versions/named_captures_1.9.rb +35 -0
- data/spec/framework_spec/app/spec/core/regexp/versions/names_1.9.rb +29 -0
- data/spec/framework_spec/app/spec/core/signal/list_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/signal/trap_spec.rb +106 -1
- data/spec/framework_spec/app/spec/core/string/allocate_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/string/append_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/ascii_only_spec.rb +44 -29
- data/spec/framework_spec/app/spec/core/string/bytes_spec.rb +25 -18
- data/spec/framework_spec/app/spec/core/string/bytesize_spec.rb +12 -12
- data/spec/framework_spec/app/spec/core/string/capitalize_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/string/case_compare_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/string/casecmp_spec.rb +117 -64
- data/spec/framework_spec/app/spec/core/string/center_spec.rb +24 -18
- data/spec/framework_spec/app/spec/core/string/chars_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/string/chomp_spec.rb +68 -39
- data/spec/framework_spec/app/spec/core/string/chop_spec.rb +34 -56
- data/spec/framework_spec/app/spec/core/string/chr_spec.rb +44 -0
- data/spec/framework_spec/app/spec/core/string/clear_spec.rb +39 -0
- data/spec/framework_spec/app/spec/core/string/codepoints_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/string/comparison_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/string/concat_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/count_spec.rb +26 -11
- data/spec/framework_spec/app/spec/core/string/crypt_spec.rb +35 -35
- data/spec/framework_spec/app/spec/core/string/delete_spec.rb +25 -8
- data/spec/framework_spec/app/spec/core/string/downcase_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/string/dump_spec.rb +13 -4
- data/spec/framework_spec/app/spec/core/string/each_byte_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/each_char_spec.rb +3 -29
- data/spec/framework_spec/app/spec/core/string/each_codepoint_spec.rb +8 -0
- data/spec/framework_spec/app/spec/core/string/each_line_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/each_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/element_reference_spec.rb +9 -3
- data/spec/framework_spec/app/spec/core/string/element_set_spec.rb +54 -10
- data/spec/framework_spec/app/spec/core/string/empty_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/string/encode_spec.rb +114 -0
- data/spec/framework_spec/app/spec/core/string/encoding_spec.rb +181 -0
- data/spec/framework_spec/app/spec/core/string/end_with_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/entries_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/string/eql_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/string/equal_value_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/string/fixtures/classes.rb +12 -9
- data/spec/framework_spec/app/spec/core/string/fixtures/iso-8859-9-encoding.rb +9 -0
- data/spec/framework_spec/app/spec/core/string/fixtures/utf-8-encoding.rb +7 -0
- data/spec/framework_spec/app/spec/core/string/force_encoding_spec.rb +61 -0
- data/spec/framework_spec/app/spec/core/string/getbyte_spec.rb +63 -0
- data/spec/framework_spec/app/spec/core/string/gsub_spec.rb +228 -75
- data/spec/framework_spec/app/spec/core/string/hash_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/string/hex_spec.rb +23 -9
- data/spec/framework_spec/app/spec/core/string/include_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/string/index_spec.rb +46 -52
- data/spec/framework_spec/app/spec/core/string/initialize_spec.rb +19 -21
- data/spec/framework_spec/app/spec/core/string/insert_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/inspect_spec.rb +661 -41
- data/spec/framework_spec/app/spec/core/string/intern_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/length_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/lines_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/string/ljust_spec.rb +18 -12
- data/spec/framework_spec/app/spec/core/string/lstrip_spec.rb +23 -14
- data/spec/framework_spec/app/spec/core/string/match_spec.rb +11 -11
- data/spec/framework_spec/app/spec/core/string/modulo_spec.rb +103 -45
- data/spec/framework_spec/app/spec/core/string/multiply_spec.rb +10 -10
- data/spec/framework_spec/app/spec/core/string/new_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/next_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/oct_spec.rb +59 -16
- data/spec/framework_spec/app/spec/core/string/ord_spec.rb +32 -0
- data/spec/framework_spec/app/spec/core/string/partition_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/string/plus_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/string/replace_spec.rb +18 -13
- data/spec/framework_spec/app/spec/core/string/reverse_spec.rb +16 -11
- data/spec/framework_spec/app/spec/core/string/rindex_spec.rb +75 -69
- data/spec/framework_spec/app/spec/core/string/rjust_spec.rb +18 -12
- data/spec/framework_spec/app/spec/core/string/rpartition_spec.rb +8 -3
- data/spec/framework_spec/app/spec/core/string/rstrip_spec.rb +52 -20
- data/spec/framework_spec/app/spec/core/string/scan_spec.rb +48 -23
- data/spec/framework_spec/app/spec/core/string/setbyte_spec.rb +55 -0
- data/spec/framework_spec/app/spec/core/string/shared/chars.rb +70 -0
- data/spec/framework_spec/app/spec/core/string/shared/codepoints.rb +66 -0
- data/spec/framework_spec/app/spec/core/string/shared/concat.rb +9 -6
- data/spec/framework_spec/app/spec/core/string/shared/each_line.rb +27 -6
- data/spec/framework_spec/app/spec/core/string/shared/encode.rb +112 -0
- data/spec/framework_spec/app/spec/core/string/shared/slice.rb +13 -11
- data/spec/framework_spec/app/spec/core/string/shared/succ.rb +3 -3
- data/spec/framework_spec/app/spec/core/string/shared/to_s.rb +1 -1
- data/spec/framework_spec/app/spec/core/string/shared/to_sym.rb +32 -0
- data/spec/framework_spec/app/spec/core/string/shared/versions/slice_1.9.rb +78 -0
- data/spec/framework_spec/app/spec/core/string/size_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/slice_spec.rb +54 -42
- data/spec/framework_spec/app/spec/core/string/split_spec.rb +109 -60
- data/spec/framework_spec/app/spec/core/string/squeeze_spec.rb +21 -7
- data/spec/framework_spec/app/spec/core/string/start_with_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/strip_spec.rb +49 -12
- data/spec/framework_spec/app/spec/core/string/sub_spec.rb +91 -43
- data/spec/framework_spec/app/spec/core/string/succ_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/sum_spec.rb +7 -2
- data/spec/framework_spec/app/spec/core/string/swapcase_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/string/to_a_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/string/to_c_spec.rb +101 -0
- data/spec/framework_spec/app/spec/core/string/to_f_spec.rb +8 -16
- data/spec/framework_spec/app/spec/core/string/to_i_spec.rb +38 -16
- data/spec/framework_spec/app/spec/core/string/to_r_spec.rb +60 -0
- data/spec/framework_spec/app/spec/core/string/to_s_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/to_str_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/to_sym_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/string/tr_s_spec.rb +8 -8
- data/spec/framework_spec/app/spec/core/string/tr_spec.rb +37 -5
- data/spec/framework_spec/app/spec/core/string/try_convert_spec.rb +15 -17
- data/spec/framework_spec/app/spec/core/string/unpack/a_spec.rb +51 -0
- data/spec/framework_spec/app/spec/core/string/unpack/at_spec.rb +29 -0
- data/spec/framework_spec/app/spec/core/string/unpack/b_spec.rb +184 -0
- data/spec/framework_spec/app/spec/core/string/unpack/c_spec.rb +63 -0
- data/spec/framework_spec/app/spec/core/string/unpack/comment_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/string/unpack/d_spec.rb +28 -0
- data/spec/framework_spec/app/spec/core/string/unpack/e_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/string/unpack/f_spec.rb +28 -0
- data/spec/framework_spec/app/spec/core/string/unpack/g_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/string/unpack/h_spec.rb +124 -0
- data/spec/framework_spec/app/spec/core/string/unpack/i_spec.rb +72 -0
- data/spec/framework_spec/app/spec/core/string/unpack/l_spec.rb +216 -0
- data/spec/framework_spec/app/spec/core/string/unpack/m_spec.rb +165 -0
- data/spec/framework_spec/app/spec/core/string/unpack/n_spec.rb +18 -0
- data/spec/framework_spec/app/spec/core/string/unpack/percent_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/string/unpack/q_spec.rb +42 -0
- data/spec/framework_spec/app/spec/core/string/unpack/s_spec.rb +72 -0
- data/spec/framework_spec/app/spec/core/string/unpack/shared/basic.rb +25 -0
- data/spec/framework_spec/app/spec/core/string/unpack/shared/float.rb +267 -0
- data/spec/framework_spec/app/spec/core/string/unpack/shared/integer.rb +343 -0
- data/spec/framework_spec/app/spec/core/string/unpack/shared/string.rb +51 -0
- data/spec/framework_spec/app/spec/core/string/unpack/shared/unicode.rb +60 -0
- data/spec/framework_spec/app/spec/core/string/unpack/u_spec.rb +78 -0
- data/spec/framework_spec/app/spec/core/string/unpack/v_spec.rb +18 -0
- data/spec/framework_spec/app/spec/core/string/unpack/w_spec.rb +25 -0
- data/spec/framework_spec/app/spec/core/string/unpack/x_spec.rb +62 -0
- data/spec/framework_spec/app/spec/core/string/unpack/z_spec.rb +21 -0
- data/spec/framework_spec/app/spec/core/string/unpack_spec.rb +121 -32
- data/spec/framework_spec/app/spec/core/string/upcase_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/string/upto_spec.rb +21 -11
- data/spec/framework_spec/app/spec/core/string/valid_encoding_spec.rb +122 -0
- data/spec/framework_spec/app/spec/core/struct/each_pair_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/struct/each_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/struct/element_reference_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/struct/element_set_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/struct/eql_spec.rb +10 -4
- data/spec/framework_spec/app/spec/core/struct/equal_value_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/struct/fixtures/classes.rb +24 -8
- data/spec/framework_spec/app/spec/core/struct/hash_spec.rb +24 -10
- data/spec/framework_spec/app/spec/core/struct/initialize_copy_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/struct/initialize_spec.rb +9 -5
- data/spec/framework_spec/app/spec/core/struct/inspect_spec.rb +13 -6
- data/spec/framework_spec/app/spec/core/struct/length_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/struct/members_spec.rb +17 -7
- data/spec/framework_spec/app/spec/core/struct/new_spec.rb +61 -32
- data/spec/framework_spec/app/spec/core/struct/select_spec.rb +9 -9
- data/spec/framework_spec/app/spec/core/struct/shared/equal_value.rb +20 -5
- data/spec/framework_spec/app/spec/core/struct/shared/inspect.rb +13 -0
- data/spec/framework_spec/app/spec/core/struct/size_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/struct/struct_spec.rb +6 -6
- data/spec/framework_spec/app/spec/core/struct/tms/cstime_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/struct/tms/cutime_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/struct/tms/element_reference_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/struct/tms/members_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/struct/tms/new_spec.rb +5 -0
- data/spec/framework_spec/app/spec/core/struct/tms/stime_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/struct/tms/utime_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/struct/to_a_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/struct/to_s_spec.rb +6 -3
- data/spec/framework_spec/app/spec/core/struct/values_at_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/struct/values_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/symbol/all_symbols_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/symbol/capitalize_spec.rb +44 -0
- data/spec/framework_spec/app/spec/core/symbol/case_compare_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/casecmp_spec.rb +65 -0
- data/spec/framework_spec/app/spec/core/symbol/comparison_spec.rb +52 -0
- data/spec/framework_spec/app/spec/core/symbol/downcase_spec.rb +26 -0
- data/spec/framework_spec/app/spec/core/symbol/element_reference_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/empty_spec.rb +14 -0
- data/spec/framework_spec/app/spec/core/symbol/encoding_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/equal_value_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/id2name_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/inspect_spec.rb +19 -7
- data/spec/framework_spec/app/spec/core/symbol/intern_spec.rb +11 -0
- data/spec/framework_spec/app/spec/core/symbol/length_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/match_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/symbol/next_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/slice_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/succ_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/symbol/swapcase_spec.rb +34 -0
- data/spec/framework_spec/app/spec/core/symbol/to_i_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/to_int_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/to_proc_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/symbol/to_s_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/symbol/to_sym_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/symbol/upcase_spec.rb +22 -0
- data/spec/framework_spec/app/spec/core/systemexit/initialize_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/thread/abort_on_exception_spec.rb +14 -2
- data/spec/framework_spec/app/spec/core/thread/add_trace_func_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/thread/alive_spec.rb +18 -4
- data/spec/framework_spec/app/spec/core/thread/allocate_spec.rb +9 -0
- data/spec/framework_spec/app/spec/core/thread/backtrace_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/thread/critical_spec.rb +77 -75
- data/spec/framework_spec/app/spec/core/thread/current_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/thread/element_reference_spec.rb +14 -5
- data/spec/framework_spec/app/spec/core/thread/element_set_spec.rb +14 -5
- data/spec/framework_spec/app/spec/core/thread/exclusive_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/thread/exit_spec.rb +15 -5
- data/spec/framework_spec/app/spec/core/thread/fixtures/classes.rb +53 -40
- data/spec/framework_spec/app/spec/core/thread/fork_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/thread/group_spec.rb +5 -2
- data/spec/framework_spec/app/spec/core/thread/initialize_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/thread/inspect_spec.rb +8 -4
- data/spec/framework_spec/app/spec/core/thread/join_spec.rb +17 -6
- data/spec/framework_spec/app/spec/core/thread/key_spec.rb +16 -5
- data/spec/framework_spec/app/spec/core/thread/keys_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/thread/kill_spec.rb +11 -3
- data/spec/framework_spec/app/spec/core/thread/list_spec.rb +7 -2
- data/spec/framework_spec/app/spec/core/thread/main_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/thread/new_spec.rb +40 -3
- data/spec/framework_spec/app/spec/core/thread/pass_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/thread/priority_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/thread/raise_spec.rb +41 -27
- data/spec/framework_spec/app/spec/core/thread/run_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/thread/safe_level_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/thread/set_trace_func_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/thread/shared/exit.rb +38 -30
- data/spec/framework_spec/app/spec/core/thread/shared/start.rb +51 -0
- data/spec/framework_spec/app/spec/core/thread/shared/wakeup.rb +25 -13
- data/spec/framework_spec/app/spec/core/thread/start_spec.rb +9 -2
- data/spec/framework_spec/app/spec/core/thread/status_spec.rb +8 -4
- data/spec/framework_spec/app/spec/core/thread/stop_spec.rb +12 -8
- data/spec/framework_spec/app/spec/core/thread/terminate_spec.rb +7 -3
- data/spec/framework_spec/app/spec/core/thread/value_spec.rb +21 -8
- data/spec/framework_spec/app/spec/core/thread/wakeup_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/threadgroup/add_spec.rb +36 -37
- data/spec/framework_spec/app/spec/core/threadgroup/enclose_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/threadgroup/enclosed_spec.rb +5 -1
- data/spec/framework_spec/app/spec/core/threadgroup/list_spec.rb +24 -25
- data/spec/framework_spec/app/spec/core/time/_dump_spec.rb +13 -2
- data/spec/framework_spec/app/spec/core/time/_load_spec.rb +24 -2
- data/spec/framework_spec/app/spec/core/time/asctime_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/at_spec.rb +34 -14
- data/spec/framework_spec/app/spec/core/time/comparison_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/time/ctime_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/day_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/dst_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/dup_spec.rb +10 -2
- data/spec/framework_spec/app/spec/core/time/eql_spec.rb +9 -3
- data/spec/framework_spec/app/spec/core/time/fixtures/classes.rb +5 -0
- data/spec/framework_spec/app/spec/core/time/fixtures/methods.rb +1 -29
- data/spec/framework_spec/app/spec/core/time/friday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/getgm_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/getlocal_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/getutc_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/gm_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/time/gmt_offset_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/gmt_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/gmtime_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/gmtoff_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/hash_spec.rb +5 -5
- data/spec/framework_spec/app/spec/core/time/hour_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/initialize_copy_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/initialize_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/inspect_spec.rb +11 -2
- data/spec/framework_spec/app/spec/core/time/isdst_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/time/local_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/time/localtime_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/mday_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/min_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/minus_spec.rb +53 -33
- data/spec/framework_spec/app/spec/core/time/mktime_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/time/mon_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/monday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/month_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/now_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/nsec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/plus_spec.rb +64 -19
- data/spec/framework_spec/app/spec/core/time/round_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/saturday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/sec_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/shared/gmt_offset.rb +23 -0
- data/spec/framework_spec/app/spec/core/time/shared/inspect.rb +25 -0
- data/spec/framework_spec/app/spec/core/time/shared/isdst.rb +1 -1
- data/spec/framework_spec/app/spec/core/time/shared/local.rb +8 -0
- data/spec/framework_spec/app/spec/core/time/shared/now.rb +12 -4
- data/spec/framework_spec/app/spec/core/time/shared/time_params.rb +134 -35
- data/spec/framework_spec/app/spec/core/time/strftime_spec.rb +141 -2
- data/spec/framework_spec/app/spec/core/time/subsec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/succ_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/sunday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/thursday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/times_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/to_a_spec.rb +4 -3
- data/spec/framework_spec/app/spec/core/time/to_f_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/to_i_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/to_r_spec.rb +13 -0
- data/spec/framework_spec/app/spec/core/time/to_s_spec.rb +11 -2
- data/spec/framework_spec/app/spec/core/time/tuesday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/tv_nsec_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/tv_sec_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/tv_usec_spec.rb +6 -2
- data/spec/framework_spec/app/spec/core/time/usec_spec.rb +8 -2
- data/spec/framework_spec/app/spec/core/time/utc_offset_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/utc_spec.rb +7 -7
- data/spec/framework_spec/app/spec/core/time/wday_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/wednesday_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/time/yday_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/time/year_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/time/zone_spec.rb +4 -3
- data/spec/framework_spec/app/spec/core/true/and_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/true/inspect_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/true/or_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/true/to_s_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/true/xor_spec.rb +1 -1
- data/spec/framework_spec/app/spec/core/unboundmethod/arity_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/unboundmethod/bind_spec.rb +26 -6
- data/spec/framework_spec/app/spec/core/unboundmethod/clone_spec.rb +2 -2
- data/spec/framework_spec/app/spec/core/unboundmethod/eql_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/unboundmethod/equal_value_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/unboundmethod/fixtures/classes.rb +4 -1
- data/spec/framework_spec/app/spec/core/unboundmethod/hash_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/unboundmethod/inspect_spec.rb +3 -3
- data/spec/framework_spec/app/spec/core/unboundmethod/name_spec.rb +19 -5
- data/spec/framework_spec/app/spec/core/unboundmethod/owner_spec.rb +4 -4
- data/spec/framework_spec/app/spec/core/unboundmethod/parameters_spec.rb +7 -0
- data/spec/framework_spec/app/spec/core/unboundmethod/shared/to_s.rb +4 -4
- data/spec/framework_spec/app/spec/core/unboundmethod/source_location_spec.rb +31 -0
- data/spec/framework_spec/app/spec/core/unboundmethod/to_s_spec.rb +3 -3
- data/spec/framework_spec/app/spec/fixtures/class.rb +39 -16
- data/spec/framework_spec/app/spec/fixtures/class_variables.rb +7 -7
- data/spec/framework_spec/app/spec/fixtures/code/file_fixture.rb +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/line_fixture.rb +5 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_ext_fixture.rb +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.bundle +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.dll +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.dylib +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.bundle +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.dll +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.dylib +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.rb +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.so +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.rb +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/load_fixture.so +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/methods_fixture.rb +364 -0
- data/spec/framework_spec/app/spec/fixtures/code/raise_fixture.rb +1 -0
- data/spec/framework_spec/app/spec/fixtures/code/recursive_load_fixture.rb +5 -0
- data/spec/framework_spec/app/spec/fixtures/code/recursive_require_fixture.rb +3 -0
- data/spec/framework_spec/app/spec/fixtures/code/wrap_fixture.rb +3 -0
- data/spec/framework_spec/app/spec/fixtures/code_loading.rb +30 -0
- data/spec/framework_spec/app/spec/fixtures/enumerator/classes.rb +15 -0
- data/spec/framework_spec/app/spec/fixtures/kernel/callcc.rb +17 -0
- data/spec/framework_spec/app/spec/fixtures/kernel/classes.rb +56 -0
- data/spec/framework_spec/app/spec/fixtures/math/common.rb +3 -0
- data/spec/framework_spec/app/spec/fixtures/reflection.rb +352 -0
- data/spec/framework_spec/app/spec/language/BEGIN_spec.rb +57 -0
- data/spec/framework_spec/app/spec/language/README +1 -1
- data/spec/framework_spec/app/spec/language/alias_spec.rb +33 -20
- data/spec/framework_spec/app/spec/language/and_spec.rb +8 -8
- data/spec/framework_spec/app/spec/language/array_spec.rb +5 -5
- data/spec/framework_spec/app/spec/language/block_spec.rb +408 -27
- data/spec/framework_spec/app/spec/language/break_spec.rb +210 -280
- data/spec/framework_spec/app/spec/language/case_spec.rb +37 -38
- data/spec/framework_spec/app/spec/language/class_spec.rb +52 -70
- data/spec/framework_spec/app/spec/language/class_variable_spec.rb +6 -6
- data/spec/framework_spec/app/spec/language/{constants_spec_dontrun.rb → constants_spec.rb} +14 -0
- data/spec/framework_spec/app/spec/language/def_spec.rb +83 -68
- data/spec/framework_spec/app/spec/language/defined_spec.rb +1181 -142
- data/spec/framework_spec/app/spec/language/encoding_spec.rb +19 -20
- data/spec/framework_spec/app/spec/language/ensure_spec.rb +32 -37
- data/spec/framework_spec/app/spec/language/execution_spec.rb +9 -11
- data/spec/framework_spec/app/spec/language/file_spec.rb +21 -39
- data/spec/framework_spec/app/spec/language/fixtures/block.rb +26 -15
- data/spec/framework_spec/app/spec/language/fixtures/break.rb +240 -0
- data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel.rb +9 -0
- data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel_block.rb +23 -0
- data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel_method.rb +17 -0
- data/spec/framework_spec/app/spec/language/fixtures/classes.rb +8 -8
- data/spec/framework_spec/app/spec/language/fixtures/defined.rb +270 -0
- data/spec/framework_spec/app/spec/language/fixtures/ensure.rb +6 -6
- data/spec/framework_spec/app/spec/language/fixtures/file.rb +1 -1
- data/spec/framework_spec/app/spec/language/fixtures/literal_lambda.rb +7 -0
- data/spec/framework_spec/app/spec/language/fixtures/next.rb +128 -0
- data/spec/framework_spec/app/spec/language/fixtures/private.rb +3 -3
- data/spec/framework_spec/app/spec/language/fixtures/return.rb +44 -0
- data/spec/framework_spec/app/spec/language/fixtures/rubyopt.rb +1 -0
- data/spec/framework_spec/app/spec/language/fixtures/send.rb +110 -0
- data/spec/framework_spec/app/spec/language/fixtures/send_1.9.rb +20 -0
- data/spec/framework_spec/app/spec/language/fixtures/super.rb +38 -7
- data/spec/framework_spec/app/spec/language/fixtures/variables.rb +1 -1
- data/spec/framework_spec/app/spec/language/fixtures/yield.rb +20 -2
- data/spec/framework_spec/app/spec/language/for_spec.rb +63 -39
- data/spec/framework_spec/app/spec/language/hash_spec.rb +26 -1
- data/spec/framework_spec/app/spec/language/if_spec.rb +32 -2
- data/spec/framework_spec/app/spec/language/line_spec.rb +42 -17
- data/spec/framework_spec/app/spec/language/literal_lambda_spec.rb +1 -0
- data/spec/framework_spec/app/spec/language/loop_spec.rb +7 -8
- data/spec/framework_spec/app/spec/language/magic_comment_spec.rb +60 -61
- data/spec/framework_spec/app/spec/language/metaclass_spec.rb +21 -24
- data/spec/framework_spec/app/spec/language/module_spec.rb +46 -1
- data/spec/framework_spec/app/spec/language/next_spec.rb +241 -7
- data/spec/framework_spec/app/spec/language/not_spec.rb +22 -2
- data/spec/framework_spec/app/spec/language/numbers_spec.rb +5 -6
- data/spec/framework_spec/app/spec/language/or_spec.rb +33 -7
- data/spec/framework_spec/app/spec/language/order_spec.rb +3 -3
- data/spec/framework_spec/app/spec/language/precedence_spec.rb +31 -33
- data/spec/framework_spec/app/spec/language/predefined/data_spec.rb +45 -0
- data/spec/framework_spec/app/spec/language/{fixtures/predefined.rb → predefined/fixtures/data1.rb} +2 -0
- data/spec/framework_spec/app/spec/language/predefined/fixtures/data2.rb +4 -0
- data/spec/framework_spec/app/spec/language/predefined/fixtures/data3.rb +7 -0
- data/spec/framework_spec/app/spec/language/predefined/fixtures/data4.rb +4 -0
- data/spec/framework_spec/app/spec/{core/io/data/fixtures/data2.rb → language/predefined/fixtures/data_flock.rb} +1 -1
- data/spec/framework_spec/app/spec/language/predefined/fixtures/data_only.rb +2 -0
- data/spec/framework_spec/app/spec/language/predefined/fixtures/print_data.rb +3 -0
- data/spec/framework_spec/app/spec/language/predefined_spec.rb +599 -283
- data/spec/framework_spec/app/spec/language/private_spec.rb +4 -4
- data/spec/framework_spec/app/spec/language/proc_spec.rb +238 -0
- data/spec/framework_spec/app/spec/language/redo_spec.rb +2 -2
- data/spec/framework_spec/app/spec/language/regexp/anchors_spec.rb +163 -0
- data/spec/framework_spec/app/spec/language/regexp/back-references_spec.rb +50 -0
- data/spec/framework_spec/app/spec/language/regexp/character_classes_spec.rb +96 -0
- data/spec/framework_spec/app/spec/language/regexp/encoding_spec.rb +129 -0
- data/spec/framework_spec/app/spec/language/regexp/escapes_spec.rb +80 -0
- data/spec/framework_spec/app/spec/language/regexp/grouping_spec.rb +23 -0
- data/spec/framework_spec/app/spec/language/regexp/interpolation_spec.rb +55 -0
- data/spec/framework_spec/app/spec/language/regexp/modifiers_spec.rb +132 -0
- data/spec/framework_spec/app/spec/language/regexp/repetition_spec.rb +47 -0
- data/spec/framework_spec/app/spec/language/regexp/versions/character_classes_1.9.rb +499 -0
- data/spec/framework_spec/app/spec/language/regexp_spec.rb +42 -677
- data/spec/framework_spec/app/spec/language/rescue_spec.rb +57 -8
- data/spec/framework_spec/app/spec/language/retry_spec.rb +4 -4
- data/spec/framework_spec/app/spec/language/return_spec.rb +11 -2
- data/spec/framework_spec/app/spec/language/send_spec.rb +227 -0
- data/spec/framework_spec/app/spec/language/shared/__FILE__.rb +37 -0
- data/spec/framework_spec/app/spec/language/shared/__LINE__.rb +17 -0
- data/spec/framework_spec/app/spec/language/singleton_class_spec.rb +299 -0
- data/spec/framework_spec/app/spec/language/splat_spec.rb +188 -0
- data/spec/framework_spec/app/spec/language/string_spec.rb +42 -7
- data/spec/framework_spec/app/spec/language/super_spec.rb +11 -5
- data/spec/framework_spec/app/spec/language/symbol_spec.rb +18 -11
- data/spec/framework_spec/app/spec/language/throw_spec.rb +3 -3
- data/spec/framework_spec/app/spec/language/undef_spec.rb +1 -1
- data/spec/framework_spec/app/spec/language/unless_spec.rb +8 -8
- data/spec/framework_spec/app/spec/language/until_spec.rb +27 -27
- data/spec/framework_spec/app/spec/language/variables_spec.rb +57 -61
- data/spec/framework_spec/app/spec/language/versions/array_1.9.rb +8 -0
- data/spec/framework_spec/app/spec/language/versions/block_1.9.rb +80 -17
- data/spec/framework_spec/app/spec/language/versions/case_1.9.rb +5 -5
- data/spec/framework_spec/app/spec/language/versions/hash_1.9.rb +19 -0
- data/spec/framework_spec/app/spec/language/versions/literal_lambda_1.9.rb +143 -0
- data/spec/framework_spec/app/spec/language/versions/not_1.9.rb +22 -0
- data/spec/framework_spec/app/spec/language/versions/regexp_1.9.rb +3 -3
- data/spec/framework_spec/app/spec/language/versions/send_1.9.rb +196 -0
- data/spec/framework_spec/app/spec/language/versions/symbol_1.9.rb +10 -2
- data/spec/framework_spec/app/spec/language/versions/variables_1.9.rb +8 -0
- data/spec/framework_spec/app/spec/language/while_spec.rb +24 -24
- data/spec/framework_spec/app/spec/language/yield_spec.rb +105 -84
- data/spec/framework_spec/app/spec/library/base64/b64encode_spec.rb +36 -0
- data/spec/framework_spec/app/spec/library/base64/decode64_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/base64/decode_b_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/base64/encode64_spec.rb +14 -0
- data/spec/framework_spec/app/spec/library/digest/hexencode_spec.rb +31 -0
- data/spec/framework_spec/app/spec/library/digest/md5/append_spec.rb +3 -3
- data/spec/framework_spec/app/spec/library/digest/md5/block_length_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/digest_bang_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/digest_length_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/digest_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/equal_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/file_spec.rb +48 -0
- data/spec/framework_spec/app/spec/library/digest/md5/hexdigest_bang_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/hexdigest_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/inspect_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/length_spec.rb +3 -3
- data/spec/framework_spec/app/spec/library/digest/md5/reset_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/shared/constants.rb +1 -1
- data/spec/framework_spec/app/spec/library/digest/md5/shared/sample.rb +1 -1
- data/spec/framework_spec/app/spec/library/digest/md5/size_spec.rb +3 -3
- data/spec/framework_spec/app/spec/library/digest/md5/to_s_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/md5/update_spec.rb +3 -3
- data/spec/framework_spec/app/spec/library/digest/sha1/digest_spec.rb +2 -2
- data/spec/framework_spec/app/spec/library/digest/sha1/file_spec.rb +43 -0
- data/spec/framework_spec/app/spec/library/digest/sha1/shared/constants.rb +1 -1
- data/spec/framework_spec/app/spec/library/set/add_spec.rb +27 -0
- data/spec/framework_spec/app/spec/library/set/append_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/classify_spec.rb +35 -0
- data/spec/framework_spec/app/spec/library/set/clear_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/collect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/constructor_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/delete_if_spec.rb +46 -0
- data/spec/framework_spec/app/spec/library/set/delete_spec.rb +37 -0
- data/spec/framework_spec/app/spec/library/set/difference_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/divide_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/each_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/empty_spec.rb +10 -0
- data/spec/framework_spec/app/spec/library/set/enumerable/to_set_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/set/eql_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/equal_value_spec.rb +38 -0
- data/spec/framework_spec/app/spec/library/set/exclusion_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/flatten_merge_spec.rb +23 -0
- data/spec/framework_spec/app/spec/library/set/flatten_spec.rb +40 -0
- data/spec/framework_spec/app/spec/library/set/hash_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/include_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/initialize_copy_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/initialize_spec.rb +24 -0
- data/spec/framework_spec/app/spec/library/set/inspect_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/intersection_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/set/keep_if_spec.rb +41 -0
- data/spec/framework_spec/app/spec/library/set/length_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/map_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/member_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/merge_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/set/minus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/plus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/pretty_print_cycle_spec.rb +10 -0
- data/spec/framework_spec/app/spec/library/set/pretty_print_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/proper_subset_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/proper_superset_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/reject_spec.rb +50 -0
- data/spec/framework_spec/app/spec/library/set/replace_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/select_spec.rb +45 -0
- data/spec/framework_spec/app/spec/library/set/shared/add.rb +14 -0
- data/spec/framework_spec/app/spec/library/set/shared/collect.rb +20 -0
- data/spec/framework_spec/app/spec/library/set/shared/difference.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/shared/include.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/shared/intersection.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/shared/length.rb +6 -0
- data/spec/framework_spec/app/spec/library/set/shared/union.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/add_spec.rb +36 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/append_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/classify_spec.rb +35 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/clear_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/collect_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/constructor_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/delete_if_spec.rb +48 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/delete_spec.rb +37 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/difference_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/divide_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/each_spec.rb +36 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/empty_spec.rb +10 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/eql_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/equal_value_spec.rb +13 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/exclusion_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/flatten_merge_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/flatten_spec.rb +48 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/hash_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/include_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/initialize_copy_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/initialize_spec.rb +32 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/inspect_spec.rb +10 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/intersection_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/keep_if_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/length_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/map_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/member_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/merge_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/minus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/plus_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/pretty_print_cycle_spec.rb +10 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/pretty_print_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/proper_subset_spec.rb +33 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/proper_superset_spec.rb +33 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/reject_spec.rb +52 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/replace_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/select_spec.rb +38 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/add.rb +14 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/collect.rb +20 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/difference.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/include.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/intersection.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/length.rb +6 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/shared/union.rb +15 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/subset_spec.rb +33 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/subtract_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/superset_spec.rb +33 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/to_a_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/set/sortedset/union_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/set/subset_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/subtract_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/set/superset_spec.rb +34 -0
- data/spec/framework_spec/app/spec/library/set/to_a_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/set/union_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringio/append_spec.rb +84 -0
- data/spec/framework_spec/app/spec/library/stringio/binmode_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/stringio/bytes_spec.rb +13 -0
- data/spec/framework_spec/app/spec/library/stringio/chars_spec.rb +13 -0
- data/spec/framework_spec/app/spec/library/stringio/close_read_spec.rb +31 -0
- data/spec/framework_spec/app/spec/library/stringio/close_spec.rb +23 -0
- data/spec/framework_spec/app/spec/library/stringio/close_write_spec.rb +31 -0
- data/spec/framework_spec/app/spec/library/stringio/closed_read_spec.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/closed_spec.rb +16 -0
- data/spec/framework_spec/app/spec/library/stringio/closed_write_spec.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/codepoints.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringio/each_byte_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringio/each_char_spec.rb +13 -0
- data/spec/framework_spec/app/spec/library/stringio/each_codepoint.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/each_line_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/stringio/each_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/stringio/eof_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringio/external_encoding.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/fcntl_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/stringio/fileno_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/stringio/fixtures/classes.rb +15 -0
- data/spec/framework_spec/app/spec/library/stringio/flush_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/stringio/fsync_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/stringio/getbyte_spec.rb +21 -0
- data/spec/framework_spec/app/spec/library/stringio/getc_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/stringio/gets_spec.rb +139 -0
- data/spec/framework_spec/app/spec/library/stringio/initialize_copy_spec.rb +96 -0
- data/spec/framework_spec/app/spec/library/stringio/initialize_spec.rb +194 -0
- data/spec/framework_spec/app/spec/library/stringio/internal_encoding.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/isatty_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringio/length_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringio/lineno_spec.rb +30 -0
- data/spec/framework_spec/app/spec/library/stringio/lines_spec.rb +17 -0
- data/spec/framework_spec/app/spec/library/stringio/open_spec.rb +216 -0
- data/spec/framework_spec/app/spec/library/stringio/path_spec.rb +16 -0
- data/spec/framework_spec/app/spec/library/stringio/pid_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/stringio/pos_spec.rb +28 -0
- data/spec/framework_spec/app/spec/library/stringio/print_spec.rb +114 -0
- data/spec/framework_spec/app/spec/library/stringio/printf_spec.rb +61 -0
- data/spec/framework_spec/app/spec/library/stringio/putc_spec.rb +88 -0
- data/spec/framework_spec/app/spec/library/stringio/puts_spec.rb +159 -0
- data/spec/framework_spec/app/spec/library/stringio/read_spec.rb +62 -0
- data/spec/framework_spec/app/spec/library/stringio/readbyte_spec.rb +22 -0
- data/spec/framework_spec/app/spec/library/stringio/readchar_spec.rb +20 -0
- data/spec/framework_spec/app/spec/library/stringio/readline_spec.rb +128 -0
- data/spec/framework_spec/app/spec/library/stringio/readlines_spec.rb +94 -0
- data/spec/framework_spec/app/spec/library/stringio/readpartial_spec.rb +83 -0
- data/spec/framework_spec/app/spec/library/stringio/reopen_spec.rb +304 -0
- data/spec/framework_spec/app/spec/library/stringio/rewind_spec.rb +24 -0
- data/spec/framework_spec/app/spec/library/stringio/seek_spec.rb +76 -0
- data/spec/framework_spec/app/spec/library/stringio/set_encoding.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/codepoints.rb +45 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/each.rb +115 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/each_byte.rb +60 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/each_char.rb +50 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/eof.rb +24 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/getc.rb +43 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/isatty.rb +5 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/length.rb +5 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/read.rb +125 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/readchar.rb +29 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/tell.rb +12 -0
- data/spec/framework_spec/app/spec/library/stringio/shared/write.rb +87 -0
- data/spec/framework_spec/app/spec/library/stringio/size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringio/string_spec.rb +50 -0
- data/spec/framework_spec/app/spec/library/stringio/stringio_spec.rb +9 -0
- data/spec/framework_spec/app/spec/library/stringio/sync_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/stringio/sysread_spec.rb +54 -0
- data/spec/framework_spec/app/spec/library/stringio/syswrite_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/stringio/tell_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringio/truncate_spec.rb +70 -0
- data/spec/framework_spec/app/spec/library/stringio/tty_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringio/ungetc_spec.rb +99 -0
- data/spec/framework_spec/app/spec/library/stringio/write_spec.rb +19 -0
- data/spec/framework_spec/app/spec/library/stringscanner/append_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringscanner/beginning_of_line_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/bol_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/check_spec.rb +16 -0
- data/spec/framework_spec/app/spec/library/stringscanner/check_until_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/stringscanner/clear_spec.rb +26 -0
- data/spec/framework_spec/app/spec/library/stringscanner/concat_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringscanner/dup_spec.rb +39 -0
- data/spec/framework_spec/app/spec/library/stringscanner/element_reference_spec.rb +49 -0
- data/spec/framework_spec/app/spec/library/stringscanner/empty_spec.rb +26 -0
- data/spec/framework_spec/app/spec/library/stringscanner/eos_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/exist_spec.rb +24 -0
- data/spec/framework_spec/app/spec/library/stringscanner/get_byte_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/getbyte_spec.rb +29 -0
- data/spec/framework_spec/app/spec/library/stringscanner/getch_spec.rb +44 -0
- data/spec/framework_spec/app/spec/library/stringscanner/initialize_spec.rb +28 -0
- data/spec/framework_spec/app/spec/library/stringscanner/inspect_spec.rb +20 -0
- data/spec/framework_spec/app/spec/library/stringscanner/match_spec.rb +28 -0
- data/spec/framework_spec/app/spec/library/stringscanner/matched_size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/matched_spec.rb +41 -0
- data/spec/framework_spec/app/spec/library/stringscanner/matchedsize_spec.rb +27 -0
- data/spec/framework_spec/app/spec/library/stringscanner/must_C_version_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/stringscanner/peek_spec.rb +8 -0
- data/spec/framework_spec/app/spec/library/stringscanner/peep_spec.rb +26 -0
- data/spec/framework_spec/app/spec/library/stringscanner/pointer_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringscanner/pos_spec.rb +11 -0
- data/spec/framework_spec/app/spec/library/stringscanner/post_match_spec.rb +28 -0
- data/spec/framework_spec/app/spec/library/stringscanner/pre_match_spec.rb +41 -0
- data/spec/framework_spec/app/spec/library/stringscanner/reset_spec.rb +15 -0
- data/spec/framework_spec/app/spec/library/stringscanner/rest_size_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/rest_spec.rb +48 -0
- data/spec/framework_spec/app/spec/library/stringscanner/restsize_spec.rb +26 -0
- data/spec/framework_spec/app/spec/library/stringscanner/scan_full_spec.rb +30 -0
- data/spec/framework_spec/app/spec/library/stringscanner/scan_spec.rb +43 -0
- data/spec/framework_spec/app/spec/library/stringscanner/scan_until_spec.rb +23 -0
- data/spec/framework_spec/app/spec/library/stringscanner/search_full_spec.rb +30 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/bol.rb +25 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/concat.rb +30 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/eos.rb +17 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/extract_range.rb +22 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/extract_range_matched.rb +22 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/get_byte.rb +28 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/matched_size.rb +21 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/peek.rb +44 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/pos.rb +52 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/rest_size.rb +18 -0
- data/spec/framework_spec/app/spec/library/stringscanner/shared/terminate.rb +8 -0
- data/spec/framework_spec/app/spec/library/stringscanner/skip_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/stringscanner/skip_until_spec.rb +18 -0
- data/spec/framework_spec/app/spec/library/stringscanner/string_spec.rb +40 -0
- data/spec/framework_spec/app/spec/library/stringscanner/terminate_spec.rb +7 -0
- data/spec/framework_spec/app/spec/library/stringscanner/unscan_spec.rb +29 -0
- data/spec/framework_spec/app/spec/shared/complex/Complex.rb +76 -0
- data/spec/framework_spec/app/spec/shared/complex/abs.rb +12 -0
- data/spec/framework_spec/app/spec/shared/complex/abs2.rb +12 -0
- data/spec/framework_spec/app/spec/shared/complex/arg.rb +9 -0
- data/spec/framework_spec/app/spec/shared/complex/coerce.rb +41 -0
- data/spec/framework_spec/app/spec/shared/complex/conjugate.rb +8 -0
- data/spec/framework_spec/app/spec/shared/complex/denominator.rb +13 -0
- data/spec/framework_spec/app/spec/shared/complex/divide.rb +57 -0
- data/spec/framework_spec/app/spec/shared/complex/equal_value.rb +64 -0
- data/spec/framework_spec/app/spec/shared/complex/exponent.rb +54 -0
- data/spec/framework_spec/app/spec/shared/complex/hash.rb +16 -0
- data/spec/framework_spec/app/spec/shared/complex/image.rb +10 -0
- data/spec/framework_spec/app/spec/shared/complex/inspect.rb +29 -0
- data/spec/framework_spec/app/spec/shared/complex/minus.rb +25 -0
- data/spec/framework_spec/app/spec/shared/complex/modulo.rb +25 -0
- data/spec/framework_spec/app/spec/shared/complex/multiply.rb +24 -0
- data/spec/framework_spec/app/spec/shared/complex/numerator.rb +19 -0
- data/spec/framework_spec/app/spec/shared/complex/numeric/arg.rb +43 -0
- data/spec/framework_spec/app/spec/shared/complex/numeric/conj.rb +26 -0
- data/spec/framework_spec/app/spec/shared/complex/numeric/imag.rb +26 -0
- data/spec/framework_spec/app/spec/shared/complex/numeric/polar.rb +52 -0
- data/spec/framework_spec/app/spec/shared/complex/numeric/real.rb +30 -0
- data/spec/framework_spec/app/spec/shared/complex/plus.rb +25 -0
- data/spec/framework_spec/app/spec/shared/complex/polar.rb +22 -0
- data/spec/framework_spec/app/spec/shared/complex/real.rb +8 -0
- data/spec/framework_spec/app/spec/shared/complex/rect.rb +45 -0
- data/spec/framework_spec/app/spec/shared/complex/to_s.rb +39 -0
- data/spec/framework_spec/app/spec/shared/continuation/call.rb +76 -0
- data/spec/framework_spec/app/spec/shared/continuation/new.rb +5 -0
- data/spec/framework_spec/app/spec/shared/enumerator/each.rb +45 -0
- data/spec/framework_spec/app/spec/shared/enumerator/enum_cons.rb +12 -0
- data/spec/framework_spec/app/spec/shared/enumerator/enum_for.rb +15 -0
- data/spec/framework_spec/app/spec/shared/enumerator/new.rb +42 -0
- data/spec/framework_spec/app/spec/shared/enumerator/next.rb +30 -0
- data/spec/framework_spec/app/spec/shared/enumerator/rewind.rb +32 -0
- data/spec/framework_spec/app/spec/shared/enumerator/with_index.rb +35 -0
- data/spec/framework_spec/app/spec/shared/enumerator/with_object.rb +19 -0
- data/spec/framework_spec/app/spec/shared/fiber/resume.rb +65 -0
- data/spec/framework_spec/app/spec/shared/file/blockdev.rb +7 -1
- data/spec/framework_spec/app/spec/shared/file/chardev.rb +7 -1
- data/spec/framework_spec/app/spec/shared/file/directory.rb +59 -21
- data/spec/framework_spec/app/spec/shared/file/executable.rb +10 -14
- data/spec/framework_spec/app/spec/shared/file/executable_real.rb +15 -9
- data/spec/framework_spec/app/spec/shared/file/exist.rb +9 -3
- data/spec/framework_spec/app/spec/shared/file/file.rb +12 -10
- data/spec/framework_spec/app/spec/shared/file/grpowned.rb +12 -6
- data/spec/framework_spec/app/spec/shared/file/identical.rb +21 -16
- data/spec/framework_spec/app/spec/shared/file/owned.rb +4 -0
- data/spec/framework_spec/app/spec/shared/file/pipe.rb +4 -0
- data/spec/framework_spec/app/spec/shared/file/readable.rb +16 -13
- data/spec/framework_spec/app/spec/shared/file/readable_real.rb +7 -1
- data/spec/framework_spec/app/spec/shared/file/size.rb +107 -15
- data/spec/framework_spec/app/spec/shared/file/socket.rb +4 -0
- data/spec/framework_spec/app/spec/shared/file/sticky.rb +30 -0
- data/spec/framework_spec/app/spec/shared/file/symlink.rb +20 -14
- data/spec/framework_spec/app/spec/shared/file/world_readable.rb +48 -0
- data/spec/framework_spec/app/spec/shared/file/world_writable.rb +48 -0
- data/spec/framework_spec/app/spec/shared/file/writable.rb +10 -7
- data/spec/framework_spec/app/spec/shared/file/writable_real.rb +7 -1
- data/spec/framework_spec/app/spec/shared/file/zero.rb +16 -17
- data/spec/framework_spec/app/spec/shared/io/putc.rb +57 -0
- data/spec/framework_spec/app/spec/shared/kernel/callcc.rb +68 -0
- data/spec/framework_spec/app/spec/shared/kernel/method_missing.rb +60 -0
- data/spec/framework_spec/app/spec/shared/kernel/singleton_method_added.rb +7 -0
- data/spec/framework_spec/app/spec/shared/kernel/singleton_method_removed.rb +7 -0
- data/spec/framework_spec/app/spec/shared/kernel/singleton_method_undefined.rb +7 -0
- data/spec/framework_spec/app/spec/shared/math/atanh.rb +142 -0
- data/spec/framework_spec/app/spec/shared/process/times.rb +8 -8
- data/spec/framework_spec/app/spec/shared/rational/Rational.rb +113 -0
- data/spec/framework_spec/app/spec/shared/rational/abs.rb +12 -0
- data/spec/framework_spec/app/spec/shared/rational/ceil.rb +41 -0
- data/spec/framework_spec/app/spec/shared/rational/coerce.rb +41 -0
- data/spec/framework_spec/app/spec/shared/rational/comparison.rb +86 -0
- data/spec/framework_spec/app/spec/shared/rational/denominator.rb +15 -0
- data/spec/framework_spec/app/spec/shared/rational/div.rb +81 -0
- data/spec/framework_spec/app/spec/shared/rational/divide.rb +72 -0
- data/spec/framework_spec/app/spec/shared/rational/divmod.rb +53 -0
- data/spec/framework_spec/app/spec/shared/rational/equal_value.rb +62 -0
- data/spec/framework_spec/app/spec/shared/rational/exponent.rb +144 -0
- data/spec/framework_spec/app/spec/shared/rational/fdiv.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/floor.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/hash.rb +10 -0
- data/spec/framework_spec/app/spec/shared/rational/initialize.rb +25 -0
- data/spec/framework_spec/app/spec/shared/rational/inspect.rb +24 -0
- data/spec/framework_spec/app/spec/shared/rational/marshal_dump.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/marshal_load.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/minus.rb +49 -0
- data/spec/framework_spec/app/spec/shared/rational/modulo.rb +52 -0
- data/spec/framework_spec/app/spec/shared/rational/multiply.rb +63 -0
- data/spec/framework_spec/app/spec/shared/rational/new.rb +21 -0
- data/spec/framework_spec/app/spec/shared/rational/numerator.rb +11 -0
- data/spec/framework_spec/app/spec/shared/rational/plus.rb +49 -0
- data/spec/framework_spec/app/spec/shared/rational/quo.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/reduce.rb +31 -0
- data/spec/framework_spec/app/spec/shared/rational/remainder.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/round.rb +5 -0
- data/spec/framework_spec/app/spec/shared/rational/to_f.rb +11 -0
- data/spec/framework_spec/app/spec/shared/rational/to_i.rb +15 -0
- data/spec/framework_spec/app/spec/shared/rational/to_r.rb +14 -0
- data/spec/framework_spec/app/spec/shared/rational/to_s.rb +24 -0
- data/spec/framework_spec/app/spec/shared/rational/truncate.rb +5 -0
- data/spec/framework_spec/app/spec/spec_helper.rb +1 -37
- data/spec/framework_spec/app/spec/version.rb +3 -0
- data/spec/framework_spec/app/spec_runner.rb +50 -80
- data/spec/framework_spec/build.yml +3 -4
- data/spec/framework_spec/rhoconfig.txt +4 -1
- data/spec/phone_spec/app/spec/contacts_spec.rb +8 -4
- data/spec/phone_spec/app/spec/date_spec.rb +17 -0
- data/spec/phone_spec/app/spec/rhom_object_spec.rb +11 -0
- data/spec/phone_spec/app/spec/syncengine_spec.rb +63 -1
- data/spec/phone_spec/app/spec/uri_spec.rb +2 -0
- data/spec/phone_spec/app/spec/xml_spec.rb +10 -3
- data/spec/phone_spec/app/spec_runner.rb +1 -1
- data/spec/phone_spec/build.yml +2 -2
- data/spec/phone_spec/rhoconfig.txt +1 -0
- metadata +1059 -91
- data/Manifest.txt +0 -6338
- data/doc/rhodes-api/alert-api.txt +0 -102
- data/lib/extensions/mspec/mspec/fileutils.rb +0 -1589
- data/lib/extensions/mspec/mspec/helpers/bignum.rb +0 -5
- data/lib/extensions/mspec/mspec/helpers/infinity.rb +0 -5
- data/lib/extensions/mspec/mspec/helpers/metaclass.rb +0 -7
- data/lib/extensions/mspec/mspec/helpers/nan.rb +0 -5
- data/platform/shared/ruby/blockinlining.c +0 -464
- data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b2.min.css +0 -8
- data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b2.min.js +0 -155
- data/res/generators/templates/application/public/jquery/jquery-1.6.2.min.js +0 -18
- data/spec/framework_spec/app/spec/core/basicobject/basic_object_class_spec.rb +0 -18
- data/spec/framework_spec/app/spec/core/basicobject/basic_object_spec.rb +0 -23
- data/spec/framework_spec/app/spec/core/basicobject/basic_object_subclass_spec.rb +0 -25
- data/spec/framework_spec/app/spec/core/basicobject/metaclass_spec.rb +0 -27
- data/spec/framework_spec/app/spec/core/basicobject/remove_method_missing.rb +0 -14
- data/spec/framework_spec/app/spec/core/basicobject/shared/behavior.rb +0 -16
- data/spec/framework_spec/app/spec/core/builtin_constants/builtin_constants.rb +0 -13
- data/spec/framework_spec/app/spec/core/continuation/continuation_spec.rb +0 -109
- data/spec/framework_spec/app/spec/core/dir/new_spec.rb +0 -2
- data/spec/framework_spec/app/spec/core/enumerable/each_spec.rb +0 -14
- data/spec/framework_spec/app/spec/core/fiber/alive_spec.rb +0 -54
- data/spec/framework_spec/app/spec/core/fiber/current_spec.rb +0 -63
- data/spec/framework_spec/app/spec/core/fiber/shared/resume.rb +0 -71
- data/spec/framework_spec/app/spec/core/fiber/transfer_spec.rb +0 -45
- data/spec/framework_spec/app/spec/core/io/data/data_spec.rb +0 -13
- data/spec/framework_spec/app/spec/core/io/data/fixtures/data1.rb +0 -3
- data/spec/framework_spec/app/spec/core/io/data/flock_spec.rb +0 -22
- data/spec/framework_spec/app/spec/core/io/fixtures/paragraphs.txt +0 -7
- data/spec/framework_spec/app/spec/core/io/fixtures/readlines.txt +0 -6
- data/spec/framework_spec/app/spec/core/kernel/__callee__spec.rb +0 -9
- data/spec/framework_spec/app/spec/core/kernel/__method__spec.rb +0 -9
- data/spec/framework_spec/app/spec/core/proc/fixtures/procs.rb +0 -5
- data/spec/framework_spec/app/spec/find_spec.rb +0 -56
- data/spec/framework_spec/app/spec/fixtures/load/load_spec +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec.rooby +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_1.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_10.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_2.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_3.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_4.rb +0 -12
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_5.rb +0 -2
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_6.rb +0 -2
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_7.rb +0 -2
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_8.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_9.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap.rb +0 -7
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap2.rb +0 -7
- data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap_2.rb +0 -7
- data/spec/framework_spec/app/spec/fixtures/matrix.rb +0 -5
- data/spec/framework_spec/app/spec/fixtures/require/masked_require_spec_2.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/masked_require_spec_3.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec.rooby +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec.rooby.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_1.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_10.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_2.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_3.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_4.rb +0 -12
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_6.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_7.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_8.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_9.rb +0 -1
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_raises.rb +0 -3
- data/spec/framework_spec/app/spec/fixtures/require/require_spec_recursive.rb +0 -2
- data/spec/framework_spec/app/spec/language/catch_spec.rb +0 -84
- data/spec/framework_spec/app/spec/language/eigenclass_spec.rb +0 -317
- data/spec/framework_spec/app/spec/language/else_spec.rb +0 -1
- data/spec/framework_spec/app/spec/language/method_spec.rb +0 -273
- data/spec/framework_spec/app/spec/language/versions/array_1.8.rb +0 -13
- data/spec/framework_spec/app/spec/language/versions/method_1.9.rb +0 -137
- data/spec/framework_spec/app/spec/language/versions/symbol_1.8.rb +0 -5
@@ -160,8 +160,8 @@ void rho_ruby_stop_threadidle()
|
|
160
160
|
g_th_stored = 0;
|
161
161
|
}
|
162
162
|
}
|
163
|
-
|
164
|
-
#if !defined(OS_SYMBIAN) && (defined(RHO_SYMBIAN) || defined (RHODES_EMULATOR))
|
163
|
+
|
164
|
+
#if !defined(OS_SYMBIAN) && (defined(RHO_SYMBIAN))// || defined (RHODES_EMULATOR))
|
165
165
|
int daylight;
|
166
166
|
char *tzname[2];
|
167
167
|
#endif
|
@@ -299,7 +299,7 @@ int rho_ruby_is_enabled_eval()
|
|
299
299
|
#ifdef RHODES_EMULATOR
|
300
300
|
return 1;
|
301
301
|
#else
|
302
|
-
return
|
302
|
+
return 1;
|
303
303
|
#endif
|
304
304
|
}
|
305
305
|
|
@@ -640,7 +640,7 @@ rho_param *rho_param_fromvalue(VALUE v)
|
|
640
640
|
for (i = 0; i < size; ++i) {
|
641
641
|
VALUE key = rb_ary_entry(keys, i);
|
642
642
|
VALUE value = rb_hash_aref(v, key);
|
643
|
-
p->v.hash->name[i] = strdup(
|
643
|
+
p->v.hash->name[i] = strdup(RSTRING_PTR(rb_String(key)));
|
644
644
|
p->v.hash->value[i] = rho_param_fromvalue(value);
|
645
645
|
}
|
646
646
|
return p;
|
@@ -750,7 +750,7 @@ VALUE rho_ruby_main_thread()
|
|
750
750
|
|
751
751
|
VALUE rho_ruby_current_thread()
|
752
752
|
{
|
753
|
-
if ( ruby_native_thread_p() !=
|
753
|
+
if ( ruby_native_thread_p() != 1 )
|
754
754
|
return 0;
|
755
755
|
|
756
756
|
return rb_thread_current();
|
@@ -886,3 +886,7 @@ rb_type_to_s(VALUE obj)
|
|
886
886
|
}
|
887
887
|
}
|
888
888
|
|
889
|
+
int rho_is_eval_disabled()
|
890
|
+
{
|
891
|
+
return !rho_conf_getBool("enable_eval");
|
892
|
+
}
|
@@ -417,7 +417,7 @@ VALUE require_compiled(VALUE fname, VALUE* result)
|
|
417
417
|
|
418
418
|
if ( strcmp("strscan",szName1)==0 || strcmp("enumerator",szName1)==0 ||
|
419
419
|
strcmp("stringio",szName1)==0 || strcmp("socket",szName1)==0 ||
|
420
|
-
strcmp("digest.so",szName1)==0 ||
|
420
|
+
strcmp("digest.so",szName1)==0 ||
|
421
421
|
strcmp("fcntl",szName1)==0 || strcmp("digest/md5",szName1)==0 ||
|
422
422
|
strcmp("digest/sha1",szName1)==0 )
|
423
423
|
return Qtrue;
|
@@ -66,8 +66,8 @@ static VALUE db_init(int argc, VALUE *argv, VALUE self)
|
|
66
66
|
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
|
67
67
|
|
68
68
|
Data_Get_Struct(self, void *, ppDB);
|
69
|
-
szDbName =
|
70
|
-
szDbPartition =
|
69
|
+
szDbName = StringValuePtr(argv[0]);
|
70
|
+
szDbPartition = StringValuePtr(argv[1]);
|
71
71
|
|
72
72
|
result = (int)rho_db_open(szDbName, szDbPartition, ppDB);//sqlite3_open(szDbName,ppDB);
|
73
73
|
if ( result != SQLITE_OK )
|
@@ -3,9 +3,9 @@
|
|
3
3
|
%{
|
4
4
|
/* Put header files here or function declarations like below */
|
5
5
|
#define dosync rho_sync_doSyncAllSources
|
6
|
-
extern VALUE rho_sync_doSyncAllSources(int show_status_popup);
|
6
|
+
extern VALUE rho_sync_doSyncAllSources(int show_status_popup, const char * query_params);
|
7
7
|
#define dosync_source rho_sync_doSyncSource
|
8
|
-
extern VALUE rho_sync_doSyncSource(VALUE source_id,int show_status_popup);
|
8
|
+
extern VALUE rho_sync_doSyncSource(VALUE source_id,int show_status_popup, const char * query_params);
|
9
9
|
#define dosearch rho_sync_doSearch
|
10
10
|
extern VALUE rho_sync_doSearch(VALUE ar_sources, const char *from, const char *params, int sync_changes, int nProgressStep, const char* callback, const char* callback_params);
|
11
11
|
extern VALUE rho_sync_login(const char *login, const char *password, const char* callback);
|
@@ -69,6 +69,9 @@
|
|
69
69
|
|
70
70
|
extern VALUE rho_sync_is_syncing();
|
71
71
|
#define is_syncing rho_sync_is_syncing
|
72
|
+
|
73
|
+
extern VALUE rho_sync_register_push();
|
74
|
+
#define register_push rho_sync_register_push
|
72
75
|
|
73
76
|
#if !defined(bool)
|
74
77
|
#define bool int
|
@@ -80,8 +83,13 @@
|
|
80
83
|
%typemap(default) bool show_status_popup {
|
81
84
|
$1 = 1;
|
82
85
|
}
|
83
|
-
|
84
|
-
|
86
|
+
|
87
|
+
%typemap(default) const char * query_params {
|
88
|
+
$1 = 0;
|
89
|
+
}
|
90
|
+
|
91
|
+
extern VALUE dosync(bool show_status_popup, const char * query_params);
|
92
|
+
extern VALUE dosync_source(VALUE source_id, bool show_status_popup, const char * query_params);
|
85
93
|
extern VALUE dosearch(VALUE ar_sources, const char *from, const char *params, bool sync_changes, int nProgressStep, const char* callback, const char* callback_params);
|
86
94
|
extern VALUE login(const char *login, const char *password, const char* callback);
|
87
95
|
extern int logged_in();
|
@@ -105,4 +113,5 @@ extern void enable_status_popup(bool b);
|
|
105
113
|
extern void set_source_property(int nSrcID, const char* szPropName, const char* szPropValue);
|
106
114
|
extern void set_ssl_verify_peer(bool b);
|
107
115
|
extern void update_blob_attribs(const char* szPartition, int source_id);
|
108
|
-
extern VALUE is_syncing();
|
116
|
+
extern VALUE is_syncing();
|
117
|
+
extern void register_push();
|
@@ -1816,9 +1816,9 @@ static VALUE mSyncEngine;
|
|
1816
1816
|
|
1817
1817
|
/* Put header files here or function declarations like below */
|
1818
1818
|
#define dosync rho_sync_doSyncAllSources
|
1819
|
-
extern VALUE rho_sync_doSyncAllSources(int show_status_popup);
|
1819
|
+
extern VALUE rho_sync_doSyncAllSources(int show_status_popup, const char * query_params);
|
1820
1820
|
#define dosync_source rho_sync_doSyncSource
|
1821
|
-
extern VALUE rho_sync_doSyncSource(VALUE source_id,int show_status_popup);
|
1821
|
+
extern VALUE rho_sync_doSyncSource(VALUE source_id,int show_status_popup, const char * query_params);
|
1822
1822
|
#define dosearch rho_sync_doSearch
|
1823
1823
|
extern VALUE rho_sync_doSearch(VALUE ar_sources, const char *from, const char *params, int sync_changes, int nProgressStep, const char* callback, const char* callback_params);
|
1824
1824
|
extern VALUE rho_sync_login(const char *login, const char *password, const char* callback);
|
@@ -1882,6 +1882,9 @@ static VALUE mSyncEngine;
|
|
1882
1882
|
|
1883
1883
|
extern VALUE rho_sync_is_syncing();
|
1884
1884
|
#define is_syncing rho_sync_is_syncing
|
1885
|
+
|
1886
|
+
extern VALUE rho_sync_register_push();
|
1887
|
+
#define register_push rho_sync_register_push
|
1885
1888
|
|
1886
1889
|
#if !defined(bool)
|
1887
1890
|
#define bool int
|
@@ -1907,7 +1910,7 @@ SWIG_ruby_failed(void)
|
|
1907
1910
|
}
|
1908
1911
|
|
1909
1912
|
|
1910
|
-
/*@SWIG
|
1913
|
+
/*@SWIG:C:\Install\swigwin-2.0.4\Lib\ruby\rubyprimtypes.swg,19,%ruby_aux_method@*/
|
1911
1914
|
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE *args)
|
1912
1915
|
{
|
1913
1916
|
VALUE obj = args[0];
|
@@ -2038,15 +2041,22 @@ SWIG_From_int (int value)
|
|
2038
2041
|
SWIGINTERN VALUE
|
2039
2042
|
_wrap_dosync(int argc, VALUE *argv, VALUE self) {
|
2040
2043
|
bool arg1 ;
|
2044
|
+
char *arg2 = (char *) 0 ;
|
2041
2045
|
bool val1 ;
|
2042
2046
|
int ecode1 = 0 ;
|
2047
|
+
int res2 ;
|
2048
|
+
char *buf2 = 0 ;
|
2049
|
+
int alloc2 = 0 ;
|
2043
2050
|
VALUE result;
|
2044
2051
|
VALUE vresult = Qnil;
|
2045
2052
|
|
2046
2053
|
{
|
2047
2054
|
arg1 = 1;
|
2048
2055
|
}
|
2049
|
-
|
2056
|
+
{
|
2057
|
+
arg2 = 0;
|
2058
|
+
}
|
2059
|
+
if ((argc < 0) || (argc > 2)) {
|
2050
2060
|
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
2051
2061
|
}
|
2052
2062
|
if (argc > 0) {
|
@@ -2056,10 +2066,19 @@ _wrap_dosync(int argc, VALUE *argv, VALUE self) {
|
|
2056
2066
|
}
|
2057
2067
|
arg1 = (bool)(val1);
|
2058
2068
|
}
|
2059
|
-
|
2069
|
+
if (argc > 1) {
|
2070
|
+
res2 = SWIG_AsCharPtrAndSize(argv[1], &buf2, NULL, &alloc2);
|
2071
|
+
if (!SWIG_IsOK(res2)) {
|
2072
|
+
SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "char const *","dosync", 2, argv[1] ));
|
2073
|
+
}
|
2074
|
+
arg2 = (char *)(buf2);
|
2075
|
+
}
|
2076
|
+
result = (VALUE)dosync(arg1,(char const *)arg2);
|
2060
2077
|
vresult = result;
|
2078
|
+
if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
|
2061
2079
|
return vresult;
|
2062
2080
|
fail:
|
2081
|
+
if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
|
2063
2082
|
return Qnil;
|
2064
2083
|
}
|
2065
2084
|
|
@@ -2068,15 +2087,22 @@ SWIGINTERN VALUE
|
|
2068
2087
|
_wrap_dosync_source(int argc, VALUE *argv, VALUE self) {
|
2069
2088
|
VALUE arg1 = (VALUE) 0 ;
|
2070
2089
|
bool arg2 ;
|
2090
|
+
char *arg3 = (char *) 0 ;
|
2071
2091
|
bool val2 ;
|
2072
2092
|
int ecode2 = 0 ;
|
2093
|
+
int res3 ;
|
2094
|
+
char *buf3 = 0 ;
|
2095
|
+
int alloc3 = 0 ;
|
2073
2096
|
VALUE result;
|
2074
2097
|
VALUE vresult = Qnil;
|
2075
2098
|
|
2076
2099
|
{
|
2077
2100
|
arg2 = 1;
|
2078
2101
|
}
|
2079
|
-
|
2102
|
+
{
|
2103
|
+
arg3 = 0;
|
2104
|
+
}
|
2105
|
+
if ((argc < 1) || (argc > 3)) {
|
2080
2106
|
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
|
2081
2107
|
}
|
2082
2108
|
arg1 = argv[0];
|
@@ -2087,10 +2113,19 @@ _wrap_dosync_source(int argc, VALUE *argv, VALUE self) {
|
|
2087
2113
|
}
|
2088
2114
|
arg2 = (bool)(val2);
|
2089
2115
|
}
|
2090
|
-
|
2116
|
+
if (argc > 2) {
|
2117
|
+
res3 = SWIG_AsCharPtrAndSize(argv[2], &buf3, NULL, &alloc3);
|
2118
|
+
if (!SWIG_IsOK(res3)) {
|
2119
|
+
SWIG_exception_fail(SWIG_ArgError(res3), Ruby_Format_TypeError( "", "char const *","dosync_source", 3, argv[2] ));
|
2120
|
+
}
|
2121
|
+
arg3 = (char *)(buf3);
|
2122
|
+
}
|
2123
|
+
result = (VALUE)dosync_source(arg1,arg2,(char const *)arg3);
|
2091
2124
|
vresult = result;
|
2125
|
+
if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
|
2092
2126
|
return vresult;
|
2093
2127
|
fail:
|
2128
|
+
if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
|
2094
2129
|
return Qnil;
|
2095
2130
|
}
|
2096
2131
|
|
@@ -2754,6 +2789,18 @@ fail:
|
|
2754
2789
|
}
|
2755
2790
|
|
2756
2791
|
|
2792
|
+
SWIGINTERN VALUE
|
2793
|
+
_wrap_register_push(int argc, VALUE *argv, VALUE self) {
|
2794
|
+
if ((argc < 0) || (argc > 0)) {
|
2795
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
2796
|
+
}
|
2797
|
+
register_push();
|
2798
|
+
return Qnil;
|
2799
|
+
fail:
|
2800
|
+
return Qnil;
|
2801
|
+
}
|
2802
|
+
|
2803
|
+
|
2757
2804
|
|
2758
2805
|
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
|
2759
2806
|
|
@@ -3053,5 +3100,6 @@ SWIGEXPORT void Init_SyncEngine(void) {
|
|
3053
3100
|
rb_define_module_function(mSyncEngine, "set_ssl_verify_peer", _wrap_set_ssl_verify_peer, -1);
|
3054
3101
|
rb_define_module_function(mSyncEngine, "update_blob_attribs", _wrap_update_blob_attribs, -1);
|
3055
3102
|
rb_define_module_function(mSyncEngine, "is_syncing", _wrap_is_syncing, -1);
|
3103
|
+
rb_define_module_function(mSyncEngine, "register_push", _wrap_register_push, -1);
|
3056
3104
|
}
|
3057
3105
|
|
@@ -60,6 +60,10 @@ extern void rho_sys_start_timer( int interval, const char *url, const char* para
|
|
60
60
|
#define stop_timer rho_sys_stop_timer
|
61
61
|
extern void rho_sys_stop_timer( const char *url );
|
62
62
|
|
63
|
+
#define set_application_icon_badge rho_sys_set_application_icon_badge
|
64
|
+
extern void rho_sys_set_application_icon_badge(int badge_number);
|
65
|
+
|
66
|
+
|
63
67
|
#if !defined(bool)
|
64
68
|
#define bool int
|
65
69
|
#define true 1
|
@@ -83,8 +87,8 @@ extern void rho_sys_stop_timer( const char *url );
|
|
83
87
|
val = rb_hash_aref($input, key);
|
84
88
|
Check_Type(key, T_STRING);
|
85
89
|
Check_Type(val, T_STRING);
|
86
|
-
$2[i] =
|
87
|
-
$3[i] =
|
90
|
+
$2[i] = StringValuePtr(key);
|
91
|
+
$3[i] = StringValuePtr(val);
|
88
92
|
}
|
89
93
|
}
|
90
94
|
}
|
@@ -113,3 +117,4 @@ extern void app_install(const char *url);
|
|
113
117
|
extern void app_uninstall(const char *appname);
|
114
118
|
extern void start_timer( int interval, const char *url, const char* params);
|
115
119
|
extern void stop_timer( const char *url);
|
120
|
+
extern void set_application_icon_badge(int badge_number);
|
@@ -1874,6 +1874,10 @@ extern void rho_sys_start_timer( int interval, const char *url, const char* para
|
|
1874
1874
|
#define stop_timer rho_sys_stop_timer
|
1875
1875
|
extern void rho_sys_stop_timer( const char *url );
|
1876
1876
|
|
1877
|
+
#define set_application_icon_badge rho_sys_set_application_icon_badge
|
1878
|
+
extern void rho_sys_set_application_icon_badge(int badge_number);
|
1879
|
+
|
1880
|
+
|
1877
1881
|
#if !defined(bool)
|
1878
1882
|
#define bool int
|
1879
1883
|
#define true 1
|
@@ -2089,8 +2093,8 @@ _wrap_syscall(int argc, VALUE *argv, VALUE self) {
|
|
2089
2093
|
val2 = rb_hash_aref(argv[1], key2);
|
2090
2094
|
Check_Type(key2, T_STRING);
|
2091
2095
|
Check_Type(val2, T_STRING);
|
2092
|
-
arg3[i2] =
|
2093
|
-
arg4[i2] =
|
2096
|
+
arg3[i2] = StringValuePtr(key2);
|
2097
|
+
arg4[i2] = StringValuePtr(val2);
|
2094
2098
|
}
|
2095
2099
|
}
|
2096
2100
|
}
|
@@ -2553,6 +2557,27 @@ fail:
|
|
2553
2557
|
}
|
2554
2558
|
|
2555
2559
|
|
2560
|
+
SWIGINTERN VALUE
|
2561
|
+
_wrap_set_application_icon_badge(int argc, VALUE *argv, VALUE self) {
|
2562
|
+
int arg1 ;
|
2563
|
+
int val1 ;
|
2564
|
+
int ecode1 = 0 ;
|
2565
|
+
|
2566
|
+
if ((argc < 1) || (argc > 1)) {
|
2567
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
|
2568
|
+
}
|
2569
|
+
ecode1 = SWIG_AsVal_int(argv[0], &val1);
|
2570
|
+
if (!SWIG_IsOK(ecode1)) {
|
2571
|
+
SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "int","set_application_icon_badge", 1, argv[0] ));
|
2572
|
+
}
|
2573
|
+
arg1 = (int)(val1);
|
2574
|
+
set_application_icon_badge(arg1);
|
2575
|
+
return Qnil;
|
2576
|
+
fail:
|
2577
|
+
return Qnil;
|
2578
|
+
}
|
2579
|
+
|
2580
|
+
|
2556
2581
|
|
2557
2582
|
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
|
2558
2583
|
|
@@ -2850,5 +2875,6 @@ SWIGEXPORT void Init_System(void) {
|
|
2850
2875
|
rb_define_module_function(mSystem, "app_uninstall", _wrap_app_uninstall, -1);
|
2851
2876
|
rb_define_module_function(mSystem, "start_timer", _wrap_start_timer, -1);
|
2852
2877
|
rb_define_module_function(mSystem, "stop_timer", _wrap_stop_timer, -1);
|
2878
|
+
rb_define_module_function(mSystem, "set_application_icon_badge", _wrap_set_application_icon_badge, -1);
|
2853
2879
|
}
|
2854
2880
|
|
data/platform/shared/ruby/file.c
CHANGED
@@ -56,9 +56,7 @@ int flock(int, int);
|
|
56
56
|
#endif
|
57
57
|
|
58
58
|
#include <sys/types.h>
|
59
|
-
|
60
|
-
#include <common/stat.h>
|
61
|
-
/* RHO END */
|
59
|
+
#include <sys/stat.h>
|
62
60
|
|
63
61
|
#ifdef HAVE_SYS_MKDEV_H
|
64
62
|
#include <sys/mkdev.h>
|
@@ -72,20 +70,38 @@ int flock(int, int);
|
|
72
70
|
#define lstat stat
|
73
71
|
#endif
|
74
72
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
/* define system APIs */
|
74
|
+
#ifdef _WIN32__
|
75
|
+
#define STAT(p, s) rb_w32_ustati64(p, s)
|
76
|
+
#undef lstat
|
77
|
+
#define lstat(p, s) rb_w32_ustati64(p, s)
|
78
|
+
#undef access
|
79
|
+
#define access(p, m) rb_w32_uaccess(p, m)
|
80
|
+
#undef chmod
|
81
|
+
#define chmod(p, m) rb_w32_uchmod(p, m)
|
82
|
+
#undef chown
|
83
|
+
#define chown(p, o, g) rb_w32_uchown(p, o, g)
|
84
|
+
#undef utime
|
85
|
+
#define utime(p, t) rb_w32_uutime(p, t)
|
86
|
+
#undef link
|
87
|
+
#define link(f, t) rb_w32_ulink(f, t)
|
88
|
+
#undef unlink
|
89
|
+
#define unlink(p) rb_w32_uunlink(p)
|
90
|
+
#undef rename
|
91
|
+
#define rename(f, t) rb_w32_urename(f, t)
|
92
|
+
#else
|
93
|
+
#define STAT(p, s) stat(p, s)
|
94
|
+
#endif
|
79
95
|
|
80
|
-
#
|
96
|
+
#if defined(__BEOS__) || defined(__HAIKU__) /* should not change ID if -1 */
|
81
97
|
static int
|
82
98
|
be_chown(const char *path, uid_t owner, gid_t group)
|
83
99
|
{
|
84
|
-
if (owner == -1 || group == -1) {
|
100
|
+
if (owner == (uid_t)-1 || group == (gid_t)-1) {
|
85
101
|
struct stat st;
|
86
|
-
if (
|
87
|
-
if (owner == -1) owner = st.st_uid;
|
88
|
-
if (group == -1) group = st.st_gid;
|
102
|
+
if (STAT(path, &st) < 0) return -1;
|
103
|
+
if (owner == (uid_t)-1) owner = st.st_uid;
|
104
|
+
if (group == (gid_t)-1) group = st.st_gid;
|
89
105
|
}
|
90
106
|
return chown(path, owner, group);
|
91
107
|
}
|
@@ -93,43 +109,63 @@ be_chown(const char *path, uid_t owner, gid_t group)
|
|
93
109
|
static int
|
94
110
|
be_fchown(int fd, uid_t owner, gid_t group)
|
95
111
|
{
|
96
|
-
if (owner == -1 || group == -1) {
|
112
|
+
if (owner == (uid_t)-1 || group == (gid_t)-1) {
|
97
113
|
struct stat st;
|
98
114
|
if (fstat(fd, &st) < 0) return -1;
|
99
|
-
if (owner == -1) owner = st.st_uid;
|
100
|
-
if (group == -1) group = st.st_gid;
|
115
|
+
if (owner == (uid_t)-1) owner = st.st_uid;
|
116
|
+
if (group == (gid_t)-1) group = st.st_gid;
|
101
117
|
}
|
102
118
|
return fchown(fd, owner, group);
|
103
119
|
}
|
104
120
|
#define fchown be_fchown
|
105
|
-
#endif /* __BEOS__ */
|
121
|
+
#endif /* __BEOS__ || __HAIKU__ */
|
106
122
|
|
107
123
|
VALUE rb_cFile;
|
108
124
|
VALUE rb_mFileTest;
|
109
125
|
VALUE rb_cStat;
|
110
126
|
|
127
|
+
#define insecure_obj_p(obj, level) (level >= 4 || (level > 0 && OBJ_TAINTED(obj)))
|
128
|
+
|
129
|
+
static VALUE
|
130
|
+
file_path_convert(VALUE name)
|
131
|
+
{
|
132
|
+
#ifndef _WIN32 /* non Windows == Unix */
|
133
|
+
rb_encoding *fname_encoding = rb_enc_from_index(ENCODING_GET(name));
|
134
|
+
rb_encoding *fs_encoding;
|
135
|
+
if (rb_default_internal_encoding() != NULL
|
136
|
+
&& rb_usascii_encoding() != fname_encoding
|
137
|
+
&& rb_ascii8bit_encoding() != fname_encoding
|
138
|
+
&& (fs_encoding = rb_filesystem_encoding()) != fname_encoding) {
|
139
|
+
/* Don't call rb_filesystem_encoding() before US-ASCII and ASCII-8BIT */
|
140
|
+
name = rb_str_conv_enc(name, fname_encoding, fs_encoding);
|
141
|
+
}
|
142
|
+
#endif
|
143
|
+
return name;
|
144
|
+
}
|
145
|
+
|
111
146
|
static VALUE
|
112
|
-
rb_get_path_check(VALUE obj, int
|
147
|
+
rb_get_path_check(VALUE obj, int level)
|
113
148
|
{
|
114
149
|
VALUE tmp;
|
115
150
|
ID to_path;
|
116
151
|
|
117
|
-
if (
|
118
|
-
|
119
|
-
|
152
|
+
if (insecure_obj_p(obj, level)) {
|
153
|
+
rb_insecure_operation();
|
154
|
+
}
|
120
155
|
|
121
156
|
CONST_ID(to_path, "to_path");
|
122
|
-
|
123
|
-
|
124
|
-
}
|
125
|
-
else {
|
157
|
+
tmp = rb_check_funcall(obj, to_path, 0, 0);
|
158
|
+
if (tmp == Qundef) {
|
126
159
|
tmp = obj;
|
127
160
|
}
|
128
|
-
|
161
|
+
StringValue(tmp);
|
162
|
+
|
163
|
+
tmp = file_path_convert(tmp);
|
129
164
|
StringValueCStr(tmp);
|
130
|
-
if (
|
131
|
-
|
165
|
+
if (obj != tmp && insecure_obj_p(tmp, level)) {
|
166
|
+
rb_insecure_operation();
|
132
167
|
}
|
168
|
+
rb_enc_check(tmp, rb_enc_from_encoding(rb_usascii_encoding()));
|
133
169
|
return rb_str_new4(tmp);
|
134
170
|
}
|
135
171
|
|
@@ -142,7 +178,26 @@ rb_get_path_no_checksafe(VALUE obj)
|
|
142
178
|
VALUE
|
143
179
|
rb_get_path(VALUE obj)
|
144
180
|
{
|
145
|
-
return rb_get_path_check(obj,
|
181
|
+
return rb_get_path_check(obj, rb_safe_level());
|
182
|
+
}
|
183
|
+
|
184
|
+
VALUE
|
185
|
+
rb_str_encode_ospath(VALUE path)
|
186
|
+
{
|
187
|
+
#ifdef _WIN32
|
188
|
+
rb_encoding *enc = rb_enc_get(path);
|
189
|
+
if (enc != rb_ascii8bit_encoding()) {
|
190
|
+
rb_encoding *utf8 = rb_utf8_encoding();
|
191
|
+
if (enc != utf8)
|
192
|
+
path = rb_str_encode(path, rb_enc_from_encoding(utf8), 0, Qnil);
|
193
|
+
}
|
194
|
+
else if (RSTRING_LEN(path) > 0) {
|
195
|
+
path = rb_str_dup(path);
|
196
|
+
rb_enc_associate(path, rb_filesystem_encoding());
|
197
|
+
path = rb_str_encode(path, rb_enc_from_encoding(rb_utf8_encoding()), 0, Qnil);
|
198
|
+
}
|
199
|
+
#endif
|
200
|
+
return path;
|
146
201
|
}
|
147
202
|
|
148
203
|
static long
|
@@ -154,6 +209,7 @@ apply2files(void (*func)(const char *, void *), VALUE vargs, void *arg)
|
|
154
209
|
rb_secure(4);
|
155
210
|
for (i=0; i<RARRAY_LEN(vargs); i++) {
|
156
211
|
path = rb_get_path(RARRAY_PTR(vargs)[i]);
|
212
|
+
path = rb_str_encode_ospath(path);
|
157
213
|
(*func)(StringValueCStr(path), arg);
|
158
214
|
}
|
159
215
|
|
@@ -162,14 +218,14 @@ apply2files(void (*func)(const char *, void *), VALUE vargs, void *arg)
|
|
162
218
|
|
163
219
|
/*
|
164
220
|
* call-seq:
|
165
|
-
* file.path
|
166
|
-
*
|
221
|
+
* file.path -> filename
|
222
|
+
*
|
167
223
|
* Returns the pathname used to create <i>file</i> as a string. Does
|
168
224
|
* not normalize the name.
|
169
|
-
*
|
225
|
+
*
|
170
226
|
* File.new("testfile").path #=> "testfile"
|
171
227
|
* File.new("/tmp/../tmp/xxx", "w").path #=> "/tmp/../tmp/xxx"
|
172
|
-
*
|
228
|
+
*
|
173
229
|
*/
|
174
230
|
|
175
231
|
static VALUE
|
@@ -183,6 +239,17 @@ rb_file_path(VALUE obj)
|
|
183
239
|
return rb_obj_taint(rb_str_dup(fptr->pathv));
|
184
240
|
}
|
185
241
|
|
242
|
+
static size_t
|
243
|
+
stat_memsize(const void *p)
|
244
|
+
{
|
245
|
+
return p ? sizeof(struct stat) : 0;
|
246
|
+
}
|
247
|
+
|
248
|
+
static const rb_data_type_t stat_data_type = {
|
249
|
+
"stat",
|
250
|
+
NULL, RUBY_TYPED_DEFAULT_FREE, stat_memsize,
|
251
|
+
};
|
252
|
+
|
186
253
|
static VALUE
|
187
254
|
stat_new_0(VALUE klass, struct stat *st)
|
188
255
|
{
|
@@ -192,7 +259,7 @@ stat_new_0(VALUE klass, struct stat *st)
|
|
192
259
|
nst = ALLOC(struct stat);
|
193
260
|
*nst = *st;
|
194
261
|
}
|
195
|
-
return
|
262
|
+
return TypedData_Wrap_Struct(klass, &stat_data_type, nst);
|
196
263
|
}
|
197
264
|
|
198
265
|
static VALUE
|
@@ -205,7 +272,7 @@ static struct stat*
|
|
205
272
|
get_stat(VALUE self)
|
206
273
|
{
|
207
274
|
struct stat* st;
|
208
|
-
|
275
|
+
TypedData_Get_Struct(self, struct stat, &stat_data_type, st);
|
209
276
|
if (!st) rb_raise(rb_eTypeError, "uninitialized File::Stat");
|
210
277
|
return st;
|
211
278
|
}
|
@@ -214,11 +281,11 @@ static struct timespec stat_mtimespec(struct stat *st);
|
|
214
281
|
|
215
282
|
/*
|
216
283
|
* call-seq:
|
217
|
-
* stat <=> other_stat
|
218
|
-
*
|
284
|
+
* stat <=> other_stat -> -1, 0, 1, nil
|
285
|
+
*
|
219
286
|
* Compares <code>File::Stat</code> objects by comparing their
|
220
287
|
* respective modification times.
|
221
|
-
*
|
288
|
+
*
|
222
289
|
* f1 = File.new("f1", "w")
|
223
290
|
* sleep 1
|
224
291
|
* f2 = File.new("f2", "w")
|
@@ -244,29 +311,39 @@ rb_stat_cmp(VALUE self, VALUE other)
|
|
244
311
|
|
245
312
|
#define ST2UINT(val) ((val) & ~(~1UL << (sizeof(val) * CHAR_BIT - 1)))
|
246
313
|
|
314
|
+
#ifndef NUM2DEVT
|
315
|
+
# define NUM2DEVT(v) NUM2UINT(v)
|
316
|
+
#endif
|
317
|
+
#ifndef DEVT2NUM
|
318
|
+
# define DEVT2NUM(v) UINT2NUM(v)
|
319
|
+
#endif
|
320
|
+
#ifndef PRI_DEVT_PREFIX
|
321
|
+
# define PRI_DEVT_PREFIX ""
|
322
|
+
#endif
|
323
|
+
|
247
324
|
/*
|
248
325
|
* call-seq:
|
249
|
-
* stat.dev
|
250
|
-
*
|
326
|
+
* stat.dev -> fixnum
|
327
|
+
*
|
251
328
|
* Returns an integer representing the device on which <i>stat</i>
|
252
329
|
* resides.
|
253
|
-
*
|
330
|
+
*
|
254
331
|
* File.stat("testfile").dev #=> 774
|
255
332
|
*/
|
256
333
|
|
257
334
|
static VALUE
|
258
335
|
rb_stat_dev(VALUE self)
|
259
336
|
{
|
260
|
-
return
|
337
|
+
return DEVT2NUM(get_stat(self)->st_dev);
|
261
338
|
}
|
262
339
|
|
263
340
|
/*
|
264
341
|
* call-seq:
|
265
|
-
* stat.dev_major
|
266
|
-
*
|
342
|
+
* stat.dev_major -> fixnum
|
343
|
+
*
|
267
344
|
* Returns the major part of <code>File_Stat#dev</code> or
|
268
345
|
* <code>nil</code>.
|
269
|
-
*
|
346
|
+
*
|
270
347
|
* File.stat("/dev/fd1").dev_major #=> 2
|
271
348
|
* File.stat("/dev/tty").dev_major #=> 5
|
272
349
|
*/
|
@@ -274,10 +351,8 @@ rb_stat_dev(VALUE self)
|
|
274
351
|
static VALUE
|
275
352
|
rb_stat_dev_major(VALUE self)
|
276
353
|
{
|
277
|
-
|
278
|
-
|
279
|
-
long dev = get_stat(self)->st_dev;
|
280
|
-
return ULONG2NUM(major(dev));
|
354
|
+
#if defined(major)
|
355
|
+
return INT2NUM(major(get_stat(self)->st_dev));
|
281
356
|
#else
|
282
357
|
return Qnil;
|
283
358
|
#endif
|
@@ -285,11 +360,11 @@ rb_stat_dev_major(VALUE self)
|
|
285
360
|
|
286
361
|
/*
|
287
362
|
* call-seq:
|
288
|
-
* stat.dev_minor
|
289
|
-
*
|
363
|
+
* stat.dev_minor -> fixnum
|
364
|
+
*
|
290
365
|
* Returns the minor part of <code>File_Stat#dev</code> or
|
291
366
|
* <code>nil</code>.
|
292
|
-
*
|
367
|
+
*
|
293
368
|
* File.stat("/dev/fd1").dev_minor #=> 1
|
294
369
|
* File.stat("/dev/tty").dev_minor #=> 0
|
295
370
|
*/
|
@@ -297,10 +372,8 @@ rb_stat_dev_major(VALUE self)
|
|
297
372
|
static VALUE
|
298
373
|
rb_stat_dev_minor(VALUE self)
|
299
374
|
{
|
300
|
-
|
301
|
-
|
302
|
-
long dev = get_stat(self)->st_dev;
|
303
|
-
return ULONG2NUM(minor(dev));
|
375
|
+
#if defined(minor)
|
376
|
+
return INT2NUM(minor(get_stat(self)->st_dev));
|
304
377
|
#else
|
305
378
|
return Qnil;
|
306
379
|
#endif
|
@@ -308,18 +381,18 @@ rb_stat_dev_minor(VALUE self)
|
|
308
381
|
|
309
382
|
/*
|
310
383
|
* call-seq:
|
311
|
-
* stat.ino
|
312
|
-
*
|
384
|
+
* stat.ino -> fixnum
|
385
|
+
*
|
313
386
|
* Returns the inode number for <i>stat</i>.
|
314
|
-
*
|
387
|
+
*
|
315
388
|
* File.stat("testfile").ino #=> 1083669
|
316
|
-
*
|
389
|
+
*
|
317
390
|
*/
|
318
391
|
|
319
392
|
static VALUE
|
320
393
|
rb_stat_ino(VALUE self)
|
321
394
|
{
|
322
|
-
#
|
395
|
+
#if SIZEOF_STRUCT_STAT_ST_INO > SIZEOF_LONG
|
323
396
|
return ULL2NUM(get_stat(self)->st_ino);
|
324
397
|
#else
|
325
398
|
return ULONG2NUM(get_stat(self)->st_ino);
|
@@ -328,12 +401,12 @@ rb_stat_ino(VALUE self)
|
|
328
401
|
|
329
402
|
/*
|
330
403
|
* call-seq:
|
331
|
-
* stat.mode
|
332
|
-
*
|
404
|
+
* stat.mode -> fixnum
|
405
|
+
*
|
333
406
|
* Returns an integer representing the permission bits of
|
334
407
|
* <i>stat</i>. The meaning of the bits is platform dependent; on
|
335
408
|
* Unix systems, see <code>stat(2)</code>.
|
336
|
-
*
|
409
|
+
*
|
337
410
|
* File.chmod(0644, "testfile") #=> 1
|
338
411
|
* s = File.stat("testfile")
|
339
412
|
* sprintf("%o", s.mode) #=> "100644"
|
@@ -347,14 +420,14 @@ rb_stat_mode(VALUE self)
|
|
347
420
|
|
348
421
|
/*
|
349
422
|
* call-seq:
|
350
|
-
* stat.nlink
|
351
|
-
*
|
423
|
+
* stat.nlink -> fixnum
|
424
|
+
*
|
352
425
|
* Returns the number of hard links to <i>stat</i>.
|
353
|
-
*
|
426
|
+
*
|
354
427
|
* File.stat("testfile").nlink #=> 1
|
355
428
|
* File.link("testfile", "testfile.bak") #=> 0
|
356
429
|
* File.stat("testfile").nlink #=> 2
|
357
|
-
*
|
430
|
+
*
|
358
431
|
*/
|
359
432
|
|
360
433
|
static VALUE
|
@@ -365,12 +438,12 @@ rb_stat_nlink(VALUE self)
|
|
365
438
|
|
366
439
|
/*
|
367
440
|
* call-seq:
|
368
|
-
* stat.uid
|
369
|
-
*
|
441
|
+
* stat.uid -> fixnum
|
442
|
+
*
|
370
443
|
* Returns the numeric user id of the owner of <i>stat</i>.
|
371
|
-
*
|
444
|
+
*
|
372
445
|
* File.stat("testfile").uid #=> 501
|
373
|
-
*
|
446
|
+
*
|
374
447
|
*/
|
375
448
|
|
376
449
|
static VALUE
|
@@ -381,12 +454,12 @@ rb_stat_uid(VALUE self)
|
|
381
454
|
|
382
455
|
/*
|
383
456
|
* call-seq:
|
384
|
-
* stat.gid
|
385
|
-
*
|
457
|
+
* stat.gid -> fixnum
|
458
|
+
*
|
386
459
|
* Returns the numeric group id of the owner of <i>stat</i>.
|
387
|
-
*
|
460
|
+
*
|
388
461
|
* File.stat("testfile").gid #=> 500
|
389
|
-
*
|
462
|
+
*
|
390
463
|
*/
|
391
464
|
|
392
465
|
static VALUE
|
@@ -397,12 +470,12 @@ rb_stat_gid(VALUE self)
|
|
397
470
|
|
398
471
|
/*
|
399
472
|
* call-seq:
|
400
|
-
* stat.rdev
|
401
|
-
*
|
473
|
+
* stat.rdev -> fixnum or nil
|
474
|
+
*
|
402
475
|
* Returns an integer representing the device type on which
|
403
476
|
* <i>stat</i> resides. Returns <code>nil</code> if the operating
|
404
477
|
* system doesn't support this feature.
|
405
|
-
*
|
478
|
+
*
|
406
479
|
* File.stat("/dev/fd1").rdev #=> 513
|
407
480
|
* File.stat("/dev/tty").rdev #=> 1280
|
408
481
|
*/
|
@@ -419,11 +492,11 @@ rb_stat_rdev(VALUE self)
|
|
419
492
|
|
420
493
|
/*
|
421
494
|
* call-seq:
|
422
|
-
* stat.rdev_major
|
423
|
-
*
|
495
|
+
* stat.rdev_major -> fixnum
|
496
|
+
*
|
424
497
|
* Returns the major part of <code>File_Stat#rdev</code> or
|
425
498
|
* <code>nil</code>.
|
426
|
-
*
|
499
|
+
*
|
427
500
|
* File.stat("/dev/fd1").rdev_major #=> 2
|
428
501
|
* File.stat("/dev/tty").rdev_major #=> 5
|
429
502
|
*/
|
@@ -431,7 +504,7 @@ rb_stat_rdev(VALUE self)
|
|
431
504
|
static VALUE
|
432
505
|
rb_stat_rdev_major(VALUE self)
|
433
506
|
{
|
434
|
-
#if defined(HAVE_ST_RDEV) &&
|
507
|
+
#if defined(HAVE_ST_RDEV) && defined(major)
|
435
508
|
long rdev = get_stat(self)->st_rdev;
|
436
509
|
return ULONG2NUM(major(rdev));
|
437
510
|
#else
|
@@ -441,11 +514,11 @@ rb_stat_rdev_major(VALUE self)
|
|
441
514
|
|
442
515
|
/*
|
443
516
|
* call-seq:
|
444
|
-
* stat.rdev_minor
|
445
|
-
*
|
517
|
+
* stat.rdev_minor -> fixnum
|
518
|
+
*
|
446
519
|
* Returns the minor part of <code>File_Stat#rdev</code> or
|
447
520
|
* <code>nil</code>.
|
448
|
-
*
|
521
|
+
*
|
449
522
|
* File.stat("/dev/fd1").rdev_minor #=> 1
|
450
523
|
* File.stat("/dev/tty").rdev_minor #=> 0
|
451
524
|
*/
|
@@ -453,7 +526,7 @@ rb_stat_rdev_major(VALUE self)
|
|
453
526
|
static VALUE
|
454
527
|
rb_stat_rdev_minor(VALUE self)
|
455
528
|
{
|
456
|
-
#if defined(HAVE_ST_RDEV) &&
|
529
|
+
#if defined(HAVE_ST_RDEV) && defined(minor)
|
457
530
|
long rdev = get_stat(self)->st_rdev;
|
458
531
|
return ULONG2NUM(minor(rdev));
|
459
532
|
#else
|
@@ -463,10 +536,10 @@ rb_stat_rdev_minor(VALUE self)
|
|
463
536
|
|
464
537
|
/*
|
465
538
|
* call-seq:
|
466
|
-
* stat.size
|
467
|
-
*
|
539
|
+
* stat.size -> fixnum
|
540
|
+
*
|
468
541
|
* Returns the size of <i>stat</i> in bytes.
|
469
|
-
*
|
542
|
+
*
|
470
543
|
* File.stat("testfile").size #=> 66
|
471
544
|
*/
|
472
545
|
|
@@ -478,13 +551,13 @@ rb_stat_size(VALUE self)
|
|
478
551
|
|
479
552
|
/*
|
480
553
|
* call-seq:
|
481
|
-
* stat.blksize
|
482
|
-
*
|
554
|
+
* stat.blksize -> integer or nil
|
555
|
+
*
|
483
556
|
* Returns the native file system's block size. Will return <code>nil</code>
|
484
557
|
* on platforms that don't support this information.
|
485
|
-
*
|
558
|
+
*
|
486
559
|
* File.stat("testfile").blksize #=> 4096
|
487
|
-
*
|
560
|
+
*
|
488
561
|
*/
|
489
562
|
|
490
563
|
static VALUE
|
@@ -499,20 +572,24 @@ rb_stat_blksize(VALUE self)
|
|
499
572
|
|
500
573
|
/*
|
501
574
|
* call-seq:
|
502
|
-
* stat.blocks
|
503
|
-
*
|
575
|
+
* stat.blocks -> integer or nil
|
576
|
+
*
|
504
577
|
* Returns the number of native file system blocks allocated for this
|
505
|
-
* file, or <code>nil</code> if the operating system doesn't
|
578
|
+
* file, or <code>nil</code> if the operating system doesn't
|
506
579
|
* support this feature.
|
507
|
-
*
|
580
|
+
*
|
508
581
|
* File.stat("testfile").blocks #=> 2
|
509
582
|
*/
|
510
583
|
|
511
584
|
static VALUE
|
512
585
|
rb_stat_blocks(VALUE self)
|
513
586
|
{
|
514
|
-
#ifdef
|
587
|
+
#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
|
588
|
+
# if SIZEOF_STRUCT_STAT_ST_BLOCKS > SIZEOF_LONG
|
589
|
+
return ULL2NUM(get_stat(self)->st_blocks);
|
590
|
+
# else
|
515
591
|
return ULONG2NUM(get_stat(self)->st_blocks);
|
592
|
+
# endif
|
516
593
|
#else
|
517
594
|
return Qnil;
|
518
595
|
#endif
|
@@ -528,11 +605,7 @@ stat_atimespec(struct stat *st)
|
|
528
605
|
#elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC)
|
529
606
|
ts.tv_nsec = st->st_atimespec.tv_nsec;
|
530
607
|
#elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC)
|
531
|
-
# if defined(OS_ANDROID)
|
532
|
-
ts.tv_nsec = st->st_atime_nsec;
|
533
|
-
# else
|
534
608
|
ts.tv_nsec = st->st_atimensec;
|
535
|
-
# endif
|
536
609
|
#else
|
537
610
|
ts.tv_nsec = 0;
|
538
611
|
#endif
|
@@ -596,13 +669,13 @@ stat_ctime(struct stat *st)
|
|
596
669
|
|
597
670
|
/*
|
598
671
|
* call-seq:
|
599
|
-
* stat.atime
|
600
|
-
*
|
672
|
+
* stat.atime -> time
|
673
|
+
*
|
601
674
|
* Returns the last access time for this file as an object of class
|
602
675
|
* <code>Time</code>.
|
603
|
-
*
|
676
|
+
*
|
604
677
|
* File.stat("testfile").atime #=> Wed Dec 31 18:00:00 CST 1969
|
605
|
-
*
|
678
|
+
*
|
606
679
|
*/
|
607
680
|
|
608
681
|
static VALUE
|
@@ -613,12 +686,12 @@ rb_stat_atime(VALUE self)
|
|
613
686
|
|
614
687
|
/*
|
615
688
|
* call-seq:
|
616
|
-
* stat.mtime
|
617
|
-
*
|
689
|
+
* stat.mtime -> aTime
|
690
|
+
*
|
618
691
|
* Returns the modification time of <i>stat</i>.
|
619
|
-
*
|
692
|
+
*
|
620
693
|
* File.stat("testfile").mtime #=> Wed Apr 09 08:53:14 CDT 2003
|
621
|
-
*
|
694
|
+
*
|
622
695
|
*/
|
623
696
|
|
624
697
|
static VALUE
|
@@ -629,14 +702,14 @@ rb_stat_mtime(VALUE self)
|
|
629
702
|
|
630
703
|
/*
|
631
704
|
* call-seq:
|
632
|
-
* stat.ctime
|
633
|
-
*
|
705
|
+
* stat.ctime -> aTime
|
706
|
+
*
|
634
707
|
* Returns the change time for <i>stat</i> (that is, the time
|
635
708
|
* directory information about the file was changed, not the file
|
636
709
|
* itself).
|
637
|
-
*
|
710
|
+
*
|
638
711
|
* File.stat("testfile").ctime #=> Wed Apr 09 08:53:14 CDT 2003
|
639
|
-
*
|
712
|
+
*
|
640
713
|
*/
|
641
714
|
|
642
715
|
static VALUE
|
@@ -647,15 +720,15 @@ rb_stat_ctime(VALUE self)
|
|
647
720
|
|
648
721
|
/*
|
649
722
|
* call-seq:
|
650
|
-
* stat.inspect
|
723
|
+
* stat.inspect -> string
|
651
724
|
*
|
652
725
|
* Produce a nicely formatted description of <i>stat</i>.
|
653
726
|
*
|
654
727
|
* File.stat("/etc/passwd").inspect
|
655
|
-
* #=> "#<File::Stat dev=0xe000005, ino=1078078, mode=0100644,
|
656
|
-
* # nlink=1, uid=0, gid=0, rdev=0x0, size=1374, blksize=4096,
|
657
|
-
* # blocks=8, atime=Wed Dec 10 10:16:12 CST 2003,
|
658
|
-
* # mtime=Fri Sep 12 15:41:41 CDT 2003,
|
728
|
+
* #=> "#<File::Stat dev=0xe000005, ino=1078078, mode=0100644,
|
729
|
+
* # nlink=1, uid=0, gid=0, rdev=0x0, size=1374, blksize=4096,
|
730
|
+
* # blocks=8, atime=Wed Dec 10 10:16:12 CST 2003,
|
731
|
+
* # mtime=Fri Sep 12 15:41:41 CDT 2003,
|
659
732
|
* # ctime=Mon Oct 27 11:20:27 CST 2003>"
|
660
733
|
*/
|
661
734
|
|
@@ -663,7 +736,7 @@ static VALUE
|
|
663
736
|
rb_stat_inspect(VALUE self)
|
664
737
|
{
|
665
738
|
VALUE str;
|
666
|
-
|
739
|
+
size_t i;
|
667
740
|
static const struct {
|
668
741
|
const char *name;
|
669
742
|
VALUE (*func)(VALUE);
|
@@ -684,7 +757,7 @@ rb_stat_inspect(VALUE self)
|
|
684
757
|
};
|
685
758
|
|
686
759
|
struct stat* st;
|
687
|
-
|
760
|
+
TypedData_Get_Struct(self, struct stat, &stat_data_type, st);
|
688
761
|
if (!st) {
|
689
762
|
return rb_sprintf("#<%s: uninitialized>", rb_obj_classname(self));
|
690
763
|
}
|
@@ -703,10 +776,10 @@ rb_stat_inspect(VALUE self)
|
|
703
776
|
rb_str_buf_cat2(str, "=");
|
704
777
|
v = (*member[i].func)(self);
|
705
778
|
if (i == 2) { /* mode */
|
706
|
-
rb_str_catf(str, "0%lo", NUM2ULONG(v));
|
779
|
+
rb_str_catf(str, "0%lo", (unsigned long)NUM2ULONG(v));
|
707
780
|
}
|
708
781
|
else if (i == 0 || i == 6) { /* dev/rdev */
|
709
|
-
rb_str_catf(str, "0x%
|
782
|
+
rb_str_catf(str, "0x%"PRI_DEVT_PREFIX"x", NUM2DEVT(v));
|
710
783
|
}
|
711
784
|
else {
|
712
785
|
rb_str_append(str, rb_inspect(v));
|
@@ -732,7 +805,8 @@ rb_stat(VALUE file, struct stat *st)
|
|
732
805
|
return fstat(fptr->fd, st);
|
733
806
|
}
|
734
807
|
FilePathValue(file);
|
735
|
-
|
808
|
+
file = rb_str_encode_ospath(file);
|
809
|
+
return STAT(StringValueCStr(file), st);
|
736
810
|
}
|
737
811
|
|
738
812
|
#ifdef _WIN32
|
@@ -751,10 +825,18 @@ w32_io_info(VALUE *file, BY_HANDLE_FILE_INFORMATION *st)
|
|
751
825
|
if (f == (HANDLE)-1) return INVALID_HANDLE_VALUE;
|
752
826
|
}
|
753
827
|
else {
|
828
|
+
VALUE tmp;
|
829
|
+
WCHAR *ptr;
|
830
|
+
int len;
|
754
831
|
FilePathValue(*file);
|
755
|
-
|
756
|
-
|
757
|
-
|
832
|
+
tmp = rb_str_encode_ospath(*file);
|
833
|
+
len = MultiByteToWideChar(CP_UTF8, 0, RSTRING_PTR(tmp), -1, NULL, 0);
|
834
|
+
ptr = ALLOCA_N(WCHAR, len);
|
835
|
+
MultiByteToWideChar(CP_UTF8, 0, RSTRING_PTR(tmp), -1, ptr, len);
|
836
|
+
f = CreateFileW(ptr, 0,
|
837
|
+
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
|
838
|
+
rb_w32_iswin95() ? 0 : FILE_FLAG_BACKUP_SEMANTICS,
|
839
|
+
NULL);
|
758
840
|
if (f == INVALID_HANDLE_VALUE) return f;
|
759
841
|
ret = f;
|
760
842
|
}
|
@@ -769,13 +851,13 @@ w32_io_info(VALUE *file, BY_HANDLE_FILE_INFORMATION *st)
|
|
769
851
|
|
770
852
|
/*
|
771
853
|
* call-seq:
|
772
|
-
* File.stat(file_name)
|
773
|
-
*
|
854
|
+
* File.stat(file_name) -> stat
|
855
|
+
*
|
774
856
|
* Returns a <code>File::Stat</code> object for the named file (see
|
775
857
|
* <code>File::Stat</code>).
|
776
|
-
*
|
858
|
+
*
|
777
859
|
* File.stat("testfile").mtime #=> Tue Apr 08 12:58:04 CDT 2003
|
778
|
-
*
|
860
|
+
*
|
779
861
|
*/
|
780
862
|
|
781
863
|
static VALUE
|
@@ -786,7 +868,6 @@ rb_file_s_stat(VALUE klass, VALUE fname)
|
|
786
868
|
rb_secure(4);
|
787
869
|
FilePathValue(fname);
|
788
870
|
if (rb_stat(fname, &st) < 0) {
|
789
|
-
FilePathValue(fname);
|
790
871
|
rb_sys_fail(RSTRING_PTR(fname));
|
791
872
|
}
|
792
873
|
return stat_new(&st);
|
@@ -794,17 +875,17 @@ rb_file_s_stat(VALUE klass, VALUE fname)
|
|
794
875
|
|
795
876
|
/*
|
796
877
|
* call-seq:
|
797
|
-
* ios.stat
|
798
|
-
*
|
878
|
+
* ios.stat -> stat
|
879
|
+
*
|
799
880
|
* Returns status information for <em>ios</em> as an object of type
|
800
881
|
* <code>File::Stat</code>.
|
801
|
-
*
|
882
|
+
*
|
802
883
|
* f = File.new("testfile")
|
803
884
|
* s = f.stat
|
804
885
|
* "%o" % s.mode #=> "100644"
|
805
886
|
* s.blksize #=> 4096
|
806
887
|
* s.atime #=> Wed Apr 09 08:53:54 CDT 2003
|
807
|
-
*
|
888
|
+
*
|
808
889
|
*/
|
809
890
|
|
810
891
|
static VALUE
|
@@ -823,16 +904,16 @@ rb_io_stat(VALUE obj)
|
|
823
904
|
|
824
905
|
/*
|
825
906
|
* call-seq:
|
826
|
-
* File.lstat(file_name)
|
827
|
-
*
|
907
|
+
* File.lstat(file_name) -> stat
|
908
|
+
*
|
828
909
|
* Same as <code>File::stat</code>, but does not follow the last symbolic
|
829
910
|
* link. Instead, reports on the link itself.
|
830
|
-
*
|
911
|
+
*
|
831
912
|
* File.symlink("testfile", "link2test") #=> 0
|
832
913
|
* File.stat("testfile").size #=> 66
|
833
914
|
* File.lstat("link2test").size #=> 8
|
834
915
|
* File.stat("link2test").size #=> 66
|
835
|
-
*
|
916
|
+
*
|
836
917
|
*/
|
837
918
|
|
838
919
|
static VALUE
|
@@ -843,6 +924,7 @@ rb_file_s_lstat(VALUE klass, VALUE fname)
|
|
843
924
|
|
844
925
|
rb_secure(2);
|
845
926
|
FilePathValue(fname);
|
927
|
+
fname = rb_str_encode_ospath(fname);
|
846
928
|
if (lstat(StringValueCStr(fname), &st) == -1) {
|
847
929
|
rb_sys_fail(RSTRING_PTR(fname));
|
848
930
|
}
|
@@ -854,11 +936,11 @@ rb_file_s_lstat(VALUE klass, VALUE fname)
|
|
854
936
|
|
855
937
|
/*
|
856
938
|
* call-seq:
|
857
|
-
* file.lstat
|
858
|
-
*
|
939
|
+
* file.lstat -> stat
|
940
|
+
*
|
859
941
|
* Same as <code>IO#stat</code>, but does not follow the last symbolic
|
860
942
|
* link. Instead, reports on the link itself.
|
861
|
-
*
|
943
|
+
*
|
862
944
|
* File.symlink("testfile", "link2test") #=> 0
|
863
945
|
* File.stat("testfile").size #=> 66
|
864
946
|
* f = File.new("link2test")
|
@@ -872,11 +954,13 @@ rb_file_lstat(VALUE obj)
|
|
872
954
|
#ifdef HAVE_LSTAT
|
873
955
|
rb_io_t *fptr;
|
874
956
|
struct stat st;
|
957
|
+
VALUE path;
|
875
958
|
|
876
959
|
rb_secure(2);
|
877
960
|
GetOpenFile(obj, fptr);
|
878
961
|
if (NIL_P(fptr->pathv)) return Qnil;
|
879
|
-
|
962
|
+
path = rb_str_encode_ospath(fptr->pathv);
|
963
|
+
if (lstat(RSTRING_PTR(path), &st) == -1) {
|
880
964
|
rb_sys_fail_path(fptr->pathv);
|
881
965
|
}
|
882
966
|
return stat_new(&st);
|
@@ -885,13 +969,12 @@ rb_file_lstat(VALUE obj)
|
|
885
969
|
#endif
|
886
970
|
}
|
887
971
|
|
888
|
-
#ifndef HAVE_GROUP_MEMBER
|
889
972
|
static int
|
890
|
-
|
973
|
+
rb_group_member(GETGROUPS_T gid)
|
891
974
|
{
|
892
975
|
#ifndef _WIN32
|
893
976
|
if (getgid() == gid || getegid() == gid)
|
894
|
-
return
|
977
|
+
return TRUE;
|
895
978
|
|
896
979
|
# ifdef HAVE_GETGROUPS
|
897
980
|
# ifndef NGROUPS
|
@@ -908,13 +991,12 @@ group_member(GETGROUPS_T gid)
|
|
908
991
|
anum = getgroups(NGROUPS, gary);
|
909
992
|
while (--anum >= 0)
|
910
993
|
if (gary[anum] == gid)
|
911
|
-
return
|
994
|
+
return TRUE;
|
912
995
|
}
|
913
996
|
# endif
|
914
997
|
#endif
|
915
|
-
return
|
998
|
+
return FALSE;
|
916
999
|
}
|
917
|
-
#endif
|
918
1000
|
|
919
1001
|
#ifndef S_IXUGO
|
920
1002
|
# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
|
@@ -932,7 +1014,8 @@ eaccess(const char *path, int mode)
|
|
932
1014
|
struct stat st;
|
933
1015
|
rb_uid_t euid;
|
934
1016
|
|
935
|
-
if (
|
1017
|
+
if (STAT(path, &st) < 0)
|
1018
|
+
return -1;
|
936
1019
|
|
937
1020
|
euid = geteuid();
|
938
1021
|
|
@@ -951,21 +1034,28 @@ eaccess(const char *path, int mode)
|
|
951
1034
|
|
952
1035
|
if (st.st_uid == euid) /* owner */
|
953
1036
|
mode <<= 6;
|
954
|
-
else if (
|
1037
|
+
else if (rb_group_member(st.st_gid))
|
955
1038
|
mode <<= 3;
|
956
1039
|
|
957
|
-
if ((st.st_mode & mode) == mode) return 0;
|
1040
|
+
if ((int)(st.st_mode & mode) == mode) return 0;
|
958
1041
|
|
959
1042
|
return -1;
|
960
1043
|
#else
|
961
1044
|
# if defined(_MSC_VER) || defined(__MINGW32__)
|
962
1045
|
mode &= ~1;
|
963
1046
|
# endif
|
1047
|
+
|
964
1048
|
return access(path, mode);
|
965
1049
|
#endif
|
966
1050
|
}
|
967
1051
|
#endif
|
968
1052
|
|
1053
|
+
static inline int
|
1054
|
+
access_internal(const char *path, int mode)
|
1055
|
+
{
|
1056
|
+
return access(path, mode);
|
1057
|
+
}
|
1058
|
+
|
969
1059
|
|
970
1060
|
/*
|
971
1061
|
* Document-class: FileTest
|
@@ -974,25 +1064,15 @@ eaccess(const char *path, int mode)
|
|
974
1064
|
* those used in <code>File::Stat</code>. It exists as a standalone
|
975
1065
|
* module, and its methods are also insinuated into the <code>File</code>
|
976
1066
|
* class. (Note that this is not done by inclusion: the interpreter cheats).
|
977
|
-
*
|
978
|
-
*/
|
979
|
-
|
980
|
-
/*
|
981
|
-
* File.directory?(file_name) => true or false
|
982
|
-
* File.directory?(file_name) => true or false
|
983
|
-
*
|
984
|
-
* Returns <code>true</code> if the named file is a directory,
|
985
|
-
* <code>false</code> otherwise.
|
986
1067
|
*
|
987
|
-
* File.directory?(".")
|
988
1068
|
*/
|
989
1069
|
|
990
1070
|
/*
|
991
1071
|
* Document-method: exist?
|
992
1072
|
*
|
993
1073
|
* call-seq:
|
994
|
-
* Dir.exist?(file_name)
|
995
|
-
* Dir.exists?(file_name)
|
1074
|
+
* Dir.exist?(file_name) -> true or false
|
1075
|
+
* Dir.exists?(file_name) -> true or false
|
996
1076
|
*
|
997
1077
|
* Returns <code>true</code> if the named file is a directory,
|
998
1078
|
* <code>false</code> otherwise.
|
@@ -1003,10 +1083,11 @@ eaccess(const char *path, int mode)
|
|
1003
1083
|
* Document-method: directory?
|
1004
1084
|
*
|
1005
1085
|
* call-seq:
|
1006
|
-
* File.directory?(file_name)
|
1086
|
+
* File.directory?(file_name) -> true or false
|
1007
1087
|
*
|
1008
1088
|
* Returns <code>true</code> if the named file is a directory,
|
1009
|
-
* <code>false</code>
|
1089
|
+
* or a symlink that points at a directory, and <code>false</code>
|
1090
|
+
* otherwise.
|
1010
1091
|
*
|
1011
1092
|
* File.directory?(".")
|
1012
1093
|
*/
|
@@ -1017,7 +1098,6 @@ rb_file_directory_p(VALUE obj, VALUE fname)
|
|
1017
1098
|
#ifndef S_ISDIR
|
1018
1099
|
# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
|
1019
1100
|
#endif
|
1020
|
-
|
1021
1101
|
//RHO
|
1022
1102
|
#ifdef DOSISH
|
1023
1103
|
/* int ret = 1;
|
@@ -1051,7 +1131,7 @@ rb_file_directory_p(VALUE obj, VALUE fname)
|
|
1051
1131
|
|
1052
1132
|
/*
|
1053
1133
|
* call-seq:
|
1054
|
-
* File.pipe?(file_name)
|
1134
|
+
* File.pipe?(file_name) -> true or false
|
1055
1135
|
*
|
1056
1136
|
* Returns <code>true</code> if the named file is a pipe.
|
1057
1137
|
*/
|
@@ -1075,7 +1155,7 @@ rb_file_pipe_p(VALUE obj, VALUE fname)
|
|
1075
1155
|
|
1076
1156
|
/*
|
1077
1157
|
* call-seq:
|
1078
|
-
* File.symlink?(file_name)
|
1158
|
+
* File.symlink?(file_name) -> true or false
|
1079
1159
|
*
|
1080
1160
|
* Returns <code>true</code> if the named file is a symbolic link.
|
1081
1161
|
*/
|
@@ -1102,6 +1182,7 @@ rb_file_symlink_p(VALUE obj, VALUE fname)
|
|
1102
1182
|
|
1103
1183
|
rb_secure(2);
|
1104
1184
|
FilePathValue(fname);
|
1185
|
+
fname = rb_str_encode_ospath(fname);
|
1105
1186
|
if (lstat(StringValueCStr(fname), &st) < 0) return Qfalse;
|
1106
1187
|
if (S_ISLNK(st.st_mode)) return Qtrue;
|
1107
1188
|
#endif
|
@@ -1111,7 +1192,7 @@ rb_file_symlink_p(VALUE obj, VALUE fname)
|
|
1111
1192
|
|
1112
1193
|
/*
|
1113
1194
|
* call-seq:
|
1114
|
-
* File.socket?(file_name)
|
1195
|
+
* File.socket?(file_name) -> true or false
|
1115
1196
|
*
|
1116
1197
|
* Returns <code>true</code> if the named file is a socket.
|
1117
1198
|
*/
|
@@ -1145,7 +1226,7 @@ rb_file_socket_p(VALUE obj, VALUE fname)
|
|
1145
1226
|
|
1146
1227
|
/*
|
1147
1228
|
* call-seq:
|
1148
|
-
* File.blockdev?(file_name)
|
1229
|
+
* File.blockdev?(file_name) -> true or false
|
1149
1230
|
*
|
1150
1231
|
* Returns <code>true</code> if the named file is a block device.
|
1151
1232
|
*/
|
@@ -1173,7 +1254,7 @@ rb_file_blockdev_p(VALUE obj, VALUE fname)
|
|
1173
1254
|
|
1174
1255
|
/*
|
1175
1256
|
* call-seq:
|
1176
|
-
* File.chardev?(file_name)
|
1257
|
+
* File.chardev?(file_name) -> true or false
|
1177
1258
|
*
|
1178
1259
|
* Returns <code>true</code> if the named file is a character device.
|
1179
1260
|
*/
|
@@ -1194,18 +1275,16 @@ rb_file_chardev_p(VALUE obj, VALUE fname)
|
|
1194
1275
|
|
1195
1276
|
/*
|
1196
1277
|
* call-seq:
|
1197
|
-
* File.exist?(file_name)
|
1198
|
-
* File.exists?(file_name)
|
1278
|
+
* File.exist?(file_name) -> true or false
|
1279
|
+
* File.exists?(file_name) -> true or false
|
1199
1280
|
*
|
1200
1281
|
* Return <code>true</code> if the named file exists.
|
1201
1282
|
*/
|
1202
1283
|
|
1203
|
-
int rho_rhodesapp_isrubycompiler();
|
1204
1284
|
static VALUE
|
1205
1285
|
rb_file_exist_p(VALUE obj, VALUE fname)
|
1206
1286
|
{
|
1207
|
-
|
1208
|
-
struct stat st;
|
1287
|
+
struct stat st;
|
1209
1288
|
|
1210
1289
|
#ifdef DOSISH
|
1211
1290
|
/* int ret = 1;
|
@@ -1233,12 +1312,11 @@ rb_file_exist_p(VALUE obj, VALUE fname)
|
|
1233
1312
|
|
1234
1313
|
if (rb_stat(fname, &st) < 0) return Qfalse;
|
1235
1314
|
return Qtrue;
|
1236
|
-
//RHO
|
1237
1315
|
}
|
1238
1316
|
|
1239
1317
|
/*
|
1240
1318
|
* call-seq:
|
1241
|
-
* File.readable?(file_name)
|
1319
|
+
* File.readable?(file_name) -> true or false
|
1242
1320
|
*
|
1243
1321
|
* Returns <code>true</code> if the named file is readable by the effective
|
1244
1322
|
* user id of this process.
|
@@ -1249,13 +1327,14 @@ rb_file_readable_p(VALUE obj, VALUE fname)
|
|
1249
1327
|
{
|
1250
1328
|
rb_secure(2);
|
1251
1329
|
FilePathValue(fname);
|
1330
|
+
fname = rb_str_encode_ospath(fname);
|
1252
1331
|
if (eaccess(StringValueCStr(fname), R_OK) < 0) return Qfalse;
|
1253
1332
|
return Qtrue;
|
1254
1333
|
}
|
1255
1334
|
|
1256
1335
|
/*
|
1257
1336
|
* call-seq:
|
1258
|
-
* File.readable_real?(file_name)
|
1337
|
+
* File.readable_real?(file_name) -> true or false
|
1259
1338
|
*
|
1260
1339
|
* Returns <code>true</code> if the named file is readable by the real
|
1261
1340
|
* user id of this process.
|
@@ -1266,7 +1345,8 @@ rb_file_readable_real_p(VALUE obj, VALUE fname)
|
|
1266
1345
|
{
|
1267
1346
|
rb_secure(2);
|
1268
1347
|
FilePathValue(fname);
|
1269
|
-
|
1348
|
+
fname = rb_str_encode_ospath(fname);
|
1349
|
+
if (access_internal(StringValueCStr(fname), R_OK) < 0) return Qfalse;
|
1270
1350
|
return Qtrue;
|
1271
1351
|
}
|
1272
1352
|
|
@@ -1280,16 +1360,16 @@ rb_file_readable_real_p(VALUE obj, VALUE fname)
|
|
1280
1360
|
|
1281
1361
|
/*
|
1282
1362
|
* call-seq:
|
1283
|
-
* File.world_readable?(file_name)
|
1363
|
+
* File.world_readable?(file_name) -> fixnum or nil
|
1284
1364
|
*
|
1285
1365
|
* If <i>file_name</i> is readable by others, returns an integer
|
1286
1366
|
* representing the file permission bits of <i>file_name</i>. Returns
|
1287
1367
|
* <code>nil</code> otherwise. The meaning of the bits is platform
|
1288
1368
|
* dependent; on Unix systems, see <code>stat(2)</code>.
|
1289
|
-
*
|
1290
|
-
* File.world_readable?("/etc/passwd")
|
1369
|
+
*
|
1370
|
+
* File.world_readable?("/etc/passwd") #=> 420
|
1291
1371
|
* m = File.world_readable?("/etc/passwd")
|
1292
|
-
* sprintf("%o", m)
|
1372
|
+
* sprintf("%o", m) #=> "644"
|
1293
1373
|
*/
|
1294
1374
|
|
1295
1375
|
static VALUE
|
@@ -1308,7 +1388,7 @@ rb_file_world_readable_p(VALUE obj, VALUE fname)
|
|
1308
1388
|
|
1309
1389
|
/*
|
1310
1390
|
* call-seq:
|
1311
|
-
* File.writable?(file_name)
|
1391
|
+
* File.writable?(file_name) -> true or false
|
1312
1392
|
*
|
1313
1393
|
* Returns <code>true</code> if the named file is writable by the effective
|
1314
1394
|
* user id of this process.
|
@@ -1319,13 +1399,14 @@ rb_file_writable_p(VALUE obj, VALUE fname)
|
|
1319
1399
|
{
|
1320
1400
|
rb_secure(2);
|
1321
1401
|
FilePathValue(fname);
|
1402
|
+
fname = rb_str_encode_ospath(fname);
|
1322
1403
|
if (eaccess(StringValueCStr(fname), W_OK) < 0) return Qfalse;
|
1323
1404
|
return Qtrue;
|
1324
1405
|
}
|
1325
1406
|
|
1326
1407
|
/*
|
1327
1408
|
* call-seq:
|
1328
|
-
* File.writable_real?(file_name)
|
1409
|
+
* File.writable_real?(file_name) -> true or false
|
1329
1410
|
*
|
1330
1411
|
* Returns <code>true</code> if the named file is writable by the real
|
1331
1412
|
* user id of this process.
|
@@ -1336,19 +1417,20 @@ rb_file_writable_real_p(VALUE obj, VALUE fname)
|
|
1336
1417
|
{
|
1337
1418
|
rb_secure(2);
|
1338
1419
|
FilePathValue(fname);
|
1339
|
-
|
1420
|
+
fname = rb_str_encode_ospath(fname);
|
1421
|
+
if (access_internal(StringValueCStr(fname), W_OK) < 0) return Qfalse;
|
1340
1422
|
return Qtrue;
|
1341
1423
|
}
|
1342
1424
|
|
1343
1425
|
/*
|
1344
1426
|
* call-seq:
|
1345
|
-
* File.world_writable?(file_name)
|
1427
|
+
* File.world_writable?(file_name) -> fixnum or nil
|
1346
1428
|
*
|
1347
1429
|
* If <i>file_name</i> is writable by others, returns an integer
|
1348
1430
|
* representing the file permission bits of <i>file_name</i>. Returns
|
1349
1431
|
* <code>nil</code> otherwise. The meaning of the bits is platform
|
1350
1432
|
* dependent; on Unix systems, see <code>stat(2)</code>.
|
1351
|
-
*
|
1433
|
+
*
|
1352
1434
|
* File.world_writable?("/tmp") #=> 511
|
1353
1435
|
* m = File.world_writable?("/tmp")
|
1354
1436
|
* sprintf("%o", m) #=> "777"
|
@@ -1370,7 +1452,7 @@ rb_file_world_writable_p(VALUE obj, VALUE fname)
|
|
1370
1452
|
|
1371
1453
|
/*
|
1372
1454
|
* call-seq:
|
1373
|
-
* File.executable?(file_name)
|
1455
|
+
* File.executable?(file_name) -> true or false
|
1374
1456
|
*
|
1375
1457
|
* Returns <code>true</code> if the named file is executable by the effective
|
1376
1458
|
* user id of this process.
|
@@ -1381,13 +1463,14 @@ rb_file_executable_p(VALUE obj, VALUE fname)
|
|
1381
1463
|
{
|
1382
1464
|
rb_secure(2);
|
1383
1465
|
FilePathValue(fname);
|
1466
|
+
fname = rb_str_encode_ospath(fname);
|
1384
1467
|
if (eaccess(StringValueCStr(fname), X_OK) < 0) return Qfalse;
|
1385
1468
|
return Qtrue;
|
1386
1469
|
}
|
1387
1470
|
|
1388
1471
|
/*
|
1389
1472
|
* call-seq:
|
1390
|
-
* File.executable_real?(file_name)
|
1473
|
+
* File.executable_real?(file_name) -> true or false
|
1391
1474
|
*
|
1392
1475
|
* Returns <code>true</code> if the named file is executable by the real
|
1393
1476
|
* user id of this process.
|
@@ -1398,7 +1481,8 @@ rb_file_executable_real_p(VALUE obj, VALUE fname)
|
|
1398
1481
|
{
|
1399
1482
|
rb_secure(2);
|
1400
1483
|
FilePathValue(fname);
|
1401
|
-
|
1484
|
+
fname = rb_str_encode_ospath(fname);
|
1485
|
+
if (access_internal(StringValueCStr(fname), X_OK) < 0) return Qfalse;
|
1402
1486
|
return Qtrue;
|
1403
1487
|
}
|
1404
1488
|
|
@@ -1408,7 +1492,7 @@ rb_file_executable_real_p(VALUE obj, VALUE fname)
|
|
1408
1492
|
|
1409
1493
|
/*
|
1410
1494
|
* call-seq:
|
1411
|
-
* File.file?(file_name)
|
1495
|
+
* File.file?(file_name) -> true or false
|
1412
1496
|
*
|
1413
1497
|
* Returns <code>true</code> if the named file exists and is a
|
1414
1498
|
* regular file.
|
@@ -1426,7 +1510,7 @@ rb_file_file_p(VALUE obj, VALUE fname)
|
|
1426
1510
|
|
1427
1511
|
/*
|
1428
1512
|
* call-seq:
|
1429
|
-
* File.zero?(file_name)
|
1513
|
+
* File.zero?(file_name) -> true or false
|
1430
1514
|
*
|
1431
1515
|
* Returns <code>true</code> if the named file exists and has
|
1432
1516
|
* a zero size.
|
@@ -1444,7 +1528,7 @@ rb_file_zero_p(VALUE obj, VALUE fname)
|
|
1444
1528
|
|
1445
1529
|
/*
|
1446
1530
|
* call-seq:
|
1447
|
-
* File.size?(file_name)
|
1531
|
+
* File.size?(file_name) -> Integer or nil
|
1448
1532
|
*
|
1449
1533
|
* Returns +nil+ if +file_name+ doesn't exist or has zero size, the size of the
|
1450
1534
|
* file otherwise.
|
@@ -1462,7 +1546,7 @@ rb_file_size_p(VALUE obj, VALUE fname)
|
|
1462
1546
|
|
1463
1547
|
/*
|
1464
1548
|
* call-seq:
|
1465
|
-
* File.owned?(file_name)
|
1549
|
+
* File.owned?(file_name) -> true or false
|
1466
1550
|
*
|
1467
1551
|
* Returns <code>true</code> if the named file exists and the
|
1468
1552
|
* effective used id of the calling process is the owner of
|
@@ -1491,7 +1575,7 @@ rb_file_rowned_p(VALUE obj, VALUE fname)
|
|
1491
1575
|
|
1492
1576
|
/*
|
1493
1577
|
* call-seq:
|
1494
|
-
* File.grpowned?(file_name)
|
1578
|
+
* File.grpowned?(file_name) -> true or false
|
1495
1579
|
*
|
1496
1580
|
* Returns <code>true</code> if the named file exists and the
|
1497
1581
|
* effective group id of the calling process is the owner of
|
@@ -1505,7 +1589,7 @@ rb_file_grpowned_p(VALUE obj, VALUE fname)
|
|
1505
1589
|
struct stat st;
|
1506
1590
|
|
1507
1591
|
if (rb_stat(fname, &st) < 0) return Qfalse;
|
1508
|
-
if (
|
1592
|
+
if (rb_group_member(st.st_gid)) return Qtrue;
|
1509
1593
|
#endif
|
1510
1594
|
return Qfalse;
|
1511
1595
|
}
|
@@ -1518,7 +1602,8 @@ check3rdbyte(VALUE fname, int mode)
|
|
1518
1602
|
|
1519
1603
|
rb_secure(2);
|
1520
1604
|
FilePathValue(fname);
|
1521
|
-
|
1605
|
+
fname = rb_str_encode_ospath(fname);
|
1606
|
+
if (STAT(StringValueCStr(fname), &st) < 0) return Qfalse;
|
1522
1607
|
if (st.st_mode & mode) return Qtrue;
|
1523
1608
|
return Qfalse;
|
1524
1609
|
}
|
@@ -1526,7 +1611,7 @@ check3rdbyte(VALUE fname, int mode)
|
|
1526
1611
|
|
1527
1612
|
/*
|
1528
1613
|
* call-seq:
|
1529
|
-
* File.setuid?(file_name)
|
1614
|
+
* File.setuid?(file_name) -> true or false
|
1530
1615
|
*
|
1531
1616
|
* Returns <code>true</code> if the named file has the setuid bit set.
|
1532
1617
|
*/
|
@@ -1543,7 +1628,7 @@ rb_file_suid_p(VALUE obj, VALUE fname)
|
|
1543
1628
|
|
1544
1629
|
/*
|
1545
1630
|
* call-seq:
|
1546
|
-
* File.setgid?(file_name)
|
1631
|
+
* File.setgid?(file_name) -> true or false
|
1547
1632
|
*
|
1548
1633
|
* Returns <code>true</code> if the named file has the setgid bit set.
|
1549
1634
|
*/
|
@@ -1560,7 +1645,7 @@ rb_file_sgid_p(VALUE obj, VALUE fname)
|
|
1560
1645
|
|
1561
1646
|
/*
|
1562
1647
|
* call-seq:
|
1563
|
-
* File.sticky?(file_name)
|
1648
|
+
* File.sticky?(file_name) -> true or false
|
1564
1649
|
*
|
1565
1650
|
* Returns <code>true</code> if the named file has the sticky bit set.
|
1566
1651
|
*/
|
@@ -1577,7 +1662,7 @@ rb_file_sticky_p(VALUE obj, VALUE fname)
|
|
1577
1662
|
|
1578
1663
|
/*
|
1579
1664
|
* call-seq:
|
1580
|
-
* File.identical?(file_1, file_2)
|
1665
|
+
* File.identical?(file_1, file_2) -> true or false
|
1581
1666
|
*
|
1582
1667
|
* Returns <code>true</code> if the named files are identical.
|
1583
1668
|
*
|
@@ -1603,13 +1688,13 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
|
|
1603
1688
|
if (st1.st_dev != st2.st_dev) return Qfalse;
|
1604
1689
|
if (st1.st_ino != st2.st_ino) return Qfalse;
|
1605
1690
|
#else
|
1606
|
-
#ifdef _WIN32
|
1691
|
+
# ifdef _WIN32
|
1607
1692
|
BY_HANDLE_FILE_INFORMATION st1, st2;
|
1608
1693
|
HANDLE f1 = 0, f2 = 0;
|
1609
|
-
#endif
|
1694
|
+
# endif
|
1610
1695
|
|
1611
1696
|
rb_secure(2);
|
1612
|
-
#ifdef _WIN32
|
1697
|
+
# ifdef _WIN32
|
1613
1698
|
f1 = w32_io_info(&fname1, &st1);
|
1614
1699
|
if (f1 == INVALID_HANDLE_VALUE) return Qfalse;
|
1615
1700
|
f2 = w32_io_info(&fname2, &st2);
|
@@ -1623,13 +1708,15 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
|
|
1623
1708
|
return Qtrue;
|
1624
1709
|
if (!f1 || !f2) return Qfalse;
|
1625
1710
|
if (rb_w32_iswin95()) return Qfalse;
|
1626
|
-
#else
|
1711
|
+
# else
|
1627
1712
|
FilePathValue(fname1);
|
1628
1713
|
fname1 = rb_str_new4(fname1);
|
1714
|
+
fname1 = rb_str_encode_ospath(fname1);
|
1629
1715
|
FilePathValue(fname2);
|
1716
|
+
fname2 = rb_str_encode_ospath(fname2);
|
1630
1717
|
if (access(RSTRING_PTR(fname1), 0)) return Qfalse;
|
1631
1718
|
if (access(RSTRING_PTR(fname2), 0)) return Qfalse;
|
1632
|
-
#endif
|
1719
|
+
# endif
|
1633
1720
|
fname1 = rb_file_expand_path(fname1, Qnil);
|
1634
1721
|
fname2 = rb_file_expand_path(fname2, Qnil);
|
1635
1722
|
if (RSTRING_LEN(fname1) != RSTRING_LEN(fname2)) return Qfalse;
|
@@ -1641,7 +1728,7 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
|
|
1641
1728
|
|
1642
1729
|
/*
|
1643
1730
|
* call-seq:
|
1644
|
-
* File.size(file_name)
|
1731
|
+
* File.size(file_name) -> integer
|
1645
1732
|
*
|
1646
1733
|
* Returns the size of <code>file_name</code>.
|
1647
1734
|
*/
|
@@ -1701,14 +1788,14 @@ rb_file_ftype(const struct stat *st)
|
|
1701
1788
|
|
1702
1789
|
/*
|
1703
1790
|
* call-seq:
|
1704
|
-
* File.ftype(file_name)
|
1705
|
-
*
|
1791
|
+
* File.ftype(file_name) -> string
|
1792
|
+
*
|
1706
1793
|
* Identifies the type of the named file; the return string is one of
|
1707
1794
|
* ``<code>file</code>'', ``<code>directory</code>'',
|
1708
1795
|
* ``<code>characterSpecial</code>'', ``<code>blockSpecial</code>'',
|
1709
1796
|
* ``<code>fifo</code>'', ``<code>link</code>'',
|
1710
1797
|
* ``<code>socket</code>'', or ``<code>unknown</code>''.
|
1711
|
-
*
|
1798
|
+
*
|
1712
1799
|
* File.ftype("testfile") #=> "file"
|
1713
1800
|
* File.ftype("/dev/tty") #=> "characterSpecial"
|
1714
1801
|
* File.ftype("/tmp/.X11-unix/X0") #=> "socket"
|
@@ -1721,6 +1808,7 @@ rb_file_s_ftype(VALUE klass, VALUE fname)
|
|
1721
1808
|
|
1722
1809
|
rb_secure(2);
|
1723
1810
|
FilePathValue(fname);
|
1811
|
+
fname = rb_str_encode_ospath(fname);
|
1724
1812
|
if (lstat(StringValueCStr(fname), &st) == -1) {
|
1725
1813
|
rb_sys_fail(RSTRING_PTR(fname));
|
1726
1814
|
}
|
@@ -1730,12 +1818,12 @@ rb_file_s_ftype(VALUE klass, VALUE fname)
|
|
1730
1818
|
|
1731
1819
|
/*
|
1732
1820
|
* call-seq:
|
1733
|
-
* File.atime(file_name)
|
1734
|
-
*
|
1821
|
+
* File.atime(file_name) -> time
|
1822
|
+
*
|
1735
1823
|
* Returns the last access time for the named file as a Time object).
|
1736
|
-
*
|
1824
|
+
*
|
1737
1825
|
* File.atime("testfile") #=> Wed Apr 09 08:51:48 CDT 2003
|
1738
|
-
*
|
1826
|
+
*
|
1739
1827
|
*/
|
1740
1828
|
|
1741
1829
|
static VALUE
|
@@ -1752,13 +1840,13 @@ rb_file_s_atime(VALUE klass, VALUE fname)
|
|
1752
1840
|
|
1753
1841
|
/*
|
1754
1842
|
* call-seq:
|
1755
|
-
* file.atime
|
1756
|
-
*
|
1843
|
+
* file.atime -> time
|
1844
|
+
*
|
1757
1845
|
* Returns the last access time (a <code>Time</code> object)
|
1758
1846
|
* for <i>file</i>, or epoch if <i>file</i> has not been accessed.
|
1759
|
-
*
|
1847
|
+
*
|
1760
1848
|
* File.new("testfile").atime #=> Wed Dec 31 18:00:00 CST 1969
|
1761
|
-
*
|
1849
|
+
*
|
1762
1850
|
*/
|
1763
1851
|
|
1764
1852
|
static VALUE
|
@@ -1776,12 +1864,12 @@ rb_file_atime(VALUE obj)
|
|
1776
1864
|
|
1777
1865
|
/*
|
1778
1866
|
* call-seq:
|
1779
|
-
* File.mtime(file_name)
|
1780
|
-
*
|
1867
|
+
* File.mtime(file_name) -> time
|
1868
|
+
*
|
1781
1869
|
* Returns the modification time for the named file as a Time object.
|
1782
|
-
*
|
1870
|
+
*
|
1783
1871
|
* File.mtime("testfile") #=> Tue Apr 08 12:58:04 CDT 2003
|
1784
|
-
*
|
1872
|
+
*
|
1785
1873
|
*/
|
1786
1874
|
|
1787
1875
|
static VALUE
|
@@ -1798,12 +1886,12 @@ rb_file_s_mtime(VALUE klass, VALUE fname)
|
|
1798
1886
|
|
1799
1887
|
/*
|
1800
1888
|
* call-seq:
|
1801
|
-
* file.mtime
|
1802
|
-
*
|
1889
|
+
* file.mtime -> time
|
1890
|
+
*
|
1803
1891
|
* Returns the modification time for <i>file</i>.
|
1804
|
-
*
|
1892
|
+
*
|
1805
1893
|
* File.new("testfile").mtime #=> Wed Apr 09 08:53:14 CDT 2003
|
1806
|
-
*
|
1894
|
+
*
|
1807
1895
|
*/
|
1808
1896
|
|
1809
1897
|
static VALUE
|
@@ -1821,14 +1909,14 @@ rb_file_mtime(VALUE obj)
|
|
1821
1909
|
|
1822
1910
|
/*
|
1823
1911
|
* call-seq:
|
1824
|
-
* File.ctime(file_name)
|
1825
|
-
*
|
1912
|
+
* File.ctime(file_name) -> time
|
1913
|
+
*
|
1826
1914
|
* Returns the change time for the named file (the time at which
|
1827
1915
|
* directory information about the file was changed, not the file
|
1828
1916
|
* itself).
|
1829
|
-
*
|
1917
|
+
*
|
1830
1918
|
* File.ctime("testfile") #=> Wed Apr 09 08:53:13 CDT 2003
|
1831
|
-
*
|
1919
|
+
*
|
1832
1920
|
*/
|
1833
1921
|
|
1834
1922
|
static VALUE
|
@@ -1845,13 +1933,13 @@ rb_file_s_ctime(VALUE klass, VALUE fname)
|
|
1845
1933
|
|
1846
1934
|
/*
|
1847
1935
|
* call-seq:
|
1848
|
-
* file.ctime
|
1849
|
-
*
|
1936
|
+
* file.ctime -> time
|
1937
|
+
*
|
1850
1938
|
* Returns the change time for <i>file</i> (that is, the time directory
|
1851
1939
|
* information about the file was changed, not the file itself).
|
1852
|
-
*
|
1940
|
+
*
|
1853
1941
|
* File.new("testfile").ctime #=> Wed Apr 09 08:53:14 CDT 2003
|
1854
|
-
*
|
1942
|
+
*
|
1855
1943
|
*/
|
1856
1944
|
|
1857
1945
|
static VALUE
|
@@ -1867,6 +1955,32 @@ rb_file_ctime(VALUE obj)
|
|
1867
1955
|
return stat_ctime(&st);
|
1868
1956
|
}
|
1869
1957
|
|
1958
|
+
/*
|
1959
|
+
* call-seq:
|
1960
|
+
* file.size -> integer
|
1961
|
+
*
|
1962
|
+
* Returns the size of <i>file</i> in bytes.
|
1963
|
+
*
|
1964
|
+
* File.new("testfile").size #=> 66
|
1965
|
+
*
|
1966
|
+
*/
|
1967
|
+
|
1968
|
+
static VALUE
|
1969
|
+
rb_file_size(VALUE obj)
|
1970
|
+
{
|
1971
|
+
rb_io_t *fptr;
|
1972
|
+
struct stat st;
|
1973
|
+
|
1974
|
+
GetOpenFile(obj, fptr);
|
1975
|
+
if (fptr->mode & FMODE_WRITABLE) {
|
1976
|
+
rb_io_flush(obj);
|
1977
|
+
}
|
1978
|
+
if (fstat(fptr->fd, &st) == -1) {
|
1979
|
+
rb_sys_fail_path(fptr->pathv);
|
1980
|
+
}
|
1981
|
+
return OFFT2NUM(st.st_size);
|
1982
|
+
}
|
1983
|
+
|
1870
1984
|
static void
|
1871
1985
|
chmod_internal(const char *path, void *mode)
|
1872
1986
|
{
|
@@ -1876,14 +1990,14 @@ chmod_internal(const char *path, void *mode)
|
|
1876
1990
|
|
1877
1991
|
/*
|
1878
1992
|
* call-seq:
|
1879
|
-
* File.chmod(mode_int, file_name, ... )
|
1880
|
-
*
|
1993
|
+
* File.chmod(mode_int, file_name, ... ) -> integer
|
1994
|
+
*
|
1881
1995
|
* Changes permission bits on the named file(s) to the bit pattern
|
1882
1996
|
* represented by <i>mode_int</i>. Actual effects are operating system
|
1883
1997
|
* dependent (see the beginning of this section). On Unix systems, see
|
1884
1998
|
* <code>chmod(2)</code> for details. Returns the number of files
|
1885
1999
|
* processed.
|
1886
|
-
*
|
2000
|
+
*
|
1887
2001
|
* File.chmod(0644, "testfile", "out") #=> 2
|
1888
2002
|
*/
|
1889
2003
|
|
@@ -1905,13 +2019,13 @@ rb_file_s_chmod(int argc, VALUE *argv)
|
|
1905
2019
|
|
1906
2020
|
/*
|
1907
2021
|
* call-seq:
|
1908
|
-
* file.chmod(mode_int)
|
1909
|
-
*
|
2022
|
+
* file.chmod(mode_int) -> 0
|
2023
|
+
*
|
1910
2024
|
* Changes permission bits on <i>file</i> to the bit pattern
|
1911
2025
|
* represented by <i>mode_int</i>. Actual effects are platform
|
1912
2026
|
* dependent; on Unix systems, see <code>chmod(2)</code> for details.
|
1913
2027
|
* Follows symbolic links. Also see <code>File#lchmod</code>.
|
1914
|
-
*
|
2028
|
+
*
|
1915
2029
|
* f = File.new("out", "w");
|
1916
2030
|
* f.chmod(0644) #=> 0
|
1917
2031
|
*/
|
@@ -1921,6 +2035,9 @@ rb_file_chmod(VALUE obj, VALUE vmode)
|
|
1921
2035
|
{
|
1922
2036
|
rb_io_t *fptr;
|
1923
2037
|
int mode;
|
2038
|
+
#ifndef HAVE_FCHMOD
|
2039
|
+
VALUE path;
|
2040
|
+
#endif
|
1924
2041
|
|
1925
2042
|
rb_secure(2);
|
1926
2043
|
mode = NUM2INT(vmode);
|
@@ -1931,7 +2048,8 @@ rb_file_chmod(VALUE obj, VALUE vmode)
|
|
1931
2048
|
rb_sys_fail_path(fptr->pathv);
|
1932
2049
|
#else
|
1933
2050
|
if (NIL_P(fptr->pathv)) return Qnil;
|
1934
|
-
|
2051
|
+
path = rb_str_encode_ospath(fptr->pathv);
|
2052
|
+
if (chmod(RSTRING_PTR(path), mode) == -1)
|
1935
2053
|
rb_sys_fail_path(fptr->pathv);
|
1936
2054
|
#endif
|
1937
2055
|
|
@@ -1948,12 +2066,12 @@ lchmod_internal(const char *path, void *mode)
|
|
1948
2066
|
|
1949
2067
|
/*
|
1950
2068
|
* call-seq:
|
1951
|
-
* File.lchmod(mode_int, file_name, ...)
|
1952
|
-
*
|
2069
|
+
* File.lchmod(mode_int, file_name, ...) -> integer
|
2070
|
+
*
|
1953
2071
|
* Equivalent to <code>File::chmod</code>, but does not follow symbolic
|
1954
2072
|
* links (so it will change the permissions associated with the link,
|
1955
2073
|
* not the file referenced by the link). Often not available.
|
1956
|
-
*
|
2074
|
+
*
|
1957
2075
|
*/
|
1958
2076
|
|
1959
2077
|
static VALUE
|
@@ -1971,12 +2089,7 @@ rb_file_s_lchmod(int argc, VALUE *argv)
|
|
1971
2089
|
return LONG2FIX(n);
|
1972
2090
|
}
|
1973
2091
|
#else
|
1974
|
-
|
1975
|
-
rb_file_s_lchmod(int argc, VALUE *argv)
|
1976
|
-
{
|
1977
|
-
rb_notimplement();
|
1978
|
-
return Qnil; /* not reached */
|
1979
|
-
}
|
2092
|
+
#define rb_file_s_lchmod rb_f_notimplement
|
1980
2093
|
#endif
|
1981
2094
|
|
1982
2095
|
struct chown_args {
|
@@ -1994,17 +2107,17 @@ chown_internal(const char *path, void *arg)
|
|
1994
2107
|
|
1995
2108
|
/*
|
1996
2109
|
* call-seq:
|
1997
|
-
* File.chown(owner_int, group_int, file_name,... )
|
1998
|
-
*
|
2110
|
+
* File.chown(owner_int, group_int, file_name,... ) -> integer
|
2111
|
+
*
|
1999
2112
|
* Changes the owner and group of the named file(s) to the given
|
2000
2113
|
* numeric owner and group id's. Only a process with superuser
|
2001
2114
|
* privileges may change the owner of a file. The current owner of a
|
2002
2115
|
* file may change the file's group to any group to which the owner
|
2003
2116
|
* belongs. A <code>nil</code> or -1 owner or group id is ignored.
|
2004
2117
|
* Returns the number of files processed.
|
2005
|
-
*
|
2118
|
+
*
|
2006
2119
|
* File.chown(nil, 100, "testfile")
|
2007
|
-
*
|
2120
|
+
*
|
2008
2121
|
*/
|
2009
2122
|
|
2010
2123
|
static VALUE
|
@@ -2035,17 +2148,17 @@ rb_file_s_chown(int argc, VALUE *argv)
|
|
2035
2148
|
|
2036
2149
|
/*
|
2037
2150
|
* call-seq:
|
2038
|
-
* file.chown(owner_int, group_int )
|
2039
|
-
*
|
2151
|
+
* file.chown(owner_int, group_int ) -> 0
|
2152
|
+
*
|
2040
2153
|
* Changes the owner and group of <i>file</i> to the given numeric
|
2041
2154
|
* owner and group id's. Only a process with superuser privileges may
|
2042
2155
|
* change the owner of a file. The current owner of a file may change
|
2043
2156
|
* the file's group to any group to which the owner belongs. A
|
2044
2157
|
* <code>nil</code> or -1 owner or group id is ignored. Follows
|
2045
2158
|
* symbolic links. See also <code>File#lchown</code>.
|
2046
|
-
*
|
2159
|
+
*
|
2047
2160
|
* File.new("testfile").chown(502, 1000)
|
2048
|
-
*
|
2161
|
+
*
|
2049
2162
|
*/
|
2050
2163
|
|
2051
2164
|
static VALUE
|
@@ -2053,14 +2166,18 @@ rb_file_chown(VALUE obj, VALUE owner, VALUE group)
|
|
2053
2166
|
{
|
2054
2167
|
rb_io_t *fptr;
|
2055
2168
|
int o, g;
|
2169
|
+
#ifndef HAVE_FCHOWN
|
2170
|
+
VALUE path;
|
2171
|
+
#endif
|
2056
2172
|
|
2057
2173
|
rb_secure(2);
|
2058
2174
|
o = NIL_P(owner) ? -1 : NUM2INT(owner);
|
2059
2175
|
g = NIL_P(group) ? -1 : NUM2INT(group);
|
2060
2176
|
GetOpenFile(obj, fptr);
|
2061
|
-
#
|
2177
|
+
#ifndef HAVE_FCHOWN
|
2062
2178
|
if (NIL_P(fptr->pathv)) return Qnil;
|
2063
|
-
|
2179
|
+
path = rb_str_encode_ospath(fptr->pathv);
|
2180
|
+
if (chown(RSTRING_PTR(path), o, g) == -1)
|
2064
2181
|
rb_sys_fail_path(fptr->pathv);
|
2065
2182
|
#else
|
2066
2183
|
if (fchown(fptr->fd, o, g) == -1)
|
@@ -2070,7 +2187,7 @@ rb_file_chown(VALUE obj, VALUE owner, VALUE group)
|
|
2070
2187
|
return INT2FIX(0);
|
2071
2188
|
}
|
2072
2189
|
|
2073
|
-
#if defined(HAVE_LCHOWN)
|
2190
|
+
#if defined(HAVE_LCHOWN)
|
2074
2191
|
static void
|
2075
2192
|
lchown_internal(const char *path, void *arg)
|
2076
2193
|
{
|
@@ -2081,13 +2198,13 @@ lchown_internal(const char *path, void *arg)
|
|
2081
2198
|
|
2082
2199
|
/*
|
2083
2200
|
* call-seq:
|
2084
|
-
* file.lchown(owner_int, group_int, file_name,..)
|
2085
|
-
*
|
2201
|
+
* file.lchown(owner_int, group_int, file_name,..) -> integer
|
2202
|
+
*
|
2086
2203
|
* Equivalent to <code>File::chown</code>, but does not follow symbolic
|
2087
2204
|
* links (so it will change the owner associated with the link, not the
|
2088
2205
|
* file referenced by the link). Often not available. Returns number
|
2089
2206
|
* of files in the argument list.
|
2090
|
-
*
|
2207
|
+
*
|
2091
2208
|
*/
|
2092
2209
|
|
2093
2210
|
static VALUE
|
@@ -2116,34 +2233,73 @@ rb_file_s_lchown(int argc, VALUE *argv)
|
|
2116
2233
|
return LONG2FIX(n);
|
2117
2234
|
}
|
2118
2235
|
#else
|
2119
|
-
|
2120
|
-
rb_file_s_lchown(int argc, VALUE *argv)
|
2121
|
-
{
|
2122
|
-
rb_notimplement();
|
2123
|
-
}
|
2236
|
+
#define rb_file_s_lchown rb_f_notimplement
|
2124
2237
|
#endif
|
2125
2238
|
|
2126
2239
|
struct timespec rb_time_timespec(VALUE time);
|
2127
2240
|
|
2241
|
+
struct utime_args {
|
2242
|
+
const struct timespec* tsp;
|
2243
|
+
VALUE atime, mtime;
|
2244
|
+
};
|
2245
|
+
|
2246
|
+
#if defined DOSISH || defined __CYGWIN__
|
2247
|
+
NORETURN(static void utime_failed(const char *, const struct timespec *, VALUE, VALUE));
|
2248
|
+
|
2249
|
+
static void
|
2250
|
+
utime_failed(const char *path, const struct timespec *tsp, VALUE atime, VALUE mtime)
|
2251
|
+
{
|
2252
|
+
if (tsp && errno == EINVAL) {
|
2253
|
+
VALUE e[2], a = Qnil, m = Qnil;
|
2254
|
+
int d = 0;
|
2255
|
+
if (!NIL_P(atime)) {
|
2256
|
+
a = rb_inspect(atime);
|
2257
|
+
}
|
2258
|
+
if (!NIL_P(mtime) && mtime != atime && !rb_equal(atime, mtime)) {
|
2259
|
+
m = rb_inspect(mtime);
|
2260
|
+
}
|
2261
|
+
if (NIL_P(a)) e[0] = m;
|
2262
|
+
else if (NIL_P(m) || rb_str_cmp(a, m) == 0) e[0] = a;
|
2263
|
+
else {
|
2264
|
+
e[0] = rb_str_plus(a, rb_str_new_cstr(" or "));
|
2265
|
+
rb_str_append(e[0], m);
|
2266
|
+
d = 1;
|
2267
|
+
}
|
2268
|
+
if (!NIL_P(e[0])) {
|
2269
|
+
if (path) {
|
2270
|
+
if (!d) e[0] = rb_str_dup(e[0]);
|
2271
|
+
rb_str_cat2(rb_str_cat2(e[0], " for "), path);
|
2272
|
+
}
|
2273
|
+
e[1] = INT2FIX(EINVAL);
|
2274
|
+
rb_exc_raise(rb_class_new_instance(2, e, rb_eSystemCallError));
|
2275
|
+
}
|
2276
|
+
errno = EINVAL;
|
2277
|
+
}
|
2278
|
+
rb_sys_fail(path);
|
2279
|
+
}
|
2280
|
+
#else
|
2281
|
+
#define utime_failed(path, tsp, atime, mtime) rb_sys_fail(path)
|
2282
|
+
#endif
|
2283
|
+
|
2128
2284
|
#if defined(HAVE_UTIMES)
|
2129
2285
|
|
2130
2286
|
static void
|
2131
2287
|
utime_internal(const char *path, void *arg)
|
2132
2288
|
{
|
2133
|
-
struct
|
2134
|
-
struct
|
2289
|
+
struct utime_args *v = arg;
|
2290
|
+
const struct timespec *tsp = v->tsp;
|
2291
|
+
struct timeval tvbuf[2], *tvp = NULL;
|
2135
2292
|
|
2136
2293
|
#ifdef HAVE_UTIMENSAT
|
2137
2294
|
static int try_utimensat = 1;
|
2138
2295
|
|
2139
2296
|
if (try_utimensat) {
|
2140
|
-
struct timespec *tsp = arg;
|
2141
2297
|
if (utimensat(AT_FDCWD, path, tsp, 0) < 0) {
|
2142
2298
|
if (errno == ENOSYS) {
|
2143
2299
|
try_utimensat = 0;
|
2144
2300
|
goto no_utimensat;
|
2145
2301
|
}
|
2146
|
-
|
2302
|
+
utime_failed(path, tsp, v->atime, v->mtime);
|
2147
2303
|
}
|
2148
2304
|
return;
|
2149
2305
|
}
|
@@ -2152,13 +2308,13 @@ no_utimensat:
|
|
2152
2308
|
|
2153
2309
|
if (tsp) {
|
2154
2310
|
tvbuf[0].tv_sec = tsp[0].tv_sec;
|
2155
|
-
tvbuf[0].tv_usec = tsp[0].tv_nsec / 1000;
|
2311
|
+
tvbuf[0].tv_usec = (int)(tsp[0].tv_nsec / 1000);
|
2156
2312
|
tvbuf[1].tv_sec = tsp[1].tv_sec;
|
2157
|
-
tvbuf[1].tv_usec = tsp[1].tv_nsec / 1000;
|
2313
|
+
tvbuf[1].tv_usec = (int)(tsp[1].tv_nsec / 1000);
|
2158
2314
|
tvp = tvbuf;
|
2159
2315
|
}
|
2160
2316
|
if (utimes(path, tvp) < 0)
|
2161
|
-
|
2317
|
+
utime_failed(path, tsp, v->atime, v->mtime);
|
2162
2318
|
}
|
2163
2319
|
|
2164
2320
|
#else
|
@@ -2173,7 +2329,8 @@ struct utimbuf {
|
|
2173
2329
|
static void
|
2174
2330
|
utime_internal(const char *path, void *arg)
|
2175
2331
|
{
|
2176
|
-
struct
|
2332
|
+
struct utime_args *v = arg;
|
2333
|
+
const struct timespec *tsp = v->tsp;
|
2177
2334
|
struct utimbuf utbuf, *utp = NULL;
|
2178
2335
|
if (tsp) {
|
2179
2336
|
utbuf.actime = tsp[0].tv_sec;
|
@@ -2181,14 +2338,14 @@ utime_internal(const char *path, void *arg)
|
|
2181
2338
|
utp = &utbuf;
|
2182
2339
|
}
|
2183
2340
|
if (utime(path, utp) < 0)
|
2184
|
-
|
2341
|
+
utime_failed(path, tsp, v->atime, v->mtime);
|
2185
2342
|
}
|
2186
2343
|
|
2187
2344
|
#endif
|
2188
2345
|
|
2189
2346
|
/*
|
2190
2347
|
* call-seq:
|
2191
|
-
* File.utime(atime, mtime, file_name,...)
|
2348
|
+
* File.utime(atime, mtime, file_name,...) -> integer
|
2192
2349
|
*
|
2193
2350
|
* Sets the access and modification times of each
|
2194
2351
|
* named file to the first two arguments. Returns
|
@@ -2198,20 +2355,22 @@ utime_internal(const char *path, void *arg)
|
|
2198
2355
|
static VALUE
|
2199
2356
|
rb_file_s_utime(int argc, VALUE *argv)
|
2200
2357
|
{
|
2201
|
-
VALUE
|
2358
|
+
VALUE rest;
|
2359
|
+
struct utime_args args;
|
2202
2360
|
struct timespec tss[2], *tsp = NULL;
|
2203
2361
|
long n;
|
2204
2362
|
|
2205
2363
|
rb_secure(2);
|
2206
|
-
rb_scan_args(argc, argv, "2*", &atime, &mtime, &rest);
|
2364
|
+
rb_scan_args(argc, argv, "2*", &args.atime, &args.mtime, &rest);
|
2207
2365
|
|
2208
|
-
if (!NIL_P(atime) || !NIL_P(mtime)) {
|
2366
|
+
if (!NIL_P(args.atime) || !NIL_P(args.mtime)) {
|
2209
2367
|
tsp = tss;
|
2210
|
-
tsp[0] = rb_time_timespec(atime);
|
2211
|
-
tsp[1] = rb_time_timespec(mtime);
|
2368
|
+
tsp[0] = rb_time_timespec(args.atime);
|
2369
|
+
tsp[1] = rb_time_timespec(args.mtime);
|
2212
2370
|
}
|
2371
|
+
args.tsp = tsp;
|
2213
2372
|
|
2214
|
-
n = apply2files(utime_internal, rest,
|
2373
|
+
n = apply2files(utime_internal, rest, &args);
|
2215
2374
|
return LONG2FIX(n);
|
2216
2375
|
}
|
2217
2376
|
|
@@ -2227,7 +2386,7 @@ sys_fail2(VALUE s1, VALUE s2)
|
|
2227
2386
|
#endif
|
2228
2387
|
const char *e1, *e2;
|
2229
2388
|
int len = 5;
|
2230
|
-
|
2389
|
+
long l1 = RSTRING_LEN(s1), l2 = RSTRING_LEN(s2);
|
2231
2390
|
|
2232
2391
|
e1 = e2 = "";
|
2233
2392
|
if (l1 > max_pathlen) {
|
@@ -2240,22 +2399,23 @@ sys_fail2(VALUE s1, VALUE s2)
|
|
2240
2399
|
e2 = "...";
|
2241
2400
|
len += 3;
|
2242
2401
|
}
|
2243
|
-
len += l1 + l2;
|
2402
|
+
len += (int)l1 + (int)l2;
|
2244
2403
|
buf = ALLOCA_N(char, len);
|
2245
2404
|
snprintf(buf, len, "(%.*s%s, %.*s%s)",
|
2246
|
-
l1, RSTRING_PTR(s1), e1,
|
2247
|
-
l2, RSTRING_PTR(s2), e2);
|
2405
|
+
(int)l1, RSTRING_PTR(s1), e1,
|
2406
|
+
(int)l2, RSTRING_PTR(s2), e2);
|
2248
2407
|
rb_sys_fail(buf);
|
2249
2408
|
}
|
2250
2409
|
|
2410
|
+
#ifdef HAVE_LINK
|
2251
2411
|
/*
|
2252
2412
|
* call-seq:
|
2253
|
-
* File.link(old_name, new_name)
|
2254
|
-
*
|
2413
|
+
* File.link(old_name, new_name) -> 0
|
2414
|
+
*
|
2255
2415
|
* Creates a new name for an existing file using a hard link. Will not
|
2256
2416
|
* overwrite <i>new_name</i> if it already exists (raising a subclass
|
2257
2417
|
* of <code>SystemCallError</code>). Not available on all platforms.
|
2258
|
-
*
|
2418
|
+
*
|
2259
2419
|
* File.link("testfile", ".testfile") #=> 0
|
2260
2420
|
* IO.readlines(".testfile")[0] #=> "This is line one\n"
|
2261
2421
|
*/
|
@@ -2263,58 +2423,60 @@ sys_fail2(VALUE s1, VALUE s2)
|
|
2263
2423
|
static VALUE
|
2264
2424
|
rb_file_s_link(VALUE klass, VALUE from, VALUE to)
|
2265
2425
|
{
|
2266
|
-
#ifdef HAVE_LINK
|
2267
2426
|
rb_secure(2);
|
2268
2427
|
FilePathValue(from);
|
2269
2428
|
FilePathValue(to);
|
2429
|
+
from = rb_str_encode_ospath(from);
|
2430
|
+
to = rb_str_encode_ospath(to);
|
2270
2431
|
|
2271
2432
|
if (link(StringValueCStr(from), StringValueCStr(to)) < 0) {
|
2272
2433
|
sys_fail2(from, to);
|
2273
2434
|
}
|
2274
2435
|
return INT2FIX(0);
|
2436
|
+
}
|
2275
2437
|
#else
|
2276
|
-
|
2277
|
-
return Qnil; /* not reached */
|
2438
|
+
#define rb_file_s_link rb_f_notimplement
|
2278
2439
|
#endif
|
2279
|
-
}
|
2280
2440
|
|
2441
|
+
#ifdef HAVE_SYMLINK
|
2281
2442
|
/*
|
2282
2443
|
* call-seq:
|
2283
|
-
* File.symlink(old_name, new_name)
|
2284
|
-
*
|
2444
|
+
* File.symlink(old_name, new_name) -> 0
|
2445
|
+
*
|
2285
2446
|
* Creates a symbolic link called <i>new_name</i> for the existing file
|
2286
2447
|
* <i>old_name</i>. Raises a <code>NotImplemented</code> exception on
|
2287
2448
|
* platforms that do not support symbolic links.
|
2288
|
-
*
|
2449
|
+
*
|
2289
2450
|
* File.symlink("testfile", "link2test") #=> 0
|
2290
|
-
*
|
2451
|
+
*
|
2291
2452
|
*/
|
2292
2453
|
|
2293
2454
|
static VALUE
|
2294
2455
|
rb_file_s_symlink(VALUE klass, VALUE from, VALUE to)
|
2295
2456
|
{
|
2296
|
-
#ifdef HAVE_SYMLINK
|
2297
2457
|
rb_secure(2);
|
2298
2458
|
FilePathValue(from);
|
2299
2459
|
FilePathValue(to);
|
2460
|
+
from = rb_str_encode_ospath(from);
|
2461
|
+
to = rb_str_encode_ospath(to);
|
2300
2462
|
|
2301
2463
|
if (symlink(StringValueCStr(from), StringValueCStr(to)) < 0) {
|
2302
2464
|
sys_fail2(from, to);
|
2303
2465
|
}
|
2304
2466
|
return INT2FIX(0);
|
2467
|
+
}
|
2305
2468
|
#else
|
2306
|
-
|
2307
|
-
return Qnil; /* not reached */
|
2469
|
+
#define rb_file_s_symlink rb_f_notimplement
|
2308
2470
|
#endif
|
2309
|
-
}
|
2310
2471
|
|
2472
|
+
#ifdef HAVE_READLINK
|
2311
2473
|
/*
|
2312
2474
|
* call-seq:
|
2313
|
-
* File.readlink(link_name)
|
2314
|
-
*
|
2475
|
+
* File.readlink(link_name) -> file_name
|
2476
|
+
*
|
2315
2477
|
* Returns the name of the file referenced by the given link.
|
2316
2478
|
* Not available on all platforms.
|
2317
|
-
*
|
2479
|
+
*
|
2318
2480
|
* File.symlink("testfile", "link2test") #=> 0
|
2319
2481
|
* File.readlink("link2test") #=> "testfile"
|
2320
2482
|
*/
|
@@ -2322,14 +2484,14 @@ rb_file_s_symlink(VALUE klass, VALUE from, VALUE to)
|
|
2322
2484
|
static VALUE
|
2323
2485
|
rb_file_s_readlink(VALUE klass, VALUE path)
|
2324
2486
|
{
|
2325
|
-
#ifdef HAVE_READLINK
|
2326
2487
|
char *buf;
|
2327
2488
|
int size = 100;
|
2328
|
-
|
2489
|
+
ssize_t rv;
|
2329
2490
|
VALUE v;
|
2330
2491
|
|
2331
2492
|
rb_secure(2);
|
2332
2493
|
FilePathValue(path);
|
2494
|
+
path = rb_str_encode_ospath(path);
|
2333
2495
|
buf = xmalloc(size);
|
2334
2496
|
while ((rv = readlink(RSTRING_PTR(path), buf, size)) == size
|
2335
2497
|
#ifdef _AIX
|
@@ -2343,15 +2505,14 @@ rb_file_s_readlink(VALUE klass, VALUE path)
|
|
2343
2505
|
xfree(buf);
|
2344
2506
|
rb_sys_fail_path(path);
|
2345
2507
|
}
|
2346
|
-
v =
|
2508
|
+
v = rb_filesystem_str_new(buf, rv);
|
2347
2509
|
xfree(buf);
|
2348
2510
|
|
2349
2511
|
return v;
|
2512
|
+
}
|
2350
2513
|
#else
|
2351
|
-
|
2352
|
-
return Qnil; /* not reached */
|
2514
|
+
#define rb_file_s_readlink rb_f_notimplement
|
2353
2515
|
#endif
|
2354
|
-
}
|
2355
2516
|
|
2356
2517
|
static void
|
2357
2518
|
unlink_internal(const char *path, void *arg)
|
@@ -2362,9 +2523,9 @@ unlink_internal(const char *path, void *arg)
|
|
2362
2523
|
|
2363
2524
|
/*
|
2364
2525
|
* call-seq:
|
2365
|
-
* File.delete(file_name, ...)
|
2366
|
-
* File.unlink(file_name, ...)
|
2367
|
-
*
|
2526
|
+
* File.delete(file_name, ...) -> integer
|
2527
|
+
* File.unlink(file_name, ...) -> integer
|
2528
|
+
*
|
2368
2529
|
* Deletes the named files, returning the number of names
|
2369
2530
|
* passed as arguments. Raises an exception on any error.
|
2370
2531
|
* See also <code>Dir::rmdir</code>.
|
@@ -2382,11 +2543,11 @@ rb_file_s_unlink(VALUE klass, VALUE args)
|
|
2382
2543
|
|
2383
2544
|
/*
|
2384
2545
|
* call-seq:
|
2385
|
-
* File.rename(old_name, new_name)
|
2386
|
-
*
|
2546
|
+
* File.rename(old_name, new_name) -> 0
|
2547
|
+
*
|
2387
2548
|
* Renames the given file to the new name. Raises a
|
2388
2549
|
* <code>SystemCallError</code> if the file cannot be renamed.
|
2389
|
-
*
|
2550
|
+
*
|
2390
2551
|
* File.rename("afile", "afile.bak") #=> 0
|
2391
2552
|
*/
|
2392
2553
|
|
@@ -2394,17 +2555,20 @@ static VALUE
|
|
2394
2555
|
rb_file_s_rename(VALUE klass, VALUE from, VALUE to)
|
2395
2556
|
{
|
2396
2557
|
const char *src, *dst;
|
2558
|
+
VALUE f, t;
|
2397
2559
|
|
2398
2560
|
rb_secure(2);
|
2399
2561
|
FilePathValue(from);
|
2400
2562
|
FilePathValue(to);
|
2401
|
-
|
2402
|
-
|
2563
|
+
f = rb_str_encode_ospath(from);
|
2564
|
+
t = rb_str_encode_ospath(to);
|
2565
|
+
src = StringValueCStr(f);
|
2566
|
+
dst = StringValueCStr(t);
|
2403
2567
|
#if defined __CYGWIN__
|
2404
2568
|
errno = 0;
|
2405
2569
|
#endif
|
2406
2570
|
if (rename(src, dst) < 0) {
|
2407
|
-
#if defined DOSISH
|
2571
|
+
#if defined DOSISH
|
2408
2572
|
switch (errno) {
|
2409
2573
|
case EEXIST:
|
2410
2574
|
#if defined (__EMX__)
|
@@ -2424,15 +2588,15 @@ rb_file_s_rename(VALUE klass, VALUE from, VALUE to)
|
|
2424
2588
|
|
2425
2589
|
/*
|
2426
2590
|
* call-seq:
|
2427
|
-
* File.umask()
|
2428
|
-
* File.umask(integer)
|
2429
|
-
*
|
2591
|
+
* File.umask() -> integer
|
2592
|
+
* File.umask(integer) -> integer
|
2593
|
+
*
|
2430
2594
|
* Returns the current umask value for this process. If the optional
|
2431
2595
|
* argument is given, set the umask to that value and return the
|
2432
2596
|
* previous value. Umask values are <em>subtracted</em> from the
|
2433
2597
|
* default permissions, so a umask of <code>0222</code> would make a
|
2434
2598
|
* file read-only for everyone.
|
2435
|
-
*
|
2599
|
+
*
|
2436
2600
|
* File.umask(0006) #=> 18
|
2437
2601
|
* File.umask #=> 6
|
2438
2602
|
*/
|
@@ -2451,7 +2615,7 @@ rb_file_s_umask(int argc, VALUE *argv)
|
|
2451
2615
|
omask = umask(NUM2INT(argv[0]));
|
2452
2616
|
}
|
2453
2617
|
else {
|
2454
|
-
rb_raise(rb_eArgError, "wrong number of arguments");
|
2618
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..1)", argc);
|
2455
2619
|
}
|
2456
2620
|
return INT2FIX(omask);
|
2457
2621
|
}
|
@@ -2462,27 +2626,39 @@ rb_file_s_umask(int argc, VALUE *argv)
|
|
2462
2626
|
#if defined __CYGWIN__ || defined DOSISH
|
2463
2627
|
#define DOSISH_UNC
|
2464
2628
|
#define DOSISH_DRIVE_LETTER
|
2465
|
-
#define
|
2629
|
+
#define FILE_ALT_SEPARATOR '\\'
|
2630
|
+
#endif
|
2631
|
+
#ifdef FILE_ALT_SEPARATOR
|
2632
|
+
#define isdirsep(x) ((x) == '/' || (x) == FILE_ALT_SEPARATOR)
|
2633
|
+
static const char file_alt_separator[] = {FILE_ALT_SEPARATOR, '\0'};
|
2466
2634
|
#else
|
2467
2635
|
#define isdirsep(x) ((x) == '/')
|
2468
2636
|
#endif
|
2469
2637
|
|
2638
|
+
#ifndef USE_NTFS
|
2470
2639
|
#if defined _WIN32 || defined __CYGWIN__
|
2471
2640
|
#define USE_NTFS 1
|
2472
2641
|
#else
|
2473
2642
|
#define USE_NTFS 0
|
2474
2643
|
#endif
|
2644
|
+
#endif
|
2475
2645
|
|
2476
2646
|
#if USE_NTFS
|
2477
|
-
#define
|
2647
|
+
#define istrailinggarbage(x) ((x) == '.' || (x) == ' ')
|
2478
2648
|
#else
|
2479
|
-
#define
|
2649
|
+
#define istrailinggarbage(x) 0
|
2480
2650
|
#endif
|
2481
2651
|
|
2482
2652
|
#ifndef CharNext /* defined as CharNext[AW] on Windows. */
|
2483
2653
|
# define CharNext(p) ((p) + 1)
|
2484
2654
|
#endif
|
2485
2655
|
|
2656
|
+
#if defined(DOSISH_UNC)
|
2657
|
+
#define has_unc(buf) (isdirsep((buf)[0]) && isdirsep((buf)[1]))
|
2658
|
+
#else
|
2659
|
+
#define has_unc(buf) 0
|
2660
|
+
#endif
|
2661
|
+
|
2486
2662
|
#ifdef DOSISH_DRIVE_LETTER
|
2487
2663
|
static inline int
|
2488
2664
|
has_drive_letter(const char *buf)
|
@@ -2521,6 +2697,19 @@ getcwdofdrv(int drv)
|
|
2521
2697
|
}
|
2522
2698
|
return drvcwd;
|
2523
2699
|
}
|
2700
|
+
|
2701
|
+
static inline int
|
2702
|
+
not_same_drive(VALUE path, int drive)
|
2703
|
+
{
|
2704
|
+
const char *p = RSTRING_PTR(path);
|
2705
|
+
if (RSTRING_LEN(path) < 2) return 0;
|
2706
|
+
if (has_drive_letter(p)) {
|
2707
|
+
return TOLOWER(p[0]) != TOLOWER(drive);
|
2708
|
+
}
|
2709
|
+
else {
|
2710
|
+
return has_unc(p);
|
2711
|
+
}
|
2712
|
+
}
|
2524
2713
|
#endif
|
2525
2714
|
|
2526
2715
|
static inline char *
|
@@ -2543,7 +2732,7 @@ rb_path_next(const char *s)
|
|
2543
2732
|
return (char *)s;
|
2544
2733
|
}
|
2545
2734
|
|
2546
|
-
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
2735
|
+
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
2547
2736
|
#define skipprefix rb_path_skip_prefix
|
2548
2737
|
#else
|
2549
2738
|
#define skipprefix(path) (path)
|
@@ -2551,7 +2740,7 @@ rb_path_next(const char *s)
|
|
2551
2740
|
char *
|
2552
2741
|
rb_path_skip_prefix(const char *path)
|
2553
2742
|
{
|
2554
|
-
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
2743
|
+
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
2555
2744
|
#ifdef DOSISH_UNC
|
2556
2745
|
if (isdirsep(path[0]) && isdirsep(path[1])) {
|
2557
2746
|
path += 2;
|
@@ -2569,7 +2758,19 @@ rb_path_skip_prefix(const char *path)
|
|
2569
2758
|
return (char *)path;
|
2570
2759
|
}
|
2571
2760
|
|
2572
|
-
|
2761
|
+
static inline char *
|
2762
|
+
skipprefixroot(const char *path)
|
2763
|
+
{
|
2764
|
+
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
2765
|
+
char *p = skipprefix(path);
|
2766
|
+
while (isdirsep(*p)) p++;
|
2767
|
+
return p;
|
2768
|
+
#else
|
2769
|
+
return skiproot(path);
|
2770
|
+
#endif
|
2771
|
+
}
|
2772
|
+
|
2773
|
+
#define strrdirsep rb_path_last_separator
|
2573
2774
|
char *
|
2574
2775
|
rb_path_last_separator(const char *path)
|
2575
2776
|
{
|
@@ -2617,9 +2818,9 @@ ntfs_tail(const char *path)
|
|
2617
2818
|
{
|
2618
2819
|
while (*path == '.') path++;
|
2619
2820
|
while (*path && *path != ':') {
|
2620
|
-
if (
|
2821
|
+
if (istrailinggarbage(*path)) {
|
2621
2822
|
const char *last = path++;
|
2622
|
-
while (
|
2823
|
+
while (istrailinggarbage(*path)) path++;
|
2623
2824
|
if (!*path || *path == ':') return (char *)last;
|
2624
2825
|
}
|
2625
2826
|
else if (isdirsep(*path)) {
|
@@ -2637,7 +2838,7 @@ ntfs_tail(const char *path)
|
|
2637
2838
|
#endif
|
2638
2839
|
|
2639
2840
|
#define BUFCHECK(cond) do {\
|
2640
|
-
|
2841
|
+
bdiff = p - buf;\
|
2641
2842
|
if (cond) {\
|
2642
2843
|
do {buflen *= 2;} while (cond);\
|
2643
2844
|
rb_str_resize(result, buflen);\
|
@@ -2652,72 +2853,92 @@ ntfs_tail(const char *path)
|
|
2652
2853
|
buflen = RSTRING_LEN(result),\
|
2653
2854
|
pend = p + buflen)
|
2654
2855
|
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2856
|
+
VALUE
|
2857
|
+
rb_home_dir(const char *user, VALUE result)
|
2858
|
+
{
|
2859
|
+
const char *dir;
|
2860
|
+
char *buf;
|
2861
|
+
#if defined DOSISH || defined __CYGWIN__
|
2862
|
+
char *p;
|
2863
|
+
#endif
|
2864
|
+
long dirlen;
|
2658
2865
|
|
2659
|
-
|
2866
|
+
if (!user || !*user) {
|
2867
|
+
if (!(dir = getenv("HOME"))) {
|
2868
|
+
rb_raise(rb_eArgError, "couldn't find HOME environment -- expanding `~'");
|
2869
|
+
}
|
2870
|
+
dirlen = strlen(dir);
|
2871
|
+
rb_str_resize(result, dirlen);
|
2872
|
+
memcpy(buf = RSTRING_PTR(result), dir, dirlen);
|
2873
|
+
}
|
2874
|
+
else {
|
2875
|
+
#ifdef HAVE_PWD_H
|
2876
|
+
struct passwd *pwPtr = getpwnam(user);
|
2877
|
+
if (!pwPtr) {
|
2878
|
+
endpwent();
|
2879
|
+
rb_raise(rb_eArgError, "user %s doesn't exist", user);
|
2880
|
+
}
|
2881
|
+
dirlen = strlen(pwPtr->pw_dir);
|
2882
|
+
rb_str_resize(result, dirlen);
|
2883
|
+
strcpy(buf = RSTRING_PTR(result), pwPtr->pw_dir);
|
2884
|
+
endpwent();
|
2885
|
+
#else
|
2886
|
+
return Qnil;
|
2887
|
+
#endif
|
2888
|
+
}
|
2889
|
+
#if defined DOSISH || defined __CYGWIN__
|
2890
|
+
for (p = buf; *p; p = CharNext(p)) {
|
2891
|
+
if (*p == '\\') {
|
2892
|
+
*p = '/';
|
2893
|
+
}
|
2894
|
+
}
|
2895
|
+
#endif
|
2896
|
+
rb_enc_associate_index(result, rb_filesystem_encindex());
|
2897
|
+
return result;
|
2898
|
+
}
|
2660
2899
|
|
2661
2900
|
static VALUE
|
2662
2901
|
file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
2663
2902
|
{
|
2664
2903
|
const char *s, *b;
|
2665
2904
|
char *buf, *p, *pend, *root;
|
2666
|
-
|
2905
|
+
size_t buflen, dirlen, bdiff;
|
2667
2906
|
int tainted;
|
2668
|
-
rb_encoding *extenc = 0;
|
2669
2907
|
|
2670
|
-
FilePathValue(fname);
|
2671
2908
|
s = StringValuePtr(fname);
|
2672
2909
|
BUFINIT();
|
2673
2910
|
tainted = OBJ_TAINTED(fname);
|
2674
2911
|
|
2675
2912
|
if (s[0] == '~' && abs_mode == 0) { /* execute only if NOT absolute_path() */
|
2913
|
+
long userlen = 0;
|
2914
|
+
tainted = 1;
|
2676
2915
|
if (isdirsep(s[1]) || s[1] == '\0') {
|
2677
|
-
|
2678
|
-
|
2679
|
-
if (
|
2680
|
-
rb_raise(rb_eArgError, "couldn't find HOME environment -- expanding `%s'", s);
|
2681
|
-
}
|
2682
|
-
dirlen = strlen(dir);
|
2683
|
-
BUFCHECK(dirlen > buflen);
|
2684
|
-
strcpy(buf, dir);
|
2685
|
-
#if defined DOSISH || defined __CYGWIN__
|
2686
|
-
for (p = buf; *p; p = CharNext(p)) {
|
2687
|
-
if (*p == '\\') {
|
2688
|
-
*p = '/';
|
2689
|
-
}
|
2690
|
-
}
|
2691
|
-
#else
|
2692
|
-
p = buf + strlen(dir);
|
2693
|
-
#endif
|
2694
|
-
s++;
|
2695
|
-
tainted = 1;
|
2696
|
-
SET_EXTERNAL_ENCODING();
|
2916
|
+
buf = 0;
|
2917
|
+
rb_str_set_len(result, 0);
|
2918
|
+
if (*++s) ++s;
|
2697
2919
|
}
|
2698
2920
|
else {
|
2699
|
-
#ifdef HAVE_PWD_H
|
2700
|
-
struct passwd *pwPtr;
|
2701
|
-
s++;
|
2702
|
-
#endif
|
2703
2921
|
s = nextdirsep(b = s);
|
2704
|
-
|
2705
|
-
|
2706
|
-
p
|
2707
|
-
|
2708
|
-
|
2709
|
-
|
2710
|
-
|
2711
|
-
|
2712
|
-
|
2922
|
+
userlen = s - b;
|
2923
|
+
BUFCHECK(bdiff + userlen >= buflen);
|
2924
|
+
memcpy(p, b, userlen);
|
2925
|
+
rb_str_set_len(result, userlen);
|
2926
|
+
buf = p + 1;
|
2927
|
+
p += userlen;
|
2928
|
+
}
|
2929
|
+
if (NIL_P(rb_home_dir(buf, result))) {
|
2930
|
+
rb_raise(rb_eArgError, "can't find user %s", buf);
|
2931
|
+
}
|
2932
|
+
if (!rb_is_absolute_path(RSTRING_PTR(result))) {
|
2933
|
+
if (userlen) {
|
2934
|
+
rb_raise(rb_eArgError, "non-absolute home of %.*s", (int)userlen, b);
|
2935
|
+
}
|
2936
|
+
else {
|
2937
|
+
rb_raise(rb_eArgError, "non-absolute home");
|
2713
2938
|
}
|
2714
|
-
dirlen = strlen(pwPtr->pw_dir);
|
2715
|
-
BUFCHECK(dirlen > buflen);
|
2716
|
-
strcpy(buf, pwPtr->pw_dir);
|
2717
|
-
p = buf + strlen(pwPtr->pw_dir);
|
2718
|
-
endpwent();
|
2719
|
-
#endif
|
2720
2939
|
}
|
2940
|
+
BUFINIT();
|
2941
|
+
p = pend;
|
2721
2942
|
}
|
2722
2943
|
#ifdef DOSISH_DRIVE_LETTER
|
2723
2944
|
/* skip drive letter */
|
@@ -2729,11 +2950,12 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2729
2950
|
memcpy(p, s, 2);
|
2730
2951
|
p += 2;
|
2731
2952
|
s += 2;
|
2953
|
+
rb_enc_copy(result, fname);
|
2732
2954
|
}
|
2733
2955
|
else {
|
2734
2956
|
/* specified drive, but not full path */
|
2735
2957
|
int same = 0;
|
2736
|
-
if (!NIL_P(dname)) {
|
2958
|
+
if (!NIL_P(dname) && !not_same_drive(dname, s[0])) {
|
2737
2959
|
file_expand_path(dname, Qnil, abs_mode, result);
|
2738
2960
|
BUFINIT();
|
2739
2961
|
if (has_drive_letter(p) && TOLOWER(p[0]) == TOLOWER(s[0])) {
|
@@ -2749,17 +2971,20 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2749
2971
|
BUFCHECK(dirlen > buflen);
|
2750
2972
|
strcpy(buf, dir);
|
2751
2973
|
xfree(dir);
|
2752
|
-
|
2974
|
+
rb_enc_associate_index(result, rb_filesystem_encindex());
|
2753
2975
|
}
|
2976
|
+
else
|
2977
|
+
rb_enc_associate(result, rb_enc_check(result, fname));
|
2754
2978
|
p = chompdirsep(skiproot(buf));
|
2755
2979
|
s += 2;
|
2756
2980
|
}
|
2757
2981
|
}
|
2758
2982
|
#endif
|
2759
|
-
else if (!
|
2983
|
+
else if (!rb_is_absolute_path(s)) {
|
2760
2984
|
if (!NIL_P(dname)) {
|
2761
2985
|
file_expand_path(dname, Qnil, abs_mode, result);
|
2762
2986
|
BUFINIT();
|
2987
|
+
rb_enc_associate(result, rb_enc_check(result, fname));
|
2763
2988
|
}
|
2764
2989
|
else {
|
2765
2990
|
char *dir = my_getcwd();
|
@@ -2769,7 +2994,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2769
2994
|
BUFCHECK(dirlen > buflen);
|
2770
2995
|
strcpy(buf, dir);
|
2771
2996
|
xfree(dir);
|
2772
|
-
|
2997
|
+
rb_enc_associate_index(result, rb_filesystem_encindex());
|
2773
2998
|
}
|
2774
2999
|
#if defined DOSISH || defined __CYGWIN__
|
2775
3000
|
if (isdirsep(*s)) {
|
@@ -2782,19 +3007,25 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2782
3007
|
p = chompdirsep(skiproot(buf));
|
2783
3008
|
}
|
2784
3009
|
else {
|
3010
|
+
size_t len;
|
2785
3011
|
b = s;
|
2786
3012
|
do s++; while (isdirsep(*s));
|
2787
|
-
|
3013
|
+
len = s - b;
|
3014
|
+
p = buf + len;
|
2788
3015
|
BUFCHECK(bdiff >= buflen);
|
2789
|
-
memset(buf, '/',
|
3016
|
+
memset(buf, '/', len);
|
3017
|
+
rb_str_set_len(result, len);
|
3018
|
+
rb_enc_associate(result, rb_enc_check(result, fname));
|
2790
3019
|
}
|
2791
3020
|
if (p > buf && p[-1] == '/')
|
2792
3021
|
--p;
|
2793
3022
|
else {
|
3023
|
+
rb_str_set_len(result, p-buf);
|
2794
3024
|
BUFCHECK(bdiff + 1 >= buflen);
|
2795
3025
|
*p = '/';
|
2796
3026
|
}
|
2797
3027
|
|
3028
|
+
rb_str_set_len(result, p-buf+1);
|
2798
3029
|
BUFCHECK(bdiff + 1 >= buflen);
|
2799
3030
|
p[1] = 0;
|
2800
3031
|
root = skipprefix(buf);
|
@@ -2823,7 +3054,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2823
3054
|
}
|
2824
3055
|
#if USE_NTFS
|
2825
3056
|
else {
|
2826
|
-
do
|
3057
|
+
do ++s; while (istrailinggarbage(*s));
|
2827
3058
|
}
|
2828
3059
|
#endif
|
2829
3060
|
break;
|
@@ -2843,7 +3074,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2843
3074
|
--s;
|
2844
3075
|
case ' ': {
|
2845
3076
|
const char *e = s;
|
2846
|
-
while (
|
3077
|
+
while (istrailinggarbage(*s)) s++;
|
2847
3078
|
if (!*s) {
|
2848
3079
|
s = e;
|
2849
3080
|
goto endpath;
|
@@ -2858,6 +3089,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2858
3089
|
#endif
|
2859
3090
|
if (s > b) {
|
2860
3091
|
long rootdiff = root - buf;
|
3092
|
+
rb_str_set_len(result, p-buf+1);
|
2861
3093
|
BUFCHECK(bdiff + (s-b+1) >= buflen);
|
2862
3094
|
root = buf + rootdiff;
|
2863
3095
|
memcpy(++p, b, s-b);
|
@@ -2874,14 +3106,21 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2874
3106
|
|
2875
3107
|
if (s > b) {
|
2876
3108
|
#if USE_NTFS
|
3109
|
+
static const char prime[] = ":$DATA";
|
3110
|
+
enum {prime_len = sizeof(prime) -1};
|
2877
3111
|
endpath:
|
2878
|
-
if (s > b +
|
3112
|
+
if (s > b + prime_len && strncasecmp(s - prime_len, prime, prime_len) == 0) {
|
2879
3113
|
/* alias of stream */
|
2880
3114
|
/* get rid of a bug of x64 VC++ */
|
2881
|
-
if (*(s-
|
2882
|
-
|
3115
|
+
if (*(s - (prime_len+1)) == ':') {
|
3116
|
+
s -= prime_len + 1; /* prime */
|
3117
|
+
}
|
3118
|
+
else if (memchr(b, ':', s - prime_len - b)) {
|
3119
|
+
s -= prime_len; /* alternative */
|
3120
|
+
}
|
2883
3121
|
}
|
2884
3122
|
#endif
|
3123
|
+
rb_str_set_len(result, p-buf+1);
|
2885
3124
|
BUFCHECK(bdiff + (s-b) >= buflen);
|
2886
3125
|
memcpy(++p, b, s-b);
|
2887
3126
|
p += s-b;
|
@@ -2947,16 +3186,29 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|
2947
3186
|
return result;
|
2948
3187
|
}
|
2949
3188
|
|
3189
|
+
#define EXPAND_PATH_BUFFER() rb_usascii_str_new(0, MAXPATHLEN + 2)
|
3190
|
+
|
3191
|
+
#define check_expand_path_args(fname, dname) \
|
3192
|
+
((fname = rb_get_path(fname)), \
|
3193
|
+
(NIL_P(dname) ? dname : (dname = rb_get_path(dname))))
|
3194
|
+
|
3195
|
+
static VALUE
|
3196
|
+
file_expand_path_1(VALUE fname)
|
3197
|
+
{
|
3198
|
+
return file_expand_path(fname, Qnil, 0, EXPAND_PATH_BUFFER());
|
3199
|
+
}
|
3200
|
+
|
2950
3201
|
VALUE
|
2951
3202
|
rb_file_expand_path(VALUE fname, VALUE dname)
|
2952
3203
|
{
|
2953
|
-
|
3204
|
+
check_expand_path_args(fname, dname);
|
3205
|
+
return file_expand_path(fname, dname, 0, EXPAND_PATH_BUFFER());
|
2954
3206
|
}
|
2955
3207
|
|
2956
3208
|
/*
|
2957
3209
|
* call-seq:
|
2958
|
-
* File.expand_path(file_name [, dir_string] )
|
2959
|
-
*
|
3210
|
+
* File.expand_path(file_name [, dir_string] ) -> abs_file_name
|
3211
|
+
*
|
2960
3212
|
* Converts a pathname to an absolute pathname. Relative paths are
|
2961
3213
|
* referenced from the current working directory of the process unless
|
2962
3214
|
* <i>dir_string</i> is given, in which case it will be used as the
|
@@ -2965,7 +3217,7 @@ rb_file_expand_path(VALUE fname, VALUE dname)
|
|
2965
3217
|
* directory (the environment variable <code>HOME</code> must be set
|
2966
3218
|
* correctly). ``<code>~</code><i>user</i>'' expands to the named
|
2967
3219
|
* user's home directory.
|
2968
|
-
*
|
3220
|
+
*
|
2969
3221
|
* File.expand_path("~oracle/bin") #=> "/home/oracle/bin"
|
2970
3222
|
* File.expand_path("../../bin", "/tmp/x") #=> "/bin"
|
2971
3223
|
*/
|
@@ -2986,19 +3238,20 @@ rb_file_s_expand_path(int argc, VALUE *argv)
|
|
2986
3238
|
VALUE
|
2987
3239
|
rb_file_absolute_path(VALUE fname, VALUE dname)
|
2988
3240
|
{
|
2989
|
-
|
3241
|
+
check_expand_path_args(fname, dname);
|
3242
|
+
return file_expand_path(fname, dname, 1, EXPAND_PATH_BUFFER());
|
2990
3243
|
}
|
2991
3244
|
|
2992
3245
|
/*
|
2993
3246
|
* call-seq:
|
2994
|
-
* File.absolute_path(file_name [, dir_string] )
|
2995
|
-
*
|
3247
|
+
* File.absolute_path(file_name [, dir_string] ) -> abs_file_name
|
3248
|
+
*
|
2996
3249
|
* Converts a pathname to an absolute pathname. Relative paths are
|
2997
3250
|
* referenced from the current working directory of the process unless
|
2998
3251
|
* <i>dir_string</i> is given, in which case it will be used as the
|
2999
3252
|
* starting point. If the given pathname starts with a ``<code>~</code>''
|
3000
3253
|
* it is NOT expanded, it is treated as a normal directory name.
|
3001
|
-
*
|
3254
|
+
*
|
3002
3255
|
* File.absolute_path("~oracle/bin") #=> "<relative_path>/~oracle/bin"
|
3003
3256
|
*/
|
3004
3257
|
|
@@ -3015,10 +3268,210 @@ rb_file_s_absolute_path(int argc, VALUE *argv)
|
|
3015
3268
|
return rb_file_absolute_path(fname, dname);
|
3016
3269
|
}
|
3017
3270
|
|
3018
|
-
static
|
3019
|
-
|
3271
|
+
static void
|
3272
|
+
realpath_rec(long *prefixlenp, VALUE *resolvedp, char *unresolved, VALUE loopcheck, int strict, int last)
|
3273
|
+
{
|
3274
|
+
ID resolving;
|
3275
|
+
CONST_ID(resolving, "resolving");
|
3276
|
+
while (*unresolved) {
|
3277
|
+
char *testname = unresolved;
|
3278
|
+
char *unresolved_firstsep = rb_path_next(unresolved);
|
3279
|
+
long testnamelen = unresolved_firstsep - unresolved;
|
3280
|
+
char *unresolved_nextname = unresolved_firstsep;
|
3281
|
+
while (isdirsep(*unresolved_nextname)) unresolved_nextname++;
|
3282
|
+
unresolved = unresolved_nextname;
|
3283
|
+
if (testnamelen == 1 && testname[0] == '.') {
|
3284
|
+
}
|
3285
|
+
else if (testnamelen == 2 && testname[0] == '.' && testname[1] == '.') {
|
3286
|
+
if (*prefixlenp < RSTRING_LEN(*resolvedp)) {
|
3287
|
+
char *resolved_names = RSTRING_PTR(*resolvedp) + *prefixlenp;
|
3288
|
+
char *lastsep = rb_path_last_separator(resolved_names);
|
3289
|
+
long len = lastsep ? lastsep - resolved_names : 0;
|
3290
|
+
rb_str_resize(*resolvedp, *prefixlenp + len);
|
3291
|
+
}
|
3292
|
+
}
|
3293
|
+
else {
|
3294
|
+
VALUE checkval;
|
3295
|
+
VALUE testpath = rb_str_dup(*resolvedp);
|
3296
|
+
if (*prefixlenp < RSTRING_LEN(testpath))
|
3297
|
+
rb_str_cat2(testpath, "/");
|
3298
|
+
rb_str_cat(testpath, testname, testnamelen);
|
3299
|
+
checkval = rb_hash_aref(loopcheck, testpath);
|
3300
|
+
if (!NIL_P(checkval)) {
|
3301
|
+
if (checkval == ID2SYM(resolving)) {
|
3302
|
+
errno = ELOOP;
|
3303
|
+
rb_sys_fail(RSTRING_PTR(testpath));
|
3304
|
+
}
|
3305
|
+
else {
|
3306
|
+
*resolvedp = rb_str_dup(checkval);
|
3307
|
+
}
|
3308
|
+
}
|
3309
|
+
else {
|
3310
|
+
struct stat sbuf;
|
3311
|
+
int ret;
|
3312
|
+
VALUE testpath2 = rb_str_encode_ospath(testpath);
|
3313
|
+
ret = lstat(RSTRING_PTR(testpath2), &sbuf);
|
3314
|
+
if (ret == -1) {
|
3315
|
+
if (errno == ENOENT) {
|
3316
|
+
if (strict || !last || *unresolved_firstsep)
|
3317
|
+
rb_sys_fail(RSTRING_PTR(testpath));
|
3318
|
+
*resolvedp = testpath;
|
3319
|
+
break;
|
3320
|
+
}
|
3321
|
+
else {
|
3322
|
+
rb_sys_fail(RSTRING_PTR(testpath));
|
3323
|
+
}
|
3324
|
+
}
|
3325
|
+
#ifdef HAVE_READLINK
|
3326
|
+
if (S_ISLNK(sbuf.st_mode)) {
|
3327
|
+
volatile VALUE link;
|
3328
|
+
char *link_prefix, *link_names;
|
3329
|
+
long link_prefixlen;
|
3330
|
+
rb_hash_aset(loopcheck, testpath, ID2SYM(resolving));
|
3331
|
+
link = rb_file_s_readlink(rb_cFile, testpath);
|
3332
|
+
link_prefix = RSTRING_PTR(link);
|
3333
|
+
link_names = skipprefixroot(link_prefix);
|
3334
|
+
link_prefixlen = link_names - link_prefix;
|
3335
|
+
if (link_prefixlen == 0) {
|
3336
|
+
realpath_rec(prefixlenp, resolvedp, link_names, loopcheck, strict, *unresolved_firstsep == '\0');
|
3337
|
+
}
|
3338
|
+
else {
|
3339
|
+
*resolvedp = rb_str_new(link_prefix, link_prefixlen);
|
3340
|
+
*prefixlenp = link_prefixlen;
|
3341
|
+
realpath_rec(prefixlenp, resolvedp, link_names, loopcheck, strict, *unresolved_firstsep == '\0');
|
3342
|
+
}
|
3343
|
+
rb_hash_aset(loopcheck, testpath, rb_str_dup_frozen(*resolvedp));
|
3344
|
+
}
|
3345
|
+
else
|
3346
|
+
#endif
|
3347
|
+
{
|
3348
|
+
VALUE s = rb_str_dup_frozen(testpath);
|
3349
|
+
rb_hash_aset(loopcheck, s, s);
|
3350
|
+
*resolvedp = testpath;
|
3351
|
+
}
|
3352
|
+
}
|
3353
|
+
}
|
3354
|
+
}
|
3355
|
+
}
|
3356
|
+
|
3357
|
+
VALUE
|
3358
|
+
rb_realpath_internal(VALUE basedir, VALUE path, int strict)
|
3359
|
+
{
|
3360
|
+
long prefixlen;
|
3361
|
+
VALUE resolved;
|
3362
|
+
volatile VALUE unresolved_path;
|
3363
|
+
VALUE loopcheck;
|
3364
|
+
volatile VALUE curdir = Qnil;
|
3365
|
+
|
3366
|
+
char *path_names = NULL, *basedir_names = NULL, *curdir_names = NULL;
|
3367
|
+
char *ptr, *prefixptr = NULL;
|
3368
|
+
|
3369
|
+
rb_secure(2);
|
3370
|
+
|
3371
|
+
FilePathValue(path);
|
3372
|
+
unresolved_path = rb_str_dup_frozen(path);
|
3373
|
+
|
3374
|
+
if (!NIL_P(basedir)) {
|
3375
|
+
FilePathValue(basedir);
|
3376
|
+
basedir = rb_str_dup_frozen(basedir);
|
3377
|
+
}
|
3378
|
+
|
3379
|
+
ptr = RSTRING_PTR(unresolved_path);
|
3380
|
+
path_names = skipprefixroot(ptr);
|
3381
|
+
if (ptr != path_names) {
|
3382
|
+
resolved = rb_enc_str_new(ptr, path_names - ptr,
|
3383
|
+
rb_enc_get(unresolved_path));
|
3384
|
+
goto root_found;
|
3385
|
+
}
|
3386
|
+
|
3387
|
+
if (!NIL_P(basedir)) {
|
3388
|
+
ptr = RSTRING_PTR(basedir);
|
3389
|
+
basedir_names = skipprefixroot(ptr);
|
3390
|
+
if (ptr != basedir_names) {
|
3391
|
+
resolved = rb_enc_str_new(ptr, basedir_names - ptr,
|
3392
|
+
rb_enc_get(basedir));
|
3393
|
+
goto root_found;
|
3394
|
+
}
|
3395
|
+
}
|
3396
|
+
|
3397
|
+
curdir = rb_dir_getwd();
|
3398
|
+
ptr = RSTRING_PTR(curdir);
|
3399
|
+
curdir_names = skipprefixroot(ptr);
|
3400
|
+
resolved = rb_enc_str_new(ptr, curdir_names - ptr, rb_enc_get(curdir));
|
3401
|
+
|
3402
|
+
root_found:
|
3403
|
+
prefixptr = RSTRING_PTR(resolved);
|
3404
|
+
prefixlen = RSTRING_LEN(resolved);
|
3405
|
+
ptr = chompdirsep(prefixptr);
|
3406
|
+
if (*ptr) {
|
3407
|
+
prefixlen = ++ptr - prefixptr;
|
3408
|
+
rb_str_set_len(resolved, prefixlen);
|
3409
|
+
}
|
3410
|
+
#ifdef FILE_ALT_SEPARATOR
|
3411
|
+
while (prefixptr < ptr) {
|
3412
|
+
if (*prefixptr == FILE_ALT_SEPARATOR) {
|
3413
|
+
*prefixptr = '/';
|
3414
|
+
}
|
3415
|
+
prefixptr = CharNext(prefixptr);
|
3416
|
+
}
|
3417
|
+
#endif
|
3418
|
+
|
3419
|
+
loopcheck = rb_hash_new();
|
3420
|
+
if (curdir_names)
|
3421
|
+
realpath_rec(&prefixlen, &resolved, curdir_names, loopcheck, 1, 0);
|
3422
|
+
if (basedir_names)
|
3423
|
+
realpath_rec(&prefixlen, &resolved, basedir_names, loopcheck, 1, 0);
|
3424
|
+
realpath_rec(&prefixlen, &resolved, path_names, loopcheck, strict, 1);
|
3425
|
+
|
3426
|
+
OBJ_TAINT(resolved);
|
3427
|
+
return resolved;
|
3428
|
+
}
|
3429
|
+
|
3430
|
+
/*
|
3431
|
+
* call-seq:
|
3432
|
+
* File.realpath(pathname [, dir_string]) -> real_pathname
|
3433
|
+
*
|
3434
|
+
* Returns the real (absolute) pathname of _pathname_ in the actual
|
3435
|
+
* filesystem not containing symlinks or useless dots.
|
3436
|
+
*
|
3437
|
+
* If _dir_string_ is given, it is used as a base directory
|
3438
|
+
* for interpreting relative pathname instead of the current directory.
|
3439
|
+
*
|
3440
|
+
* All components of the pathname must exist when this method is
|
3441
|
+
* called.
|
3442
|
+
*/
|
3443
|
+
static VALUE
|
3444
|
+
rb_file_s_realpath(int argc, VALUE *argv, VALUE klass)
|
3445
|
+
{
|
3446
|
+
VALUE path, basedir;
|
3447
|
+
rb_scan_args(argc, argv, "11", &path, &basedir);
|
3448
|
+
return rb_realpath_internal(basedir, path, 1);
|
3449
|
+
}
|
3450
|
+
|
3451
|
+
/*
|
3452
|
+
* call-seq:
|
3453
|
+
* File.realdirpath(pathname [, dir_string]) -> real_pathname
|
3454
|
+
*
|
3455
|
+
* Returns the real (absolute) pathname of _pathname_ in the actual filesystem.
|
3456
|
+
* The real pathname doesn't contain symlinks or useless dots.
|
3457
|
+
*
|
3458
|
+
* If _dir_string_ is given, it is used as a base directory
|
3459
|
+
* for interpreting relative pathname instead of the current directory.
|
3460
|
+
*
|
3461
|
+
* The last component of the real pathname can be nonexistent.
|
3462
|
+
*/
|
3463
|
+
static VALUE
|
3464
|
+
rb_file_s_realdirpath(int argc, VALUE *argv, VALUE klass)
|
3465
|
+
{
|
3466
|
+
VALUE path, basedir;
|
3467
|
+
rb_scan_args(argc, argv, "11", &path, &basedir);
|
3468
|
+
return rb_realpath_internal(basedir, path, 0);
|
3469
|
+
}
|
3470
|
+
|
3471
|
+
static size_t
|
3472
|
+
rmext(const char *p, long l1, const char *e)
|
3020
3473
|
{
|
3021
|
-
|
3474
|
+
long l0, l2;
|
3022
3475
|
|
3023
3476
|
if (!e) return 0;
|
3024
3477
|
|
@@ -3047,36 +3500,15 @@ rmext(const char *p, int l1, const char *e)
|
|
3047
3500
|
return 0;
|
3048
3501
|
}
|
3049
3502
|
|
3050
|
-
|
3051
|
-
*
|
3052
|
-
* File.basename(file_name [, suffix] ) -> base_name
|
3053
|
-
*
|
3054
|
-
* Returns the last component of the filename given in <i>file_name</i>,
|
3055
|
-
* which must be formed using forward slashes (``<code>/</code>'')
|
3056
|
-
* regardless of the separator used on the local file system. If
|
3057
|
-
* <i>suffix</i> is given and present at the end of <i>file_name</i>,
|
3058
|
-
* it is removed.
|
3059
|
-
*
|
3060
|
-
* File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb"
|
3061
|
-
* File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"
|
3062
|
-
*/
|
3063
|
-
|
3064
|
-
static VALUE
|
3065
|
-
rb_file_s_basename(int argc, VALUE *argv)
|
3503
|
+
const char *
|
3504
|
+
ruby_find_basename(const char *name, long *len, long *ext)
|
3066
3505
|
{
|
3067
|
-
|
3068
|
-
const char *name, *p;
|
3506
|
+
const char *p;
|
3069
3507
|
#if defined DOSISH_DRIVE_LETTER || defined DOSISH_UNC
|
3070
3508
|
const char *root;
|
3071
3509
|
#endif
|
3072
|
-
|
3510
|
+
long f, n = -1;
|
3073
3511
|
|
3074
|
-
if (rb_scan_args(argc, argv, "11", &fname, &fext) == 2) {
|
3075
|
-
StringValue(fext);
|
3076
|
-
}
|
3077
|
-
FilePathStringValue(fname);
|
3078
|
-
if (RSTRING_LEN(fname) == 0 || !*(name = RSTRING_PTR(fname)))
|
3079
|
-
return fname;
|
3080
3512
|
name = skipprefix(name);
|
3081
3513
|
#if defined DOSISH_DRIVE_LETTER || defined DOSISH_UNC
|
3082
3514
|
root = name;
|
@@ -3115,11 +3547,57 @@ rb_file_s_basename(int argc, VALUE *argv)
|
|
3115
3547
|
#else
|
3116
3548
|
n = chompdirsep(p) - p;
|
3117
3549
|
#endif
|
3550
|
+
}
|
3551
|
+
|
3552
|
+
if (len)
|
3553
|
+
*len = f;
|
3554
|
+
if (ext)
|
3555
|
+
*ext = n;
|
3556
|
+
return p;
|
3557
|
+
}
|
3558
|
+
|
3559
|
+
/*
|
3560
|
+
* call-seq:
|
3561
|
+
* File.basename(file_name [, suffix] ) -> base_name
|
3562
|
+
*
|
3563
|
+
* Returns the last component of the filename given in <i>file_name</i>,
|
3564
|
+
* which must be formed using forward slashes (``<code>/</code>'')
|
3565
|
+
* regardless of the separator used on the local file system. If
|
3566
|
+
* <i>suffix</i> is given and present at the end of <i>file_name</i>,
|
3567
|
+
* it is removed.
|
3568
|
+
*
|
3569
|
+
* File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb"
|
3570
|
+
* File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"
|
3571
|
+
*/
|
3572
|
+
|
3573
|
+
static VALUE
|
3574
|
+
rb_file_s_basename(int argc, VALUE *argv)
|
3575
|
+
{
|
3576
|
+
VALUE fname, fext, basename;
|
3577
|
+
const char *name, *p;
|
3578
|
+
long f, n;
|
3579
|
+
|
3580
|
+
if (rb_scan_args(argc, argv, "11", &fname, &fext) == 2) {
|
3581
|
+
rb_encoding *enc;
|
3582
|
+
StringValue(fext);
|
3583
|
+
if (!rb_enc_asciicompat(enc = rb_enc_get(fext))) {
|
3584
|
+
rb_raise(rb_eEncCompatError, "ascii incompatible character encodings: %s",
|
3585
|
+
rb_enc_name(enc));
|
3586
|
+
}
|
3587
|
+
}
|
3588
|
+
FilePathStringValue(fname);
|
3589
|
+
if (!NIL_P(fext)) rb_enc_check(fname, fext);
|
3590
|
+
if (RSTRING_LEN(fname) == 0 || !*(name = RSTRING_PTR(fname)))
|
3591
|
+
return rb_str_new_shared(fname);
|
3592
|
+
|
3593
|
+
p = ruby_find_basename(name, &f, &n);
|
3594
|
+
if (n >= 0) {
|
3118
3595
|
if (NIL_P(fext) || !(f = rmext(p, n, StringValueCStr(fext)))) {
|
3119
3596
|
f = n;
|
3120
3597
|
}
|
3121
|
-
if (f == RSTRING_LEN(fname)) return fname;
|
3598
|
+
if (f == RSTRING_LEN(fname)) return rb_str_new_shared(fname);
|
3122
3599
|
}
|
3600
|
+
|
3123
3601
|
basename = rb_str_new(p, f);
|
3124
3602
|
rb_enc_copy(basename, fname);
|
3125
3603
|
OBJ_INFECT(basename, fname);
|
@@ -3128,18 +3606,24 @@ rb_file_s_basename(int argc, VALUE *argv)
|
|
3128
3606
|
|
3129
3607
|
/*
|
3130
3608
|
* call-seq:
|
3131
|
-
* File.dirname(file_name )
|
3132
|
-
*
|
3609
|
+
* File.dirname(file_name ) -> dir_name
|
3610
|
+
*
|
3133
3611
|
* Returns all components of the filename given in <i>file_name</i>
|
3134
3612
|
* except the last one. The filename must be formed using forward
|
3135
3613
|
* slashes (``<code>/</code>'') regardless of the separator used on the
|
3136
3614
|
* local file system.
|
3137
|
-
*
|
3615
|
+
*
|
3138
3616
|
* File.dirname("/home/gumby/work/ruby.rb") #=> "/home/gumby/work"
|
3139
3617
|
*/
|
3140
3618
|
|
3141
3619
|
static VALUE
|
3142
3620
|
rb_file_s_dirname(VALUE klass, VALUE fname)
|
3621
|
+
{
|
3622
|
+
return rb_file_dirname(fname);
|
3623
|
+
}
|
3624
|
+
|
3625
|
+
VALUE
|
3626
|
+
rb_file_dirname(VALUE fname)
|
3143
3627
|
{
|
3144
3628
|
const char *name, *root, *p;
|
3145
3629
|
VALUE dirname;
|
@@ -3179,40 +3663,35 @@ rb_file_s_dirname(VALUE klass, VALUE fname)
|
|
3179
3663
|
}
|
3180
3664
|
|
3181
3665
|
/*
|
3182
|
-
*
|
3183
|
-
*
|
3184
|
-
*
|
3185
|
-
*
|
3186
|
-
*
|
3187
|
-
*
|
3188
|
-
*
|
3189
|
-
*
|
3190
|
-
*
|
3191
|
-
*
|
3192
|
-
*
|
3666
|
+
* accept a String, and return the pointer of the extension.
|
3667
|
+
* if len is passed, set the length of extension to it.
|
3668
|
+
* returned pointer is in ``name'' or NULL.
|
3669
|
+
* returns *len
|
3670
|
+
* no dot NULL 0
|
3671
|
+
* dotfile top 0
|
3672
|
+
* end with dot dot 1
|
3673
|
+
* .ext dot len of .ext
|
3674
|
+
* .ext:stream dot len of .ext without :stream (NT only)
|
3675
|
+
*
|
3193
3676
|
*/
|
3194
|
-
|
3195
|
-
|
3196
|
-
rb_file_s_extname(VALUE klass, VALUE fname)
|
3677
|
+
const char *
|
3678
|
+
ruby_find_extname(const char *name, long *len)
|
3197
3679
|
{
|
3198
|
-
const char *
|
3199
|
-
VALUE extname;
|
3680
|
+
const char *p, *e;
|
3200
3681
|
|
3201
|
-
FilePathStringValue(fname);
|
3202
|
-
name = StringValueCStr(fname);
|
3203
3682
|
p = strrdirsep(name); /* get the last path component */
|
3204
3683
|
if (!p)
|
3205
3684
|
p = name;
|
3206
3685
|
else
|
3207
|
-
name = ++p;
|
3686
|
+
do name = ++p; while (isdirsep(*p));
|
3208
3687
|
|
3209
3688
|
e = 0;
|
3210
3689
|
while (*p && *p == '.') p++;
|
3211
3690
|
while (*p) {
|
3212
|
-
if (*p == '.' ||
|
3691
|
+
if (*p == '.' || istrailinggarbage(*p)) {
|
3213
3692
|
#if USE_NTFS
|
3214
3693
|
const char *last = p++, *dot = last;
|
3215
|
-
while (
|
3694
|
+
while (istrailinggarbage(*p)) {
|
3216
3695
|
if (*p == '.') dot = p;
|
3217
3696
|
p++;
|
3218
3697
|
}
|
@@ -3235,9 +3714,46 @@ rb_file_s_extname(VALUE klass, VALUE fname)
|
|
3235
3714
|
break;
|
3236
3715
|
p = CharNext(p);
|
3237
3716
|
}
|
3238
|
-
|
3717
|
+
|
3718
|
+
if (len) {
|
3719
|
+
/* no dot, or the only dot is first or end? */
|
3720
|
+
if (!e || e == name)
|
3721
|
+
*len = 0;
|
3722
|
+
else if (e+1 == p)
|
3723
|
+
*len = 1;
|
3724
|
+
else
|
3725
|
+
*len = p - e;
|
3726
|
+
}
|
3727
|
+
return e;
|
3728
|
+
}
|
3729
|
+
|
3730
|
+
/*
|
3731
|
+
* call-seq:
|
3732
|
+
* File.extname(path) -> string
|
3733
|
+
*
|
3734
|
+
* Returns the extension (the portion of file name in <i>path</i>
|
3735
|
+
* after the period).
|
3736
|
+
*
|
3737
|
+
* File.extname("test.rb") #=> ".rb"
|
3738
|
+
* File.extname("a/b/d/test.rb") #=> ".rb"
|
3739
|
+
* File.extname("test") #=> ""
|
3740
|
+
* File.extname(".profile") #=> ""
|
3741
|
+
*
|
3742
|
+
*/
|
3743
|
+
|
3744
|
+
static VALUE
|
3745
|
+
rb_file_s_extname(VALUE klass, VALUE fname)
|
3746
|
+
{
|
3747
|
+
const char *name, *e;
|
3748
|
+
long len;
|
3749
|
+
VALUE extname;
|
3750
|
+
|
3751
|
+
FilePathStringValue(fname);
|
3752
|
+
name = StringValueCStr(fname);
|
3753
|
+
e = ruby_find_extname(name, &len);
|
3754
|
+
if (len <= 1)
|
3239
3755
|
return rb_str_new(0, 0);
|
3240
|
-
extname = rb_str_new(e,
|
3756
|
+
extname = rb_str_new(e, len); /* keep the dot, too! */
|
3241
3757
|
rb_enc_copy(extname, fname);
|
3242
3758
|
OBJ_INFECT(extname, fname);
|
3243
3759
|
return extname;
|
@@ -3245,13 +3761,13 @@ rb_file_s_extname(VALUE klass, VALUE fname)
|
|
3245
3761
|
|
3246
3762
|
/*
|
3247
3763
|
* call-seq:
|
3248
|
-
* File.path(path)
|
3249
|
-
*
|
3764
|
+
* File.path(path) -> string
|
3765
|
+
*
|
3250
3766
|
* Returns the string representation of the path
|
3251
|
-
*
|
3767
|
+
*
|
3252
3768
|
* File.path("/dev/null") #=> "/dev/null"
|
3253
3769
|
* File.path(Pathname.new("/tmp")) #=> "/tmp"
|
3254
|
-
*
|
3770
|
+
*
|
3255
3771
|
*/
|
3256
3772
|
|
3257
3773
|
static VALUE
|
@@ -3262,12 +3778,12 @@ rb_file_s_path(VALUE klass, VALUE fname)
|
|
3262
3778
|
|
3263
3779
|
/*
|
3264
3780
|
* call-seq:
|
3265
|
-
* File.split(file_name)
|
3266
|
-
*
|
3781
|
+
* File.split(file_name) -> array
|
3782
|
+
*
|
3267
3783
|
* Splits the given string into a directory and a file component and
|
3268
3784
|
* returns them in a two-element array. See also
|
3269
3785
|
* <code>File::dirname</code> and <code>File::basename</code>.
|
3270
|
-
*
|
3786
|
+
*
|
3271
3787
|
* File.split("/home/gumby/.profile") #=> ["/home/gumby", ".profile"]
|
3272
3788
|
*/
|
3273
3789
|
|
@@ -3286,7 +3802,7 @@ static VALUE
|
|
3286
3802
|
file_inspect_join(VALUE ary, VALUE argp, int recur)
|
3287
3803
|
{
|
3288
3804
|
VALUE *arg = (VALUE *)argp;
|
3289
|
-
if (recur
|
3805
|
+
if (recur || ary == arg[0]) rb_raise(rb_eArgError, "recursive array");
|
3290
3806
|
return rb_file_join(arg[0], arg[1]);
|
3291
3807
|
}
|
3292
3808
|
|
@@ -3320,7 +3836,10 @@ rb_file_join(VALUE ary, VALUE sep)
|
|
3320
3836
|
case T_STRING:
|
3321
3837
|
break;
|
3322
3838
|
case T_ARRAY:
|
3323
|
-
{
|
3839
|
+
if (ary == tmp) {
|
3840
|
+
rb_raise(rb_eArgError, "recursive array");
|
3841
|
+
}
|
3842
|
+
else {
|
3324
3843
|
VALUE args[2];
|
3325
3844
|
|
3326
3845
|
args[0] = tmp;
|
@@ -3349,13 +3868,13 @@ rb_file_join(VALUE ary, VALUE sep)
|
|
3349
3868
|
|
3350
3869
|
/*
|
3351
3870
|
* call-seq:
|
3352
|
-
* File.join(string, ...)
|
3353
|
-
*
|
3871
|
+
* File.join(string, ...) -> path
|
3872
|
+
*
|
3354
3873
|
* Returns a new string formed by joining the strings using
|
3355
3874
|
* <code>File::SEPARATOR</code>.
|
3356
|
-
*
|
3875
|
+
*
|
3357
3876
|
* File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"
|
3358
|
-
*
|
3877
|
+
*
|
3359
3878
|
*/
|
3360
3879
|
|
3361
3880
|
static VALUE
|
@@ -3364,19 +3883,20 @@ rb_file_s_join(VALUE klass, VALUE args)
|
|
3364
3883
|
return rb_file_join(args, separator);
|
3365
3884
|
}
|
3366
3885
|
|
3886
|
+
#if defined(HAVE_TRUNCATE) || defined(HAVE_CHSIZE)
|
3367
3887
|
/*
|
3368
3888
|
* call-seq:
|
3369
|
-
* File.truncate(file_name, integer)
|
3370
|
-
*
|
3889
|
+
* File.truncate(file_name, integer) -> 0
|
3890
|
+
*
|
3371
3891
|
* Truncates the file <i>file_name</i> to be at most <i>integer</i>
|
3372
3892
|
* bytes long. Not available on all platforms.
|
3373
|
-
*
|
3893
|
+
*
|
3374
3894
|
* f = File.new("out", "w")
|
3375
3895
|
* f.write("1234567890") #=> 10
|
3376
3896
|
* f.close #=> nil
|
3377
3897
|
* File.truncate("out", 5) #=> 0
|
3378
3898
|
* File.size("out") #=> 5
|
3379
|
-
*
|
3899
|
+
*
|
3380
3900
|
*/
|
3381
3901
|
|
3382
3902
|
static VALUE
|
@@ -3387,43 +3907,38 @@ rb_file_s_truncate(VALUE klass, VALUE path, VALUE len)
|
|
3387
3907
|
rb_secure(2);
|
3388
3908
|
pos = NUM2OFFT(len);
|
3389
3909
|
FilePathValue(path);
|
3910
|
+
path = rb_str_encode_ospath(path);
|
3390
3911
|
#ifdef HAVE_TRUNCATE
|
3391
3912
|
if (truncate(StringValueCStr(path), pos) < 0)
|
3392
3913
|
rb_sys_fail(RSTRING_PTR(path));
|
3393
|
-
#else
|
3394
|
-
# ifdef HAVE_CHSIZE
|
3914
|
+
#else /* defined(HAVE_CHSIZE) */
|
3395
3915
|
{
|
3396
3916
|
int tmpfd;
|
3397
3917
|
|
3398
|
-
# ifdef _WIN32
|
3399
|
-
if ((tmpfd = open(StringValueCStr(path), O_RDWR)) < 0) {
|
3400
|
-
rb_sys_fail(RSTRING_PTR(path));
|
3401
|
-
}
|
3402
|
-
# else
|
3403
3918
|
if ((tmpfd = open(StringValueCStr(path), 0)) < 0) {
|
3404
3919
|
rb_sys_fail(RSTRING_PTR(path));
|
3405
3920
|
}
|
3406
|
-
# endif
|
3407
3921
|
if (chsize(tmpfd, pos) < 0) {
|
3408
3922
|
close(tmpfd);
|
3409
3923
|
rb_sys_fail(RSTRING_PTR(path));
|
3410
3924
|
}
|
3411
3925
|
close(tmpfd);
|
3412
3926
|
}
|
3413
|
-
# else
|
3414
|
-
rb_notimplement();
|
3415
|
-
# endif
|
3416
3927
|
#endif
|
3417
3928
|
return INT2FIX(0);
|
3418
3929
|
}
|
3930
|
+
#else
|
3931
|
+
#define rb_file_s_truncate rb_f_notimplement
|
3932
|
+
#endif
|
3419
3933
|
|
3934
|
+
#if defined(HAVE_FTRUNCATE) || defined(HAVE_CHSIZE)
|
3420
3935
|
/*
|
3421
3936
|
* call-seq:
|
3422
|
-
* file.truncate(integer)
|
3423
|
-
*
|
3937
|
+
* file.truncate(integer) -> 0
|
3938
|
+
*
|
3424
3939
|
* Truncates <i>file</i> to at most <i>integer</i> bytes. The file
|
3425
3940
|
* must be opened for writing. Not available on all platforms.
|
3426
|
-
*
|
3941
|
+
*
|
3427
3942
|
* f = File.new("out", "w")
|
3428
3943
|
* f.syswrite("1234567890") #=> 10
|
3429
3944
|
* f.truncate(5) #=> 0
|
@@ -3447,16 +3962,15 @@ rb_file_truncate(VALUE obj, VALUE len)
|
|
3447
3962
|
#ifdef HAVE_FTRUNCATE
|
3448
3963
|
if (ftruncate(fptr->fd, pos) < 0)
|
3449
3964
|
rb_sys_fail_path(fptr->pathv);
|
3450
|
-
#else
|
3451
|
-
# ifdef HAVE_CHSIZE
|
3965
|
+
#else /* defined(HAVE_CHSIZE) */
|
3452
3966
|
if (chsize(fptr->fd, pos) < 0)
|
3453
|
-
|
3454
|
-
# else
|
3455
|
-
rb_notimplement();
|
3456
|
-
# endif
|
3967
|
+
rb_sys_fail_path(fptr->pathv);
|
3457
3968
|
#endif
|
3458
3969
|
return INT2FIX(0);
|
3459
3970
|
}
|
3971
|
+
#else
|
3972
|
+
#define rb_file_truncate rb_f_notimplement
|
3973
|
+
#endif
|
3460
3974
|
|
3461
3975
|
# ifndef LOCK_SH
|
3462
3976
|
# define LOCK_SH 1
|
@@ -3495,14 +4009,14 @@ rb_thread_flock(void *data)
|
|
3495
4009
|
|
3496
4010
|
/*
|
3497
4011
|
* call-seq:
|
3498
|
-
* file.flock (locking_constant )
|
3499
|
-
*
|
4012
|
+
* file.flock (locking_constant )-> 0 or false
|
4013
|
+
*
|
3500
4014
|
* Locks or unlocks a file according to <i>locking_constant</i> (a
|
3501
4015
|
* logical <em>or</em> of the values in the table below).
|
3502
4016
|
* Returns <code>false</code> if <code>File::LOCK_NB</code> is
|
3503
4017
|
* specified and the operation would otherwise have blocked. Not
|
3504
4018
|
* available on all platforms.
|
3505
|
-
*
|
4019
|
+
*
|
3506
4020
|
* Locking constants (in class File):
|
3507
4021
|
*
|
3508
4022
|
* LOCK_EX | Exclusive lock. Only one process may hold an
|
@@ -3518,14 +4032,28 @@ rb_thread_flock(void *data)
|
|
3518
4032
|
*
|
3519
4033
|
* Example:
|
3520
4034
|
*
|
3521
|
-
*
|
3522
|
-
*
|
4035
|
+
* # update a counter using write lock
|
4036
|
+
* # don't use "w" because it truncates the file before lock.
|
4037
|
+
* File.open("counter", File::RDWR|File::CREAT, 0644) {|f|
|
4038
|
+
* f.flock(File::LOCK_EX)
|
4039
|
+
* value = f.read.to_i + 1
|
4040
|
+
* f.rewind
|
4041
|
+
* f.write("#{value}\n")
|
4042
|
+
* f.flush
|
4043
|
+
* f.truncate(f.pos)
|
4044
|
+
* }
|
4045
|
+
*
|
4046
|
+
* # read the counter using read lock
|
4047
|
+
* File.open("counter", "r") {|f|
|
4048
|
+
* f.flock(File::LOCK_SH)
|
4049
|
+
* p f.read
|
4050
|
+
* }
|
4051
|
+
*
|
3523
4052
|
*/
|
3524
4053
|
|
3525
4054
|
static VALUE
|
3526
4055
|
rb_file_flock(VALUE obj, VALUE operation)
|
3527
4056
|
{
|
3528
|
-
#ifndef __CHECKER__
|
3529
4057
|
rb_io_t *fptr;
|
3530
4058
|
int op[2], op1;
|
3531
4059
|
|
@@ -3559,7 +4087,6 @@ rb_file_flock(VALUE obj, VALUE operation)
|
|
3559
4087
|
rb_sys_fail_path(fptr->pathv);
|
3560
4088
|
}
|
3561
4089
|
}
|
3562
|
-
#endif
|
3563
4090
|
return INT2FIX(0);
|
3564
4091
|
}
|
3565
4092
|
#undef flock
|
@@ -3588,60 +4115,60 @@ test_check(int n, int argc, VALUE *argv)
|
|
3588
4115
|
|
3589
4116
|
/*
|
3590
4117
|
* call-seq:
|
3591
|
-
* test(int_cmd, file1 [, file2] )
|
3592
|
-
*
|
4118
|
+
* test(int_cmd, file1 [, file2] ) -> obj
|
4119
|
+
*
|
3593
4120
|
* Uses the integer <i>aCmd</i> to perform various tests on
|
3594
4121
|
* <i>file1</i> (first table below) or on <i>file1</i> and
|
3595
4122
|
* <i>file2</i> (second table).
|
3596
|
-
*
|
4123
|
+
*
|
3597
4124
|
* File tests on a single file:
|
3598
4125
|
*
|
3599
4126
|
* Test Returns Meaning
|
3600
|
-
*
|
3601
|
-
*
|
3602
|
-
*
|
3603
|
-
*
|
3604
|
-
*
|
3605
|
-
*
|
3606
|
-
*
|
3607
|
-
*
|
4127
|
+
* "A" | Time | Last access time for file1
|
4128
|
+
* "b" | boolean | True if file1 is a block device
|
4129
|
+
* "c" | boolean | True if file1 is a character device
|
4130
|
+
* "C" | Time | Last change time for file1
|
4131
|
+
* "d" | boolean | True if file1 exists and is a directory
|
4132
|
+
* "e" | boolean | True if file1 exists
|
4133
|
+
* "f" | boolean | True if file1 exists and is a regular file
|
4134
|
+
* "g" | boolean | True if file1 has the \CF{setgid} bit
|
3608
4135
|
* | | set (false under NT)
|
3609
|
-
*
|
4136
|
+
* "G" | boolean | True if file1 exists and has a group
|
3610
4137
|
* | | ownership equal to the caller's group
|
3611
|
-
*
|
3612
|
-
*
|
3613
|
-
*
|
3614
|
-
*
|
4138
|
+
* "k" | boolean | True if file1 exists and has the sticky bit set
|
4139
|
+
* "l" | boolean | True if file1 exists and is a symbolic link
|
4140
|
+
* "M" | Time | Last modification time for file1
|
4141
|
+
* "o" | boolean | True if file1 exists and is owned by
|
3615
4142
|
* | | the caller's effective uid
|
3616
|
-
*
|
4143
|
+
* "O" | boolean | True if file1 exists and is owned by
|
3617
4144
|
* | | the caller's real uid
|
3618
|
-
*
|
3619
|
-
*
|
4145
|
+
* "p" | boolean | True if file1 exists and is a fifo
|
4146
|
+
* "r" | boolean | True if file1 is readable by the effective
|
3620
4147
|
* | | uid/gid of the caller
|
3621
|
-
*
|
4148
|
+
* "R" | boolean | True if file is readable by the real
|
3622
4149
|
* | | uid/gid of the caller
|
3623
|
-
*
|
4150
|
+
* "s" | int/nil | If file1 has nonzero size, return the size,
|
3624
4151
|
* | | otherwise return nil
|
3625
|
-
*
|
3626
|
-
*
|
3627
|
-
*
|
4152
|
+
* "S" | boolean | True if file1 exists and is a socket
|
4153
|
+
* "u" | boolean | True if file1 has the setuid bit set
|
4154
|
+
* "w" | boolean | True if file1 exists and is writable by
|
3628
4155
|
* | | the effective uid/gid
|
3629
|
-
*
|
4156
|
+
* "W" | boolean | True if file1 exists and is writable by
|
3630
4157
|
* | | the real uid/gid
|
3631
|
-
*
|
4158
|
+
* "x" | boolean | True if file1 exists and is executable by
|
3632
4159
|
* | | the effective uid/gid
|
3633
|
-
*
|
4160
|
+
* "X" | boolean | True if file1 exists and is executable by
|
3634
4161
|
* | | the real uid/gid
|
3635
|
-
*
|
4162
|
+
* "z" | boolean | True if file1 exists and has a zero length
|
3636
4163
|
*
|
3637
4164
|
* Tests that take two files:
|
3638
4165
|
*
|
3639
|
-
*
|
3640
|
-
*
|
4166
|
+
* "-" | boolean | True if file1 and file2 are identical
|
4167
|
+
* "=" | boolean | True if the modification times of file1
|
3641
4168
|
* | | and file2 are equal
|
3642
|
-
*
|
4169
|
+
* "<" | boolean | True if the modification time of file1
|
3643
4170
|
* | | is prior to that of file2
|
3644
|
-
*
|
4171
|
+
* ">" | boolean | True if the modification time of file1
|
3645
4172
|
* | | is after that of file2
|
3646
4173
|
*/
|
3647
4174
|
|
@@ -3650,7 +4177,7 @@ rb_f_test(int argc, VALUE *argv)
|
|
3650
4177
|
{
|
3651
4178
|
int cmd;
|
3652
4179
|
|
3653
|
-
if (argc == 0) rb_raise(rb_eArgError, "wrong number of arguments");
|
4180
|
+
if (argc == 0) rb_raise(rb_eArgError, "wrong number of arguments (0 for 2..3)");
|
3654
4181
|
cmd = NUM2CHR(argv[0]);
|
3655
4182
|
if (cmd == 0) goto unknown;
|
3656
4183
|
if (strchr("bcdefgGkloOprRsSuwWxXz", cmd)) {
|
@@ -3712,7 +4239,7 @@ rb_f_test(int argc, VALUE *argv)
|
|
3712
4239
|
return rb_file_writable_p(0, argv[1]);
|
3713
4240
|
|
3714
4241
|
case 'W':
|
3715
|
-
return
|
4242
|
+
return rb_file_writable_real_p(0, argv[1]);
|
3716
4243
|
|
3717
4244
|
case 'x':
|
3718
4245
|
return rb_file_executable_p(0, argv[1]);
|
@@ -3774,10 +4301,10 @@ rb_f_test(int argc, VALUE *argv)
|
|
3774
4301
|
unknown:
|
3775
4302
|
/* unknown command */
|
3776
4303
|
if (ISPRINT(cmd)) {
|
3777
|
-
rb_raise(rb_eArgError, "unknown command
|
4304
|
+
rb_raise(rb_eArgError, "unknown command '%s%c'", cmd == '\'' || cmd == '\\' ? "\\" : "", cmd);
|
3778
4305
|
}
|
3779
4306
|
else {
|
3780
|
-
rb_raise(rb_eArgError, "unknown command
|
4307
|
+
rb_raise(rb_eArgError, "unknown command \"\\x%02X\"", cmd);
|
3781
4308
|
}
|
3782
4309
|
return Qnil; /* not reached */
|
3783
4310
|
}
|
@@ -3806,7 +4333,7 @@ rb_stat_s_alloc(VALUE klass)
|
|
3806
4333
|
/*
|
3807
4334
|
* call-seq:
|
3808
4335
|
*
|
3809
|
-
* File::Stat.new(file_name)
|
4336
|
+
* File::Stat.new(file_name) -> stat
|
3810
4337
|
*
|
3811
4338
|
* Create a File::Stat object for the given file name (raising an
|
3812
4339
|
* exception if the file doesn't exist).
|
@@ -3819,7 +4346,8 @@ rb_stat_init(VALUE obj, VALUE fname)
|
|
3819
4346
|
|
3820
4347
|
rb_secure(2);
|
3821
4348
|
FilePathValue(fname);
|
3822
|
-
|
4349
|
+
fname = rb_str_encode_ospath(fname);
|
4350
|
+
if (STAT(StringValueCStr(fname), &st) == -1) {
|
3823
4351
|
rb_sys_fail(RSTRING_PTR(fname));
|
3824
4352
|
}
|
3825
4353
|
if (DATA_PTR(obj)) {
|
@@ -3860,16 +4388,16 @@ rb_stat_init_copy(VALUE copy, VALUE orig)
|
|
3860
4388
|
|
3861
4389
|
/*
|
3862
4390
|
* call-seq:
|
3863
|
-
* stat.ftype
|
3864
|
-
*
|
4391
|
+
* stat.ftype -> string
|
4392
|
+
*
|
3865
4393
|
* Identifies the type of <i>stat</i>. The return string is one of:
|
3866
4394
|
* ``<code>file</code>'', ``<code>directory</code>'',
|
3867
4395
|
* ``<code>characterSpecial</code>'', ``<code>blockSpecial</code>'',
|
3868
4396
|
* ``<code>fifo</code>'', ``<code>link</code>'',
|
3869
4397
|
* ``<code>socket</code>'', or ``<code>unknown</code>''.
|
3870
|
-
*
|
4398
|
+
*
|
3871
4399
|
* File.stat("/dev/tty").ftype #=> "characterSpecial"
|
3872
|
-
*
|
4400
|
+
*
|
3873
4401
|
*/
|
3874
4402
|
|
3875
4403
|
static VALUE
|
@@ -3880,11 +4408,11 @@ rb_stat_ftype(VALUE obj)
|
|
3880
4408
|
|
3881
4409
|
/*
|
3882
4410
|
* call-seq:
|
3883
|
-
* stat.directory?
|
3884
|
-
*
|
4411
|
+
* stat.directory? -> true or false
|
4412
|
+
*
|
3885
4413
|
* Returns <code>true</code> if <i>stat</i> is a directory,
|
3886
4414
|
* <code>false</code> otherwise.
|
3887
|
-
*
|
4415
|
+
*
|
3888
4416
|
* File.stat("testfile").directory? #=> false
|
3889
4417
|
* File.stat(".").directory? #=> true
|
3890
4418
|
*/
|
@@ -3898,8 +4426,8 @@ rb_stat_d(VALUE obj)
|
|
3898
4426
|
|
3899
4427
|
/*
|
3900
4428
|
* call-seq:
|
3901
|
-
* stat.pipe?
|
3902
|
-
*
|
4429
|
+
* stat.pipe? -> true or false
|
4430
|
+
*
|
3903
4431
|
* Returns <code>true</code> if the operating system supports pipes and
|
3904
4432
|
* <i>stat</i> is a pipe; <code>false</code> otherwise.
|
3905
4433
|
*/
|
@@ -3916,19 +4444,19 @@ rb_stat_p(VALUE obj)
|
|
3916
4444
|
|
3917
4445
|
/*
|
3918
4446
|
* call-seq:
|
3919
|
-
* stat.symlink?
|
3920
|
-
*
|
4447
|
+
* stat.symlink? -> true or false
|
4448
|
+
*
|
3921
4449
|
* Returns <code>true</code> if <i>stat</i> is a symbolic link,
|
3922
4450
|
* <code>false</code> if it isn't or if the operating system doesn't
|
3923
4451
|
* support this feature. As <code>File::stat</code> automatically
|
3924
4452
|
* follows symbolic links, <code>symlink?</code> will always be
|
3925
4453
|
* <code>false</code> for an object returned by
|
3926
4454
|
* <code>File::stat</code>.
|
3927
|
-
*
|
4455
|
+
*
|
3928
4456
|
* File.symlink("testfile", "alink") #=> 0
|
3929
4457
|
* File.stat("alink").symlink? #=> false
|
3930
4458
|
* File.lstat("alink").symlink? #=> true
|
3931
|
-
*
|
4459
|
+
*
|
3932
4460
|
*/
|
3933
4461
|
|
3934
4462
|
static VALUE
|
@@ -3942,14 +4470,14 @@ rb_stat_l(VALUE obj)
|
|
3942
4470
|
|
3943
4471
|
/*
|
3944
4472
|
* call-seq:
|
3945
|
-
* stat.socket?
|
3946
|
-
*
|
4473
|
+
* stat.socket? -> true or false
|
4474
|
+
*
|
3947
4475
|
* Returns <code>true</code> if <i>stat</i> is a socket,
|
3948
4476
|
* <code>false</code> if it isn't or if the operating system doesn't
|
3949
4477
|
* support this feature.
|
3950
|
-
*
|
4478
|
+
*
|
3951
4479
|
* File.stat("testfile").socket? #=> false
|
3952
|
-
*
|
4480
|
+
*
|
3953
4481
|
*/
|
3954
4482
|
|
3955
4483
|
static VALUE
|
@@ -3964,15 +4492,15 @@ rb_stat_S(VALUE obj)
|
|
3964
4492
|
|
3965
4493
|
/*
|
3966
4494
|
* call-seq:
|
3967
|
-
* stat.blockdev?
|
3968
|
-
*
|
4495
|
+
* stat.blockdev? -> true or false
|
4496
|
+
*
|
3969
4497
|
* Returns <code>true</code> if the file is a block device,
|
3970
4498
|
* <code>false</code> if it isn't or if the operating system doesn't
|
3971
4499
|
* support this feature.
|
3972
|
-
*
|
4500
|
+
*
|
3973
4501
|
* File.stat("testfile").blockdev? #=> false
|
3974
4502
|
* File.stat("/dev/hda1").blockdev? #=> true
|
3975
|
-
*
|
4503
|
+
*
|
3976
4504
|
*/
|
3977
4505
|
|
3978
4506
|
static VALUE
|
@@ -3987,14 +4515,14 @@ rb_stat_b(VALUE obj)
|
|
3987
4515
|
|
3988
4516
|
/*
|
3989
4517
|
* call-seq:
|
3990
|
-
* stat.chardev?
|
3991
|
-
*
|
4518
|
+
* stat.chardev? -> true or false
|
4519
|
+
*
|
3992
4520
|
* Returns <code>true</code> if the file is a character device,
|
3993
4521
|
* <code>false</code> if it isn't or if the operating system doesn't
|
3994
4522
|
* support this feature.
|
3995
|
-
*
|
4523
|
+
*
|
3996
4524
|
* File.stat("/dev/tty").chardev? #=> true
|
3997
|
-
*
|
4525
|
+
*
|
3998
4526
|
*/
|
3999
4527
|
|
4000
4528
|
static VALUE
|
@@ -4007,14 +4535,14 @@ rb_stat_c(VALUE obj)
|
|
4007
4535
|
|
4008
4536
|
/*
|
4009
4537
|
* call-seq:
|
4010
|
-
* stat.owned?
|
4011
|
-
*
|
4538
|
+
* stat.owned? -> true or false
|
4539
|
+
*
|
4012
4540
|
* Returns <code>true</code> if the effective user id of the process is
|
4013
4541
|
* the same as the owner of <i>stat</i>.
|
4014
|
-
*
|
4542
|
+
*
|
4015
4543
|
* File.stat("testfile").owned? #=> true
|
4016
4544
|
* File.stat("/etc/passwd").owned? #=> false
|
4017
|
-
*
|
4545
|
+
*
|
4018
4546
|
*/
|
4019
4547
|
|
4020
4548
|
static VALUE
|
@@ -4033,34 +4561,34 @@ rb_stat_rowned(VALUE obj)
|
|
4033
4561
|
|
4034
4562
|
/*
|
4035
4563
|
* call-seq:
|
4036
|
-
* stat.grpowned?
|
4037
|
-
*
|
4564
|
+
* stat.grpowned? -> true or false
|
4565
|
+
*
|
4038
4566
|
* Returns true if the effective group id of the process is the same as
|
4039
4567
|
* the group id of <i>stat</i>. On Windows NT, returns <code>false</code>.
|
4040
|
-
*
|
4568
|
+
*
|
4041
4569
|
* File.stat("testfile").grpowned? #=> true
|
4042
4570
|
* File.stat("/etc/passwd").grpowned? #=> false
|
4043
|
-
*
|
4571
|
+
*
|
4044
4572
|
*/
|
4045
4573
|
|
4046
4574
|
static VALUE
|
4047
4575
|
rb_stat_grpowned(VALUE obj)
|
4048
4576
|
{
|
4049
4577
|
#ifndef _WIN32
|
4050
|
-
if (
|
4578
|
+
if (rb_group_member(get_stat(obj)->st_gid)) return Qtrue;
|
4051
4579
|
#endif
|
4052
4580
|
return Qfalse;
|
4053
4581
|
}
|
4054
4582
|
|
4055
4583
|
/*
|
4056
4584
|
* call-seq:
|
4057
|
-
* stat.readable?
|
4058
|
-
*
|
4585
|
+
* stat.readable? -> true or false
|
4586
|
+
*
|
4059
4587
|
* Returns <code>true</code> if <i>stat</i> is readable by the
|
4060
4588
|
* effective user id of this process.
|
4061
|
-
*
|
4589
|
+
*
|
4062
4590
|
* File.stat("testfile").readable? #=> true
|
4063
|
-
*
|
4591
|
+
*
|
4064
4592
|
*/
|
4065
4593
|
|
4066
4594
|
static VALUE
|
@@ -4087,13 +4615,13 @@ rb_stat_r(VALUE obj)
|
|
4087
4615
|
|
4088
4616
|
/*
|
4089
4617
|
* call-seq:
|
4090
|
-
* stat.readable_real?
|
4091
|
-
*
|
4618
|
+
* stat.readable_real? -> true or false
|
4619
|
+
*
|
4092
4620
|
* Returns <code>true</code> if <i>stat</i> is readable by the real
|
4093
4621
|
* user id of this process.
|
4094
|
-
*
|
4622
|
+
*
|
4095
4623
|
* File.stat("testfile").readable_real? #=> true
|
4096
|
-
*
|
4624
|
+
*
|
4097
4625
|
*/
|
4098
4626
|
|
4099
4627
|
static VALUE
|
@@ -4109,7 +4637,7 @@ rb_stat_R(VALUE obj)
|
|
4109
4637
|
return st->st_mode & S_IRUSR ? Qtrue : Qfalse;
|
4110
4638
|
#endif
|
4111
4639
|
#ifdef S_IRGRP
|
4112
|
-
if (
|
4640
|
+
if (rb_group_member(get_stat(obj)->st_gid))
|
4113
4641
|
return st->st_mode & S_IRGRP ? Qtrue : Qfalse;
|
4114
4642
|
#endif
|
4115
4643
|
#ifdef S_IROTH
|
@@ -4120,15 +4648,15 @@ rb_stat_R(VALUE obj)
|
|
4120
4648
|
|
4121
4649
|
/*
|
4122
4650
|
* call-seq:
|
4123
|
-
* stat.world_readable?
|
4651
|
+
* stat.world_readable? -> fixnum or nil
|
4124
4652
|
*
|
4125
4653
|
* If <i>stat</i> is readable by others, returns an integer
|
4126
4654
|
* representing the file permission bits of <i>stat</i>. Returns
|
4127
4655
|
* <code>nil</code> otherwise. The meaning of the bits is platform
|
4128
4656
|
* dependent; on Unix systems, see <code>stat(2)</code>.
|
4129
|
-
*
|
4130
|
-
* m = File.stat("/etc/passwd").world_readable?
|
4131
|
-
* sprintf("%o", m)
|
4657
|
+
*
|
4658
|
+
* m = File.stat("/etc/passwd").world_readable? #=> 420
|
4659
|
+
* sprintf("%o", m) #=> "644"
|
4132
4660
|
*/
|
4133
4661
|
|
4134
4662
|
static VALUE
|
@@ -4146,13 +4674,13 @@ rb_stat_wr(VALUE obj)
|
|
4146
4674
|
|
4147
4675
|
/*
|
4148
4676
|
* call-seq:
|
4149
|
-
* stat.writable?
|
4150
|
-
*
|
4677
|
+
* stat.writable? -> true or false
|
4678
|
+
*
|
4151
4679
|
* Returns <code>true</code> if <i>stat</i> is writable by the
|
4152
4680
|
* effective user id of this process.
|
4153
|
-
*
|
4681
|
+
*
|
4154
4682
|
* File.stat("testfile").writable? #=> true
|
4155
|
-
*
|
4683
|
+
*
|
4156
4684
|
*/
|
4157
4685
|
|
4158
4686
|
static VALUE
|
@@ -4179,13 +4707,13 @@ rb_stat_w(VALUE obj)
|
|
4179
4707
|
|
4180
4708
|
/*
|
4181
4709
|
* call-seq:
|
4182
|
-
* stat.writable_real?
|
4183
|
-
*
|
4710
|
+
* stat.writable_real? -> true or false
|
4711
|
+
*
|
4184
4712
|
* Returns <code>true</code> if <i>stat</i> is writable by the real
|
4185
4713
|
* user id of this process.
|
4186
|
-
*
|
4714
|
+
*
|
4187
4715
|
* File.stat("testfile").writable_real? #=> true
|
4188
|
-
*
|
4716
|
+
*
|
4189
4717
|
*/
|
4190
4718
|
|
4191
4719
|
static VALUE
|
@@ -4201,7 +4729,7 @@ rb_stat_W(VALUE obj)
|
|
4201
4729
|
return st->st_mode & S_IWUSR ? Qtrue : Qfalse;
|
4202
4730
|
#endif
|
4203
4731
|
#ifdef S_IWGRP
|
4204
|
-
if (
|
4732
|
+
if (rb_group_member(get_stat(obj)->st_gid))
|
4205
4733
|
return st->st_mode & S_IWGRP ? Qtrue : Qfalse;
|
4206
4734
|
#endif
|
4207
4735
|
#ifdef S_IWOTH
|
@@ -4212,15 +4740,15 @@ rb_stat_W(VALUE obj)
|
|
4212
4740
|
|
4213
4741
|
/*
|
4214
4742
|
* call-seq:
|
4215
|
-
* stat.world_writable?
|
4743
|
+
* stat.world_writable? -> fixnum or nil
|
4216
4744
|
*
|
4217
4745
|
* If <i>stat</i> is writable by others, returns an integer
|
4218
4746
|
* representing the file permission bits of <i>stat</i>. Returns
|
4219
4747
|
* <code>nil</code> otherwise. The meaning of the bits is platform
|
4220
4748
|
* dependent; on Unix systems, see <code>stat(2)</code>.
|
4221
|
-
*
|
4222
|
-
* m = File.stat("/tmp").world_writable?
|
4223
|
-
* sprintf("%o", m)
|
4749
|
+
*
|
4750
|
+
* m = File.stat("/tmp").world_writable? #=> 511
|
4751
|
+
* sprintf("%o", m) #=> "777"
|
4224
4752
|
*/
|
4225
4753
|
|
4226
4754
|
static VALUE
|
@@ -4238,15 +4766,15 @@ rb_stat_ww(VALUE obj)
|
|
4238
4766
|
|
4239
4767
|
/*
|
4240
4768
|
* call-seq:
|
4241
|
-
* stat.executable?
|
4242
|
-
*
|
4769
|
+
* stat.executable? -> true or false
|
4770
|
+
*
|
4243
4771
|
* Returns <code>true</code> if <i>stat</i> is executable or if the
|
4244
4772
|
* operating system doesn't distinguish executable files from
|
4245
4773
|
* nonexecutable files. The tests are made using the effective owner of
|
4246
4774
|
* the process.
|
4247
|
-
*
|
4775
|
+
*
|
4248
4776
|
* File.stat("testfile").executable? #=> false
|
4249
|
-
*
|
4777
|
+
*
|
4250
4778
|
*/
|
4251
4779
|
|
4252
4780
|
static VALUE
|
@@ -4275,8 +4803,8 @@ rb_stat_x(VALUE obj)
|
|
4275
4803
|
|
4276
4804
|
/*
|
4277
4805
|
* call-seq:
|
4278
|
-
* stat.executable_real?
|
4279
|
-
*
|
4806
|
+
* stat.executable_real? -> true or false
|
4807
|
+
*
|
4280
4808
|
* Same as <code>executable?</code>, but tests using the real owner of
|
4281
4809
|
* the process.
|
4282
4810
|
*/
|
@@ -4296,7 +4824,7 @@ rb_stat_X(VALUE obj)
|
|
4296
4824
|
return st->st_mode & S_IXUSR ? Qtrue : Qfalse;
|
4297
4825
|
#endif
|
4298
4826
|
#ifdef S_IXGRP
|
4299
|
-
if (
|
4827
|
+
if (rb_group_member(get_stat(obj)->st_gid))
|
4300
4828
|
return st->st_mode & S_IXGRP ? Qtrue : Qfalse;
|
4301
4829
|
#endif
|
4302
4830
|
#ifdef S_IXOTH
|
@@ -4307,13 +4835,13 @@ rb_stat_X(VALUE obj)
|
|
4307
4835
|
|
4308
4836
|
/*
|
4309
4837
|
* call-seq:
|
4310
|
-
* stat.file?
|
4311
|
-
*
|
4838
|
+
* stat.file? -> true or false
|
4839
|
+
*
|
4312
4840
|
* Returns <code>true</code> if <i>stat</i> is a regular file (not
|
4313
4841
|
* a device file, pipe, socket, etc.).
|
4314
|
-
*
|
4842
|
+
*
|
4315
4843
|
* File.stat("testfile").file? #=> true
|
4316
|
-
*
|
4844
|
+
*
|
4317
4845
|
*/
|
4318
4846
|
|
4319
4847
|
static VALUE
|
@@ -4325,13 +4853,13 @@ rb_stat_f(VALUE obj)
|
|
4325
4853
|
|
4326
4854
|
/*
|
4327
4855
|
* call-seq:
|
4328
|
-
* stat.zero?
|
4329
|
-
*
|
4856
|
+
* stat.zero? -> true or false
|
4857
|
+
*
|
4330
4858
|
* Returns <code>true</code> if <i>stat</i> is a zero-length file;
|
4331
4859
|
* <code>false</code> otherwise.
|
4332
|
-
*
|
4860
|
+
*
|
4333
4861
|
* File.stat("testfile").zero? #=> false
|
4334
|
-
*
|
4862
|
+
*
|
4335
4863
|
*/
|
4336
4864
|
|
4337
4865
|
static VALUE
|
@@ -4343,12 +4871,12 @@ rb_stat_z(VALUE obj)
|
|
4343
4871
|
|
4344
4872
|
/*
|
4345
4873
|
* call-seq:
|
4346
|
-
* state.size
|
4347
|
-
*
|
4874
|
+
* state.size -> integer
|
4875
|
+
*
|
4348
4876
|
* Returns the size of <i>stat</i> in bytes.
|
4349
|
-
*
|
4877
|
+
*
|
4350
4878
|
* File.stat("testfile").size #=> 66
|
4351
|
-
*
|
4879
|
+
*
|
4352
4880
|
*/
|
4353
4881
|
|
4354
4882
|
static VALUE
|
@@ -4362,12 +4890,12 @@ rb_stat_s(VALUE obj)
|
|
4362
4890
|
|
4363
4891
|
/*
|
4364
4892
|
* call-seq:
|
4365
|
-
* stat.setuid?
|
4366
|
-
*
|
4893
|
+
* stat.setuid? -> true or false
|
4894
|
+
*
|
4367
4895
|
* Returns <code>true</code> if <i>stat</i> has the set-user-id
|
4368
4896
|
* permission bit set, <code>false</code> if it doesn't or if the
|
4369
4897
|
* operating system doesn't support this feature.
|
4370
|
-
*
|
4898
|
+
*
|
4371
4899
|
* File.stat("/bin/su").setuid? #=> true
|
4372
4900
|
*/
|
4373
4901
|
|
@@ -4382,14 +4910,14 @@ rb_stat_suid(VALUE obj)
|
|
4382
4910
|
|
4383
4911
|
/*
|
4384
4912
|
* call-seq:
|
4385
|
-
* stat.setgid?
|
4386
|
-
*
|
4913
|
+
* stat.setgid? -> true or false
|
4914
|
+
*
|
4387
4915
|
* Returns <code>true</code> if <i>stat</i> has the set-group-id
|
4388
4916
|
* permission bit set, <code>false</code> if it doesn't or if the
|
4389
4917
|
* operating system doesn't support this feature.
|
4390
|
-
*
|
4918
|
+
*
|
4391
4919
|
* File.stat("/usr/sbin/lpc").setgid? #=> true
|
4392
|
-
*
|
4920
|
+
*
|
4393
4921
|
*/
|
4394
4922
|
|
4395
4923
|
static VALUE
|
@@ -4403,14 +4931,14 @@ rb_stat_sgid(VALUE obj)
|
|
4403
4931
|
|
4404
4932
|
/*
|
4405
4933
|
* call-seq:
|
4406
|
-
* stat.sticky?
|
4407
|
-
*
|
4934
|
+
* stat.sticky? -> true or false
|
4935
|
+
*
|
4408
4936
|
* Returns <code>true</code> if <i>stat</i> has its sticky bit set,
|
4409
4937
|
* <code>false</code> if it doesn't or if the operating system doesn't
|
4410
4938
|
* support this feature.
|
4411
|
-
*
|
4939
|
+
*
|
4412
4940
|
* File.stat("testfile").sticky? #=> false
|
4413
|
-
*
|
4941
|
+
*
|
4414
4942
|
*/
|
4415
4943
|
|
4416
4944
|
static VALUE
|
@@ -4430,8 +4958,8 @@ rb_file_const(const char *name, VALUE value)
|
|
4430
4958
|
rb_define_const(rb_mFConst, name, value);
|
4431
4959
|
}
|
4432
4960
|
|
4433
|
-
|
4434
|
-
|
4961
|
+
int
|
4962
|
+
rb_is_absolute_path(const char *path)
|
4435
4963
|
{
|
4436
4964
|
#ifdef DOSISH_DRIVE_LETTER
|
4437
4965
|
if (has_drive_letter(path) && isdirsep(path[2])) return 1;
|
@@ -4461,7 +4989,7 @@ path_check_0(VALUE path, int execpath)
|
|
4461
4989
|
const char *p0 = StringValueCStr(path);
|
4462
4990
|
char *p = 0, *s;
|
4463
4991
|
|
4464
|
-
if (!
|
4992
|
+
if (!rb_is_absolute_path(p0)) {
|
4465
4993
|
char *buf = my_getcwd();
|
4466
4994
|
VALUE newpath;
|
4467
4995
|
|
@@ -4470,13 +4998,14 @@ path_check_0(VALUE path, int execpath)
|
|
4470
4998
|
|
4471
4999
|
rb_str_cat2(newpath, "/");
|
4472
5000
|
rb_str_cat2(newpath, p0);
|
4473
|
-
|
5001
|
+
path = newpath;
|
5002
|
+
p0 = RSTRING_PTR(path);
|
4474
5003
|
}
|
4475
5004
|
for (;;) {
|
4476
5005
|
#ifndef S_IWOTH
|
4477
5006
|
# define S_IWOTH 002
|
4478
5007
|
#endif
|
4479
|
-
if (
|
5008
|
+
if (STAT(p0, &st) == 0 && S_ISDIR(st.st_mode) && (st.st_mode & S_IWOTH)
|
4480
5009
|
#ifdef S_ISVTX
|
4481
5010
|
&& !(p && execpath && (st.st_mode & S_ISVTX))
|
4482
5011
|
#endif
|
@@ -4484,6 +5013,7 @@ path_check_0(VALUE path, int execpath)
|
|
4484
5013
|
rb_warn("Insecure world writable dir %s in %sPATH, mode 0%o",
|
4485
5014
|
p0, (execpath ? "" : "LOAD_"), st.st_mode);
|
4486
5015
|
if (p) *p = '/';
|
5016
|
+
RB_GC_GUARD(path);
|
4487
5017
|
return 0;
|
4488
5018
|
}
|
4489
5019
|
s = strrdirsep(p0);
|
@@ -4495,15 +5025,11 @@ path_check_0(VALUE path, int execpath)
|
|
4495
5025
|
}
|
4496
5026
|
#endif
|
4497
5027
|
|
4498
|
-
static int
|
4499
|
-
fpath_check(const char *path)
|
4500
|
-
{
|
4501
5028
|
#if ENABLE_PATH_CHECK
|
4502
|
-
|
5029
|
+
#define fpath_check(path) path_check_0(path, FALSE)
|
4503
5030
|
#else
|
4504
|
-
|
5031
|
+
#define fpath_check(path) 1
|
4505
5032
|
#endif
|
4506
|
-
}
|
4507
5033
|
|
4508
5034
|
int
|
4509
5035
|
rb_path_check(const char *path)
|
@@ -4520,7 +5046,7 @@ rb_path_check(const char *path)
|
|
4520
5046
|
if (!p) p = pend;
|
4521
5047
|
|
4522
5048
|
for (;;) {
|
4523
|
-
if (!path_check_0(rb_str_new(p0, p - p0),
|
5049
|
+
if (!path_check_0(rb_str_new(p0, p - p0), TRUE)) {
|
4524
5050
|
return 0; /* not safe */
|
4525
5051
|
}
|
4526
5052
|
p0 = p + 1;
|
@@ -4550,6 +5076,12 @@ file_load_ok(const char *path)
|
|
4550
5076
|
return ret;
|
4551
5077
|
}
|
4552
5078
|
|
5079
|
+
int
|
5080
|
+
rb_file_load_ok(const char *path)
|
5081
|
+
{
|
5082
|
+
return file_load_ok(path);
|
5083
|
+
}
|
5084
|
+
|
4553
5085
|
static int
|
4554
5086
|
is_explicit_relative(const char *path)
|
4555
5087
|
{
|
@@ -4560,42 +5092,62 @@ is_explicit_relative(const char *path)
|
|
4560
5092
|
|
4561
5093
|
VALUE rb_get_load_path(void);
|
4562
5094
|
|
5095
|
+
static VALUE
|
5096
|
+
copy_path_class(VALUE path, VALUE orig)
|
5097
|
+
{
|
5098
|
+
RBASIC(path)->klass = rb_obj_class(orig);
|
5099
|
+
OBJ_FREEZE(path);
|
5100
|
+
return path;
|
5101
|
+
}
|
5102
|
+
|
4563
5103
|
int
|
4564
5104
|
rb_find_file_ext(VALUE *filep, const char *const *ext)
|
4565
5105
|
{
|
4566
|
-
|
4567
|
-
|
5106
|
+
return rb_find_file_ext_safe(filep, ext, rb_safe_level());
|
5107
|
+
}
|
5108
|
+
|
5109
|
+
int
|
5110
|
+
rb_find_file_ext_safe(VALUE *filep, const char *const *ext, int safe_level)
|
5111
|
+
{
|
5112
|
+
const char *f = StringValueCStr(*filep);
|
5113
|
+
VALUE fname = *filep, load_path, tmp;
|
4568
5114
|
long i, j, fnlen;
|
5115
|
+
int expanded = 0;
|
4569
5116
|
|
4570
5117
|
if (!ext[0]) return 0;
|
4571
5118
|
|
4572
5119
|
if (f[0] == '~') {
|
4573
|
-
fname =
|
4574
|
-
if (
|
5120
|
+
fname = file_expand_path_1(fname);
|
5121
|
+
if (safe_level >= 1 && OBJ_TAINTED(fname)) {
|
4575
5122
|
rb_raise(rb_eSecurityError, "loading from unsafe file %s", f);
|
4576
5123
|
}
|
4577
|
-
|
4578
|
-
f = StringValueCStr(fname);
|
5124
|
+
f = RSTRING_PTR(fname);
|
4579
5125
|
*filep = fname;
|
5126
|
+
expanded = 1;
|
4580
5127
|
}
|
4581
5128
|
|
4582
|
-
if (
|
4583
|
-
|
5129
|
+
if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
|
5130
|
+
if (safe_level >= 1 && !fpath_check(fname)) {
|
5131
|
+
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
|
5132
|
+
}
|
5133
|
+
if (!expanded) fname = file_expand_path_1(fname);
|
4584
5134
|
fnlen = RSTRING_LEN(fname);
|
4585
5135
|
for (i=0; ext[i]; i++) {
|
4586
5136
|
rb_str_cat2(fname, ext[i]);
|
4587
|
-
if (file_load_ok(
|
4588
|
-
|
4589
|
-
|
4590
|
-
*filep = fname;
|
4591
|
-
return i+1;
|
5137
|
+
if (file_load_ok(RSTRING_PTR(fname))) {
|
5138
|
+
*filep = copy_path_class(fname, *filep);
|
5139
|
+
return (int)(i+1);
|
4592
5140
|
}
|
4593
5141
|
rb_str_set_len(fname, fnlen);
|
4594
5142
|
}
|
4595
5143
|
return 0;
|
4596
5144
|
}
|
4597
5145
|
|
4598
|
-
|
5146
|
+
if (safe_level >= 4) {
|
5147
|
+
rb_raise(rb_eSecurityError, "loading from non-absolute path %s", f);
|
5148
|
+
}
|
5149
|
+
|
5150
|
+
RB_GC_GUARD(load_path) = rb_get_load_path();
|
4599
5151
|
if (!load_path) return 0;
|
4600
5152
|
|
4601
5153
|
fname = rb_str_dup(*filep);
|
@@ -4607,14 +5159,12 @@ rb_find_file_ext(VALUE *filep, const char *const *ext)
|
|
4607
5159
|
for (i = 0; i < RARRAY_LEN(load_path); i++) {
|
4608
5160
|
VALUE str = RARRAY_PTR(load_path)[i];
|
4609
5161
|
|
4610
|
-
|
5162
|
+
RB_GC_GUARD(str) = rb_get_path_check(str, safe_level);
|
4611
5163
|
if (RSTRING_LEN(str) == 0) continue;
|
4612
5164
|
file_expand_path(fname, str, 0, tmp);
|
4613
5165
|
if (file_load_ok(RSTRING_PTR(tmp))) {
|
4614
|
-
|
4615
|
-
|
4616
|
-
*filep = tmp;
|
4617
|
-
return j+1;
|
5166
|
+
*filep = copy_path_class(tmp, *filep);
|
5167
|
+
return (int)(j+1);
|
4618
5168
|
}
|
4619
5169
|
FL_UNSET(tmp, FL_TAINT | FL_UNTRUSTED);
|
4620
5170
|
}
|
@@ -4626,29 +5176,38 @@ rb_find_file_ext(VALUE *filep, const char *const *ext)
|
|
4626
5176
|
|
4627
5177
|
VALUE
|
4628
5178
|
rb_find_file(VALUE path)
|
5179
|
+
{
|
5180
|
+
return rb_find_file_safe(path, rb_safe_level());
|
5181
|
+
}
|
5182
|
+
|
5183
|
+
VALUE
|
5184
|
+
rb_find_file_safe(VALUE path, int safe_level)
|
4629
5185
|
{
|
4630
5186
|
VALUE tmp, load_path;
|
4631
5187
|
const char *f = StringValueCStr(path);
|
5188
|
+
int expanded = 0;
|
4632
5189
|
|
4633
5190
|
if (f[0] == '~') {
|
4634
|
-
|
4635
|
-
if (
|
4636
|
-
rb_raise(rb_eSecurityError, "loading from unsafe
|
5191
|
+
tmp = file_expand_path_1(path);
|
5192
|
+
if (safe_level >= 1 && OBJ_TAINTED(tmp)) {
|
5193
|
+
rb_raise(rb_eSecurityError, "loading from unsafe file %s", f);
|
4637
5194
|
}
|
4638
|
-
|
4639
|
-
f =
|
5195
|
+
path = copy_path_class(tmp, path);
|
5196
|
+
f = RSTRING_PTR(path);
|
5197
|
+
expanded = 1;
|
4640
5198
|
}
|
4641
5199
|
|
4642
|
-
if (
|
4643
|
-
if (
|
4644
|
-
rb_raise(rb_eSecurityError, "loading from unsafe
|
5200
|
+
if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
|
5201
|
+
if (safe_level >= 1 && !fpath_check(path)) {
|
5202
|
+
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
|
4645
5203
|
}
|
4646
5204
|
if (!file_load_ok(f)) return 0;
|
4647
|
-
if (!
|
5205
|
+
if (!expanded)
|
5206
|
+
path = copy_path_class(file_expand_path_1(path), path);
|
4648
5207
|
return path;
|
4649
5208
|
}
|
4650
5209
|
|
4651
|
-
if (
|
5210
|
+
if (safe_level >= 4) {
|
4652
5211
|
rb_raise(rb_eSecurityError, "loading from non-absolute path %s", f);
|
4653
5212
|
}
|
4654
5213
|
|
@@ -4659,7 +5218,7 @@ rb_find_file(VALUE path)
|
|
4659
5218
|
tmp = rb_str_tmp_new(MAXPATHLEN + 2);
|
4660
5219
|
for (i = 0; i < RARRAY_LEN(load_path); i++) {
|
4661
5220
|
VALUE str = RARRAY_PTR(load_path)[i];
|
4662
|
-
|
5221
|
+
RB_GC_GUARD(str) = rb_get_path_check(str, safe_level);
|
4663
5222
|
if (RSTRING_LEN(str) > 0) {
|
4664
5223
|
file_expand_path(path, str, 0, tmp);
|
4665
5224
|
f = RSTRING_PTR(tmp);
|
@@ -4667,19 +5226,17 @@ rb_find_file(VALUE path)
|
|
4667
5226
|
}
|
4668
5227
|
}
|
4669
5228
|
return 0;
|
4670
|
-
found:
|
4671
|
-
RBASIC(tmp)->klass = rb_obj_class(path);
|
4672
|
-
OBJ_FREEZE(tmp);
|
4673
5229
|
}
|
4674
5230
|
else {
|
4675
5231
|
return 0; /* no path, no load */
|
4676
5232
|
}
|
4677
5233
|
|
4678
|
-
|
5234
|
+
found:
|
5235
|
+
if (safe_level >= 1 && !fpath_check(tmp)) {
|
4679
5236
|
rb_raise(rb_eSecurityError, "loading from unsafe file %s", f);
|
4680
5237
|
}
|
4681
5238
|
|
4682
|
-
return tmp;
|
5239
|
+
return copy_path_class(tmp, path);
|
4683
5240
|
}
|
4684
5241
|
|
4685
5242
|
static void
|
@@ -4696,7 +5253,7 @@ define_filetest_function(const char *name, VALUE (*func)(ANYARGS), int argc)
|
|
4696
5253
|
* <code>File</code> includes the methods of module
|
4697
5254
|
* <code>FileTest</code> as class methods, allowing you to write (for
|
4698
5255
|
* example) <code>File.exist?("foo")</code>.
|
4699
|
-
*
|
5256
|
+
*
|
4700
5257
|
* In the description of File methods,
|
4701
5258
|
* <em>permission bits</em> are a platform-specific
|
4702
5259
|
* set of bits that indicate permissions of a file. On Unix-based
|
@@ -4704,7 +5261,7 @@ define_filetest_function(const char *name, VALUE (*func)(ANYARGS), int argc)
|
|
4704
5261
|
* owner, the group, and the rest of the world. For each of these
|
4705
5262
|
* entities, permissions may be set to read, write, or execute the
|
4706
5263
|
* file:
|
4707
|
-
*
|
5264
|
+
*
|
4708
5265
|
* The permission bits <code>0644</code> (in octal) would thus be
|
4709
5266
|
* interpreted as read/write for owner, and read-only for group and
|
4710
5267
|
* other. Higher-order bits may also be used to indicate the type of
|
@@ -4712,7 +5269,7 @@ define_filetest_function(const char *name, VALUE (*func)(ANYARGS), int argc)
|
|
4712
5269
|
* special features. If the permissions are for a directory, the
|
4713
5270
|
* meaning of the execute bit changes; when set the directory can be
|
4714
5271
|
* searched.
|
4715
|
-
*
|
5272
|
+
*
|
4716
5273
|
* On non-Posix operating systems, there may be only the ability to
|
4717
5274
|
* make a file read-only or read-write. In this case, the remaining
|
4718
5275
|
* permission bits will be synthesized to resemble typical values. For
|
@@ -4784,6 +5341,8 @@ Init_File(void)
|
|
4784
5341
|
rb_define_singleton_method(rb_cFile, "truncate", rb_file_s_truncate, 2);
|
4785
5342
|
rb_define_singleton_method(rb_cFile, "expand_path", rb_file_s_expand_path, -1);
|
4786
5343
|
rb_define_singleton_method(rb_cFile, "absolute_path", rb_file_s_absolute_path, -1);
|
5344
|
+
rb_define_singleton_method(rb_cFile, "realpath", rb_file_s_realpath, -1);
|
5345
|
+
rb_define_singleton_method(rb_cFile, "realdirpath", rb_file_s_realdirpath, -1);
|
4787
5346
|
rb_define_singleton_method(rb_cFile, "basename", rb_file_s_basename, -1);
|
4788
5347
|
rb_define_singleton_method(rb_cFile, "dirname", rb_file_s_dirname, 1);
|
4789
5348
|
rb_define_singleton_method(rb_cFile, "extname", rb_file_s_extname, 1);
|
@@ -4796,7 +5355,7 @@ Init_File(void)
|
|
4796
5355
|
rb_define_singleton_method(rb_cFile, "join", rb_file_s_join, -2);
|
4797
5356
|
|
4798
5357
|
#ifdef DOSISH
|
4799
|
-
rb_define_const(rb_cFile, "ALT_SEPARATOR", rb_obj_freeze(rb_usascii_str_new2(
|
5358
|
+
rb_define_const(rb_cFile, "ALT_SEPARATOR", rb_obj_freeze(rb_usascii_str_new2(file_alt_separator)));
|
4800
5359
|
#else
|
4801
5360
|
rb_define_const(rb_cFile, "ALT_SEPARATOR", Qnil);
|
4802
5361
|
#endif
|
@@ -4808,6 +5367,7 @@ Init_File(void)
|
|
4808
5367
|
rb_define_method(rb_cFile, "atime", rb_file_atime, 0);
|
4809
5368
|
rb_define_method(rb_cFile, "mtime", rb_file_mtime, 0);
|
4810
5369
|
rb_define_method(rb_cFile, "ctime", rb_file_ctime, 0);
|
5370
|
+
rb_define_method(rb_cFile, "size", rb_file_size, 0);
|
4811
5371
|
|
4812
5372
|
rb_define_method(rb_cFile, "chmod", rb_file_chmod, 1);
|
4813
5373
|
rb_define_method(rb_cFile, "chown", rb_file_chown, 2);
|