MAPPATH(3)

NAME
_mapPath, _mapPathGS, _setPathMapping - (mapPath) convert GS/OS paths to Unix-style paths.

SYNOPSIS
#include <gno/gno.h>
void _setPathMapping (int toggle);
char *_mapPath (char *pathname);
GSStringPtr _mapPathGS (GSStringPtr pathname);

DESCRIPTION
These routines are intended for use by application programmers who are porting programs from Unix systems.

The POSIX 1003.1 standard indicates that the pathname separator (that character which is used to delimit the components of a pathname) must be the slash ('/') character. However, GS/OS internally uses the colon (':') character. This can cause problems with programs that make assumptions about the pathname separator.

The routines _mapPath and _mapPathGS, if active, map all occurances of the ':' character in pathname to the '/' character. These routines are intended to be used whenever a pathname is returned from a GS/OS call. No assumption is made as to the existance of the file nor the validity of the filename for any given file system.

On success, these routines return their original arguments. The only time _mapPath or _mapPathGS can fail is if mapping is active and pathname contains both the ':' and '/' characters. In such a case, the routine will return NULL and pathname will be unchanged.

For compatibility with native IIgs programs, _mapPath and _mapPathGS are by default null operations -- pathname is not modified. In order to activate mapping, the function _setPathMapping must be called with a non-zero toggle. Although the choice of whether or not to do mapping is usually only made once in a program, mapping can be turned off again by calling _setPathMapping with a zero toggle.

These functions are used in various parts of libc. Those routines making use of this mapping list the fact in their respective man pages.

OPTIMIZATION
In cases where it is desirable to avoid the overhead of a function call, the value of the global integer __force_slash may be checked. If it is non-zero, the mapping function should be called:
    if (__force_slash) {
        _mapPath(filename);
    }

AUTHOR
Devin Reade <gdr@myrias.com>

SEE ALSO
GS/OS Reference Manual.