1#!/usr/bin/python 2import sys 3import plistlib 4 5users = [] 6 7def deref(x): 8 if type(x) == list: 9 x = x[0] 10 return x 11 12def printuser(user): 13 name = deref(user["name"]) 14 uid = deref(user["uid"]) 15 gid = deref(user["gid"]) 16 realname = deref(user["realname"]) 17 home = deref(user["home"]) 18 shell = deref(user["shell"]) 19 str = "%s:*:%s:%s::0:0:%s:%s:%s" % \ 20 (name, uid, gid, realname, home, shell) 21 print str 22 23def compare_uid(x, y): 24 x = int(deref(x["uid"])) 25 y = int(deref(y["uid"])) 26 return x-y 27 28for file in sys.argv[1:]: 29 users.append(plistlib.readPlist(file)) 30 31users.sort(compare_uid) 32 33print("""## 34# User Database 35# 36# Note that this file is consulted directly only when the system is running 37# in single-user mode. At other times this information is provided by 38# Open Directory. 39# 40# See the opendirectoryd(8) man page for additional information about 41# Open Directory. 42##"""); 43 44for user in users: 45 printuser(user) 46 47