all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: Carlo Zancanaro <carlo@zancanaro.id.au>
Cc: 66387-done@debbugs.gnu.org, Andrew Tropin <andrew@trop.in>,
	paren@disroot.org
Subject: bug#66387: [PATCH] home: services: Fix race condition when detecting first login
Date: Thu, 19 Oct 2023 22:29:34 +0200	[thread overview]
Message-ID: <87v8b2xsnl.fsf@gnu.org> (raw)
In-Reply-To: <dd990558758d8bec9b4074f126c464e2f8a8ae6f.1697025388.git.carlo@zancanaro.id.au> (Carlo Zancanaro's message of "Wed, 11 Oct 2023 22:57:19 +1100")

[-- Attachment #1: Type: text/plain, Size: 344 bytes --]

Hi Carlo,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> * gnu/home/services.scm (compute-on-first-login-script): Use open to
> atomically check whether a file exists and create it if not.

Good catch!

I made the following cosmetic changes (‘open-fdes’ is cheaper than
‘open’) and applied it.

Thanks!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 966 bytes --]

diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index 7137925b30..651c068f79 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -414,15 +414,15 @@ (define (compute-on-first-login-script _ gexps)
          (use-modules (guix i18n)
                       (guix diagnostics))
 
-       (define (claim-first-run file-name)
+       (define (claim-first-run file)
          (catch #t
            (lambda ()
-             ;; This incantation will raise an error if the file at
-             ;; flag-file-path already exists, and will create it otherwise.
-             (close (open file-name (logior O_CREAT O_EXCL)))
+             ;; This incantation raises an error if FILE already exists, and
+             ;; creates it otherwise.
+             (close-fdes
+              (open-fdes file (logior O_CREAT O_EXCL O_CLOEXEC)))
              #t)
-           (lambda _
-             #f)))
+           (const #f)))
 
        #$%initialize-gettext
 

  reply	other threads:[~2023-10-19 20:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-07 11:59 [bug#66387] [PATCH] home: services: Fix race condition when detecting first login Carlo Zancanaro
2023-10-09 13:08 ` Carlo Zancanaro
2023-10-11 11:57   ` Carlo Zancanaro
2023-10-19 20:29     ` Ludovic Courtès [this message]
2023-10-20  6:55       ` Andrew Tropin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v8b2xsnl.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=66387-done@debbugs.gnu.org \
    --cc=andrew@trop.in \
    --cc=carlo@zancanaro.id.au \
    --cc=paren@disroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.