mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
pw-cat: improve midi errors
EINVAL for invalid events and file ENOENT for unknown event
This commit is contained in:
parent
8ecef35e80
commit
9bec2e5d8a
2 changed files with 9 additions and 6 deletions
|
|
@ -59,7 +59,7 @@ static int read_mthd(struct midi_file *mf)
|
||||||
{
|
{
|
||||||
if (mf_avail(mf) < 14 ||
|
if (mf_avail(mf) < 14 ||
|
||||||
memcmp(mf->p, "MThd", 4) != 0)
|
memcmp(mf->p, "MThd", 4) != 0)
|
||||||
return -EIO;
|
return -EINVAL;
|
||||||
|
|
||||||
mf->length = parse_be32(mf->p + 4);
|
mf->length = parse_be32(mf->p + 4);
|
||||||
mf->format = parse_be16(mf->p + 8);
|
mf->format = parse_be16(mf->p + 8);
|
||||||
|
|
@ -94,7 +94,7 @@ static int read_mtrk(struct midi_file *mf, struct midi_track *track)
|
||||||
{
|
{
|
||||||
if (mf_avail(mf) < 8 ||
|
if (mf_avail(mf) < 8 ||
|
||||||
memcmp(mf->p, "MTrk", 4) != 0)
|
memcmp(mf->p, "MTrk", 4) != 0)
|
||||||
return -EIO;
|
return -EINVAL;
|
||||||
|
|
||||||
track->data = track->p = mf->p + 8;
|
track->data = track->p = mf->p + 8;
|
||||||
track->size = parse_be32(mf->p + 4);
|
track->size = parse_be32(mf->p + 4);
|
||||||
|
|
@ -162,7 +162,7 @@ static int peek_event(struct midi_file *mf, struct midi_track *tr, struct midi_e
|
||||||
break;
|
break;
|
||||||
case 0x51:
|
case 0x51:
|
||||||
if (size < 3)
|
if (size < 3)
|
||||||
return -EIO;
|
return -EINVAL;
|
||||||
mf->tick_sec = event->sec;
|
mf->tick_sec = event->sec;
|
||||||
mf->tick_start = tr->tick;
|
mf->tick_start = tr->tick;
|
||||||
mf->tempo = (tr->p[0]<<16) | (tr->p[1]<<8) | tr->p[2];
|
mf->tempo = (tr->p[0]<<16) | (tr->p[1]<<8) | tr->p[2];
|
||||||
|
|
@ -176,7 +176,7 @@ static int peek_event(struct midi_file *mf, struct midi_track *tr, struct midi_e
|
||||||
return res;
|
return res;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EIO;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
event->data = tr->p;
|
event->data = tr->p;
|
||||||
tr->p = save;
|
tr->p = save;
|
||||||
|
|
|
||||||
|
|
@ -1031,8 +1031,11 @@ static int setup_midifile(struct data *data)
|
||||||
close(data->midi.fd);
|
close(data->midi.fd);
|
||||||
return -errno;
|
return -errno;
|
||||||
}
|
}
|
||||||
if ((res = midi_file_init(&data->midi.mf, "r", data->midi.mem, data->midi.st.st_size)) < 0)
|
if ((res = midi_file_init(&data->midi.mf, "r", data->midi.mem, data->midi.st.st_size)) < 0) {
|
||||||
return -errno;
|
fprintf(stderr, "error: can't read midi file '%s': %s\n", data->filename, spa_strerror(res));
|
||||||
|
close(data->midi.fd);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
if (data->verbose)
|
if (data->verbose)
|
||||||
printf("opened file \"%s\" format %08x ntracks:%d div:%d\n",
|
printf("opened file \"%s\" format %08x ntracks:%d div:%d\n",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue