Re: sortera filer
Peter Bortas <[email protected]> Mon, 14 Jan 2019 20:16:39 +0100
| Newsgroups | gmane.comp.lang.pike.devel,gmane.comp.lang.pike.user |
|---|---|
| Message-ID | <CA+NK+ACA6Gnt=YWNh=HvgChwi=e7VXwHzJ2N4+ZMB9MCc0PY+w@mail.gmail.com> |
On Mon, Jan 14, 2019 at 10:35 AM Mateusz Krawczuk <[email protected]> wrote: > > Wouldn't it be better to go straight to Pike-devel to preserve the wisdom for broader audience? On the odd chance that pike-devel want late night musings in Swedish, then sure. I'm going to veto anyone else doing that though, so I don't think the chances of everyone agreeing to see my badly thought thru rants are high. Anyways, time to write something more coherent: We need a better API for handling directory listing, especially for coupling the listings with their metadata (stat struct). At the moment this is the most compact way of listing files in a dir sorted by creation time I could come up with: string mydir = "/tmp"; array files = get_dir(mydir); files = combine_path(mydir, files[*]); sort(files, file_stat(files[*])->ctime); And whenever automap feels like a good idea the API probably needs to be looked at. This will also explode in your face if files have been deleted between get_dir() and file_stat(). The question is what that API should be. We have a slightly extended API available in Filesystem: object fs = Filesystem.System("/tmp"); array files = fs->get_dir(); sort(files, fs->get_stats()->ctime); While this is cute if the directory contents is completely static (see Filesystem.Tar), not so much otherwise. I have some ideas of how a new API should look, basically: 1. Add a function (possibly to Filesystem) that returns both the listing and stats, so that TOCTOU error handling can be kept away from the user. 2. Add a convenience function where you can request a already sorted list based on any criteria you want. 3. bonus: more iterators Regards, -- Peter Bortas