diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-01-16 22:33:22 +0100 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-01-16 22:33:22 +0100 |
commit | 1a3f3fb3b31fe915cac4bf8c2f49553d11f0b83f (patch) | |
tree | d4aa5997ef0a72d1ebd8b01f7360769f28fc057e /xe.c | |
parent | f79277999db1361e265650eeb8b9239dc271be93 (diff) | |
download | xe-1a3f3fb3b31fe915cac4bf8c2f49553d11f0b83f.tar.gz xe-1a3f3fb3b31fe915cac4bf8c2f49553d11f0b83f.tar.xz xe-1a3f3fb3b31fe915cac4bf8c2f49553d11f0b83f.zip |
add -j0 to use as many cores as available v0.4
Diffstat (limited to 'xe.c')
-rw-r--r-- | xe.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/xe.c b/xe.c index 0fc55a8..b967820 100644 --- a/xe.c +++ b/xe.c @@ -226,6 +226,29 @@ toolong() } 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[]) { char c; @@ -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; |