/* * Copyright (C)2005-2019 Haxe Foundation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ package lua.lib.luv.fs; import lua.lib.luv.fs.Open; import lua.Result; @:luaRequire("luv") extern class FileSystem { @:native("fs_close") @:overload(function(file:FileDescriptor, cb:String->Bool->Void):Request {}) static function close(file:FileDescriptor):Result; @:native("fs_open") @:overload(function(path:String, flags:Open, mode:Int, ?cb:String->FileDescriptor->Void):Request {}) static function open(path:String, flags:Open, mode:Int):Result; @:native("fs_read") @:overload(function(file:FileDescriptor, len:Int, offset:Int, ?cb:String->String->Void):Request {}) static function read(file:FileDescriptor, len:Int, offset:Int):Result; @:native("fs_unlink") @:overload(function(file:FileDescriptor, ?cb:String->String->Void):Request {}) static function unlink(file:FileDescriptor, content:String):Result; @:native("fs_write") @:overload(function(file:FileDescriptor, content:String, offset:Int, ?cb:String->Bool->Void):Int {}) static function write(file:FileDescriptor, content:String, offset:Int):Result; @:native("fs_mkdir") @:overload(function(path:String, mode:Int, cb:String->Bool->Void):Request {}) static function mkdir(path:String, mode:Int):Result; @:native("fs_mkdtemp") @:overload(function(data:String, cb:String->Bool->Void):Request {}) static function mkdtemp(data:String):Result; @:native("fs_rmdir") @:overload(function(path:String, cb:String->Bool->Void):Request {}) static function rmdir(path:String):Result; @:native("fs_scandir") @:overload(function(path:String, cb:String->Bool->Void):Request {}) static function scandir(path:String):ScanDirMarker; @:native("fs_scandir_next") static function scandir_next(scandir:ScanDirMarker):ScandirNext; @:native("fs_stat") @:overload(function(path:String, cb:String->Stat->Void):Request {}) static function stat(path:String):Result; @:native("fs_fstat") @:overload(function(descriptor:FileDescriptor, cb:String->Stat->Void):Request {}) static function fstat(descriptor:FileDescriptor):Result; @:native("fs_lstat") @:overload(function(path:String, cb:String->Stat->Void):Request {}) static function lstat(path:String):Result; @:native("fs_rename") @:overload(function(path:String, newpath:String, cb:String->Bool->Void):Request {}) static function rename(path:String, newpath:String):Result; @:native("fs_fsync") @:overload(function(descriptor:FileDescriptor, cb:String->Bool->Void):Request {}) static function fsync(descriptor:FileDescriptor):Result; @:native("fs_fdatasync") @:overload(function(descriptor:FileDescriptor, cb:String->Bool->Void):Request {}) static function fdatasync(descriptor:FileDescriptor):Result; @:native("fs_ftruncate") @:overload(function(descriptor:FileDescriptor, offset:Int, cb:String->Bool->Void):Request {}) static function ftruncate(descriptor:FileDescriptor, offset:Int):Result; @:native("fs_sendfile") @:overload(function(fin:FileDescriptor, fout:FileDescriptor, cb:String->Int->Void):Request {}) static function sendfile(fin:FileDescriptor, fout:FileDescriptor):Result; @:native("fs_access") @:overload(function(path:String, mode:Int, cb:String->Bool->Void):Request {}) static function access(path:String, mode:Int):Result; @:native("fs_chmod") @:overload(function(path:String, mode:Int, cb:String->Bool->Void):Request {}) static function chmod(path:String, mode:Int):Result; @:native("fs_fchmod") @:overload(function(descriptor:FileDescriptor, mode:Int, cb:String->Bool->Void):Request {}) static function fchmod(descriptor:FileDescriptor, mode:Int):Result; @:native("fs_futime") @:overload(function(descriptor:FileDescriptor, actime:Int, modtime:Int, cb:String->Bool->Void):Request {}) static function futime(descriptor:FileDescriptor, actime:Int, modtime:Int):Result; @:native("fs_utime") @:overload(function(path:String, actime:Int, modtime:Int, cb:String->Bool->Void):Request {}) static function utime(path:String, actime:Int, modtime:Int):Result; @:native("fs_link") @:overload(function(oldpath:String, newpath:String, cb:String->Bool->Void):Request {}) static function link(oldpath:String, newpath:String):Result; @:native("fs_symlink") @:overload(function(oldpath:String, newpath:String, flags:Int, cb:String->Bool->Void):Request {}) static function symlink(oldpath:String, newpath:String, flags:Int):Bool; @:native("fs_readlink") @:overload(function(path:String, cb:String->String->Void):Request {}) static function readlink(path:String):String; @:native("fs_realpath") @:overload(function(path:String, cb:String->String->Void):Request {}) static function realpath(path:String):String; @:native("fs_chown") @:overload(function(path:String, uid:Int, gid:Int, cb:String->Bool->Void):Request {}) static function chown(path:String, uid:Int, gid:Int):Bool; @:native("fs_fchown") @:overload(function(descriptor:FileDescriptor, uid:Int, gid:Int, cb:String->Bool->Void):Request {}) static function fchown(descriptor:FileDescriptor, uid:Int, gid:Int):Bool; /** Not available on windows **/ @:native("fs_lchown") @:overload(function(descriptor:FileDescriptor, uid:Int, gid:Int, cb:String->Bool->Void):Request {}) static function lchown(descriptor:FileDescriptor, uid:Int, gid:Int):Bool; @:native("fs_statfs") @:overload(function(path:String, cb:StatFs->Bool->Void):Request {}) static function statfs(path:String):StatFs; @:native("fs_opendir") @:overload(function(path:String, cb:Handle->Bool->Void):Request {}) static function opendir(path:String):Handle; @:native("fs_readdir") @:overload(function(dir:Handle, cb:Table->Bool->Void):Request {}) static function readdir(path:String):Table; @:native("fs_closedir") @:overload(function(dir:Handle, cb:Bool->Void):Request {}) static function closedir(dir:Handle):Bool; } extern class ScanDirMarker {} @:multiReturn extern class ScandirNext { var name:String; var type:String; } typedef NameType = { name:String, type:String } typedef Stat = { ino:Int, ctime:TimeStamp, uid:Int, dev:Int, nlink:Int, mode:Int, size:Int, birthtime:TimeStamp, gid:Int, type:String, rdev:Int, gen:Int, blocks:Int, mtime:TimeStamp, atime:TimeStamp, blksize:Int, flags:Int } typedef TimeStamp = { sec:Int, nsec:Int } typedef StatFs = { type:Int, bsize:Int, blocks:Int, bfree:Int, bavail:Int, files:Int, ffree:Int }