Add option to disable forking To simplify running tapdisk2 from a debugger, add an opttion "-n" to disable foring into the background. Signed-off-by: Philipp Hahn --- xen-4.0.1.orig/tools/blktap2/drivers/tapdisk2.c 2010-08-25 12:22:07.000000000 +0200 +++ xen-4.0.1/tools/blktap2/drivers/tapdisk2.c 2011-06-17 17:37:35.000000000 +0200 @@ -402,7 +402,7 @@ tapdisk2_wait_for_device(void) static void usage(const char *app, int err) { - fprintf(stderr, "usage: %s <-n file>\n", app); + fprintf(stderr, "usage: %s [-f] -n driver:file\n", app); exit(err); } @@ -411,10 +411,11 @@ main(int argc, char *argv[]) { int c; char *params; + int do_fork = 1; params = NULL; - while ((c = getopt(argc, argv, "n:s:h")) != -1) { + while ((c = getopt(argc, argv, "n:s:fh")) != -1) { switch (c) { case 'n': params = optarg; @@ -430,6 +431,9 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); #endif break; + case 'f': + do_fork = 0; + break; default: usage(argv[0], EINVAL); } @@ -438,12 +442,17 @@ main(int argc, char *argv[]) if (!params || optind != argc) usage(argv[0], EINVAL); + if (do_fork) { if (pipe(channel) == -1) { printf("pipe failed: %d\n", errno); return errno; } + } else { + channel[0] = dup(STDIN_FILENO); + channel[1] = dup(STDERR_FILENO); + } - switch (fork()) { + switch (do_fork ? fork() : 0) { case -1: printf("fork failed: %d\n", errno); return errno;