If Tcl_TranslateFileName has to do tilde substitution or translate the name then it uses the dynamic string at *bufferPtr to hold the new string it generates. After Tcl_TranslateFileName returns a non-NULL result, the caller must eventually invoke Tcl_DStringFree to free any information placed in *bufferPtr. The caller need not know whether or not Tcl_TranslateFileName actually used the string; Tcl_TranslateFileName 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. When an error occurs, Tcl_TranslateFileName frees the dynamic string itself so that the caller need not call Tcl_DStringFree.
The caller is responsible for making sure that interp->result has its default empty value when Tcl_TranslateFileName is invoked.
Copyright © 1989-1993 The Regents of the University of California. Copyright © 1994-1998 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.