Merge pull request #34 from vibe-d/avoid_dot_in_watcher_path
Avoid "." path in InotifyEventDriverWatchers. merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
This commit is contained in:
commit
1cadc3077b
|
@ -41,7 +41,7 @@ final class InotifyEventDriverWatchers(Events : EventDriverEvents) : EventDriver
|
||||||
|
|
||||||
m_watches[ret] = WatchState(null, path, recursive);
|
m_watches[ret] = WatchState(null, path, recursive);
|
||||||
|
|
||||||
addWatch(ret, path, ".");
|
addWatch(ret, path, "");
|
||||||
if (recursive) {
|
if (recursive) {
|
||||||
try {
|
try {
|
||||||
auto base_segements = path.pathSplitter.walkLength;
|
auto base_segements = path.pathSplitter.walkLength;
|
||||||
|
@ -138,7 +138,7 @@ final class InotifyEventDriverWatchers(Events : EventDriverEvents) : EventDriver
|
||||||
auto subdir = w.watcherPaths[ev.wd];
|
auto subdir = w.watcherPaths[ev.wd];
|
||||||
|
|
||||||
if (w.recursive && ev.mask & (IN_CREATE|IN_MOVED_TO) && ev.mask & IN_ISDIR) {
|
if (w.recursive && ev.mask & (IN_CREATE|IN_MOVED_TO) && ev.mask & IN_ISDIR) {
|
||||||
addWatch(id, w.basePath, subdir == "." ? name.idup : buildPath(subdir, name));
|
addWatch(id, w.basePath, subdir == "" ? name.idup : buildPath(subdir, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
ch.baseDirectory = m_watches[id].basePath;
|
ch.baseDirectory = m_watches[id].basePath;
|
||||||
|
|
|
@ -123,6 +123,7 @@ final class WinAPIEventDriverWatchers : EventDriverWatchers {
|
||||||
auto path = () @trusted { scope (failure) assert(false); return to!string(fni.FileName[0 .. fni.FileNameLength/2]); } ();
|
auto path = () @trusted { scope (failure) assert(false); return to!string(fni.FileName[0 .. fni.FileNameLength/2]); } ();
|
||||||
auto fullpath = buildPath(slot.directory, path);
|
auto fullpath = buildPath(slot.directory, path);
|
||||||
ch.directory = dirName(path);
|
ch.directory = dirName(path);
|
||||||
|
if (ch.directory == ".") ch.directory = "";
|
||||||
ch.name = baseName(path);
|
ch.name = baseName(path);
|
||||||
try ch.isDirectory = isDir(fullpath);
|
try ch.isDirectory = isDir(fullpath);
|
||||||
catch (Exception e) {} // FIXME: can happen if the base path is relative and the CWD has changed
|
catch (Exception e) {} // FIXME: can happen if the base path is relative and the CWD has changed
|
||||||
|
|
|
@ -160,5 +160,7 @@ print("test %s RENAME %s %s", from, to, expect_change);
|
||||||
|
|
||||||
FileChange fchange(FileChangeKind kind, string name, bool is_dir)
|
FileChange fchange(FileChangeKind kind, string name, bool is_dir)
|
||||||
{
|
{
|
||||||
return FileChange(kind, testDir, dirName(name), baseName(name), is_dir);
|
auto dn = dirName(name);
|
||||||
|
if (dn == ".") dn = "";
|
||||||
|
return FileChange(kind, testDir, dn, baseName(name), is_dir);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,17 +27,20 @@ void main()
|
||||||
default: assert(false);
|
default: assert(false);
|
||||||
case 0:
|
case 0:
|
||||||
assert(change.kind == FileChangeKind.added);
|
assert(change.kind == FileChangeKind.added);
|
||||||
assert(change.directory == ".");
|
assert(change.baseDirectory == ".");
|
||||||
|
assert(change.directory == "");
|
||||||
assert(change.name == testFilename);
|
assert(change.name == testFilename);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
assert(change.kind == FileChangeKind.modified);
|
assert(change.kind == FileChangeKind.modified);
|
||||||
assert(change.directory == ".");
|
assert(change.baseDirectory == ".");
|
||||||
|
assert(change.directory == "");
|
||||||
assert(change.name == testFilename);
|
assert(change.name == testFilename);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
assert(change.kind == FileChangeKind.removed);
|
assert(change.kind == FileChangeKind.removed);
|
||||||
assert(change.directory == ".");
|
assert(change.baseDirectory == ".");
|
||||||
|
assert(change.directory == "");
|
||||||
assert(change.name == testFilename);
|
assert(change.name == testFilename);
|
||||||
eventDriver.watchers.releaseRef(id);
|
eventDriver.watchers.releaseRef(id);
|
||||||
s_done = true;
|
s_done = true;
|
||||||
|
|
Loading…
Reference in a new issue