コード例 #1
0
ファイル: Buffer.c プロジェクト: alyawn/craftd-huh
void
SV_BufferAddString (CDBuffer* self, CDString* data)
{
    CDString* sanitized = SV_StringSanitize(data);

    SVShort size = htons(CD_StringSize(sanitized));

    evbuffer_add(self->raw, &size, SVShortSize);
    evbuffer_add(self->raw, CD_StringContent(sanitized), CD_StringSize(sanitized));

    SV_DestroyString(sanitized);
}
コード例 #2
0
ファイル: minecraft.c プロジェクト: gmoonen/craftd
bool
MC_StringIsValid (MCString self)
{
    assert(self);

    for (size_t i = 0, ie = CD_StringLength(self); i < ie; i++) {
        bool      has = false;
        CDString* ch  = CD_CharAt(self, i);

        for (size_t h = 0, he = cd_UTF8_strlen(MCCharset); h < he; h++) {
            const char* che = &MCCharset[cd_UTF8_offset(MCCharset, h)];

            if (strncmp(CD_StringContent(ch), che, CD_StringSize(ch)) == 0) {
                has = true;
                break;
            }
        }

        if (!has && !(strncmp(CD_StringContent(ch), "§", 2) == 0 && i < ie - 2)) {
            CD_DestroyString(ch);
            return false;
        }

        CD_DestroyString(ch);
    }

    return true;
}
コード例 #3
0
ファイル: String.c プロジェクト: CogDis/craftd
inline
bool
CD_StringEndWith (CDString* self, const char* check)
{
	size_t length = strlen(check);

	return strncmp(CD_StringContent(self) + CD_StringSize(self) - length, check, length) == 0;
}
コード例 #4
0
ファイル: minecraft.c プロジェクト: gmoonen/craftd
MCString
MC_StringSanitize (MCString self)
{
    CDString* result = CD_CreateString();

    assert(self);

    for (size_t i = 0, ie = CD_StringLength(self); i < ie; i++) {
        bool      has = false;
        CDString* ch  = CD_CharAt(self, i);

        for (size_t h = 0, he = cd_UTF8_strlen(MCCharset); h < he; h++) {
            const char* che = &MCCharset[cd_UTF8_offset(MCCharset, h)];

            if (strncmp(CD_StringContent(ch), che, CD_StringSize(ch)) == 0) {
                has = true;
                break;
            }
        }

        if (i == ie - 2 && strncmp(CD_StringContent(ch), "§", 2) == 0){
            CD_DestroyString(ch);
            break;
        }

        if (has || strncmp(CD_StringContent(ch), "§", 2) == 0) {
            CD_AppendString(result, ch);
        }
        else {
            CD_AppendCString(result, "?");
        }

        CD_DestroyString(ch);
    }

    cd_UpdateLength(self);

    return result;
}