track_info
data->what.track_info.track_number =
bcd2bin(data->what.track_info.track_number);
struct acd_track_info track_info;
if ((error = acd_read_track_info(dev, 0xff, &track_info)))
if (!track_info.nwa_valid) {
*(int*)ap->a_data = track_info.next_writeable_addr;
struct cd_sub_channel_track_info track_info;
write_file(struct track_info *track_info)
filesize = track_info->file_size / 1024;
if (ioctl(fd, CDRIOCSETBLOCKSIZE, &track_info->block_size) < 0)
if (track_info->addr >= 0)
lseek(fd, track_info->addr * track_info->block_size, SEEK_SET);
track_info->addr, track_info->file_size,
roundup_blocks(track_info));
if (track_info->file == STDIN_FILENO)
track_info->file_name, filesize);
while ((count = read(track_info->file, buf,
MIN((track_info->file_size - size),
track_info->block_size * BLOCKS))) > 0) {
if (count % track_info->block_size) {
(track_info->block_size * BLOCKS) - count);
count = ((count / track_info->block_size) + 1) *
track_info->block_size;
if (track_info->file != STDIN_FILENO && filesize) {
if (size >= track_info->file_size)
close(track_info->file);
roundup_blocks(struct track_info *track)
static struct track_info tracks[100];
static int write_file(struct track_info *);
static int roundup_blocks(struct track_info *);