Commit 69a2078e5dd0a10a68dccf607dc1e90597a9e28e

Con Kolivas 2013-08-31T15:13:57

Revert to old custom tolines function since strtok_r is not portable.

diff --git a/driver-bflsc.c b/driver-bflsc.c
index f215751..7f773ab 100644
--- a/driver-bflsc.c
+++ b/driver-bflsc.c
@@ -85,8 +85,8 @@ static void bflsc_applog(struct cgpu_info *bflsc, int dev, enum usb_cmds cmd, in
 // error would be no data or missing LF at the end
 static bool tolines(struct cgpu_info *bflsc, int dev, char *buf, int *lines, char ***items, enum usb_cmds cmd)
 {
-	char *tok, *saveptr;
 	bool ok = false;
+	char *ptr;
 
 #define p_lines (*lines)
 #define p_items (*items)
@@ -100,21 +100,22 @@ static bool tolines(struct cgpu_info *bflsc, int dev, char *buf, int *lines, cha
 		return ok;
 	}
 
-	tok = strtok_r(buf, "\n", &saveptr);
-	if (!tok) {
-		applog(LOG_DEBUG, "USB: %s%i: (%d) missing lf(s) in %s",
-		       bflsc->drv->name, bflsc->device_id, dev, usb_cmdname(cmd));
-		return ok;
-	}
-
-	ok = true;
-	while (tok) {
+	ptr = strdup(buf);
+	while (ptr && *ptr) {
 		p_items = realloc(p_items, ++p_lines * sizeof(*p_items));
 		if (unlikely(!p_items))
 			quit(1, "Failed to realloc p_items in tolines");
-		p_items[p_lines-1] = strdup(tok);
-		tok = strtok_r(NULL, "\n", &saveptr);
+		p_items[p_lines-1] = ptr;
+		ptr = strchr(ptr, '\n');
+		if (ptr)
+			*(ptr++) = '\0';
+		else {
+			applog(LOG_DEBUG, "USB: %s%i: (%d) missing lf(s) in %s",
+				bflsc->drv->name, bflsc->device_id, dev, usb_cmdname(cmd));
+			return ok;
+		}
 	}
+	ok = true;
 
 	return ok;
 }