Fixes for miscellaneous bugs in /proc patch

Chris January chris@atomice.net
Fri May 3 07:23:00 GMT 2002


This patch superceeds "Fix for incorrect handling of open flags in
fhandler_proc".

Fixes the following bugs:
* '.' and '..' directory entries were missing.
* fhandler_*::open() were using the mode parameter as if it was the flags
parameter. This has been corrected and some minor changes made to the error
handling logic.
* Correctly indentifies the case when you try to create a new file in /proc
or one of its subdirectories.
* dup() was broken, hence cat </proc/uptime, etc. failed. This has now been
corrected.
* fhandler_registry::telldir didn't return the correct position in the
directory.
* fhandler_registry::seekdir didn't work.

Regards
Chris

2002-05-03  Christopher January <chris@atomice.net>

 * fhandler_proc.cc (fhandler_proc::open): Change use of mode to flags.
 If the file does not exist already, fail with EROFS if O_CREAT flag is
 set.
 Use cmalloc to allocate memory for filebuf.
 * fhandler_process.cc (fhandler_process::open): Ditto.
 * fhandler_registry.cc (fhandler_registry::open): Ditto.
 Move check for open for writing before open_key.
 * path.cc (path_conv::check): Do not return ENOENT if a file is not found
 in /proc.
 * fhandler_virtual.cc (fhandler_virtual::write): Change EROFS error to
 EACCES error.
 * fhandler_virtual.cc (fhandler_virtual::open): Set the NOHANDLE flag.
 * fhandler_virtual.cc (fhandler_virtual::dup): Add call to
 fhandler_base::dup.
 Allocate child's filebuf using cmalloc.
 Copy filebuf from parent to child.
 * fhandler_virtual.cc (fhandler_virtual::close): Use cfree to free filebuf.
 * fhandler_proc.cc: Add '.' and '..' to directory listing.
 * fhandler_process.cc: Ditto.
 * fhandler_registry.cc: Ditto.
 * fhandler_registry.cc (fhandler_registry::readdir): Add support for '.'
 and '..' files in subdirectories of /proc/registry.
 * fhandler_registry.cc (fhandler_registry::telldir): Use lower 16 bits
 of __d_position as position in directory.
 * fhandler_registry.cc (fhandler_registry::seekdir): Ditto.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ChangeLog2
Type: application/octet-stream
Size: 1380 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20020503/1dce93db/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: proc.patch.3
Type: application/octet-stream
Size: 16082 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20020503/1dce93db/attachment-0001.obj>


More information about the Cygwin-patches mailing list