From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: [PATCH 1/2] dmd: Use ~/.dmd.d/ by default when not run as root. Date: Tue, 04 Feb 2014 21:34:19 +0100 Message-ID: <87d2j2d3ck.fsf@gnu.org> References: <1391449065-19063-1-git-send-email-alex.sassmannshausen@gmail.com> <1391449065-19063-2-git-send-email-alex.sassmannshausen@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33460) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAmmI-00030D-VA for guix-devel@gnu.org; Tue, 04 Feb 2014 15:39:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WAmmB-0008Lx-ME for guix-devel@gnu.org; Tue, 04 Feb 2014 15:39:30 -0500 Received: from hera.aquilenet.fr ([141.255.128.1]:56854) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAmmB-0008LY-FH for guix-devel@gnu.org; Tue, 04 Feb 2014 15:39:23 -0500 In-Reply-To: <1391449065-19063-2-git-send-email-alex.sassmannshausen@gmail.com> (Alex Sassmannshausen's message of "Mon, 3 Feb 2014 18:37:44 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Alex Sassmannshausen Cc: guix-devel@gnu.org Alex Sassmannshausen skribis: > * modules/dmd/support.scm: Add copyright. > (user-dmddir): New variable. > (default-logfile): Use it instead of user-homedir. > (default-persistency-state-file): Use it instead of user-homedir. > (default-configfile): Use it instead of user-homedir, use init.scm > as default name for configfile, ensure .dmd.d exists. > (default-socket-dir): Add check for root, if #f, use user-dmddir as > base for socket. Applied, thanks! > ;; Configuration file. > (define default-config-file > (if (zero? (getuid)) > (string-append Prefix-dir "/etc/dmdconf.scm") > - (string-append user-homedir "/.dmdconf.scm"))) > + (begin > + (let ((config-file (string-append user-dmddir "/init.scm"))) > + (cond ((not (file-exists? user-dmddir)) > + (mkdir user-dmddir) > + config-file) > + (else config-file)))))) The file-exists?/mkdir pattern above introduces a TOCTTOU problem: when running =E2=80=98make check -j=E2=80=99 the first time, one of the tests fa= iled because =E2=80=98mkdir=E2=80=99 failed with EEXIST. So I changed it to (catch-system-error (mkdir user-dmddir)). Ludo=E2=80=99.