Commit 59f1fb2ec87b4a8e3d6608b405b6aa649b89db95

Jeff Garzik 2010-11-26T15:20:54

Link with pthreads lib, if present. Remove GNU-specific asprintf usage.

diff --git a/Makefile.am b/Makefile.am
index fbb3112..3f9282c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,5 +7,5 @@ EXTRA_DIST	= sha256_generic.c
 
 minerd_SOURCES	= util.c cpu-miner.c miner.h
 minerd_LDFLAGS	= -pthread
-minerd_LDADD	= @LIBCURL@ @JANSSON_LIBS@
+minerd_LDADD	= @LIBCURL@ @JANSSON_LIBS@ @PTHREAD_LIBS@
 
diff --git a/configure.ac b/configure.ac
index 7ae9888..ce4272b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,11 +12,13 @@ dnl Checks for programs
 AC_PROG_CC
 AC_PROG_GCC_TRADITIONAL
 AM_PROG_CC_C_O
+AC_PROG_RANLIB
 
 dnl Checks for header files.
 AC_HEADER_STDC
 
 AC_CHECK_LIB(jansson, json_loads, JANSSON_LIBS=-ljansson)
+AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIBS=-lpthread)
 
 PKG_PROG_PKG_CONFIG()
 
@@ -24,6 +26,7 @@ LIBCURL_CHECK_CONFIG(, 7.10.1, ,
   [AC_MSG_ERROR([Missing required libcurl >= 7.10.1])])
 
 AC_SUBST(JANSSON_LIBS)
+AC_SUBST(PTHREAD_LIBS)
 
 AC_CONFIG_FILES([
 	Makefile
diff --git a/cpu-miner.c b/cpu-miner.c
index 2b404af..da6e007 100644
--- a/cpu-miner.c
+++ b/cpu-miner.c
@@ -8,7 +8,6 @@
  * any later version.  See COPYING for more details.
  */
 
-#define _GNU_SOURCE
 #include "cpuminer-config.h"
 
 #include <stdio.h>
@@ -136,8 +135,9 @@ err_out:
 
 static void submit_work(struct work *work)
 {
-	char *hexstr = NULL, *s = NULL;
+	char *hexstr = NULL;
 	json_t *val, *res;
+	char s[256];
 
 	printf("PROOF OF WORK FOUND?  submitting...\n");
 
@@ -147,12 +147,9 @@ static void submit_work(struct work *work)
 		goto out;
 
 	/* build JSON-RPC request */
-	if (asprintf(&s,
-	    "{\"method\": \"getwork\", \"params\": [ \"%s\" ], \"id\":1}\r\n",
-	    hexstr) < 0) {
-		fprintf(stderr, "asprintf failed\n");
-		goto out;
-	}
+	sprintf(s,
+	      "{\"method\": \"getwork\", \"params\": [ \"%s\" ], \"id\":1}\r\n",
+		hexstr);
 
 	if (opt_debug)
 		fprintf(stderr, "DBG: sending RPC call:\n%s", s);
@@ -172,7 +169,6 @@ static void submit_work(struct work *work)
 	json_decref(val);
 
 out:
-	free(s);
 	free(hexstr);
 }