static size_t
post_data_get_item_length(struct post_data_item_s *pdi)
{
    if (pdi->file_ref != 0) {
        size_t start_offset = MAX(pdi->start_offset, 0);
        struct PP_FileInfo finfo;

        if (ppb_flash_file_file_ref_query_file(pdi->file_ref, &finfo) != PP_OK)
            return (size_t)-1;

        if (pdi->expected_last_modified_time != 0
                && finfo.last_modified_time != pdi->expected_last_modified_time)
        {
            return (size_t)-1;
        }

        if (pdi->number_of_bytes >= 0) {
            return (size_t)pdi->number_of_bytes;
        } else if (finfo.size <= start_offset) {
            return 0;
        } else {
            return finfo.size - start_offset;
        }
    } else {
        return pdi->len;
    }
}
Пример #2
0
static
int32_t
trace_ppb_flash_file_file_ref_query_file(PP_Resource file_ref_id, struct PP_FileInfo *info)
{
    trace_info("[PPB] {zilch} %s\n", __func__+6);
    return ppb_flash_file_file_ref_query_file(file_ref_id, info);
}