#include #include #include #include #include #include bool convert_val(const char* str, unsigned long long* resp) { char* endptr; errno = 0; unsigned long long val = strtoull(str, &endptr, 0); if (errno) return false; if (*endptr) return false; *resp = val; return true; } char* cmdname; void usage() { fprintf(stderr, "Usage: %s " "[-bufsize bufsize] " "[-extra extra_bytes] " "[-np nofprocesses] " "cmd args...\n", cmdname); exit(1); } int main(int argc, char** argv) { cmdname = *argv++; --argc; unsigned int nofprocesses = 2; size_t bufsize = 1024; size_t extra_space_size = 0; while (argc > 1 && **argv == '-') { if (strcmp(*argv, "-np") == 0) { ++argv; --argc; unsigned long long val; if (!convert_val(*argv, &val)) usage(); nofprocesses = val; } else if (strcmp(*argv, "-bufsize") == 0) { ++argv; --argc; unsigned long long val; if (!convert_val(*argv, &val)) usage(); bufsize = val; } else if (strcmp(*argv, "-extra") == 0) { ++argv; --argc; unsigned long long val; if (!convert_val(*argv, &val)) usage(); extra_space_size = val; } else { usage(); } ++argv; --argc; } if (argc == 0) usage(); if (shared_rts_run(nofprocesses, bufsize, extra_space_size, *argv, argv)) { exit(0); } else { fprintf(stderr, "%s: execution failed\n", cmdname); exit(1); } }