bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#10257: 23.3.1 Cygwin: network drives - file is write protected (fals


From: Ken Brown
Subject: bug#10257: 23.3.1 Cygwin: network drives - file is write protected (false positive)
Date: Tue, 13 Dec 2011 07:18:56 -0500
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0

On 12/10/2011 4:58 AM, jaalto wrote:
On 2011-12-09 15:33, Ken Brown wrote:
|
|>Here is an example under Cygwin Emacs:
|>
|>      (file-attributes "/cygdrive/z/tmp/test-epackage.el")
|>      =>   (nil 1 4294967295.0 4294967295.0 (20194 11100) (20194 19792) (20194
|>      19792) 437 "-rwxr--r--" t (-1735557 1952988 . 8890) (30147 . 13405))
|>
|>Under Cygwin Bash shell it looks like this:
|>
|>      $ ls -la /cygdrive/z/tmp/test-epackage.el
|>      -rwxr--r-- 1 ???????? ???????? 437 Dec  9 20:02 
/cygdrive/z/tmp/test-epackage.el
|>
|
| Is there really a problem on *any* network drive, or is the issue
| that you have some particular file system on that drive for which
| Cygwin can't get reliable permission information?

See above. The permissions from Cygwin shell look correct. It's the
UID, GID that don't translate back to windows, because this not a domain.

| I would think that you should try to get help on the Cygwin list
| before talking about making emacs bypass permission checks on
| Cygwin.  I don't use network drives myself, but I know that plenty
| of people do, and the Cygwin maintainers are very accommodating in
| trying to teach Cygwin to recognize problematic file systems.
|
| And if that fails, can't you solve the problem by mounting your
| drive with the noacl option?

There are no problems under Cygwin. On Bash shell, all cp(1), mv(1)
and editors (nanoe, joe) write operations continue to work as usual.

For some reason Emacs thinks that all files are write protected.

emacs uses file-writable-p, which calls check_writable() (defined in fileio.c), which calls euidaccess(). That explains why emacs thinks the file is not writable when Cygwin can't determine the UID. It would certainly be possible to make check_writable() use a different method of determining writability on Cygwin, as it already does on MSDOS. But I still think it would be best to try to fix this in Cygwin first.

The Disk drive has been mapped with Standard Windows "Map network
drive" feature.

So why don't you ask on the Cygwin list whether access() and euidaccess() can be taught to give the "right" answer for files on such drives. Or maybe the question is simply whether Cygwin can be taught to determine the correct UID.

Ken





reply via email to

[Prev in Thread] Current Thread [Next in Thread]