ELF>@@_@8@,, 00 0 .. (0(0 (0 Ptd * * *Qtd_3! #+. 10"$%)(/*2-' , &, @ ,-.02Z\qXCENݹ| $I[H# + $t7Pv""4S?s)a^ 8(? ^ ^ , " ^ __gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesinitxattrPy_InitModule4_64PyModule_AddStringConstantPyModule_AddIntConstantPyString_TypePyType_IsSubtypePyObject_AsFileDescriptorPyExc_TypeErrorPyErr_SetStringflistxattrllistxattr_PyArg_ParseTuple_SizeTPyMem_MallocstrlenPyList_NewPyString_FromStringPyMem_FreePyExc_IOErrorPyErr_SetFromErrnoPyErr_NoMemorysnprintfPyExc_ValueErrorfremovexattrlremovexattr_PyArg_ParseTupleAndKeywords_SizeT_Py_NoneStructfsetxattrlsetxattrfgetxattrlgetxattrPyString_FromStringAndSizematches_nsstrncmp__errno_locationPyMem_Realloc_Py_BuildValue_SizeTPyList_Appendlibattr.so.1libpthread.so.0libc.so.6_edata__bss_start_endGLIBC_2.2.5ATTR_1.0 ui  ui p( `3 `3 \ A)\ !\ : \ J)\ P \ = ] N)] 0%] @ ] V)(] `8]  G @] _)H] `X] L `] c)h] x] Q ] o)] ] S ] v)]  ] W ] )] P#] Y ^ )^ )^ ) ^ )(^ )0^ )8^ )`^ )h^ )p^ )x^ )^ )^ )^ )^ )^ )^ )^ )^ )^ )1 1  1  1 1 2 2  2 %02 82 @2 H2 P2 X2 `2  h2  p2  x2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !3 "3 #3 $3 & 3 '(3 (03 )83 *@3 +HOH5 % @% h% h%  h% h% h% h% h% hp% h`% h P% h @% h 0% h % h % h% h% h% h% h% h%z h%r h%j h%b hp%Z h`%R hP%J h@%B h0%: h %2 h%* h%" h% h % h!%  h"HH HtHÐU=G HATSubH= t H= H L%| HUG L)HHXH9s DHBH5G AH*G H9rG [A\fUH=7 Ht"H HtH= IAÐSHX H5D H=3A1HH5HHHH5HHH5HH!H5HHH5HH5Hߺ8H5Hߺ$HH5HnHH5HXHH5HBHHH5[+ff.H\$Hl$HLd$HHHH5 AH9t t3AEHC$HEH$Hl$Ld$HH0tEEf.H H5H81fDttH\@H'H\$Hl$HLd$Ll$H5Lt$L|$HXHL$HT$1D$;u/1HH\$(Hl$0Ld$8Ll$@Lt$HL|$PHXT$H|$Ht11H7HHHRHIHHHHItz1HLHHH\HL)I9HME1HH]LLLIHMdLL)I9L LH H8H1oH@1Hl$Ld$HLl$H\$H(HIItz5LH*H\H-HIEH HM1HHHH9w=x9MeLH\$Hl$Ld$Ll$ H(fHHq H5 E1H8GI}@#E1fffff.ttH@HSHH EA HH7 HPHD$(LL$8LD$@D$LHD$(HD$HD$LH$1u1HP[fDT$LH\$H|$@HtHt$8H|$(HT$0RHHtH2H|$0t H HHm H8uSHH5w 1H0HL$HT$ LD$,D$,u1H0[T$,H|$ HOtHt$Ht H HH H8ff.ttHL@0HSHH ? HH HĀHD$PLL$hLD$pD$|D$xHD$ HD$|HD$PHD$HD$xHD$HD$XHD$HD$`H$1u1H[ËT$|H\$0H|$pHJtHt$hH|$PHT$HHL$XHT$`HDD$xHH|$HHt7t H HH H8{SHH5 HPHD$LHL$8HT$@LL$(LD$0D$LHD$HD$HD$HH$1u1HP[T$LH\$H|$@HjtHL$(HT$0HHt$8DD$H:t H HH H8ttH@0H7H\$Hl$HLd$Ll$HxHD$(HLL$8LD$@H <> HHD$HD$LD$LHD$(H$1?u#1HHl$`H\$XLd$hLl$pHxDT$LLd$H|$@LRtHt$8H|$(HT$011HLIHHt^HHHteHHLLHt%HHH|$0HHJHH|$0Hz H8H!H|$01 @H\$Hl$HLd$HHH5UHL$HT$ LD$,1D$,u!1HHl$8H\$0Ld$@HHT$,H|$ HtHt$11HHHtLHHHtSHt$HHHHtHH}HHnHHn H8vHO 1>> import xattr >>> xattr.listxattr("file.txt") ['user.mime_type'] >>> xattr.getxattr("file.txt", "user.mime_type") 'text/plain' >>> xattr.setxattr("file.txt", "user.comment", "Simple text file") >>> xattr.listxattr("file.txt") ['user.mime_type', 'user.comment'] >>> xattr.removexattr ("file.txt", "user.comment") @note: Most or all errors reported by the system while using the xattr library will be reported by raising a L{EnvironmentError}; under Linux, the following C{errno} values are used: - C{ENOATTR} and C{ENODATA} mean that the attribute name is invalid - C{ENOTSUP} and C{EOPNOTSUPP} mean that the filesystem does not support extended attributes, or that the namespace is invalid - C{E2BIG} mean that the attribute value is too big - C{ERANGE} mean that the attribute name is too big (it might also mean an error in the xattr module itself) - C{ENOSPC} and C{EDQUOT} are documented as meaning out of disk space or out of disk space because of quota limits @group Deprecated API: *xattr @group Namespace constants: NS_* @group set function flags: XATTR_CREATE, XATTR_REPLACE @sort: list, get, get_all, set, remove, listxattr, getxattr, setxattr removexattr Get the value of a given extended attribute (deprecated). Parameters: - a string representing filename, or a file-like object, or a file descriptor; this represents the file on which to act - a string, representing the attribute whose value to retrieve; usually in form of system.posix_acl or user.mime_type - (optional) a boolean value (defaults to false), which, if the file name given is a symbolic link, makes the function operate on the symbolic link itself instead of its target; @deprecated: since version 0.4, this function has been deprecated by the L{get} function Get the value of a given extended attribute. Example: >>> xattr.get('/path/to/file', 'user.comment') 'test' >>> xattr.get('/path/to/file', 'comment', namespace=xattr.NS_USER) 'test' @param item: the item to query; either a string representing the filename, or a file-like object, or a file descriptor @param name: the attribute whose value to set; usually in form of system.posix_acl or user.mime_type @type name: string @param nofollow: if given and True, and the function is passed a filename that points to a symlink, the function will act on the symlink itself instead of its target @type nofollow: boolean @param namespace: if given, the attribute must not contain the namespace itself, but instead the namespace will be taken from this parameter @type namespace: string @return: the value of the extended attribute (can contain NULLs) @rtype: string @raise EnvironmentError: caused by any system errors @since: 0.4 Get all the extended attributes of an item. This function performs a bulk-get of all extended attribute names and the corresponding value. Example: >>> xattr.get_all('/path/to/file') [('user.mime-type', 'plain/text'), ('user.comment', 'test'), ('system.posix_acl_access', '\x02\x00...')] >>> xattr.get_all('/path/to/file', namespace=xattr.NS_USER) [('mime-type', 'plain/text'), ('comment', 'test')] @param item: the item to query; either a string representing the filename, or a file-like object, or a file descriptor @keyword namespace: an optional namespace for filtering the attributes; for example, querying all user attributes can be accomplished by passing namespace=L{NS_USER} @type namespace: string @keyword nofollow: if passed and true, if the target file is a symbolic link, the attributes for the link itself will be returned, instead of the attributes of the target @type nofollow: boolean @return: list of tuples (name, value); note that if a namespace argument was passed, it (and the separator) will be stripped from the names returned @rtype: list @raise EnvironmentError: caused by any system errors @note: Since reading the whole attribute list is not an atomic operation, it might be possible that attributes are added or removed between the initial query and the actual reading of the attributes; the returned list will contain only the attributes that were present at the initial listing of the attribute names and that were still present when the read attempt for the value is made. @since: 0.4 Set the value of a given extended attribute (deprecated). Be carefull in case you want to set attributes on symbolic links, you have to use all the 5 parameters; use 0 for the flags value if you want the default behavior (create or replace) Parameters: - a string representing filename, or a file-like object, or a file descriptor; this represents the file on which to act - a string, representing the attribute whose value to set; usually in form of system.posix_acl or user.mime_type - a string, possibly with embedded NULLs; note that there are restrictions regarding the size of the value, for example, for ext2/ext3, maximum size is the block size - (optional) flags; if 0 or ommited the attribute will be created or replaced; if XATTR_CREATE, the attribute will be created, giving an error if it already exists; of XATTR_REPLACE, the attribute will be replaced, giving an error if it doesn't exists; - (optional) a boolean value (defaults to false), which, if the file name given is a symbolic link, makes the function operate on the symbolic link itself instead of its target; @deprecated: since version 0.4, this function has been deprecated by the L{set} function Set the value of a given extended attribute. Example: >>> xattr.set('/path/to/file', 'user.comment', 'test') >>> xattr.set('/path/to/file', 'comment', 'test', namespace=xattr.NS_USER) @param item: the item to query; either a string representing the filename, or a file-like object, or a file descriptor @param name: the attribute whose value to set; usually in form of system.posix_acl or user.mime_type @type name: string @param value: a string, possibly with embedded NULLs; note that there are restrictions regarding the size of the value, for example, for ext2/ext3, maximum size is the block size @type value: string @param flags: if 0 or ommited the attribute will be created or replaced; if L{XATTR_CREATE}, the attribute will be created, giving an error if it already exists; if L{XATTR_REPLACE}, the attribute will be replaced, giving an error if it doesn't exists; @type flags: integer @param nofollow: if given and True, and the function is passed a filename that points to a symlink, the function will act on the symlink itself instead of its target @type nofollow: boolean @param namespace: if given, the attribute must not contain the namespace itself, but instead the namespace will be taken from this parameter @type namespace: string @rtype: None @raise EnvironmentError: caused by any system errors @since: 0.4 Remove an attribute from a file (deprecated). Parameters: - a string representing filename, or a file-like object, or a file descriptor; this represents the file on which to act - a string, representing the attribute to be removed; usually in form of system.posix_acl or user.mime_type - (optional) a boolean value (defaults to false), which, if the file name given is a symbolic link, makes the function operate on the symbolic link itself instead of its target; @deprecated: since version 0.4, this function has been deprecated by the L{remove} function Remove an attribute from a file. Example: >>> xattr.remove('/path/to/file', 'user.comment') @param item: the item to query; either a string representing the filename, or a file-like object, or a file descriptor @param name: the attribute whose value to set; usually in form of system.posix_acl or user.mime_type @type name: string @param nofollow: if given and True, and the function is passed a filename that points to a symlink, the function will act on the symlink itself instead of its target @type nofollow: boolean @param namespace: if given, the attribute must not contain the namespace itself, but instead the namespace will be taken from this parameter @type namespace: string @since: 0.4 @rtype: None @raise EnvironmentError: caused by any system errors Return the list of attribute names for a file (deprecated). Parameters: - a string representing filename, or a file-like object, or a file descriptor; this represents the file to be queried - (optional) a boolean value (defaults to false), which, if the file name given is a symbolic link, makes the function operate on the symbolic link itself instead of its target; @deprecated: since version 0.4, this function has been deprecated by the L{list} function Return the list of attribute names for a file. Example: >>> xattr.list('/path/to/file') ['user.test', 'user.comment', 'system.posix_acl_access'] >>> xattr.list('/path/to/file', namespace=xattr.NS_USER) ['test', 'comment'] @param item: the item to query; either a string representing the filename, or a file-like object, or a file descriptor @param nofollow: if given and True, and the function is passed a filename that points to a symlink, the function will act on the symlink itself instead of its target @type nofollow: boolean @param namespace: if given, the attribute must not contain the namespace itself, but instead the namespace will be taken from this parameter @type namespace: string @return: list of strings; note that if a namespace argument was passed, it (and the separator) will be stripped from the names returned @rtype: list @raise EnvironmentError: caused by any system errors @since: 0.4 A)!: J)P = N)0%@ V)` G _)`L c)Q o)S v) W )P#Y )))))))))))))))))))).shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bssXXP oP %o f2o `A` ` @KH UP@[@@a8(8(g2H(H(o * *}**$0 00 0 0 0(0 (01 1@2 20`3 `3+ ^ ^^