cygwin 3.5.6-1

Christian Franke Christian.Franke@t-online.de
Mon Jan 27 15:18:07 GMT 2025


Corinna Vinschen via Cygwin wrote:
> On Jan 27 08:12, Christian Franke via Cygwin wrote:
>> Corinna Vinschen via Cygwin-announce wrote:
>>> The following packages have been uploaded to the Cygwin distribution:
>>>
>>> * cygwin-3.5.6-1
>>> * cygwin-devel-3.5.6-1
>>> * cygwin-doc-3.5.6-1
>>>
>>> Fixes:
>>> ------
>>>
>>> ...
>>>
>>> - Fix mq_unlink().
>>>     Addresses: https://cygwin.com/pipermail/cygwin/2025-January/257119.html
>> Now mq_unlink("/queue") and unlink("/dev/mqueue/queue") work, thanks!
>>
>> But there is a regression:
>> stat() now returns st_mode = 0 for the queue file which results in an
>> invalid S_IFMT field:
>>
>> $ uname -r
>> 3.5.6-1.x86_64
>>
>> $ stat --printf '0x%04f/%A %n (%F)\n' /dev/mqueue /dev/mqueue/mqtest
>> 0x43ff/drwxrwxrwt /dev/mqueue (directory)
>> 0x0000/?--------- /dev/mqueue/mqtest (weird file)
>>
>> $ rm -iv /dev/mqueue/mqtest
>> rm: remove write-protected weird file '/dev/mqueue/mqtest'? y
>> removed '/dev/mqueue/mqtest'
>>
>>
>> Previous:
>>
>> $ uname -r
>> 3.5.5-1.x86_64
>>
>> $ stat --printf '0x%04f/%A %n (%F)\n' /dev/mqueue /dev/mqueue/mqtest
>> 0x43ff/drwxrwxrwt /dev/mqueue (directory)
>> 0x8180/-rw------- /dev/mqueue/mqtest (regular file)
>>
>> $ rm -iv /dev/mqueue/mqtest
>> rm: remove regular file '/dev/mqueue/mqtest'? y
>> rm: cannot remove '/dev/mqueue/mqtest': Operation not permitted
> Oh well, I just pushed a patch to patch that patch.  I made Cygwin treat
> message queues as devices, but that was apparently over the top.  I
> reverted this to being treated as files again and just made sure the
> check for being "anything with a representation on disk" is positive.
> That in turn convinces unlink() to try removing them.
>
> Please test cygwin-3.6.0-0.345.gb940faa144ca, which should be up in
> an hour or so.
>

Looks good:

$ uname -r
3.6.0-0.345.gb940faa144ca.x86_64

$ rm -iv /dev/mqueue/mqtest
rm: cannot remove '/dev/mqueue/mqtest': No such file or directory

$ touch /dev/mqueue/mqtest

$ stat --printf '0x%04f/%A %n (%F)\n' /dev/mqueue /dev/mqueue/mqtest
0x43ff/drwxrwxrwt /dev/mqueue (directory)
0x81a4/-rw-r--r-- /dev/mqueue/mqtest (regular file)

$ cat /dev/mqueue/mqtest
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0

$ rm -iv /dev/mqueue/mqtest
rm: remove regular file '/dev/mqueue/mqtest'? y
removed '/dev/mqueue/mqtest'

Same behavior as on Linux.



More information about the Cygwin mailing list