NWUSUnicodeToUntermBytePath
Converts a NULL-terminated file path Unicode string into an unterminated byte string
#include <nunicode.h>
N_EXTERN_LIBRARY(nint) NWUSUnicodeToUntermBytePath (
pnuint8 byteOutput,
nuint outputBufferLen,
const unicode N_FAR *unicodeInput,
pnuint actualLength);
uses netwin32
Function NWUSUnicodeToUntermBytePath
(byteOutput : pnuint8;
outputBufferLen : nuint;
unicodeInput : const unicode;
actualLength : pnuint
): nint;
Call NWUSUnicodeToUntermBytePath whenever the Unicode string to be converted is a file path.
The NWU_BUFFER_FULL error can occur because the output buffer has been allocated with insufficient space. Because of the default conversion behavior described above, byte strings can be as much as six times longer than the number of characters in the input string (or three times longer than the number of bytes in the input string).
Regardless of the language being converted, NWUSUnicodeToUntermBytePath interprets Unicode yen (00A5), won (20A9), backslash (005C), and the Novell defined path separator (F8F7) all as path separators and converts each to the byte backslash character (5C).
NWUSUnicodeToUntermBytePath converts an unmappable Unicode character into a special unterminated 6-byte sequence. For example, 0x2620 is converted to "[2620]".
NWUSUnicodeToUntermBytePath does not recognize any special Unicode sequences for conversion. For example, the Unicode string "ab[81]cd" will be returned as the byte string "ab[81]cd".
Call NWUSUnicodeToUntermBytePath to determine the size of the string before it is converted by setting the byteOutput parameter to NULL. The outputBufferLen parameter will be ignored, a converted string will not be returned, and the length of the string if it were converted will be returned in the actualLength parameter.
See esuniubp.c for sample code.