static int test_thread(void *arg) { pbin = kopen(BIN_FILE, "bpr"); if (pbin == NULL) goto exit_no_file; if (read_and_check(pbin, BIN_NUM_STRUCTS, BIN_CHUNK_COUNT, BIN_RANGE_BEGIN_I, BIN_RANGE_END_I, BIN_RANGE_BEGIN_S, BIN_RANGE_END_S, BIN_RANGE_BEGIN_U, BIN_RANGE_END_U)) goto exit_fail; printk(KERN_INFO "kread -- passed\n"); goto exit_normal; exit_no_file: printk(KERN_INFO "failed to open file\n"); goto exit_fail; exit_fail: printk(KERN_INFO "kread -- failed\n"); exit_normal: if (pbin) kclose(pbin); pbin = NULL; do_exit(0); return 0; }
void BmpReader::read_scanline(vector<Byte3>& buf) { if(my_color_table.size() == 256){ // color indexed size_t scan_size = buf.size(); // BMP has padding after each scanline int padding = 4 - scan_size % 4; if(padding < 4) scan_size += padding; vector<unsigned char> index(scan_size); read_and_check(&index[0], scan_size, my_file, "BMP pixel data"); for(size_t i = 0; i < buf.size(); i++) buf[i] = my_color_table[ index[i] ]; }else{ int padding = 4 - ( buf.size() * 3 ) % 4; if(padding == 4) padding = 0; read_and_check(&buf[0][0], buf.size()*3, my_file, "BMP pixel data"); for(; padding > 0; padding--) fgetc(my_file); } }
void UploadItemReader::read(apr_size_t item_id, UploadItem *uitem) { const char *uitem_file_path; apr_mmap_t *uitem_file_map; apr_size_t version; TemporaryPool temp_pool(pool_); uitem_file_path = get_data_path(temp_pool.get(), item_id); File uitem_file(temp_pool.get(), uitem_file_path); version = read_and_check(&uitem_file, &uitem_file_map); switch (version) { case 3: memcpy(uitem, uitem_file_map->mm, sizeof(UploadItem::header_t)); break; case 2: // フォーマット変換 UploadItem::header_t *header; UploadItem::header_ver2x_t *header_ver2x; header = AS_UITEM_H(uitem); header_ver2x = AS_UITEM_H_VER2x(uitem_file_map->mm); new(header) UploadItem::header_t; header->id = header_ver2x->id; header->index = header_ver2x->index; header->download_count = header_ver2x->download_count; header->flags = header_ver2x->flags; header->file_size = header_ver2x->file_size; header->mtime = header_ver2x->mtime; strncpy(header->date, header_ver2x->date, ITM_MAX_DATE_SIZE); strncpy(header->ip_address, header_ver2x->ip_address, ITM_MAX_IP_ADDRESS_SIZE); strncpy(header->file_name, header_ver2x->file_name, ITM_MAX_FILE_NAME_SIZE); strncpy(header->file_mime, header_ver2x->file_mime, ITM_MAX_FILE_MIME_SIZE); strncpy(header->file_ext, header_ver2x->file_ext, ITM_MAX_FILE_EXT_SIZE); strncpy(header->file_digest, header_ver2x->file_digest, ITM_MAX_FILE_DIGEST_SIZE); strncpy(header->remove_pass, header_ver2x->remove_pass, ITM_MAX_REMOVE_PASS_SIZE); strncpy(header->download_pass, header_ver2x->download_pass, ITM_MAX_DOWNLOAD_PASS_SIZE); strncpy(header->comment, header_ver2x->comment, ITM_MAX_COMMENT_SIZE); break; default: THROW(MESSAGE_BUG_FOUND); } }