[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:1760]Meadow 1.13 Beta 1 (TANAHASHI:61) release.



file-writable-p<f> の修正の件ですが、これってまだpatch 送ってませんよね?

directory に対する振舞には明確な決着は望めそうもないことが見えたし、いつ
までもほっといてもいいこと無いので、現状にふさわしいパッチとして himi さ
んのpatch を送るということにしませんか?

『現状にふさわしい』とする理由は以下の通り

  * elisp manual ではdirectory に対する挙動を規定していない
    => directory に対する操作は想定していないと解釈

  * Ffile_writable_p() のcode をみてもdirectory に対する操作の場合の
    考慮は読みとれない。
    => directory に対する操作は想定していないと解釈

  * directory に対して行なった場合の挙動は、permission を返すという点で
    現状の UNIX のemacs と挙動が類似となる。

特に異論がなければ添付の文面で送ろうかと思いますがいかが?

# 送り先は bug-gnu-emacs@xxxxxxx 宛がいいのかな?

## ChangeLog も書いてはおいたけど、このパッチはhimi さんのなんだよね。
## himi さんの名前にしたいところ。。。どぉ?  (^^;

--- Regards,
 Shun-ichi Goto  <gotoh@xxxxxxxxxxx>
   R&D Group, TAIYO Corp., Tokyo, JAPAN


Hi, I found a bug about file-writeable-p<f> function on Emacs 20.6 on
Win32 system.

There's patch attached.


Symptom
=======

In NT Emacs 20.6, elisp function file-writable-p<f> returns t although
directory path of specified FILENAME is not exist.

For example, (file-writable-p "/no-such-dir/new-file.txt") always 
return t.


Reason
======

Modifications of fileio.c in 2000-02-23 (only for WINDOWSNT defined) is
for writability of files in read-only directory on the Windows
environment.  However, as side effect, this modification discarded also
checking existance of parent directory. As result, file-writable-p() for
file in non-existant directory returns t.


Patch
=====

Patch is attached in this mail.

ChangeLog
2000-04-17  Shun-ichi Goto  <gotoh@xxxxxxxxxxx>
	* fileio.c (Ffile_writable_p) [WINDOWSNT]: Check existance of 
	parent directory of specified file.


Test Result
===========

For example, in following situation:
  * /temp        directory, rw permission
  * /temp/rwdir  directory, rw permission (have two files)
  * /temp/rodir  directory, ro permission (have two files)
  * /temp/rwdir/rw.c  file, rw permittion
  * /temp/rwdir/ro.c  file, ro permittion
  * /temp/rodir/rw.c  file, rw permittion
  * /temp/rodir/ro.c  file, ro permittion

This is test result with original Emacs 20.6 (for NT) and patched one
on Windows 2000.

                                     original  patched
(file-exists-p "/xxx")                 nil      nil   
(file-writable-p "/xxx/a.c")           t        nil    <--- here!
(file-writable-p "/temp/rwdir/rw.c")   t        t
(file-writable-p "/temp/rwdir/ro.c")   nil	nil
(file-writable-p "/temp/rwdir/new.c")  t	t
(file-writable-p "/temp/rodir/rw.c")   t	t
(file-writable-p "/temp/rodir/ro.c")   nil	nil
(file-writable-p "/temp/rodir/new.c")  t	t



--- Regards,
 Shun-ichi Goto  <gotoh@xxxxxxxxxxx>
   R&D Group, TAIYO Corp., Tokyo, JAPAN