[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 21 - DOS 3.0+ - CANONICALIZE FILENAME OR PATH
        AH = 60h
        DS:SI -> ASCIZ filename or path
        ES:DI -> 128-byte buffer for canonicalized name
Return: CF set on error
            AX = error code
                02h invalid component in directory path or drive letter only
                03h malformed path or invalid drive letter
            ES:DI buffer unchanged
        CF clear if successful
            AH = 00h
            AL = destroyed (00h or 5Ch or last char of current dir on drive)
            buffer filled with qualified name of form D:\PATH\FILE.EXT or
              \\MACHINE\PATH\FILE.EXT
Notes:  the input path need not actually exist
        letters are uppercased, forward slashes converted to backslashes,
          asterisks converted to appropriate number of question marks, and
          file and directory names are truncated to 8.3 if necessary.
        '.' and '..' in the path are resolved
        filespecs on local drives always start with "d:", those on network
          drives always start with "\\"
        if path string is on a JOINed drive, the returned name is the one that
          would be needed if the drive were not JOINed; similarly for a
          SUBSTed, ASSIGNed, or network drive letter.   Because of this, it is
          possible to get a qualified name that is not legal under the current
          combination of SUBSTs, ASSIGNs, JOINs, and network redirections
        under DOS 3.3 through 5.00, a device name is translated differently if
          the device name does not have an explicit directory or the directory
          is \DEV (relative directory DEV from the root directory works
          correctly).  In these cases, the returned string consists of the
          unchanged device name and extension appended to the string X:/
          (forward slash instead of backward slash as in all other cases) where
          X is the default or explicit drive letter.
        functions which take pathnames require canonical paths if invoked via
          INT 21/AX=5D00h
        supported by OS/2 v1.1 compatibility box
        NetWare 2.1x does not support characters with the high bit set; early
          versions of NetWare 386 support such characters except in this call.
          In addition, NetWare returns error code 3 for the path "X:\"; one
          should use "X:\." instead.
        for DOS 3.3-5.0, the input and output buffers may be the same, as the
          canonicalized name is built in an internal buffer and copied to the
          specified output buffer as the very last step
        for DR DOS 6.0, this function is not automatically called when on a
          network.  Device drivers reportedly cannot make this call from their
          INIT function.  Using the same pointer for both input and output
          buffers is not supported in the April 1992 and earlier versions of
          DR DOS
SeeAlso: INT 2F/AX=1221h

See Also: 2F1123
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson