plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

get9root.3 (1535B)


      1 .TH GET9ROOT 3
      2 .SH NAME
      3 get9root, unsharp \- get path to root of Plan 9 tree
      4 .SH SYNOPSIS
      5 .B #include <u.h>
      6 .br
      7 .B #include <libc.h>
      8 .PP
      9 .B
     10 char*	get9root(void)
     11 .PP
     12 .B
     13 char*	unsharp(char *path)
     14 .SH DESCRIPTION
     15 This tree of Plan 9 software is conventionally installed in
     16 .B \*9
     17 but may be installed in other places (for example, users without
     18 the ability to write to
     19 .B /usr/local
     20 may with to install it in their own home directories).
     21 The environment variable
     22 .B $PLAN9
     23 should contain the path to the root.
     24 .I Get9root
     25 returns a static pointer to the pathname of root, first checking
     26 .B $PLAN9
     27 and defaulting to
     28 .BR \*9 .
     29 .PP
     30 The lack of a fixed location for the Plan 9 tree
     31 makes it difficult to hard-code paths
     32 to files. 
     33 .I Unsharp
     34 replaces a leading
     35 .B #9
     36 in 
     37 .I path
     38 with the root of the tree.
     39 .I Unsharp
     40 also replaces a leading
     41 .B #d
     42 with the path to the underlying system's file descriptor dup device,
     43 typically
     44 .BR /dev/fd .
     45 The string returned from
     46 .IR unsharp ,
     47 if different from
     48 .IR path ,
     49 should be freed with
     50 .I free
     51 (see
     52 .MR malloc (3) )
     53 when no longer needed.
     54 .PP
     55 As a convention, programs should never
     56 .I unsharp
     57 paths obtained from user input.
     58 .SH EXAMPLE
     59 The
     60 .MR plumber (4)
     61 uses this code to find unrooted file names included by plumb rules.
     62 .IP
     63 .EX
     64 snprint(buf, sizeof buf, "#9/plumb/%s", name);
     65 fd = open(unsharp(buf), OREAD);
     66 .EE
     67 .SH SOURCE
     68 .B \*9/src/lib9/get9root.c
     69 .br
     70 .B \*9/src/lib9/unsharp.c
     71 .SH SEE ALSO
     72 .MR intro (4)
     73 .SH BUGS
     74 .I Get9root
     75 could be smarter about finding the tree when
     76 .B $PLAN9
     77 is not set.