mirror of
https://github.com/EngineerSmith/nativefs.git
synced 2025-11-08 23:15:02 +00:00
remove old moonscript code
This commit is contained in:
@@ -1,131 +0,0 @@
|
||||
ffi = require('ffi')
|
||||
bit = require('bit')
|
||||
|
||||
ffi.cdef([[
|
||||
typedef struct FILE FILE;
|
||||
]])
|
||||
|
||||
fopen = ffi.C.fopen
|
||||
fclose, ftell, fseek, fflush = ffi.C.fclose, ffi.C.ftell, ffi.C.fseek, ffi.C.fflush
|
||||
|
||||
if ffi.os == 'Windows'
|
||||
ffi.cdef([[
|
||||
typedef void* HANDLE;
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
struct WIN32_FIND_DATAW {
|
||||
uint32_t dwFileWttributes;
|
||||
uint64_t ftCreationTime;
|
||||
uint64_t ftLastAccessTime;
|
||||
uint64_t ftLastWriteTime;
|
||||
uint32_t dwReserved[4];
|
||||
char cFileName[520];
|
||||
char cAlternateFileName[28];
|
||||
};
|
||||
#pragma(pop)
|
||||
|
||||
int MultiByteToWideChar(unsigned int CodePage, uint32_t dwFlags, const char* lpMultiByteStr, int cbMultiByte, const char* lpWideCharStr, int cchWideChar);
|
||||
int WideCharToMultiByte(unsigned int CodePage, uint32_t dwFlags, const char* lpWideCharStr, int cchWideChar, const char* lpMultiByteStr, int cchMultiByte, const char* default, int* used);
|
||||
|
||||
int GetLogicalDrives(void);
|
||||
void* FindFirstFileW(const wchar_t* lpFileName, struct WIN32_FIND_DATAW* lpFindFileData);
|
||||
bool FindNextFileW(HANDLE hFindFile, struct WIN32_FIND_DATAW* fd);
|
||||
bool FindClose(HANDLE hFindFile);
|
||||
|
||||
int _wchdir(const wchar_t* path);
|
||||
wchar_t* _wgetcwd(wchar_t* buffer, int maxlen);
|
||||
FILE* _wfopen(const wchar_t* name, const wchar_t* mode);
|
||||
]])
|
||||
|
||||
towidestring = (str) ->
|
||||
size = ffi.C.MultiByteToWideChar(65001, 0, str, #str, nil, 0)
|
||||
buf = ffi.new("char[?]", size * 2 + 2)
|
||||
ffi.C.MultiByteToWideChar(65001, 0, str, #str, buf, size * 2)
|
||||
buf
|
||||
|
||||
toutf8string = (str) ->
|
||||
size = ffi.C.WideCharToMultiByte(65001, 0, wstr, -1, nil, 0, nil, nil)
|
||||
buf = ffi.new("char[?]", size + 1)
|
||||
size = ffi.C.WideCharToMultiByte(65001, 0, wstr, -1, buf, size, nil, nil)
|
||||
ffi.string(buf)
|
||||
|
||||
fopen = (name, mode) -> ffi.C._wfopen(towidestring(name), towidestring(mode))
|
||||
|
||||
class File
|
||||
new: (@_name) ->
|
||||
@_open = false
|
||||
@_handle = nil
|
||||
|
||||
open: (@_mode) ->
|
||||
@_handle = fopen(@_name, @_mode)
|
||||
return nil, "Could not open #{@_name} in mode #{@_mode}" unless @_handle
|
||||
ffi.gc(@_handle, fclose)
|
||||
true
|
||||
|
||||
close: ->
|
||||
ffi.gc(@_handle, nil)
|
||||
fclose(@_handle)
|
||||
@_handle = nil
|
||||
@_open = false
|
||||
|
||||
setBuffer: ->
|
||||
getBuffer: ->
|
||||
getFilename: -> @_name
|
||||
getMode: -> @_mode
|
||||
getSize: ->
|
||||
|
||||
isEOF: ->
|
||||
isOpen: -> @_open
|
||||
|
||||
read: ->
|
||||
lines: ->
|
||||
write: ->
|
||||
|
||||
seek: ->
|
||||
tell: -> ftell(@_handle)
|
||||
flush: -> fflush(@_handle)
|
||||
|
||||
nativefs = {}
|
||||
|
||||
nativefs.newFile = (name) -> File(name)
|
||||
|
||||
nativefs.newFileData = (filepath) ->
|
||||
f = File(filepath)
|
||||
ok, err = f\open('rb')
|
||||
return nil, err unless ok
|
||||
|
||||
data = f\read("all")
|
||||
f\close!
|
||||
love.filesystem.newFileData(data, filepath)
|
||||
|
||||
nativefs.mount = ->
|
||||
|
||||
nativefs.read = ->
|
||||
nativefs.write = ->
|
||||
nativefs.append = (name, data, size) ->
|
||||
nativefs.lines = (name) ->
|
||||
f = File(name)
|
||||
ok, err = f\open('r')
|
||||
return nil, err unless ok
|
||||
f\lines!
|
||||
|
||||
nativefs.load = ->
|
||||
|
||||
nativefs.exists = ->
|
||||
nativefs.isDirectory = ->
|
||||
nativefs.isFile = ->
|
||||
nativefs.isSymlink = ->
|
||||
|
||||
nativefs.getDirectoryItems = (dir, callback) ->
|
||||
nativefs.getWorkingDirectory = ->
|
||||
nativefs.setWorkingDirectory = (dir) ->
|
||||
nativefs.getDriveList = ->
|
||||
nativefs.getInfo = ->
|
||||
nativefs.getLastModified = ->
|
||||
nativefs.getSize = ->
|
||||
|
||||
nativefs.createDirectory = ->
|
||||
nativefs.remove = ->
|
||||
|
||||
nativefs
|
||||
Reference in New Issue
Block a user