-#!/usr/bin/env python
+#!/bin/sh
+"""": # -*-python-*-
+bup_python="$(dirname "$0")/../config/bin/python" || exit $?
+exec "$bup_python" "$0" ${1+"$@"}
+"""
+# end of bup preamble
+
+# Note: this currently relies on bup-python to handle arbitrary binary
+# user/group names.
+
+from __future__ import absolute_import, print_function
import grp
import pwd
import sys
def usage():
- print >> sys.stderr, "Usage: id-other-than ID [ID ...]"
+ print('Usage: id-other-than <--user|--group> ID [ID ...]',
+ file=sys.stderr)
if len(sys.argv) < 2:
usage()
try:
int(x)
return True
- except ValueError, e:
+ except ValueError as e:
return False
-excluded_ids = frozenset(int(x) for x in sys.argv[2:] if is_integer(x))
-excluded_names = frozenset(x for x in sys.argv[2:] if not is_integer(x))
+excluded_ids = set(int(x) for x in sys.argv[2:] if is_integer(x))
+excluded_names = (x for x in sys.argv[2:] if not is_integer(x))
if sys.argv[1] == '--user':
+ for x in excluded_names:
+ excluded_ids.add(pwd.getpwnam(x).pw_uid)
for x in pwd.getpwall():
- if x.pw_name not in excluded_names and x.pw_uid not in excluded_ids:
- print x.pw_name + ':' + str(x.pw_uid)
+ if x.pw_uid not in excluded_ids:
+ print(x.pw_name + ':' + str(x.pw_uid))
sys.exit(0)
elif sys.argv[1] == '--group':
+ for x in excluded_names:
+ excluded_ids.add(grp.getgrnam(x).gr_gid)
for x in grp.getgrall():
- if x.gr_name not in excluded_names and x.gr_gid not in excluded_ids:
- print x.gr_name + ':' + str(x.gr_gid)
+ if x.gr_gid not in excluded_ids:
+ print(x.gr_name + ':' + str(x.gr_gid))
sys.exit(0)
else:
usage()