module nxt.mmfile_ex; import nxt.path : FilePath, expandTilde; private enum PAGESIZE = 4096; /** Read-Only Lines of Contents of file $(D path). TODO: Use new std.string.splitLines() (via Phobos pull 2982). */ auto mmFileLinesRO(ElementType = char)(in FilePath path) if (ElementType.sizeof == 1) { version (linux) { import core.sys.posix.sys.shm: __getpagesize; const pageSize = __getpagesize(); } else const pageSize = PAGESIZE; import std.mmfile : MmFile; import std.path : buildNormalizedPath; auto mmf = new MmFile(path.expandTilde.buildNormalizedPath, MmFile.Mode.read, 0, null, pageSize); import nxt.byline : byLine, Newline; return (cast(ElementType[])mmf[]).byLine!(Newline.native); }