Subject: bug#8954: closed (Re: bug#8954: 23.3.50; flymake handles read-only directories badly)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 11 Apr 2012 00:24:02 +0000

Your bug report

#8954: 23.3.50; flymake handles read-only directories badly

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
8954: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8954
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#8954: 23.3.50; flymake handles read-only directories badly
From: Stefan Monnier <[email-masked]>
To: Reuben Thomas <[email-masked]>
Cc: [email-masked]
Date: Tue, 10 Apr 2012 20:22:20 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> If I open a system include file, and have flymake-mode in my
> c-mode-hook, I get:

> Note: file is write protected
> flymake-save-buffer-in-file: Opening output file: permission denied, /usr/include/regex_flymake.h

> and (the actual bug) the buffer displayed is not regex.h

I've installed the patch below which should fix the worst part of
this bug.

        Stefan

=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog	2012-04-10 23:34:25 +0000
+++ lisp/ChangeLog	2012-04-11 00:20:36 +0000
@@ -1,3 +1,7 @@
+2012-04-11  Stefan Monnier  <[email-masked]>
+
+	* progmodes/flymake.el (flymake-mode): Beware read-only dirs (bug#8954).
+
 2012-04-10  Sébastien Gross  <[email-masked]>  (tiny change)
 
 	* progmodes/hideshow.el (hs-hide-all): Don't infloop on comments

=== modified file 'lisp/progmodes/flymake.el'
--- lisp/progmodes/flymake.el	2012-02-08 02:12:24 +0000
+++ lisp/progmodes/flymake.el	2012-04-10 23:06:08 +0000
@@ -1356,8 +1356,12 @@
       (setq flymake-timer
             (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
 
-      (when flymake-start-syntax-check-on-find-file
-        (flymake-start-syntax-check)))))
+      (when (and flymake-start-syntax-check-on-find-file
+                 ;; Since we write temp files in current dir, there's no point
+                 ;; trying if the directory is read-only (bug#8954).
+                 (file-writable-p (file-name-directory buffer-file-name)))
+        (with-demoted-errors
+          (flymake-start-syntax-check))))))
 
    ;; Turning the mode OFF.
    (t

Subject: 23.3.50; flymake handles read-only directories badly
From: Reuben Thomas <[email-masked]>
To: [email-masked]
Date: Tue, 28 Jun 2011 22:43:15 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

If I open a system include file, and have flymake-mode in my
c-mode-hook, I get:

Note: file is write protected
flymake-save-buffer-in-file: Opening output file: permission denied, /usr/include/regex_flymake.h

and (the actual bug) the buffer displayed is not regex.h

Maybe flymake should use temporary directories under /tmp to create its
temporary copies of files in non-user-writable directories?

In GNU Emacs 23.3.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.4)
 of 2011-06-16 on skwd
Windowing system distributor `The X.Org Foundation', version 11.0.11001000
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: en_GB.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lua

Minor modes in effect:
  shell-dirtrack-mode: t
  flyspell-mode: t
  recentf-mode: t
  show-paren-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  iswitchb-mode: t
  icomplete-mode: t
  global-whitespace-mode: t
  global-auto-revert-mode: t
  desktop-save-mode: t
  nxhtml-menu-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
e s k t o p SPC i s SPC n o t SPC s a v e d ; SPC i 
n SPC p a r t i c u l a r , SPC i t ' s SPC n o t SPC 
a u t o - s a v e d SPC ( I S-SPC h a v e SPC c o d 
e d SPC <backspace> <backspace> SPC t o SPC s a v e 
SPC i n t <backspace> <backspace> <backspace> t h e 
SPC d e s k t o p SPC i n SPC m y SPC a u t o C-h C-g 
C-c C-g C-x 5 2 <switch-frame> C-x C-f ~ / . e m a 
c s . C-x C-d C-f C-g C-x C-f <M-backspace> <M-backspace> 
<M-backspace> <M-backspace> <M-backspace> <M-backspace> 
<M-backspace> <M-backspace> <backspace> ~ / . e m a 
c s . d / <tab> <tab> v a <tab> <return> M-x g C-g 
C-s C-a C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n <switch-frame> - s a v 
e - h o o k ) . M-q C-x # C-g C-x C-c C-g C-c C-c n 
y e s <return> <help-echo> <help-echo> <help-echo> 
C-] <switch-frame> C-] C-] C-] C-x d <up> <up> <up> 
<up> <return> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> C-x 1 <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> C 
<up> <up> <up> <up> <return> y <help-echo> <help-echo> 
d x y e s <return> q C-x k <return> <switch-frame> 
<help-echo> C-x 5 0 M-x r e p o r t - m a <backspace> 
<backspace> e m a c s - b u g <return>

Recent messages:
Trying passive mode...on
Doing CD...done
Listing /ftp.aldisc.com:/sites/default/files/...done
Overwrite `/ftp.aldisc.com:/sites/default/files/banner-graphic.jpg'? [Type yn!q or C-h] 
Overwrite `/ftp.aldisc.com:/sites/default/files/banner-graphic.jpg'? [Type yn!q or C-h] y
Copying /home/rrt/Downloads/banner-graphic.jpg to /ftp.aldisc.com:/sites/default/files/...done
Copy: 1 of 1
Copy: 1 file
1 of 1 deletions
1 deletion done

Load-path shadows:
/home/rrt/local/share/emacs/nxhtml/util/rnc-mode hides /usr/share/emacs-snapshot/site-lisp/rnc-mode/rnc-mode
/home/rrt/local/share/emacs/nxhtml/related/php-mode hides /home/rrt/local/share/emacs/site-lisp/php-mode
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/local/share/emacs/23.3.50/site-lisp/dictionary-el/dictionary-init
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/local/share/emacs/23.3.50/site-lisp/dictionary-el/dictionary
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/local/share/emacs/23.3.50/site-lisp/dictionary-el/link
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/local/share/emacs/23.3.50/site-lisp/dictionary-el/connection
/home/rrt/local/share/emacs/site-lisp/graphviz-dot-mode hides /usr/local/share/emacs/23.3.50/site-lisp/emacs-goodies-el/graphviz-dot-mode
/home/rrt/local/share/emacs/site-lisp/dict hides /usr/local/share/emacs/23.3.50/site-lisp/emacs-goodies-el/dict
/usr/share/emacs-snapshot/site-lisp/ruby1.8-elisp/ruby-mode hides /usr/local/share/emacs/23.3.50/lisp/progmodes/ruby-mode
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-style hides /usr/share/emacs/site-lisp/auctex/tex-style
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-mik hides /usr/share/emacs/site-lisp/auctex/tex-mik
/usr/local/share/emacs/23.3.50/site-lisp/auctex/multi-prompt hides /usr/share/emacs/site-lisp/auctex/multi-prompt
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-jp hides /usr/share/emacs/site-lisp/auctex/tex-jp
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-info hides /usr/share/emacs/site-lisp/auctex/tex-info
/usr/local/share/emacs/23.3.50/site-lisp/auctex/latex hides /usr/share/emacs/site-lisp/auctex/latex
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex hides /usr/share/emacs/site-lisp/auctex/tex
/usr/local/share/emacs/23.3.50/site-lisp/auctex/texmathp hides /usr/share/emacs/site-lisp/auctex/texmathp
/usr/local/share/emacs/23.3.50/site-lisp/auctex/context-nl hides /usr/share/emacs/site-lisp/auctex/context-nl
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-font hides /usr/share/emacs/site-lisp/auctex/tex-font
/usr/local/share/emacs/23.3.50/site-lisp/auctex/toolbar-x hides /usr/share/emacs/site-lisp/auctex/toolbar-x
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-buf hides /usr/share/emacs/site-lisp/auctex/tex-buf
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-fptex hides /usr/share/emacs/site-lisp/auctex/tex-fptex
/usr/local/share/emacs/23.3.50/site-lisp/auctex/bib-cite hides /usr/share/emacs/site-lisp/auctex/bib-cite
/usr/local/share/emacs/23.3.50/site-lisp/auctex/context-en hides /usr/share/emacs/site-lisp/auctex/context-en
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-fold hides /usr/share/emacs/site-lisp/auctex/tex-fold
/usr/local/share/emacs/23.3.50/site-lisp/auctex/tex-bar hides /usr/share/emacs/site-lisp/auctex/tex-bar
/usr/local/share/emacs/23.3.50/site-lisp/auctex/context hides /usr/share/emacs/site-lisp/auctex/context
/usr/local/share/emacs/23.3.50/site-lisp/auctex/font-latex hides /usr/share/emacs/site-lisp/auctex/font-latex

Features:
(gnus-msg gnus-art mm-uu mml2015 epg-config mm-view smime dig gnus-sum
nnoo gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec
gnus-int gnus-range gnus-win gnus gnus-ems shadow sort mail-extr message
sendmail ecomplete rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev
nnheader mm-util mail-prsvr gmm-utils mailheader canlock sha1 hex-util
hashcash mail-utils emacsbug multi-isearch css-mode help-mode view
conf-mode newcomment ange-ftp tramp-imap tramp-gw tramp-fish tramp-smb
tramp-cache tramp-ftp tramp-cmds tramp auth-source gnus-util netrc
time-date shell password-cache format-spec tramp-compat trampver
dired-aux dired inform-mode make-mode vc-git face-remap filladapt
flyspell completing-help recentf tree-widget wid-edit uniquify paren
savehist minibuf-eldef iswitchb icomplete whitespace autorevert time
desktop as-external wrap-to-fill cus-start cus-load server
nxhtml-autostart nxhtml-autoload moz majmodpri rnc-mode nxhtml-menu
web-autoload nxhtml-base php-mode etags cc-langs cc-mode cc-fonts
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs speedbar
sb-image ezimage dframe lua-mode regexp-opt ropemacs pymacs ffap ispell
flymake compile comint ring smart-quotes auto-dictionary-autoloads
c-eldoc-autoloads dictionary-autoloads diff-git-autoloads
dired-isearch-autoloads full-ack-autoloads guess-style-autoloads
kill-ring-search-autoloads magit-autoloads mv-shell-autoloads
tumble-autoloads http-post-simple-autoloads package reporter advice
advice-preload yasnippet help-fns derived edmacro kmacro easymenu assoc
cl cl-19 muse-autoloads emacs-goodies-el emacs-goodies-custom
emacs-goodies-loaddefs easy-mmode preview-latex tex-site auto-loads
tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
font-setting tool-bar dnd fontset image fringe lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind system-font-setting
font-render-setting gtk x-toolkit x multi-tty emacs)

-- 
http://rrt.sc3d.org/