Go to main content

man pages section 3: Extended Library Functions, Volume 1

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

Tcl_SplitPath (3tcl)

Name

Tcl_SplitPath - dependent file paths

Synopsis

#include <tcl.h>

Tcl_SplitPath(path, argcPtr, argvPtr)

char *
Tcl_JoinPath(argc, argv, resultPtr)

Tcl_PathType
Tcl_GetPathType(path)

Description

Tcl_SplitPath(3tcl)         Tcl Library Procedures         Tcl_SplitPath(3tcl)



______________________________________________________________________________

NAME
       Tcl_SplitPath,  Tcl_JoinPath,  Tcl_GetPathType  -  manipulate platform-
       dependent file paths

SYNOPSIS
       #include <tcl.h>

       Tcl_SplitPath(path, argcPtr, argvPtr)

       char *
       Tcl_JoinPath(argc, argv, resultPtr)

       Tcl_PathType
       Tcl_GetPathType(path)

ARGUMENTS
       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
                                                  path.

       Tcl_DString *resultPtr (in/out)            A pointer to an  initialized
                                                  Tcl_DString   to  which  the
                                                  result of Tcl_JoinPath  will
                                                  be appended.
______________________________________________________________________________


DESCRIPTION
       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-
       mands.

       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-
       lowing:

              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
       resultPtr.  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.


KEYWORDS
       file, filename, join, path, split, type



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | runtime/tcl-8    |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+

NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source was downloaded from  http://prdownloads.sourceforge.net/tcl/tcl-
       core8.6.7-src.tar.gz.

       Further information about this software can be found on the open source
       community website at https://www.tcl.tk/.



Tcl                                   7.5                  Tcl_SplitPath(3tcl)