---
 sdhcp.1 | 3 +++
 sdhcp.c | 8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/sdhcp.1 b/sdhcp.1
index ef22689..d037624 100644
--- a/sdhcp.1
+++ b/sdhcp.1
@@ -28,6 +28,9 @@ don't change interface information such as an IP address.
 .TP
 .B "\-e program"
 run program. Variables will be set, see VARIABLES.
+.TP
+.B \-f
+run in foreground.
 .SH VARIABLES
 .LP
 The following variables are set:
diff --git a/sdhcp.c b/sdhcp.c
index 9ff9baf..01f0d23 100644
--- a/sdhcp.c
+++ b/sdhcp.c
@@ -97,6 +97,7 @@ static unsigned long t1;
 
 static int dflag = 1; /* change DNS in /etc/resolv.conf ? */
 static int iflag = 1; /* set IP ? */
+static int fflag = 0; /* run in foreground */
 
 #define IP(a,b,c,d) (unsigned char[4]){a,b,c,d}
 
@@ -392,7 +393,7 @@ Requesting:
        }
 Bound:
        fputs("Congrats! You should be on the 'net.\n", stdout);
-       if(!forked) {
+       if(!fflag && !forked) {
                if(fork())
                        exit(EXIT_SUCCESS);
                forked = 1;
@@ -439,7 +440,7 @@ static void cleanexit(int unused) {
 
 static void
 usage(void) {
-       eprintf("usage: sdhcp [-i] [-d] [-e program] [ifname] [clientid]\n");
+       eprintf("usage: sdhcp [-i] [-d] [-f] [-e program] [ifname] 
[clientid]\n");
 }
 
 int
@@ -460,6 +461,9 @@ main(int argc, char *argv[])
        case 'd': /* don't update DNS in/etc/resolv.conf */
                dflag = 0;
                break;
+       case 'f': /* run in foreground */
+               fflag = 1;
+               break;
        default:
                usage();
                break;
-- 
2.1.3.1.g339ec9c


Reply via email to