[CalendarServer-changes] [1444] CalendarServer/trunk/bin/xattr
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 3 11:09:03 PDT 2007
Revision: 1444
http://trac.macosforge.org/projects/calendarserver/changeset/1444
Author: wsanchez at apple.com
Date: 2007-04-03 11:09:03 -0700 (Tue, 03 Apr 2007)
Log Message:
-----------
Added Paths:
-----------
CalendarServer/trunk/bin/xattr
Added: CalendarServer/trunk/bin/xattr
===================================================================
--- CalendarServer/trunk/bin/xattr (rev 0)
+++ CalendarServer/trunk/bin/xattr 2007-04-03 18:09:03 UTC (rev 1444)
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+
+##
+# Copyright (c) 2005-2007 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Wilfredo Sanchez, wsanchez at apple.com
+##
+
+import sys
+import os
+import getopt
+import xattr
+
+def usage(e=None):
+ if e:
+ print e
+ print ""
+
+ name = os.path.basename(sys.argv[0])
+ print "usage: %s [-l] file [file ...]" % (name,)
+ print " %s -p [-l] attr_name file [file ...]" % (name,)
+ print " %s -w attr_name attr_value file [file ...]" % (name,)
+ print " %s -d attr_name file [file ...]" % (name,)
+ print ""
+ print "The first form lists the names of all xattrs on the given file(s)."
+ print "The second form prints the value of the xattr attr_name on the given file(s)."
+ print "The third form sets the value of the xattr attr_name to attr_value on the given file(s)."
+ print "The fourth form deletes the xattr attr_value on the given file(s)."
+ print ""
+ print "options:"
+ print " -h: print this help"
+ print " -l: print long format (attr_name: attr_value)"
+
+ if e:
+ sys.exit(64)
+ else:
+ sys.exit(0)
+
+def main():
+ try:
+ (optargs, args) = getopt.getopt(sys.argv[1:], "hlpwd", ["help"])
+ except getopt.GetoptError, e:
+ usage(e)
+
+ attr_name = None
+ long_format = False
+ read = False
+ write = False
+ delete = False
+ status = 0
+
+ for opt, arg in optargs:
+ if opt in ("-h", "--help"):
+ usage()
+ elif opt == "-l":
+ long_format = True
+ elif opt == "-p":
+ read = True
+ elif opt == "-w":
+ write = True
+ elif opt == "-d":
+ delete = True
+
+ if write or delete:
+ if long_format:
+ usage("-l not allowed with -w or -p")
+
+ if read or write or delete:
+ if not args:
+ usage("No attr_name")
+ attr_name = args.pop(0)
+
+ if write:
+ if not args:
+ usage("No attr_value")
+ attr_value = args.pop(0)
+
+ if len(args) > 1:
+ multiple_files = True
+ else:
+ multiple_files = False
+
+ for filename in args:
+ def onError(e):
+ if not os.path.exists(filename):
+ sys.stderr.write("No such file: %s\n" % (filename,))
+ else:
+ sys.stderr.write(str(e) + "\n")
+ status = 1
+
+ try:
+ attrs = xattr.xattr(filename)
+ except (IOError, OSError), e:
+ onError(e)
+ continue
+
+ if write:
+ try:
+ attrs[attr_name] = attr_value
+ except (IOError, OSError), e:
+ onError(e)
+ continue
+
+ elif delete:
+ try:
+ del attrs[attr_name]
+ except (IOError, OSError), e:
+ onError(e)
+ continue
+ except KeyError:
+ onError("No such xattr: %s" % (attr_name,))
+ continue
+
+ else:
+ try:
+ if read:
+ attr_names = (attr_name,)
+ else:
+ attr_names = attrs.keys()
+ except (IOError, OSError), e:
+ onError(e)
+ continue
+
+ if multiple_files:
+ file_prefix = "%s: " % (filename,)
+ else:
+ file_prefix = ""
+
+ for attr_name in attr_names:
+ try:
+ if long_format:
+ print "".join((file_prefix, "%s: " % (attr_name,), attrs[attr_name]))
+ else:
+ if read:
+ print "".join((file_prefix, attrs[attr_name]))
+ else:
+ print "".join((file_prefix, attr_name))
+ except KeyError:
+ onError("%sNo such xattr: %s" % (file_prefix, attr_name))
+ continue
+
+ sys.exit(status)
+
+if __name__ == "__main__":
+ main()
Property changes on: CalendarServer/trunk/bin/xattr
___________________________________________________________________
Name: svn:executable
+ *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070403/e24f9516/attachment.html
More information about the calendarserver-changes
mailing list