TildeSubst
_________________________________________________________________
NAME
Tcl_TildeSubst - replace tilde with home directory in a file
name
SYNOPSIS
#include <tcl.h>
char *
Tcl_TildeSubst(interp, name, bufferPtr) |
ARGUMENTS
Tcl_Interp *interp (in) Interpreter in which to
report an error, if
any.
char *name (in) File name, which may
start with a ``~''.
Tcl_DString *bufferPtr If needed, this dynamic |
string is used to store |
the new file name. At |
the time of the call it |
should be uninitialized |
or empty. The caller |
must eventually call |
Tcl_DStringFree to free |
up anything stored |
here.
_________________________________________________________________
DESCRIPTION
This utility procedure does tilde substition. If name
doesn't start with a ``~'' character, then the procedure
returns name. If name does start with a tilde, then
Tcl_TildeSubst returns a new string identical to name except
that the first element of name is replaced with the location
of the home directory for the given user. The substitution
is carried out in the same way that it would be done by csh.
If the tilde is followed immediately by a slash, then the
$HOME environment variable is substituted. Otherwise the
characters between the tilde and the next slash are taken as
a user name, which is looked up in the password file; the
user's home directory is retrieved from the password file
and substituted.
If Tcl_TildeSubst has to do tilde substitution then it uses |
the dynamic string at *bufferPtr to hold the new string it |
generates. After Tcl_TildeSubst returns, the caller must |
eventually invoke Tcl_DStringFree to free up any information |
placed in *bufferPtr. The caller need not know whether or |
not Tcl_TildeSubst actually used the string; Tcl_TildeSubst |
initializes *bufferPtr even if it doesn't use it, so the |
call to Tcl_DStringFree will be safe in either case.
If an error occurs (e.g. because there was no user by the
given name) then NULL is returned and an error message will
be left at interp->result. It is assumed that interp-
>result has been initialized in the standard way when
Tcl_TildeSubst is invoked.
KEYWORDS
file name, home directory, tilde, user