add linux absolute path functions
This commit is contained in:
parent
53eb211a1e
commit
d5399fdbac
@ -1737,26 +1737,40 @@ ViewChanges(Watcher* watcher)
|
|||||||
void
|
void
|
||||||
SetEventType(WatchEvent* ev, u32 mask)
|
SetEventType(WatchEvent* ev, u32 mask)
|
||||||
{
|
{
|
||||||
if(mask & IN_ACCESS)
|
ev.type |= (mask & IN_ACCESS) ? WET.Accessed : WET.None;
|
||||||
{
|
ev.type |= (mask & IN_ATTRIB) ? WET.Metadata : WET.None;
|
||||||
ev.type |= WET.Accessed;
|
ev.type |= (mask & IN_CREATE) ? WET.Created : WET.None;
|
||||||
}
|
ev.type |= (mask & IN_MODIFY) ? WET.Modified : WET.None;
|
||||||
else if(mask & IN_ATTRIB)
|
ev.type |= (mask & IN_DELETE) ? WET.Deleted : WET.None;
|
||||||
{
|
}
|
||||||
ev.type |= WET.Metadata;
|
|
||||||
}
|
pragma(inline, true)
|
||||||
else if(mask & IN_CREATE)
|
bool IsAbsolutePath(string path) => path.length && path[0] == '/';
|
||||||
{
|
|
||||||
ev.type |= WET.Created;
|
string
|
||||||
}
|
AbsolutePath(string path)
|
||||||
else if(mask & IN_MODIFY)
|
{
|
||||||
{
|
import core.sys.posix.stdlib : realpath;
|
||||||
ev.type |= WET.Modified;
|
|
||||||
}
|
const u64 MAX_PATH = 4096;
|
||||||
else if(mask & IN_DELETE)
|
string result = path;
|
||||||
{
|
|
||||||
ev.type |= WET.Deleted;
|
if(!IsAbsolutePath(result))
|
||||||
}
|
{
|
||||||
|
static char[MAX_PATH] path_input;
|
||||||
|
static char[MAX_PATH] absolute_path;
|
||||||
|
|
||||||
|
path_input[0 .. result.length] = result[0 .. $];
|
||||||
|
path_input[result.length] = '\0';
|
||||||
|
|
||||||
|
absolute_path = '\0';
|
||||||
|
|
||||||
|
realpath(path_input.ptr, absolute_path.ptr);
|
||||||
|
|
||||||
|
result = Str(absolute_path[0 .. strlen(absolute_path.ptr)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
version(DLIB_TEST) unittest
|
version(DLIB_TEST) unittest
|
||||||
@ -1792,32 +1806,32 @@ version(DLIB_TEST) unittest
|
|||||||
|
|
||||||
enum WatchEventType
|
enum WatchEventType
|
||||||
{
|
{
|
||||||
None = 0x0000,
|
None = 0x0000,
|
||||||
File = 0x0001,
|
File = 0x0001,
|
||||||
Dir = 0x0002,
|
Dir = 0x0002,
|
||||||
Self = 0x0004,
|
Self = 0x0004,
|
||||||
Created = 0x0008,
|
Created = 0x0008,
|
||||||
Modified = 0x0010,
|
Modified = 0x0010,
|
||||||
Deleted = 0x0020,
|
Deleted = 0x0020,
|
||||||
Moved = 0x0040,
|
Moved = 0x0040,
|
||||||
Metadata = 0x0080,
|
Metadata = 0x0080,
|
||||||
Accessed = 0x0100,
|
Accessed = 0x0100,
|
||||||
FileCreated = WET.File | WET.Created,
|
FileCreated = WET.File | WET.Created,
|
||||||
FileModified = WET.File | WET.Modified,
|
FileModified = WET.File | WET.Modified,
|
||||||
FileDeleted = WET.File | WET.Deleted,
|
FileDeleted = WET.File | WET.Deleted,
|
||||||
FileMoved = WET.File | WET.Moved,
|
FileMoved = WET.File | WET.Moved,
|
||||||
FileMetadata = WET.File | WET.Metadata,
|
FileMetadata = WET.File | WET.Metadata,
|
||||||
FileAccessed = WET.File | WET.Accessed,
|
FileAccessed = WET.File | WET.Accessed,
|
||||||
DirCreated = WET.Dir | WET.Created,
|
DirCreated = WET.Dir | WET.Created,
|
||||||
DirModified = WET.Dir | WET.Modified,
|
DirModified = WET.Dir | WET.Modified,
|
||||||
DirDeleted = WET.Dir | WET.Deleted,
|
DirDeleted = WET.Dir | WET.Deleted,
|
||||||
DirMoved = WET.Dir | WET.Moved,
|
DirMoved = WET.Dir | WET.Moved,
|
||||||
DirMetadata = WET.Dir | WET.Metadata,
|
DirMetadata = WET.Dir | WET.Metadata,
|
||||||
DirAccessed = WET.Dir | WET.Accessed,
|
DirAccessed = WET.Dir | WET.Accessed,
|
||||||
SelfCreated = WET.Self | WET.Created,
|
SelfCreated = WET.Self | WET.Created,
|
||||||
SelfModified = WET.Self | WET.Modified,
|
SelfModified = WET.Self | WET.Modified,
|
||||||
SelfDeleted = WET.Self | WET.Deleted,
|
SelfDeleted = WET.Self | WET.Deleted,
|
||||||
SelfMoved = WET.Self | WET.Moved,
|
SelfMoved = WET.Self | WET.Moved,
|
||||||
SelfMetadata = WET.Self | WET.Metadata,
|
SelfMetadata = WET.Self | WET.Metadata,
|
||||||
SelfAccessed = WET.Self | WET.Accessed,
|
SelfAccessed = WET.Self | WET.Accessed,
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user