From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id F27F9138202 for ; Fri, 13 Sep 2013 15:10:46 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 7BE8BE0BD8; Fri, 13 Sep 2013 15:10:46 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 09D67E0BD3 for ; Fri, 13 Sep 2013 15:10:45 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 172D333EBDF for ; Fri, 13 Sep 2013 15:10:45 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id C356BE545C for ; Fri, 13 Sep 2013 15:10:43 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1379084315.817a11df3094d960dea9b1b46b17fcdd9e803be5.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/fsutil.py X-VCS-Directories: roverlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 817a11df3094d960dea9b1b46b17fcdd9e803be5 X-VCS-Branch: master Date: Fri, 13 Sep 2013 15:10:43 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 9ed54867-ec49-4ac7-91fe-742cf5f5f965 X-Archives-Hash: 5d0b295998a743e4b521b169435083f5 commit: 817a11df3094d960dea9b1b46b17fcdd9e803be5 Author: André Erdmann mailerd de> AuthorDate: Fri Sep 13 14:58:35 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Fri Sep 13 14:58:35 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=817a11df fsutil: walk_up() Generator that walks a filesystem path upwards, e.g. "/a/b/c/d" -> [ "/a/b/c/d", "/a/b/c", "/a/b", "/a" ] --- roverlay/fsutil.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/roverlay/fsutil.py b/roverlay/fsutil.py index 515f214..7f3296a 100644 --- a/roverlay/fsutil.py +++ b/roverlay/fsutil.py @@ -18,6 +18,27 @@ _OS_CHOWN = getattr ( os, 'lchown', os.chown ) _OS_CHMOD = getattr ( os, 'lchmod', os.chmod ) +def walk_up ( dirpath, topdown=False, max_iter=None ): + path_elements = os.path.normpath ( dirpath ).split ( os.sep ) + + if path_elements: + p_start = 0 if path_elements[0] else 1 + + if max_iter is None: + high = len ( path_elements ) + else: + high = min ( max_iter + p_start, len ( path_elements ) ) + + + if topdown: + for k in range ( p_start+1, high+1 ): + yield os.sep.join ( path_elements[:k] ) + else: + for k in range ( high, p_start, -1 ): + yield os.sep.join ( path_elements[:k] ) + +# --- end of walk_up (...) --- + def get_fs_dict ( initial_root, create_item=None, dict_cls=dict, dirname_filter=None, filename_filter=None,