From 1a3f3fb3b31fe915cac4bf8c2f49553d11f0b83f Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Sat, 16 Jan 2016 22:33:22 +0100 Subject: add -j0 to use as many cores as available --- xe.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'xe.c') diff --git a/xe.c b/xe.c index 0fc55a8..b967820 100644 --- a/xe.c +++ b/xe.c @@ -225,6 +225,29 @@ toolong() exit(1); } +int +parse_jobs(char *s) +{ + char *e; + int n; + + errno = 0; + n = strtol(s, &e, 10); + if (errno != 0 || *e) { + fprintf(stderr, "xe: can't parse number '%s'.\n", s); + exit(1); + } + +#ifdef _SC_NPROCESSORS_ONLN + if (n <= 0) + n = (int)sysconf(_SC_NPROCESSORS_ONLN); +#endif + if (n <= 0) + n = 1; + + return n; +} + int main(int argc, char *argv[], char *envp[]) { @@ -260,7 +283,7 @@ main(int argc, char *argv[], char *envp[]) case 'N': maxatonce = atoi(optarg); break; case 'R': Rflag++; break; case 'a': aflag++; break; - case 'j': maxjobs = atoi(optarg); break; + case 'j': maxjobs = parse_jobs(optarg); break; case 'k': kflag++; break; case 'n': nflag++; break; case 's': sflag = optarg; break; -- cgit 1.4.1