regan at netwin.co.nz
Tue Aug 22 16:49:28 PDT 2006
On Sat, 19 Aug 2006 23:06:42 +1000, Reiner Pope
<reiner.pope at REMOVE.THIS.gmail.com> wrote:
> Hi there,
> I can't find any function which will convert a file path from relative
> to absolute. C# and Java both have one: Path.GetAbsolutePath or
> something similar.
> Is there one?
> Do you think this is a good enough solution?
> char toabs(char filepath)
> out (c)
> assert (isabs(c));
> return (join(getcwd(), filepath));
There are some C functions _fullpath and _wfullpath (unicode) which can
take a relative path and give the full path. I do not think they are ANSI
functions however they do appear to exist in the DMC libraries (and thus
you can use them in D).
import std.stdio; //writefln
import std.string; //toStringz
import std.c.string; //strlen
extern(C) char *_fullpath(char *buf,char *path,size_t buflen);
char abs = new char; //allocate space
char rel = "a\\b\\c";
abs.length = strlen(abs.ptr); //correct array length
This should output <cwd>\a\b\c where <cwd> is the path in which you run it.
Also of note are these functions:
More information about the Digitalmars-d-learn