lib/libuv/filesystem.rb in libuv-1.0.3 vs lib/libuv/filesystem.rb in libuv-1.1.0
- old
+ new
@@ -9,119 +9,119 @@
def unlink(path)
assert_type(String, path, "path must be a String")
@unlink_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @unlink_deferred, request, ::Libuv::Ext.fs_unlink(@loop, request, path, callback(:on_unlink))
@unlink_deferred.promise
end
def mkdir(path, mode = 0777)
assert_type(String, path, "path must be a String")
assert_type(Integer, mode, "mode must be an Integer")
@mkdir_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @mkdir_deferred, request, ::Libuv::Ext.fs_mkdir(@loop, request, path, mode, callback(:on_mkdir))
@mkdir_deferred.promise
end
def rmdir(path)
assert_type(String, path, "path must be a String")
@rmdir_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @rmdir_deferred, request, ::Libuv::Ext.fs_rmdir(@loop, request, path, callback(:on_rmdir))
@rmdir_deferred.promise
end
def readdir(path)
assert_type(String, path, "path must be a String")
@readdir_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @readdir_deferred, request, ::Libuv::Ext.fs_readdir(@loop, request, path, 0, callback(:on_readdir))
@readdir_deferred.promise
end
def rename(old_path, new_path)
assert_type(String, old_path, "old_path must be a String")
assert_type(String, new_path, "new_path must be a String")
@rename_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @rename_deferred, request, ::Libuv::Ext.fs_rename(@loop, request, old_path, new_path, callback(:on_rename))
@rename_deferred.promise
end
def chmod(path, mode)
assert_type(String, path, "path must be a String")
assert_type(Integer, mode, "mode must be an Integer")
@chmod_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @chmod_deferred, request, ::Libuv::Ext.fs_chmod(@loop, request, path, mode, callback(:on_chmod))
@chmod_deferred.promise
end
def utime(path, atime, mtime)
assert_type(String, path, "path must be a String")
assert_type(Integer, atime, "atime must be an Integer")
assert_type(Integer, mtime, "mtime must be an Integer")
@utime_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @utime_deferred, request, ::Libuv::Ext.fs_utime(@loop, request, path, atime, mtime, callback(:on_utime))
@utime_deferred.promise
end
def lstat(path)
assert_type(String, path, "path must be a String")
@stat_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @stat_deferred, request, ::Libuv::Ext.fs_lstat(@loop, request, path, callback(:on_stat))
@stat_deferred.promise
end
def link(old_path, new_path)
assert_type(String, old_path, "old_path must be a String")
assert_type(String, new_path, "new_path must be a String")
@link_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @link_deferred, request, ::Libuv::Ext.fs_link(@loop, request, old_path, new_path, callback(:on_link))
@link_deferred.promise
end
def symlink(old_path, new_path)
assert_type(String, old_path, "old_path must be a String")
assert_type(String, new_path, "new_path must be a String")
@symlink_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @symlink_deferred, request, ::Libuv::Ext.fs_symlink(@loop, request, old_path, new_path, 0, callback(:on_symlink))
@symlink_deferred.promise
end
def readlink(path)
assert_type(String, path, "path must be a String")
@readlink_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @readlink_deferred, request, ::Libuv::Ext.fs_readlink(@loop, request, path, callback(:on_readlink))
@readlink_deferred.promise
end
def chown(path, uid, gid)
assert_type(String, path, "path must be a String")
assert_type(Integer, uid, "uid must be an Integer")
assert_type(Integer, gid, "gid must be an Integer")
@chown_deferred = @loop.defer
- request = ::Libuv::Ext.create_request(:uv_fs)
+ request = ::Libuv::Ext.allocate_request_fs
pre_check @chown_deferred, request, ::Libuv::Ext.fs_chown(@loop, request, path, uid, gid, callback(:on_chown))
@chown_deferred.promise
end
@@ -156,11 +156,21 @@
end
def on_readdir(req)
if post_check(req, @readdir_deferred)
num_files = req[:result]
- string_ptr = req[:ptr]
- files = string_ptr.null? ? [] : string_ptr.read_array_of_type(FFI::TYPE_STRING, :read_string, num_files)
+
+ info = ::Libuv::Ext::UvDirent.new
+ files = []
+ ret = 1
+ loop do
+ ret = ::Libuv::Ext.fs_readdir_next(req, info)
+ files << [info[:name], info[:type]]
+
+ # EOF is the alternative
+ break unless ret == 0
+ end
+
cleanup(req)
@readdir_deferred.resolve(files)
end
@readdir_deferred = nil
end
\ No newline at end of file