|
NAME
| |
get9root, unsharp – get path to root of Plan 9 tree
|
SYNOPSIS
| |
#include <u.h>
#include <libc.h>
char* get9root(void)
char* unsharp(char *path)
|
DESCRIPTION
| |
This tree of Plan 9 software is conventionally installed in /home/opt/plan9port
but may be installed in other places (for example, users without
the ability to write to /usr/local may with to install it in their
own home directories). The environment variable $PLAN9 should
contain the path to the root. Get9root returns a static pointer
to the pathname
of root, first checking $PLAN9 and defaulting to /home/opt/plan9port.
The lack of a fixed location for the Plan 9 tree makes it difficult
to hard-code paths to files. Unsharp replaces a leading #9 in
path with the root of the tree. Unsharp also replaces a leading
#d with the path to the underlying system’s file descriptor dup
device, typically /dev/fd. The string returned from unsharp, if
different from path, should be freed with
free (see malloc(3)) when no longer needed.
As a convention, programs should never unsharp paths obtained
from user input.
|
EXAMPLE
| |
The plumber(4) uses this code to find unrooted file names included
by plumb rules.
| |
snprint(buf, sizeof buf, "#9/plumb/%s", name);
fd = open(unsharp(buf), OREAD);
|
|
SOURCE
SEE ALSO
BUGS
| |
Get9root could be smarter about finding the tree when $PLAN9 is
not set.
|
|
|