From mboxrd@z Thu Jan 1 00:00:00 1970
Path: news.gmane.org!.POSTED!not-for-mail
From: Philipp Stephani
Newsgroups: gmane.emacs.bugs
Subject: bug#27871: [PATCH] Treat unreachable current directory as error
Date: Sat, 30 Sep 2017 20:50:06 +0200
Message-ID: <20170930185006.54096-1-phst__23196.6883097359$1506797472$gmane$org@google.com>
References:
NNTP-Posting-Host: blaine.gmane.org
X-Trace: blaine.gmane.org 1506797472 27676 195.159.176.226 (30 Sep 2017 18:51:12 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sat, 30 Sep 2017 18:51:12 +0000 (UTC)
Cc: Philipp Stephani
To: emacs-devel@gnu.org, 27871@debbugs.gnu.org
Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 30 20:51:08 2017
Return-path:
Envelope-to: geb-bug-gnu-emacs@m.gmane.org
Original-Received: from lists.gnu.org ([208.118.235.17])
by blaine.gmane.org with esmtp (Exim 4.84_2)
(envelope-from )
id 1dyMqy-0006lA-8n
for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Sep 2017 20:51:08 +0200
Original-Received: from localhost ([::1]:40101 helo=lists.gnu.org)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from )
id 1dyMr5-0006Cd-P4
for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Sep 2017 14:51:15 -0400
Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54776)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from ) id 1dyMqv-0006Ba-0d
for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:06 -0400
Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from ) id 1dyMqs-0000E1-BT
for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:05 -0400
Original-Received: from debbugs.gnu.org ([208.118.235.43]:60993)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
(Exim 4.71) (envelope-from )
id 1dyMqs-0000Du-7x
for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:02 -0400
Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2)
(envelope-from ) id 1dyMqs-00054F-20
for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:02 -0400
X-Loop: help-debbugs@gnu.org
Resent-From: Philipp Stephani
Original-Sender: "Debbugs-submit"
Resent-CC: bug-gnu-emacs@gnu.org
Resent-Date: Sat, 30 Sep 2017 18:51:02 +0000
Resent-Message-ID:
Resent-Sender: help-debbugs@gnu.org
X-GNU-PR-Message: followup 27871
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords:
Original-Received: via spool by 27871-submit@debbugs.gnu.org id=B27871.150679742219420
(code B ref 27871); Sat, 30 Sep 2017 18:51:02 +0000
Original-Received: (at 27871) by debbugs.gnu.org; 30 Sep 2017 18:50:22 +0000
Original-Received: from localhost ([127.0.0.1]:41441 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from )
id 1dyMqD-00053A-Qq
for submit@debbugs.gnu.org; Sat, 30 Sep 2017 14:50:22 -0400
Original-Received: from mail-wr0-f173.google.com ([209.85.128.173]:56514)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from ) id 1dyMqB-00052s-ON
for 27871@debbugs.gnu.org; Sat, 30 Sep 2017 14:50:20 -0400
Original-Received: by mail-wr0-f173.google.com with SMTP id r74so1487488wrb.13
for <27871@debbugs.gnu.org>; Sat, 30 Sep 2017 11:50:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=from:to:cc:subject:date:message-id:in-reply-to:references;
bh=zjI5ak+x14ewYeU+e3R3ds15Ql6Zj2BmcBjK9x5umfU=;
b=Jj/FafcabMKEuFPBm2jId83x8UvYv4yM0ARBEhZ4WBckcXFz2FMpuXo5goWj92Fgs2
hglLovlNgA9c218MEKvQWXXNOV3yEVIcD4HUkQ64MpXNvEpvxoeR+b9i0EpzX4yHC5dm
dZOS8MOWQzcqz/aRGib+T6NfJHNJQrnrmQNk6KdUKK/U3Xnd/xN7raNgwhfkOKHuErCb
XY1UFDgJDSQykN3r7839hjt1F4hfYPdySgvXYyEJneF77lip2xmRgVwljQpykXXWew2s
gBVlosMKQbpx+CSY4tMOFRLROFDdsAeNIOtlIBX1NLFvKPsoXYX8NpOwx1va0pRaa99T
1AGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
:references;
bh=zjI5ak+x14ewYeU+e3R3ds15Ql6Zj2BmcBjK9x5umfU=;
b=Ie59bcVFMOWf62Bhsh8rPmuwfdViTXQnFxzClvBgg+ZOCJ5k1/t1Awl48ah3ArGEA5
oRFuAHMVusvPp+70Ep7ZkECS6fzkY29qYGtrBTuKQfc0Q9k55u+1IwjxJYo05wmPxooZ
GJqs6Raq1rIy49lH9IT8VLu4z5boBae/Oqao6aSMOC4tCE62jFQBny2truiCoKuOtefl
lQLCH+RkpgmLoLJ/fKu2ihgpkMzPSNptuZUeew4dO8efRi3Fiq7t7qJBDn+fq710zSkk
rY46T27qGw5RCsMEQe8CJYNUETgcdXlEv0c2ofrIZ41bWgOCFYwRqQ1BtlXkP5m3bziy
ZDjg==
X-Gm-Message-State: AHPjjUjQVD+ND9YWn8BjzQZ4bMJa0hHaeavNbK986pwnrsRDIRfuXBbk
7xDFh9NtNdI1sZyk5jJqaac=
X-Google-Smtp-Source: AOwi7QBAa5ZmgrRJIDwhNwWXBBAv0M2rUc6+BtMGJ+aa6l2O68ppAvHhC6kM4Zrf55e5ER2cNY5Aig==
X-Received: by 10.223.163.18 with SMTP id c18mr10740877wrb.211.1506797413977;
Sat, 30 Sep 2017 11:50:13 -0700 (PDT)
Original-Received: from p.cm.cablesurf.de (46.128.198.151.dynamic.cablesurf.de.
[46.128.198.151])
by smtp.gmail.com with ESMTPSA id 6sm6883957wru.33.2017.09.30.11.50.13
(version=TLS1 cipher=AES128-SHA bits=128/128);
Sat, 30 Sep 2017 11:50:13 -0700 (PDT)
X-Google-Original-From: Philipp Stephani
X-Mailer: git-send-email 2.14.1
In-Reply-To:
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 208.118.235.43
X-BeenThere: bug-gnu-emacs@gnu.org
List-Id: "Bug reports for GNU Emacs,
the Swiss army knife of text editors"
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org
Original-Sender: "bug-gnu-emacs"
Xref: news.gmane.org gmane.emacs.bugs:137704
Archived-At:
Linux prefixes an unreachable (e.g. unmounted) current directory with
the special string "(unreachable)", cf. Bug#27871. Treat such
directories as error because they wouldn't work anyway.
* src/sysdep.c (emacs_get_current_dir_name_1): Renamed from
emacs_get_current_dir_name.
(emacs_get_current_dir_name): Check for prefix "(unreachable)".
---
src/sysdep.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/src/sysdep.c b/src/sysdep.c
index 1e6e0d011b..efc0396c93 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -220,10 +220,8 @@ init_standard_fds (void)
force_open (STDERR_FILENO, O_RDONLY);
}
-/* Return the current working directory. The result should be freed
- with 'free'. Return NULL on errors. */
-char *
-emacs_get_current_dir_name (void)
+static char *
+emacs_get_current_dir_name_1 (void)
{
# if HAVE_GET_CURRENT_DIR_NAME && !BROKEN_GET_CURRENT_DIR_NAME
# ifdef HYBRID_MALLOC
@@ -283,6 +281,27 @@ emacs_get_current_dir_name (void)
return buf;
}
+/* Return the current working directory. The result should be freed
+ with 'free'. Return NULL on errors. */
+char *
+emacs_get_current_dir_name (void)
+{
+ char *dir = emacs_get_current_dir_name_1 ();
+ if (dir == NULL)
+ return NULL;
+ /* On Linux, getcwd and get_current_dir_name return a string
+ starting with "(unreachable)" if the current directory doesn't
+ exist, e.g. because it was unmounted. Treat that as an error.
+ See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27871. */
+ if (!file_name_absolute_p (dir))
+ {
+ free (dir);
+ errno = ENOTCONN;
+ return NULL;
+ }
+ return dir;
+}
+
/* Discard pending input on all input descriptors. */
--
2.14.1