[alsa-devel] [PATCH v2] aplay: Fix error message when writing captured data

Takashi Iwai tiwai at suse.de
Fri Apr 7 16:30:41 CEST 2017


On Fri, 07 Apr 2017 15:45:42 +0200,
Daniel Baluta wrote:
> 
> On Fri, Apr 7, 2017 at 4:27 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > On Fri, 07 Apr 2017 15:20:36 +0200,
> > Daniel Baluta wrote:
> >>
> >> Read can return less then requested bytes, but we treat
> >> this as an error.
> >
> s/read/write here :)).
> 
> > Actually that's the bug -- we should loop the write until it reaches
> > to the real error.  Once when we get the proper errno, the error
> > message via perror() itself will be enough.
> 
> Correct. But I think aplay decided to keep things simple and fail in case
> couldn't write all requested bytes.

And that's wrong.  We should loop instead.

> This pattern can be noticed all over the places where write is used.

All wrong :)

We can implement a simple helper function and replace each write call
with it.

> Given the fact that write is blocking (meaning that it must write
> at least one byte until return) this should work most of the time,
> excepting corner cases like disk full, etc.

Yes, and such corner cases must be handled properly, too -- in the
end, it's what you wanted to achieve by your patch, but into a
different direction.


Takashi


More information about the Alsa-devel mailing list