Alle 19:13, gioved� 5 febbraio 2004, Glynn Clements ha scritto: > > - concatenate file paths > > (concat . intersperse "/") > > Maybe you wanted something more, e.g. canonicalisation? >
Yes, maybe an interface to realpath(3) is what I really need. > > - tell if a path is absolute or relative > > ((== '/') . head) > Agreed :) > > - chase symlinks > > I was going to ask what you meant here but, AFAICT, Haskell (at > least, GHC 5.04) doesn't appear to recognise the existence of > symlinks. So, whatever you meant, the answer is probably "no". > I currently use module System.Posix from ghc6, there are stat and lstat equivalents, what I want is to get the true file pointed from a symlink after having known that it is a symlink, this can be done with recursion of course, and it's trivial; I was just wondering if it was implemented somewhere else, because I am not so expert in working with filesystems and could make some mistake (e.g: I realized only recently that using an hashtable of already visited files is necessary to avoid ciclic links; also, without getting the canonical path, I could visit a file twice). > > - find all the files in a directory (yes, that's what I need :)) > > Define "file" (e.g. "regular file", "anything other than a > directory", "directory entry" etc). Also, define "in"; i.e. are you > talking about a recursive search (like "find")? > Yes, I forgot to say "recursively". I have an ocaml implementation but it's prone to errors because of missing "canonicalization", so I did not want to translate that in haskell for the same problem. Currently I workarounded this all by forking "find", but it's prone to errors too because I have no way to distinguish between newlines ending a file name and newlines in the middle of a file name. I should put something like "///" with "find -printf" at the end of each file name, and then parse that, but it would really be preferable to code an haskell library function equivalent to unix find. > Recursion is a somewhat harder (maybe even impossible), given that > doesDirectoryExist doesn't distinguish between a directory and a > symlink to a directory, and the Posix module doesn't appear to > include anything which would be of use (e.g. a binding for lstat()). Yes, the System.Posix module in ghc6 has more features, but I still don't like to handcode functions like "realpath"; if there is nothing else maybe the best thing is to write a binding to this function (I never did that but guess it's a one-liner), and to carefully read source code for gnu find and implement it in haskell the same way. V. -- Teatri vuoti e inutili potrebbero affollarsi se tu ti proponessi di recitare te [CCCP] _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe
