Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Apropos / Subsearch:
optional field

pathchk(1)                       User Commands                      pathchk(1)

       pathchk - check path names

       pathchk [-p] path...

       The  pathchk  command  will check that one or more path names are valid
       (that is, they could be used to access or create a file without causing
       syntax  errors)  and  portable  (that  is,  no filename truncation will
       result). More extensive portability  checks  are  provided  by  the  -p

       By  default,  pathchk  will  check  each component of each path operand
       based on the underlying file system. A diagnostic will be  written  for
       each path operand that:

         o  is longer than PATH_MAX bytes.

         o  contains  any component longer than NAME_MAX bytes in its contain-
            ing directory

         o  contains any component in a directory that is not searchable

         o  contains any character in any component that is not valid  in  its
            containing directory.

       The  format  of the diagnostic message is not specified, but will indi-
       cate the error detected and the corresponding path operand.

       It will not be considered an error if one or more components of a  path
       operand do not exist as long as a file matching the path name specified
       by the missing components could be created that does not violate any of
       the checks specified above.

       The following option is supported:

       -p       Instead of performing checks based on the underlying file sys-
                tem, write a diagnostic for each path operand that:

                  o  is longer than _POSIX_PATH_MAX  bytes

                  o  contains any component longer than _POSIX_NAME_MAX bytes

                  o  contains any character in any component that  is  not  in
                     the portable filename character set.

       The following operand is supported:

       path     A path to be checked.

       See  largefile(5)  for  the description of the behavior of pathchk when
       encountering files greater than or equal to 2 Gbyte ( 2**31 bytes).

       Example 1: Using the pathchk command

       To verify that all paths in an imported data  interchange  archive  are
       legitimate and unambiguous on the current system:

       example% pax -f archive | sed -e '/ == .*/s///' | xargs pathchk
       if [ $? -eq 0 ]
               pax -r -f archive
            echo Investigate problems before importing files.
            exit 1

       To  verify  that  all files in the current directory hierarchy could be
       moved to any system conforming to the X/Open  specification  that  also
       supports the pax(1) command:

       example% find . -print | xargs pathchk -p
       if [ $? -eq 0 ]
               pax -w -f archive .
            echo Portable archive cannot be created.
            exit 1

       To  verify that a user-supplied path names a readable file and that the
       application can create a file extending the given path without  trunca-
       tion and without overwriting any existing file:

       example% case $- in
            *C*)    reset="";;
            *)      reset="set +C"
                 set -C;;
       test -r "$path" &&&& pathchk "$path.out" &&&&
            rm "$path.out" >> "$path.out"
       if [ $? -ne 0 ]; then
            printf "%s: %s not found or %s.out fails \
       creation checks.\n" $0 "$path" "$path"
            $reset    # reset the noclobber option in case a trap
                 # on EXIT depends on it
            exit 1
       PROCESSING <&lt; "$path" >&gt; "$path.out"

       The following assumptions are made in this example:

       1.  PROCESSING represents the code that will be used by the application
           to use $path once it  is  verified  that  $path.out  will  work  as

       2.  The  state  of  the  noclobber  option is unknown when this code is
           invoked and should be set on exit to the state it was in when  this
           code  was  invoked.  (The reset variable is used in this example to
           restore the initial state.)

       3.  Note the usage of:

           rm "$path.out" >&gt; "$path.out"

           a.       The pathchk command has already verified, at  this  point,
                    that $path.out will not be truncated.

           b.       With  the noclobber option set, the shell will verify that
                    $path.out does not already exist before invoking rm.

           c.       If the shell succeeded  in  creating  $path.out,  rm  will
                    remove  it  so  that  the  application can create the file
                    again in the PROCESSING step.

           d.       If the PROCESSING step wants the  file  to  exist  already
                    when it is invoked, the:

                    rm "$path.out" >&gt; "$path.out"

                    should be replaced with:

                    >&gt; "$path.out"

                    which will verify that the file did not already exist, but
                    leave $path.out in place for use by PROCESSING.

       See environ(5) for descriptions of the following environment  variables
       that  affect  the execution of pathchk: LANG, LC_ALL, LC_CTYPE, LC_MES-
       SAGES, and NLSPATH.

       The following exit values are returned:

       0        All path operands passed all of the checks.

       >&gt;0       An error occurred.

       See attributes(5) for descriptions of the following attributes:

       tab()    allbox;    cw(2.750000i)|     cw(2.750000i)     lw(2.750000i)|
       lw(2.750000i).    ATTRIBUTE   TYPEATTRIBUTE  VALUE  AvailabilitySUNWcsu
       Interface StabilityStandard

       pax(1), test(1), attributes(5), environ(5), largefile(5), standards(5)

SunOS 5.10                        1 Feb 1995                        pathchk(1)