Beispiel #1
0
static int parse_username_and_password(const char *begin,
                                       const char *end,
                                       size_t *data_out_ptr,
                                       size_t out_limit,
                                       avs_url_t *parsed_url) {
    // parse username
    size_t user_ptr = *data_out_ptr;
    while (begin < end && *data_out_ptr < out_limit && *begin != ':') {
        parsed_url->data[(*data_out_ptr)++] = *begin++;
    }
    parsed_url->data[(*data_out_ptr)++] = '\0';
    assert(begin == end || *begin == ':');

    if (!is_valid_credential(&parsed_url->data[user_ptr])
            || prepare_string(&parsed_url->data[user_ptr])) {
        LOG(ERROR, "invalid username");
        return -1;
    }
    parsed_url->user_ptr = user_ptr;
    *data_out_ptr = user_ptr + strlen(&parsed_url->data[user_ptr]) + 1;

    if (begin >= end) {
        return 0; // no password
    }

    // parse password
    size_t password_ptr = *data_out_ptr;
    ++begin; // move after ':'
    while (begin < end && *data_out_ptr < out_limit) {
        parsed_url->data[(*data_out_ptr)++] = *begin++;
    }
    parsed_url->data[(*data_out_ptr)++] = '\0';
    assert(begin == end);

    if (!is_valid_credential(&parsed_url->data[password_ptr])
            || prepare_string(&parsed_url->data[password_ptr])) {
        LOG(ERROR, "invalid username");
        return -1;
    }
    parsed_url->password_ptr = password_ptr;
    *data_out_ptr = password_ptr + strlen(&parsed_url->data[password_ptr]) + 1;
    return 0;
}
Beispiel #2
0
static void writeText ( u8 *str, u16 pal, u8 inc_y )
{
    u8 x = 20 - strlen ( str ) / 2;

    SYS_disableInts();
    VDP_setTextPalette ( pal );
    VDP_drawText ( prepare_string(str), x, y );
    SYS_enableInts();

    y += inc_y;
}