Reading /proc/registry/... returns extra char

Andrey Repin anrdaemon@freemail.ru
Sat May 29 20:44:00 GMT 2010


Greetings, Corinna Vinschen!

>> >> > $ cat >a.dat
>> >> > /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Syst
>> >> > emBootDevice
>> 
>> > This trailing NUL character was always there, already with Cygwin 1.5.
>> > It's part of the file content.  If strings are stored with a trailing
>> > NUL in a file, you don't want Cygwin to remove it for you, right?
>> 
>> Wrong. The training NULL is a string value terminator for REG_SZ variables,
>> also a string separator for REG_MULTI_SZ ones. (Which ends with a spare NULL)
>> It must not be exposed to the user.

> I disagree.  When you're using tools like regtool, you're right.  But
> when accessing the registry as *files* via the virtual /proc filesystem,
> you want the file content.

Yep. And I certainly not expect the NULL in text files. You know, not every
console program is binary-safe when working with STDIO? Not even cygwin, as we
can see in this thread.

> And the file contains the trailing NUL in REG_SZ and REG_EXPAND_SZ values,
> and multiple NULs in REG_MULTI_SZ values.

That's right and true, when you're working with interface directly, but... all
the programs I've used in the past, and all the interfaces, they do not expose
trailing NULL to the client application.
In this case, /proc/registry is an interface, but cat is the application.

> What do you suppose Cygwin should do with the NULs in REG_MULTI_SZ values?
> Just remove them?

Convert them to appropriate EOL sequences. And back to NULL's on write. As per
definition of a text as "multiple strings".
You don't need to argue over it, just document it properly :)

BTW, is there a way to create value of certain type through /proc/registry ?
(Link to documentation would be enough, I don't have local cygwin installation ATM)


--
WBR,
 Andrey Repin (anrdaemon@freemail.ru) 30.05.2010, <0:05>

Sorry for my terrible english...


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list