Bugfix: Return failure, rather than quit, if BFwrite fails
diff --git a/driver-bitforce.c b/driver-bitforce.c
index 4306235..a59338c 100644
--- a/driver-bitforce.c
+++ b/driver-bitforce.c
@@ -79,14 +79,18 @@ static void BFgets(char *buf, size_t bufLen, int fd)
buf[0] = '\0';
}
-static void BFwrite(int fd, const void *buf, ssize_t bufLen)
+static ssize_t BFwrite2(int fd, const void *buf, ssize_t bufLen)
{
- ssize_t ret = write(fd, buf, bufLen);
-
- if (unlikely(ret != bufLen))
- quit(1, "BFwrite failed");
+ return write(fd, buf, bufLen);
}
+#define BFwrite(fd, buf, bufLen) do { \
+ if ((bufLen) != BFwrite2(fd, buf, bufLen)) { \
+ applog(LOG_ERR, "Error writing to BitForce (" #buf ")"); \
+ return 0; \
+ } \
+} while(0)
+
#define BFclose(fd) close(fd)
static bool bitforce_detect_one(const char *devpath)