Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Tcl_SplitPath(3)	    Tcl	Library	Procedures	      Tcl_SplitPath(3)


       Tcl_SplitPath,  Tcl_JoinPath, Tcl_GetPathType - manipulate platform-de-
       pendent file paths

       #include	<tcl.h>

       Tcl_SplitPath(path, argcPtr, argvPtr)

       char *
       Tcl_JoinPath(argc, argv,	resultPtr)


       const char *path	(in)			  File path in a  form	appro-
						  priate for the current plat-
						  form (see the	filename  man-
						  ual	entry  for  acceptable
						  forms	for path names).

       int *argcPtr (out)			  Filled  in  with  number  of
						  path elements	in path.

       const char ***argvPtr (out)		  *argvPtr  will  be filled in
						  with the address of an array
						  of  pointers	to the strings
						  that are the extracted  ele-
						  ments	 of  path.  There will
						  be *argcPtr valid entries in
						  the  array,  followed	 by  a
						  NULL entry.

       int argc	(in)				  Number of elements in	argv.

       const char *const *argv (in)		  Array	of  path  elements  to
						  merge	together into a	single

       Tcl_DString *resultPtr (in/out)		  A pointer to an  initialized
						  Tcl_DString to which the re-
						  sult of Tcl_JoinPath will be

       These procedures	have been superseded by	the Tcl-value-aware procedures
       in the FileSystem man page, which are more efficient.

       These procedures	may be used to disassemble and reassemble  file	 paths
       in  a  platform	independent manner: they provide C-level access	to the
       same functionality as the file split, file join,	and file pathtype com-

       Tcl_SplitPath breaks a path into	its constituent	elements, returning an
       array of	pointers to the	elements using argcPtr and argvPtr.  The  area
       of  memory pointed to by	*argvPtr is dynamically	allocated; in addition
       to the array of pointers, it also holds copies of  all  the  path  ele-
       ments.	It is the caller's responsibility to free all of this storage.
       For example, suppose that you have called Tcl_SplitPath with  the  fol-
       lowing code:

	      int argc;
	      char *path;
	      char **argv;
	      Tcl_SplitPath(string, &argc, &argv);

       Then  you  should eventually free the storage with a call like the fol-

	      Tcl_Free((char *)	argv);

       Tcl_JoinPath is the inverse of Tcl_SplitPath: it	takes a	collection  of
       path elements given by argc and argv and	generates a result string that
       is a properly constructed path. The result string is  appended  to  re-
       sultPtr.	 ResultPtr must	refer to an initialized	Tcl_DString.

       If  the	result	of Tcl_SplitPath is passed to Tcl_JoinPath, the	result
       will refer to the same location,	but may	not be in the same form.  This
       is because Tcl_SplitPath	and Tcl_JoinPath eliminate duplicate path sep-
       arators and return a normalized form for	each platform.

       Tcl_GetPathType	returns	 the  type  of	the  specified	 path,	 where
       Tcl_PathType   is   one	of  TCL_PATH_ABSOLUTE,	TCL_PATH_RELATIVE,  or
       TCL_PATH_VOLUME_RELATIVE.  See the filename manual entry	for a descrip-
       tion of the path	types for each platform.

       file, filename, join, path, split, type

Tcl				      7.5		      Tcl_SplitPath(3)


Want to link to this manual page? Use this URL:

home | help