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.


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

Reply via email to