Mail Archives: cygwin/2008/12/02/07:08:38
On Dec 1 21:16, Christian Franke wrote:
> When dirent.d_type support is added to /proc/registry (see attachment),
> find 4.4.0-3 crashes on keys with duplicate names.
>
> Testcases:
>
> $ find-with-d_type \
> /proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ALG/ISV
>
> $ find-with-d_type \
> /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Security
>
> These keys contain a key and a value with the same name and readdir()
> returns both (with different d_type).
>
> Possible fix to avoid identical names:
>
>
> 1. Put keys and values in different namespaces, e.g.
>
> /proc/registry/path/name.key
> /proc/registry/path/name.val
>
> Drawback: Breaks backward compatibility.
>
>
> or:
>
> 2. In readdir(), record the key names in some set<> or hash-table. If (and
> only if) a duplicate name is detected, return a modified name for the
> value:
>
> /proc/registry/path/name
> /proc/registry/path/name%76 ('v')
>
> Drawback: Slows down readdir, introduces alias name for value.
Some random thoughts:
- Do we really need d_type support in the registry? How often is
that actually used?
- If find crashes in this situation, isn't this a bug in find which
should be fixed in find?
- /proc/registry is a convenience for reading the registry. Due to some
funny definitions of the registry it's not a full solution. You can't
write this way, you can't even access the "(Default)" key values.
I personally don't worry if some border cases don't work. For the
border cases and for the full access we have regtool.
Having said that, I really don't know what's the best solution for
these problems would be. None of the above ideas are very attractive.
For instance, in idea 1, the path would actually be
/proc/registry/HKEY_LOCAL_MACHINE.key/SOFTWARE.key/Cygwin.key/blub.val
Shouldn't we rather defer these border cases to regtool?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -