The ifx_gl_mbscspn() function

The ifx_gl_mbscspn() function determines the length of a complementary multibyte substring for a multibyte-character string.

Syntax

#include <ifxgls.h>
...
int ifx_gl_mbscspn(mbs1, mbs1_byte_length, mbs2, mbs2_byte_length)
       gl_mchar_t *mbs1;
       int mbs1_byte_length;
       gl_mchar_t *mbs2;
       int mbs2_byte_length;
mbs1
A pointer to the multibyte-character string to check for the complementary string of characters in mbs2.
mbs1_byte_length
The integer number of bytes in the mbs1 string. If mbs1_byte_length is the value IFX_GL_NULL, the function assumes that mbs1 is a null-terminated string.
mbs2
A pointer to the string of multibyte characters to search for in mbs1.
mbs2_byte_length
The integer number of bytes in the mbs2 string. If mbs2_byte_length is the value IFX_GL_NULL, the function assumes that mbs2 is a null-terminated string.
Valid in client application Valid in DataBlade® UDR
Yes Yes

Usage

The ifx_gl_mbscspn() function returns the size of the initial substring of mbs1 that does not contain any characters that match characters in mbs2. The initial substring begins at the first character of mbs1. Therefore, this size is the number of characters in mbs1 before the first character that the mbs1 and mbs2 strings have in common. The string of unmatched characters is called the complementary string.

For example, suppose you have the following two multibyte-characters strings, mbs1 and mbs2:
mbs1 = "A1A2B1B2B3C1C2D1D2D3A1A2E1F1F2A1A2G1D1D2D3";
mbs2 = "F1F2G1D1D2D3";
With these multibyte strings, the following call to the ifx_gl_mbscspn() function returns 3:
ifx_gl_mbscspn(mbs1, bytelen1, mbs2, bytelen2)

The first three characters of mbs1 are not in mbs2. The fourth character in mbs1 is D1D2D3, which is in mbs2 also.

Return values

>=0
The number of characters in the initial substring of mbs1 that consists entirely of multibyte characters not in the string mbs2.
-1
The function was not successful, and the error number is set to indicate the cause. See the Errors section.

Errors

If an error occurred, this function returns -1 and sets the ifx_gl_lc_errno() error number to one of the following values.
IFX_GL_PARAMERR
Either mbs1_byte_length is not equal to IFX_GL_NULL and is not greater than or equal to 0, or mbs2_byte_length is not equal to IFX_GL_NULL and is not greater than or equal to 0.
IFX_GL_TERMMISMAT
Either mbs1_byte_length is equal to IFX_GL_NULL, and mbs2_byte_length is greater than or equal to 0; or mbs1_byte_length is greater than or equal to 0, and mbs2_byte_length is equal to IFX_GL_NULL.
IFX_GL_EILSEQ
Either mbs1 or mbs2 contains an invalid multibyte character.
IFX_GL_EINVAL
Either the function cannot determine whether the last character of mbs1 is a valid multibyte character because it would need to read more than mbs1_byte_length bytes from mbs1, or the function cannot determine whether the last character of mbs2 is a valid multibyte character because it would need to read more than mbs2_byte_length bytes from mbs2.