Distinguish between lseek errors and read errores.

MFC after:	2 weeks
This commit is contained in:
Xin LI 2019-03-28 18:20:47 +00:00
parent 77f552e221
commit 9ace37176e

View File

@ -35,6 +35,7 @@ static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -329,8 +330,11 @@ delete(int f, struct bootblock *boot, struct fatEntry *fat, cl_t startcl,
}
off = startcl * boot->bpbSecPerClust + boot->ClusterOffset;
off *= boot->bpbBytesPerSec;
if (lseek(f, off, SEEK_SET) != off
|| read(f, delbuf, clsz) != clsz) {
if (lseek(f, off, SEEK_SET) != off) {
perr("Unable to lseek to %" PRId64, off);
return FSFATAL;
}
if (read(f, delbuf, clsz) != clsz) {
perr("Unable to read directory");
return FSFATAL;
}
@ -338,8 +342,11 @@ delete(int f, struct bootblock *boot, struct fatEntry *fat, cl_t startcl,
*s = SLOT_DELETED;
s += 32;
}
if (lseek(f, off, SEEK_SET) != off
|| write(f, delbuf, clsz) != clsz) {
if (lseek(f, off, SEEK_SET) != off) {
perr("Unable to lseek to %" PRId64, off);
return FSFATAL;
}
if (write(f, delbuf, clsz) != clsz) {
perr("Unable to write directory");
return FSFATAL;
}