diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index cb7c26c..76f6681 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
w = write(transfer->fd, contents, size);
if (w < 0) {
- error("write(): %s(%d)", strerror(errno), errno);
- perr = -errno;
+ perr = errno;
+ error("write(): %s(%d)", strerror(perr), perr);
+ g_set_error(err, OBC_TRANSFER_ERROR, -perr,
+ "Writing to file failed");
goto fail;
} else if ((size_t) w != size) {
error("Unable to write all contents to file");
- perr = -EFAULT;
+ g_set_error(err, OBC_TRANSFER_ERROR, -EFAULT,
+ "Writing all contents to file failed");
goto fail;
}
} else {
goto fail;
}
- perr = fstat(transfer->fd, &st);
- if (perr < 0) {
- error("fstat(): %s(%d)", strerror(errno), errno);
- g_set_error(err, OBC_TRANSFER_ERROR, -errno,
+ if (fstat(transfer->fd, &st) < 0) {
+ perr = errno;
+ error("fstat(): %s(%d)", strerror(perr), perr);
+ g_set_error(err, OBC_TRANSFER_ERROR, -perr,
"Unable to get file status");
goto fail;
}