From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Newsgroups: gmane.emacs.devel Subject: Re: Rename, delete and move current buffer and file Date: Fri, 11 May 2018 12:06:17 -0400 Message-ID: References: <878t8q6434.fsf@linux-m68k.org> <069aa767-6d25-c281-6edd-bd45a522ae30@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1526054672 17991 195.159.176.226 (11 May 2018 16:04:32 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 11 May 2018 16:04:32 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri May 11 18:04:28 2018 Return-path: Envelope-to: ged-emacs-devel@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 1fHAWv-0004V7-Hp for ged-emacs-devel@m.gmane.org; Fri, 11 May 2018 18:04:25 +0200 Original-Received: from localhost ([::1]:53937 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fHAZ2-0000Y0-M0 for ged-emacs-devel@m.gmane.org; Fri, 11 May 2018 12:06:36 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56916) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fHAYq-0000V9-Gf for emacs-devel@gnu.org; Fri, 11 May 2018 12:06:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fHAYn-0001b2-7i for emacs-devel@gnu.org; Fri, 11 May 2018 12:06:24 -0400 Original-Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]:34174) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fHAYn-0001aN-2Y for emacs-devel@gnu.org; Fri, 11 May 2018 12:06:21 -0400 Original-Received: by mail-qk0-x230.google.com with SMTP id p186-v6so4766965qkd.1 for ; Fri, 11 May 2018 09:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=G+w3Fq4JEt+onvR9ESy5wbplGS3xlQ+/vj2tlxD5Q+0=; b=REIeC4batleILkxMa4t+ySixPyHSnE0mmF+bmXkPM78TD08jjW3VjaMjgjZY+W+JOb E1FoOL8gVXl5L4MQ7YBD311M6dCzCyp2r3elqEZK5zbykjMqMSGbgf8Ib4D9fenNlYwR R89qutFHU/eEWC8biVK24lFDSZwtdNhAQa2b5pfJe5oGGyBbvponboyJJ8/2ylg2V6Go cKm421t48O/41akf1vfrjH0mKkYNc+C/g8+rugBN/2nIONT13zn7YEFTYXXEU42ZXDh1 gq7U44id8OBWK7gPqdXpU90rXt40ayYiVPoitYN55j9cnG6I2h9Qy1/x+P7U2eTGiVT2 MuOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=G+w3Fq4JEt+onvR9ESy5wbplGS3xlQ+/vj2tlxD5Q+0=; b=PxDXC9kmh+sewvzn/6zFJH9Z32N9PWSVSLlDLOG3OA3vyogZ3yxAHXDOVX4E/4aRbi iHqzZWsSScIcnuB262vsyF3dkbwHSY697t2jSs967gbbTufwCJ3oIl0CjI5JGesU+JmW a+J9VTPJL+yeWIXxUJVzAAJe/IzJo52zWNXgwuZfSvYX+1x0eh99vZ+mEVRKLueUOkEj xorH2VfN/IvwT7O3ag2Hi8AbmOv6TFU/2CQfCm0jdouyZp/pVtVSG/M0u2eI6dv1BQqh NPEn40R2VWiPTjRxBH6PPXRT0K7P3vwGqmDxbWAHk8IItyHuIwpqRvLWkN/PWr0AArEo rWEQ== X-Gm-Message-State: ALKqPwcwsvTs8YsAJD5NBVMyKyj4vxmlVNVLwKbtAaGnYKBzAn5a09CJ 2Ykpnir6/4PtC+Sskmbt+AGIhKgc X-Google-Smtp-Source: AB8JxZreVhswA+DKfKBPBS7SqmfUJSFKWN6E1bYgyGHr1El3wwwHWLeEsS4mIDoemIl27qhYr60BuA== X-Received: by 2002:a37:d704:: with SMTP id m4-v6mr5267580qki.175.1526054779015; Fri, 11 May 2018 09:06:19 -0700 (PDT) Original-Received: from [18.26.2.123] (26-2-123.dynamic.csail.mit.edu. [18.26.2.123]) by smtp.gmail.com with ESMTPSA id t90-v6sm2598895qtd.64.2018.05.11.09.06.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 May 2018 09:06:18 -0700 (PDT) In-Reply-To: <069aa767-6d25-c281-6edd-bd45a522ae30@cs.ucla.edu> Content-Language: en-GB X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:225241 Archived-At: On 2018-05-11 11:45, Paul Eggert wrote: > On 05/11/2018 08:33 AM, Stefan Monnier wrote: >>> That method has been obsolete for decades. POSIX requires rename >>> to be atomic. >> Even when moving from one directory to another? > > Yes, that requirement has been in POSIX ever since POSIX was > introduced; I just now checked my printed copy of IEEE Std > 1003.1-1988. I don't know much about this, so sorry if the following is silly. Hopefully someone can clarify. The glibc implementation of rename in glibc/sysdeps/posix/rename.c is this: /* Rename the file OLD to NEW. */ int rename (const char *old, const char *new) { int save = errno; if (__link (old, new) < 0) { if (errno == EEXIST) { __set_errno (save); /* Race condition, required for 1003.1 conformance. */ if (__unlink (new) < 0 || __link (old, new) < 0) return -1; } else return -1; } if (__unlink (old) < 0) { save = errno; if (__unlink (new) == 0) __set_errno (save); return -1; } return 0; } Is this just a fallback implementation (the "obsolete for decades" method that Andreas referred to?), unused on most platforms? Thanks! Clément.