aboutsummaryrefslogtreecommitdiff
path: root/src/tpool.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tpool.c')
-rw-r--r--src/tpool.c35
1 files changed, 6 insertions, 29 deletions
diff --git a/src/tpool.c b/src/tpool.c
index 7fe93b8..3e8a0de 100644
--- a/src/tpool.c
+++ b/src/tpool.c
@@ -13,7 +13,9 @@
#include <errors.h>
#include <macros.h>
+#include "globals.h"
#include "tpool.h"
+#include "util.h"
#include "work.h"
static int nproc(void);
@@ -21,37 +23,12 @@ static void *tpwork(void *);
static pthread_t thread_buffer[32];
-extern const char *lquot, *rquot;
-
int
nproc(void)
{
- errno = 0;
-
- /* Grab the number of processors available on the users system. If we can
- we query sysconf() but fallback to 1 for systems that don’t support the
- sysconf() method. The user can also override this via the GRAB_NPROCS
- environment variable, and if that’s invalid then we just issue a
- diagnostic and default to 1.
-
- We don’t want to error on an invalid value for GRAB_NPROCS because we
- might be running this tool as part of an editor plugin for example where
- finding the root cause of your regexp-search failing may not be so
- trivial. */
-
- const char *ev = getenv("GRAB_NPROCS");
- if (ev != nullptr && *ev != 0) {
- const char *endptr;
- long n = strtol(ev, (char **)&endptr, 10);
- if (errno == 0 && *endptr == 0)
- return (int)n;
- if (errno != 0)
- warn("strtol: %s:", ev);
- if (*endptr != 0)
- warn("Invalid value for %s%s%s for GRAB_NPROCS", lquot, ev, rquot);
- return 1;
- }
-
+ int np = getenv_posnum("GRAB_NPROCS", -1);
+ if (np != -1)
+ return np;
#ifdef _SC_NPROCESSORS_ONLN
return (int)sysconf(_SC_NPROCESSORS_ONLN);
#else
@@ -121,4 +98,4 @@ tpwork(void *arg)
array_free(buf);
#endif
return nullptr;
-}
+} \ No newline at end of file