# HG changeset patch # User Nicolas Dumazet # Date 1250389824 -32400 # Node ID ae88c721f9166b338ea0d2f6e37cdf01bb1ff25e # Parent e7bde4680eeccc95d3ad88363056d001fa2e039f cmdutil: service: add an optional runargs argument to pass the command to run This would be necessary for inotify launching its server: the initial command is a standard 'hg st'/'hg ci'/... but the daemon to run is 'hg inserve' diff -r e7bde4680eec -r ae88c721f916 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Thu Sep 17 21:12:32 2009 +0200 +++ b/mercurial/cmdutil.py Sun Aug 16 11:30:24 2009 +0900 @@ -546,24 +546,26 @@ return errors -def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None): +def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None, + runargs=None): '''Run a command as a service.''' if opts['daemon'] and not opts['daemon_pipefds']: rfd, wfd = os.pipe() - args = sys.argv[:] - args.append('--daemon-pipefds=%d,%d' % (rfd, wfd)) + if not runargs: + runargs = sys.argv[:] + runargs.append('--daemon-pipefds=%d,%d' % (rfd, wfd)) # Don't pass --cwd to the child process, because we've already # changed directory. - for i in xrange(1,len(args)): - if args[i].startswith('--cwd='): - del args[i] + for i in xrange(1,len(runargs)): + if runargs[i].startswith('--cwd='): + del runargs[i] break - elif args[i].startswith('--cwd'): - del args[i:i+2] + elif runargs[i].startswith('--cwd'): + del runargs[i:i+2] break pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0), - args[0], args) + runargs[0], runargs) os.close(wfd) os.read(rfd, 1) if parentfn: