From 04eb3ada8bf2496578242bc842aeaa95fc850865 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Mon, 22 Nov 2010 14:29:52 +0200 Subject: [PATCH] Catch OSErrors when creating directories (LP: #671067) --- debian/changelog | 1 + pbuilder-dist | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 17c73cc..e99c8d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,7 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low packages. 3.0 (quilt) has optional per-vendor patch series. * pbuilder-dist: - Refactor to use subprocess.popen instead of os.system (LP: #398974) + - Catch OSErrors when creating directories (LP: #671067) [ Benjamin Drung ] * wrap-and-sort: Remove duplicate items from sorted lists. diff --git a/pbuilder-dist b/pbuilder-dist index 5037264..348b6ea 100755 --- a/pbuilder-dist +++ b/pbuilder-dist @@ -89,8 +89,13 @@ class pbuilder_dist: self.base = os.path.expanduser(os.environ.get('PBUILDFOLDER', '~/pbuilder/')) - if not os.path.exists(self.base): - os.makedirs(self.base) + if not os.path.isdir(self.base): + try: + os.makedirs(self.base) + except os.OSError: + print >> stderr, ('Error: Cannot create base directory "%s"' + % self.base) + exit(1) if 'PBUILDAUTH' in os.environ: self.auth = os.environ['PBUILDAUTH'] @@ -182,8 +187,12 @@ class pbuilder_dist: self.logfile = os.path.normpath('%s/last_operation.log' % result) if not os.path.isdir(result): - # Create the results directory, if it doesn't exist. - os.makedirs(result) + try: + os.makedirs(result) + except os.OSError: + print >> stderr, ('Error: Cannot create results directory "%s"' + % result) + exit(1) if self.builder == 'pbuilder': base = '--basetgz "%s-base.tgz"' % prefix