All pastes #92170 Raw Edit

Anonymous

public text v1 · immutable
#92170 ·published 2006-07-19 08:57 UTC
rendered paste body
static void
PutNext(void)
{
    static int vSlashF = FALSE;

    if (gNext >= gBuffer + kMaxBuffer - 3)
    {
        OutputDisc();
        HandleError(kBufferError);
    }

    // put out a pending back slash

    if (vSlashF)
    {
        vSlashF = FALSE;
        switch (*gNext)
        {
            case 't':
            case 'r':
            case 'n':
            case '\\':
                ++gNext;
                return;

            default:
                *(gNext+1) = *gNext;
                *gNext++ = '\\';
                break;
        }
    }

    // escape tabs, returns and backslashes
    // null terminate lines
    // convert 

    switch (*gNext)
    {
        case '\n':
            *gNext++ = 0;
            break;

        case '\t':
            *gNext++ = '\\';
            *gNext++ = 't';
            break;

        case '\r':
            *gNext++ = '\\';
            *gNext++ = 'r';
            break;

        case '\\':
            vSlashF = TRUE;

        default:
 	    
            // LATIN > utf8
            if (*gNext >= 0x80 && gEncoding == kLatin1)
            {
                *(gNext+1) = (0x80 | (*gNext & 0x3F));
                *gNext++ = (0xC0 | ((*gNext >> 6) & 0x1F));
            }
            ++gNext;
            break;
    }
}