diff --git a/inifiled b/inifiled index 256db3c..72393ec 160000 --- a/inifiled +++ b/inifiled @@ -1 +1 @@ -Subproject commit 256db3c28db9e3824b7ed5f646964c19f37dd32d +Subproject commit 72393ec2e0711630ad93a15c66b0ea567b5b44df diff --git a/src/main.d b/src/main.d index cea527b..d275baf 100644 --- a/src/main.d +++ b/src/main.d @@ -274,18 +274,29 @@ int run(string[] args) return 0; } + string[] expandArgs(string[] args) { + // isFile can throw if it's a broken symlink. + bool isFileSafe(T)(T a){ + try{ + return isFile(a); + } + catch{ + return false; + } + } + string[] rVal; if (args.length == 1) args ~= "."; foreach (arg; args[1 ..$]) { - if (isFile(arg)) + if (isFileSafe(arg)) rVal ~= arg; else foreach (item; dirEntries(arg, SpanMode.breadth).map!(a => a.name)) { - if (isFile(item) && (item.endsWith(`.d`) || item.endsWith(`.di`))) + if (isFileSafe(item) && (item.endsWith(`.d`) || item.endsWith(`.di`))) rVal ~= item; else continue;