static int load_frame_binary(cst_track *t, int i, cst_tokenstream *ts, int swap) { float val; int j; if (cst_fread(ts->fd, &val, sizeof(float), 1) != 1) return -1; if (swap) swapfloat(&val); t->times[i] = val; /* Ignore the 'breaks' field */ if (cst_fread(ts->fd, &val, sizeof(float), 1) != 1) return -1; for (j = 0; j < t->num_channels; j++) { if (cst_fread(ts->fd, &val, sizeof(float), 1) != 1) return -1; if (swap) swapfloat(&val); t->frames[i][j] = val; } return 0; }
cst_filemap *cst_read_whole_file(const char *path) { cst_filemap *fmap; cst_file fh; if ((fh = cst_fopen(path, CST_OPEN_READ)) < 0) { cst_errmsg("cst_read_whole_file: Failed to open file\n"); return NULL; } fmap = cst_alloc(cst_filemap, 1); fmap->fh = fh; fmap->mapsize = cst_filesize(fmap->fh); fmap->mem = cst_alloc(char, fmap->mapsize); if (cst_fread(fmap->fh, fmap->mem, 1, fmap->mapsize) < fmap->mapsize) { cst_errmsg("cst_read_whole_file: read() failed\n"); cst_fclose(fmap->fh); cst_free(fmap->mem); cst_free(fmap); return NULL; } return fmap; }
cst_filemap *cst_read_whole_file(const char *path) { cst_filemap *fmap; cst_file fh; if ((fh = cst_fopen(path, CST_OPEN_READ)) == NULL) { cst_errmsg("cst_read_whole_file: Failed to open file\n"); return NULL; } fmap = cst_alloc(cst_filemap, 1); fmap->fh = fh; cst_fseek(fmap->fh, 0, CST_SEEK_ENDREL); fmap->mapsize = cst_ftell(fmap->fh); fmap->mem = VirtualAlloc(NULL, fmap->mapsize, MEM_COMMIT|MEM_TOP_DOWN, PAGE_READWRITE); cst_fseek(fmap->fh, 0, CST_SEEK_ABSOLUTE); cst_fread(fmap->fh, fmap->mem, 1, fmap->mapsize); return fmap; }