Pavel Roskin wrote:
Hello!


Max Derzhak <max /at/linux.zp.ua> reported new regression in mcedit. If you type F4 on stale symlink and press Esc-Esc or F10 after it (no editting at all) mcedit creates empty file symlink points to and removes original symlink.

The problem is not related to VFS, so I'll talk in terms on libc
functions.

stat() fails, the file is opened with O_CREAT, creating the link target. If the file has not been modified, it's removed. open() resolves
symlinks, unlink() doesn't, hence the result.

I think that editing stale symlinks is insane. If stat() fails, then we
expect to create a new file. That's what O_EXCL is for. I'm applying a
patch that uses O_EXCL whenever stat() fails. Editing stale symlinks is
now impossible. I think it's reasonable.

I realize that O_EXCL may not be implemented in every VFS, but it's a
separate problem. Actually, direntry.c knows this flag, so only
filesystems with its own open() need to be changed.

Fine and elegant solution!

Thanks a lot!

--
Regards,
Andrew V. Samoilov



_______________________________________________
Mc-devel mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/mc-devel

Reply via email to