X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=cmd%2Fon-cmd.py;h=2c0e9fc808538ba4abb264be964bb3b36e0138c9;hb=HEAD;hp=c40a6e8de90ddb262153e4920e31bcbc8edf949f;hpb=7ce8041f03454aa8393e85a7c4aa5f55a79e51fb;p=bup.git diff --git a/cmd/on-cmd.py b/cmd/on-cmd.py deleted file mode 100755 index c40a6e8..0000000 --- a/cmd/on-cmd.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -import sys, os, struct, getopt, subprocess, signal -from bup import options, ssh -from bup.helpers import * - -optspec = """ -bup on index ... -bup on save ... -bup on split ... -""" -o = options.Options('bup on', optspec, optfunc=getopt.getopt) -(opt, flags, extra) = o.parse(sys.argv[1:]) -if len(extra) < 2: - o.fatal('arguments expected') - -class SigException(Exception): - def __init__(self, signum): - self.signum = signum - Exception.__init__(self, 'signal %d received' % signum) -def handler(signum, frame): - raise SigException(signum) - -signal.signal(signal.SIGTERM, handler) -signal.signal(signal.SIGINT, handler) - -sp = None -p = None -ret = 99 - -try: - hp = extra[0].split(':') - if len(hp) == 1: - (hostname, port) = (hp[0], None) - else: - (hostname, port) = hp - - argv = extra[1:] - p = ssh.connect(hostname, port, 'on--server') - - argvs = '\0'.join(['bup'] + argv) - p.stdin.write(struct.pack('!I', len(argvs)) + argvs) - p.stdin.flush() - - main_exe = os.environ.get('BUP_MAIN_EXE') or sys.argv[0] - sp = subprocess.Popen([main_exe, 'server'], stdin=p.stdout, stdout=p.stdin) - - p.stdin.close() - p.stdout.close() - -finally: - while 1: - # if we get a signal while waiting, we have to keep waiting, just - # in case our child doesn't die. - try: - ret = p.wait() - sp.wait() - break - except SigException, e: - log('\nbup on: %s\n' % e) - os.kill(p.pid, e.signum) - ret = 84 -sys.exit(ret)