fdmap = { }
# fdmap[nominal] = (actual, Donor, there)
-last_nominal = None
-
def implement_pending():
actuals = donor.fish([pend[1] for pend in pending])
assert(len(actuals) == len(pending))
- for (nominal, there), actual in zip(pending, actuals)
+ for (nominal, there), actual in zip(pending, actuals):
overwriting_info = fdmap.get(nominal)
if overwriting_info is not None: os.close(overwriting_info[0])
fdmap[nominal] = (actual, Donor, there)
- last_nominal = nominal
def implmement_sockinfo(nominal):
(actual, tdonor, there) = fdmap[nominal]
ov = optparse.Values()
def process_args():
+ global ov
+
+ m = None
+
def arg_matches(regexp):
nonlocal m
m = re.search(regexp, arg)
op.disable_interspersed_args()
op.add_option('-p','--pid', type='int', action='callback',
- callback='ocb_set_donor')
+ callback=ocb_set_donor)
- args = sys.argv
+ args = sys.argv[1:]
+ last_nominal = None
while True:
(ov, args) = op.parse_args(args=args, values=ov)
(nominal, there) = m.groups()
nominal = None if nominal is None else int(nominal)
there = int(there)
- pending.append = (nominal,there)
- elif arg = 'exec':
+ pending.append((nominal,there))
+ last_nominal = nominal
+ elif arg == 'exec':
if not len(args):
op.error("exec needs command to run")
implement_pending()
implement_exec(args)
- elif arg = 'sockinfo':
+ elif arg == 'sockinfo':
if last_nominal is None:
op.error('sockinfo needs a prior fd spec')
implement_pending()
else:
op.error("unknown argument/option `%s'" % arg)
- implement_pending()
-
-
- there = int(m.group[1])
- nominal = None if m.group
-
- ,nominal) = map(int, m.groups())
-
-
-pid = int(sys.argv[1])
-fds = [int(x) for x in sys.argv[2:]]
-
-d = fishdescriptor.fish.Donor(pid)
-r = d.fish(fds)
-print(repr(r))
+process_args()