`-d' option to disable forking.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@774 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1996-09-28 21:18:27 +00:00
parent 70e77d3abd
commit a24330c3fa

View File

@@ -4,13 +4,6 @@ RCSID("$Id$");
char *prog; char *prog;
static void
usage()
{
fprintf (stderr, "Usage: %s host\n", prog);
exit (1);
}
static u_int32_t display_num; static u_int32_t display_num;
static char xauthfile[MaxPathLen]; static char xauthfile[MaxPathLen];
@@ -219,7 +212,7 @@ passive (int fd, char *host, des_cblock *iv, des_key_schedule schedule)
*/ */
static int static int
doit (char *host, int passivep) doit (char *host, int passivep, int debugp)
{ {
des_key_schedule schedule; des_key_schedule schedule;
des_cblock key; des_cblock key;
@@ -273,15 +266,19 @@ doit (char *host, int passivep)
} }
/* close (otherside); */ /* close (otherside); */
fn = passive; fn = passive;
pid = fork(); if(debugp)
if (pid < 0) {
fprintf (stderr, "%s: fork: %s\n", prog, strerror(errno));
return 1;
} else if (pid > 0) {
printf ("%d\t%s\n", display_num, xauthfile); printf ("%d\t%s\n", display_num, xauthfile);
exit (0); else {
} else { pid = fork();
fclose(stdout); if (pid < 0) {
fprintf (stderr, "%s: fork: %s\n", prog, strerror(errno));
return 1;
} else if (pid > 0) {
printf ("%d\t%s\n", display_num, xauthfile);
exit (0);
} else {
fclose(stdout);
}
} }
} else { } else {
display_num = get_xsockets (&rendez_vous, NULL); display_num = get_xsockets (&rendez_vous, NULL);
@@ -317,6 +314,13 @@ doit (char *host, int passivep)
} }
} }
static void
usage(void)
{
fprintf (stderr, "Usage: %s [-d] host\n", prog);
exit (1);
}
/* /*
* kx - forward x connection over a kerberos-encrypted channel. * kx - forward x connection over a kerberos-encrypted channel.
* *
@@ -328,9 +332,25 @@ main(int argc, char **argv)
{ {
int passivep; int passivep;
char *disp; char *disp;
int debugp = 0;
int c;
prog = argv[0]; prog = argv[0];
if (argc != 2) while((c = getopt(argc, argv, "d")) != EOF) {
switch(c) {
case 'd' :
debugp = 1;
break;
case '?':
default:
usage();
}
}
argc -= optind;
argv += optind;
if (argc != 1)
usage (); usage ();
disp = getenv("DISPLAY"); disp = getenv("DISPLAY");
passivep = disp != NULL && passivep = disp != NULL &&
@@ -340,5 +360,5 @@ main(int argc, char **argv)
*/ */
passivep = 1; passivep = 1;
signal (SIGCHLD, childhandler); signal (SIGCHLD, childhandler);
return doit (argv[1], passivep); return doit (argv[0], passivep, debugp);
} }