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 A874B138825 for ; Mon, 10 Nov 2014 18:21:17 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0A457E09C1; Mon, 10 Nov 2014 18:21:16 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 80F0BE09BD for ; Mon, 10 Nov 2014 18:21:15 +0000 (UTC) Received: from [192.168.1.7] (ip70-181-96-121.oc.oc.cox.net [70.181.96.121]) (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: zmedico) by smtp.gentoo.org (Postfix) with ESMTPSA id 48D623403C8 for ; Mon, 10 Nov 2014 18:21:14 +0000 (UTC) Message-ID: <54610217.3080707@gentoo.org> Date: Mon, 10 Nov 2014 10:21:11 -0800 From: Zac Medico User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.8.1 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org MIME-Version: 1.0 To: gentoo-portage-dev@lists.gentoo.org Subject: Re: [gentoo-portage-dev] [PATCH] unprivileged mode: generate PORTAGE_DEPCACHEDIR References: <1415575480-19505-1-git-send-email-zmedico@gentoo.org> <54609D06.5020101@gentoo.org> In-Reply-To: <54609D06.5020101@gentoo.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Archives-Salt: 2b474def-943a-4e2a-861d-ae40f512b2be X-Archives-Hash: 9868db99e1cacb1b90e1822cd546f64e On 11/10/2014 03:09 AM, Alexander Berntsen wrote: > On 10/11/14 00:24, Zac Medico wrote: >> ir >> + while current_dir != os.sep: >> + try: >> + st = os.stat(current_dir) >> + except OSError as e: >> + if errno == errno.ENOENT: >> + current_dir = \ >> + os.path.dirname(current_dir) >> + continue >> + break > Can you think of a less terrible way of doing this in Python? Well, you'll have to clarify what's so "terrible" about it. Note that I didn't use os.path.isdir or similar because those functions hide all kinds of relevant exceptions, such as EACCES. If it's the continue and break that upset you, we can do it like this: found_dir = False while current_dir != os.sep and not found_dir: try: os.stat(current_dir) found_dir = True except OSError: if errno == errno.ENOENT: current_dir = \ os.path.dirname(current_dir) else: found_dir = True -- Thanks, Zac