GET9ROOT(3) GET9ROOT(3)
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
/usr/local/plan9 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
/usr/local/plan9.
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
/usr/local/plan9/src/lib9/get9root.c
/usr/local/plan9/src/lib9/unsharp.c
SEE ALSO
intro(4)
BUGS
Get9root could be smarter about finding the tree when $PLAN9
is not set.
Page 1 Plan 9 (printed 10/30/25)