Add --no-detach option for W32, daemontools, etc.
authorMartin Pool <mbp@samba.org>
Wed, 5 Dec 2001 13:03:16 +0000 (13:03 +0000)
committerMartin Pool <mbp@samba.org>
Wed, 5 Dec 2001 13:03:16 +0000 (13:03 +0000)
clientserver.c
options.c
rsync.h

index e8dba431ac5a2c7224f20bca1c6b86bdd90f8d7f..1b3801bc3b1e2b5079f58b7e015c92cc027cdd06 100644 (file)
@@ -501,7 +501,8 @@ int daemon_main(void)
                return start_daemon(STDIN_FILENO);
        }
 
-       become_daemon();
+       if (!global_opts.no_detach)
+           become_daemon();
 
        if (!lp_load(config_file, 1)) {
                exit_cleanup(RERR_SYNTAX);
index cc0533de441bca4aa82bc81af74f5ea7525a8552..0a6b10e1aad37b308c8f53469cb18e776e3802f4 100644 (file)
--- a/options.c
+++ b/options.c
@@ -212,6 +212,7 @@ void usage(enum logcode F)
   rprintf(F,"     --include-from=FILE     don't exclude patterns listed in FILE\n");
   rprintf(F,"     --version               print version number\n");  
   rprintf(F,"     --daemon                run as a rsync daemon\n");  
+  rprintf(F,"     --no-detach             do not detach from the parent\n");  
   rprintf(F,"     --address               bind to the specified address\n");  
   rprintf(F,"     --config=FILE           specify alternate rsyncd.conf file\n");  
   rprintf(F,"     --port=PORT             specify alternate rsyncd port number\n");
@@ -298,6 +299,7 @@ static struct poptOption long_options[] = {
   /* TODO: Should this take an optional int giving the compression level? */
   {"compress",        'z', POPT_ARG_NONE,   &do_compression},
   {"daemon",           0,  POPT_ARG_NONE,   &am_daemon},
+  {"no-detach",        0,  POPT_ARG_NONE,   &global_opts.no_detach},
   {"stats",            0,  POPT_ARG_NONE,   &do_stats},
   {"progress",         0,  POPT_ARG_NONE,   &do_progress},
   {"partial",          0,  POPT_ARG_NONE,   &keep_partial},
diff --git a/rsync.h b/rsync.h
index 0346c6c8a309f59afd750698f55e0bf3e39d42b5..191ea5e47509a92451388b52b91a616b73efcc7d 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -566,6 +566,11 @@ extern int verbose;
 extern struct global_opts {
        /** Network address family. **/
        int af_hint;
+       
+       /** Do not go into the background when run as --daemon.  Good
+        * for debugging and required for running as a service on W32,
+        * or under Unix process-monitors. **/
+       int no_detach;
 } global_opts;