Index of Section 2 Manual Pages

Interix / SUAunixpath2win.2Interix / SUA

unixpath2win(2)                                         unixpath2win(2)

  unixpath2win()

  NAME

    unixpath2win() - convert an Interix pathname to Windows syntax

  SYNOPSIS

    #include 

    int unixpath2win(const char *path, int flags, char *buf, size_t buflen)

  DESCRIPTION

    The unixpath2win(2) call converts an Interix pathname to an equivalent
    Windows pathname.

    The Interix pathname is not required to name an existing file. However,
    some prefix of the pathname will name an existing file, even if the prefix
    is the degenerate case of "/". The unixpath2win(2) call will find the
    longest prefix of the Interix path that names an existing file and which
    is accessible to the effective user, and it will resolve symbolic links
    within this prefix.

    If the PATH_SYMLINK bit of the flags argument is set, and if the path
    names an existing symlink file, then the symlink named by path will not be
    followed, although symlinks named by prefixes of path will still be
    followed. (The PATH_SYMLINK bit is the only bit in flags that can be set;
    setting any other bit in flags produces an error.)

    The Interix pathname /dev/null is translated to the Windows pathname
    "nul". Support for other device names will be added in the future.

  RETURN VALUE

    On success, unixpath2win(2) returns 0 and stores a null-terminated
    pathname in buf. On failure, it returns -1 and sets errno.

  ERRORS

    The unixpath2win(2) call will fail if:

    [ENOENT]
        The path argument points to an empty string.

    [ENAMETOOLONG]
        The length of the path argument exceeds {PATH_MAX} or a pathname
        component is longer than {NAME_MAX}.

    [ELOOP]
        Too many symbolic links were encountered in resolving path.

    [EWINPATH]
        The Interix pathname names a virtual file that does not correspond to
        any file in the Windows name space. Examples include /proc and /dev/
        ptmx.

    [EINVAL]
        An invalid flags value was passed, such as flags & ~(PATH_SYMLINK).

    [ERANGE]
        The resultant Windows pathname contains more than PATH_MAX characters.

    [ERANGE]
        The resultant Windows pathname is too large to store in buf.

    [ENOMEM]
        The client program or the Interix subsystem could not allocate enough
        memory to complete the operation.

    [EILSEQ]
        The Interix pathname contains a character that is not legal in Windows
        pathnames.

  BUGS

    If path contains funny characters such as ? or *, which are legal in
    Interix pathnames but not legal in Windows pathnames, then these are
    translated internally into bizarre Unicode characters, which cause an
    EILSEQ error when the Unicode string is translated back to an 8-bit or
    multi-byte string. This nastiness would be avoided if we had a way to
    return the Windows pathname as a Unicode or UTF-8 string.

    The unixpath2win(2) call will fail if the resultant Windows pathname
    contains more than PATH_MAX characters, even if the buffer you supplied is
    big enough to hold the result. But that's okay, since most Windows
    programs will fail if given a pathname longer than PATH_MAX characters,
    due to restrictions imposed by the Windows operating system.

    The resultant Windows pathname is always an absolute pathname, even if the
    original Interix pathname is a relative pathname.

  SEE ALSO

    winpath2unix(2)

  USAGE NOTES

    The unixpath2win function is thread safe.

    The unixpath2win function is not async-signal safe.


Interix / SUAHosted at SUA Community for Interix, SUA and SFUInterix / SUA