From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Max Mikhanosha Newsgroups: gmane.emacs.bugs Subject: bug#454: file-precious-flag overwrites symlinks Date: Fri, 20 Jun 2008 13:18:28 -0400 (EDT) Message-ID: <20080620171828.4FC98F40D9C3@momoland.openchat.com> Reply-To: Max Mikhanosha , 454@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org X-Trace: ger.gmane.org 1214012926 29485 80.91.229.12 (21 Jun 2008 01:48:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 21 Jun 2008 01:48:46 +0000 (UTC) To: bug-gnu-emacs@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 21 03:49:31 2008 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1K9sEL-0007Vk-Q6 for geb-bug-gnu-emacs@m.gmane.org; Sat, 21 Jun 2008 03:49:30 +0200 Original-Received: from localhost ([127.0.0.1]:49966 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K9sDW-0004Uo-UM for geb-bug-gnu-emacs@m.gmane.org; Fri, 20 Jun 2008 21:48:38 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K9l0z-0003Tw-0j for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 14:07:13 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K9l0y-0003TJ-C2 for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 14:07:12 -0400 Original-Received: from [199.232.76.173] (port=55204 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K9l0y-0003T3-8B for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 14:07:12 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:37766) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K9l0y-0004Tf-0g for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 14:07:12 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id m5KI79gw003328; Fri, 20 Jun 2008 11:07:09 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id m5KI03DW032732; Fri, 20 Jun 2008 11:00:03 -0700 X-Loop: don@donarmstrong.com Resent-From: Max Mikhanosha Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Fri, 20 Jun 2008 18:00:03 +0000 Resent-Message-ID: Resent-Sender: don@donarmstrong.com X-Emacs-PR-Message: report 454 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.121398425931510 (code B ref -1); Fri, 20 Jun 2008 18:00:03 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 20 Jun 2008 17:50:59 +0000 Original-Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id m5KHoseh031504 for ; Fri, 20 Jun 2008 10:50:56 -0700 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K9klC-0000kc-DF for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 13:50:54 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K9klC-0000k7-1S for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 13:50:54 -0400 Original-Received: from [199.232.76.173] (port=49490 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K9klB-0000jg-HU for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 13:50:53 -0400 Original-Received: from p84-72.acedsl.com ([66.114.84.72]:27399 helo=momoland.openchat.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1K9klA-0003Ny-85 for bug-gnu-emacs@gnu.org; Fri, 20 Jun 2008 13:50:52 -0400 Original-Received: by momoland.openchat.com (Postfix, from userid 1000) id 4FC98F40D9C3; Fri, 20 Jun 2008 13:18:28 -0400 (EDT) X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 3) X-Greylist: delayed 1942 seconds by postgrey-1.27 at monty-python; Fri, 20 Jun 2008 13:50:51 EDT X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 3) Resent-Date: Fri, 20 Jun 2008 14:07:12 -0400 X-Mailman-Approved-At: Fri, 20 Jun 2008 21:47:55 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:18471 Archived-At: I keep my .emacs file under version control as part of overall collection of config files, and as result ~/.emacs is a symbolic link. `backup-by-copying-when-linked' is set to t, so visiting ~/.emacs and then editing and saving it correctly saves the file that symlink is pointing too. For a long time I was trying to track down why sometimes, my ~/.emacs symbolic link is suddenly overwritten by the actual file. Finally found that this happens when one uses "Save for future session" in customize package, and farther tracked it down to a behavior of `basic-save-buffer-2' when file-precious-flag is set. Test case: -rw-r--r-- 1 max users 4 Jun 20 12:57 file lrwxrwxrwx 1 max users 4 Jun 20 12:58 link -> file backup-by-copying-when-linked => t file-precious-flag => nil Visit "link" edit and save -rw-r--r-- 1 max users 14 Jun 20 12:59 file lrwxrwxrwx 1 max users 4 Jun 20 12:58 link -> file Everything fine.. backup-by-copying-when-linked => t file-precious-flag => t Visit "link" edit and save -rw-r--r-- 1 max users 14 Jun 20 12:59 file -rw-r--r-- 1 max users 24 Jun 20 13:00 link Overwrites symlink The offending code in basic-save-buffer-2 is: ;; We succeeded in writing the temp file ;; so rename it. (rename-file tempname buffer-file-name t)) Above should refer to buffer-file-truename IMHO. The documentation for file-precious-flag mentiones that it will break hardlinks, but does not mention that it will break symlinks. If this behavour is not a bug, then maybe its a bug for custom-save-all to set file-precious-flag, causing an suprise to the user as to why ~/.emacs symlink is getting overwritten. In GNU Emacs 22.2.1 (x86_64-suse-linux-gnu, GTK+ Version 2.10.6) of 2008-04-09 on momoland configured using `configure '--with-gcc' '--with-pop' '--without-hesiod' '--with-kerberos' '--with-kerberos5' '--with-leim' '--with-xim' '--with-system-malloc' '--prefix=/usr' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--with-x' '--with-sound' '--with-xpm' '--with-jpeg' '--with-tiff' '--with-gif' '--with-png' '--with-x-toolkit=gtk' '--x-includes=/usr/include' '--x-libraries=/usr/lib64:/usr/share/X11' '--build=x86_64-suse-linux-gnu' 'build_alias=x86_64-suse-linux-gnu' 'CC=gcc' 'CFLAGS=-O2 -g -fmessage-length=0 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -std=gnu89 -pipe -fno-strict-aliasing -Wno-pointer-sign -Wno-unused-variable -Wno-unused-label -DSYSTEM_PURESIZE_EXTRA=55000 -DSITELOAD_PURESIZE_EXTRA=10000 ' 'L DFLAGS='' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: C locale-coding-system: nil default-enable-multibyte-characters: t Major mode: Fundamental Minor modes in effect: mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t unify-8859-on-encoding-mode: t utf-translate-cjk-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: C-x C-f C-g i i C-x C-f C-g C-x C-b * C-x o ESC O B RET ( s e t q SPC f i l e DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL M-x - s e DEL DEL DEL s e t - v a r i TAB RET b a c k u p - b y - c o p TAB - TAB l TAB RET t RET C-x C-f l i n k RET o l a l DEL DEL DEL ESC [ 4 ~ ESC [ 4 ~ ESC O B b DEL s o m e SPC t e x t C-x C-x M-x s a v e - b u f DEL DEL DEL DEL TAB - b u f f e r RET M-x s e t - v a r i a b l e RET f i l e - p r e TAB RET t RET RET m o r e SPC t e x t M-x M-p M-p RET C-x b TAB ESC O B ESC O B M-x s u b m i t - b u TAB DEL DEL DEL DEL DEL DEL DEL DEL DEL r e p o r t - e m TAB RET Recent messages: exchange-point-and-mark: No mark set in this buffer Making completion list... Wrote /home/max/link [2 times] Making completion list... next-history-element: End of history; no next item Quit Loading emacsbug... Loading regexp-opt...done Loading emacsbug...done call-interactively: Text is read-only