FSH_CANONICALIZE
This function converts a path name to a canonical form by processing ' .'s and '..'s, uppercasing, and prepending the current directory to non-absolute paths.
Syntax
FSH_CANONICALIZE(pPathName, cbPathBuf, pPathBuf, pFlags)
Parameters
- pPathName
- is a pointer to the ASCIIZ path name to be canonicalized.
- cbPathBuf
- is the length of path name buffer.
- pPathBuf
- is the pointer to the buffer into which to copy the canonicalized path.
- pFlags
- is the pointer to flags returned to the FSD.
- Flags == 0x0040 indicates a non-8.3 filename format. All other values are reserved.
Returns
If no error is detected, a zero error code is returned. If an error is detected, one of the following error codes is returned:
- ERROR_PATH_NOT_FOUND
- is an invalid path name-too many '..'s
- ERROR_BUFFER_OVERFLOW
- the path name is too long.
Calling Sequence
int far pascal FSH_CANONICALIZE(pPathName, cbPathBuf, pPathBuf, pFlags) char far * pPathName; unsigned short cbPathBuf; char far * pPathBuf; unsigned short far * pFlags;
Remarks
This routine processes DBCS characters properly.
The FSD is responsible for verifying the string pointers and checking for segment boundaries.
FSH_CANONICALIZE should be called for names passed into the FSD raw data packets. For example, names passed to FS_FSCTL in the parameter area should be passed to FSH_CANONICALIZE. This routine does not need to be called for explicit names passed to the FSD, that is, the name passed to FS_OPENCREATE.
If the canonicalized name is being created as a file or directory, the non-8 .3 attribute in the directory entry should be set according to the value returned in pFlags.
- Note
- OS/2 does not validate input parameters. Therefore, an FSD should call FSH_PROBEBUF where appropriate.