Jeff King <peff@xxxxxxxx> writes: > When a caller tries to read a particular set of bytes via > read_in_full(), there are three possible outcomes: > > 1. An error, in which case -1 is returned and errno is > set. > > 2. A short read, in which fewer bytes are returned and > errno is unspecified (we never saw a read error, so we > may have some random value from whatever syscall failed > last). > > 3. The full read completed successfully. > > Many callers handle cases 1 and 2 together by just checking > the result against the requested size. If their combined > error path looks at errno (e.g., by calling die_errno), they > may report a nonsense value. > > Let's fix these sites by having them distinguish between the > two error cases. That avoids the random errno confusion, and > lets us give more detailed error messages. The resulting code might be more verbose but I personally think both of them give a lot more clear error indication.