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