diff options
author | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 15:47:16 +0100 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 15:47:16 +0100 |
commit | 25335618bf8755ce6b116ee14f47f5a1f2c821e9 (patch) | |
tree | d889d7ab3f9f985d0c54c534cb8052bd2e6d7163 /bzrlib/_readdir_py.py | |
download | bzr-tarball-25335618bf8755ce6b116ee14f47f5a1f2c821e9.tar.gz |
Tarball conversion
Diffstat (limited to 'bzrlib/_readdir_py.py')
-rw-r--r-- | bzrlib/_readdir_py.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/bzrlib/_readdir_py.py b/bzrlib/_readdir_py.py new file mode 100644 index 0000000..870b2b5 --- /dev/null +++ b/bzrlib/_readdir_py.py @@ -0,0 +1,52 @@ +# Copyright (C) 2006, 2008 Canonical Ltd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +"""Python implementation of readdir interface.""" + +from __future__ import absolute_import + +import stat + + +_directory = 'directory' +_chardev = 'chardev' +_block = 'block' +_file = 'file' +_fifo = 'fifo' +_symlink = 'symlink' +_socket = 'socket' +_unknown = 'unknown' + +_formats = { + stat.S_IFDIR:'directory', + stat.S_IFCHR:'chardev', + stat.S_IFBLK:'block', + stat.S_IFREG:'file', + stat.S_IFIFO:'fifo', + stat.S_IFLNK:'symlink', + stat.S_IFSOCK:'socket', +} + + +def _kind_from_mode(stat_mode, _formats=_formats, _unknown='unknown'): + """Generate a file kind from a stat mode. This is used in walkdirs. + + It's performance is critical: Do not mutate without careful benchmarking. + """ + try: + return _formats[stat_mode & 0170000] + except KeyError: + return _unknown |