Exemple #1
0
void SlashFolderLocal(Stroka &folder)
{
    if (!folder)
        return;
#ifdef _win32_
    size_t pos;
    while ((pos = folder.find('/')) != Stroka::npos)
        folder.replace(pos, 1, LOCSLASH_S);
#endif
    if (folder[+folder-1] != LOCSLASH_C)
        folder.append(LOCSLASH_S);
}
Stroka EncodeXMLString(const char* str)  {
    Stroka strout;
    if (!str)
        return Stroka();
    char num[15];
    num[14] = 0;
    num[13] = ';';
    for (const char* s = str, *s1; *s;) {
        for (s1 = s; safe_chars[(unsigned char)(*s1)]; s1++)
            ;
        if (s1 != s)
            strout.replace(+strout, 0, s, 0, s1 - s, s1 - s);
        s = s1;
        if (*s == 0)
            break;
        strout.replace(+strout, 0, "&#", 0, 2, 2);
        char *p = &num[13];
        for (int code = csYandex.unicode[(unsigned char)(*s++)]; code > 0; code /= 10)
            *(--p) = '0' + (code % 10);
        strout.append(p);
    }
    return strout;
}