diff --git a/src/tools/midifile.c b/src/tools/midifile.c index 5ef5d73c3..541460aa8 100644 --- a/src/tools/midifile.c +++ b/src/tools/midifile.c @@ -59,7 +59,7 @@ static int read_mthd(struct midi_file *mf) { if (mf_avail(mf) < 14 || memcmp(mf->p, "MThd", 4) != 0) - return -EIO; + return -EINVAL; mf->length = parse_be32(mf->p + 4); 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 || memcmp(mf->p, "MTrk", 4) != 0) - return -EIO; + return -EINVAL; track->data = track->p = mf->p + 8; 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; case 0x51: if (size < 3) - return -EIO; + return -EINVAL; mf->tick_sec = event->sec; mf->tick_start = tr->tick; 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; break; default: - return -EIO; + return -ENOENT; } event->data = tr->p; tr->p = save; diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index 754bf40af..63dec4ce2 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -1031,8 +1031,11 @@ static int setup_midifile(struct data *data) close(data->midi.fd); return -errno; } - if ((res = midi_file_init(&data->midi.mf, "r", data->midi.mem, data->midi.st.st_size)) < 0) - return -errno; + if ((res = midi_file_init(&data->midi.mf, "r", data->midi.mem, data->midi.st.st_size)) < 0) { + 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) printf("opened file \"%s\" format %08x ntracks:%d div:%d\n",