Hi Cygwin friends and users,
I released a new Cygwin TEST version 2.5.0-0.3. Apart from a few bugfixes, this new test release introduces a pthread barrier implementation, courtesy of Václav Haisman. It exports the following new functions: - pthread_barrierattr_init, pthread_barrierattr_setpshared, pthread_barrierattr_getpshared, pthread_barrierattr_destroy, pthread_barrier_init, pthread_barrier_destroy, pthread_barrier_wait The other big things are the introduction of a change to chmod, as well as the introduction of the POSIX.1e ACL API: - Usually POSIX.1e requires that chmod does not change the group permissions but the MASK permissions if additional user and group entries are present. This may result in a confusing behaviour: $ getfacl -c foo user::rwx group::r-- group:blah:r-- mask::r-- other::r-- So the primary group only has read perms. Now let's see what happens when calling `chmod g+w': $ ls -l foo -rwxr--r--+ [...] foo $ chmod g+w foo $ ls -l foo -rwxrw-r--+ [...] foo Looks good so far, but... $ getfacl -c foo user::rwx group::r-- <-- Still only read perms, no write perms group:blah:r-- mask::rw- <-- Only the mask has changed other::r-- So chmod g+w does NOT result in the primary group getting write permissions if it doesn't already have them. This is one of the more puzzling aspects of POSIX.1e. The chmod change in 2.5.0 now handles default Windows ACL with entries only for the owner, the group, other, SYSTEM and the Administrators group as if it's a standard POSIX ACL. That is, chmod will not only influence the POSIX MASK entry, but also the owning group entry. The result should be more along the lines of Windows user expectations when calling chmod. Note that this is restricted to *only* the ACLs described above. Any other group present in the ACL will switch chmod back to the POSIX.1e behaviour. - The full set of POSIX.1e functions is now available. - Most of the libacl extensions are available as well. The only exceptions right now are the two functions perm_copy_file and perm_copy_fd. These can be added later. Somebody just has to do it :) - The <sys/acl.h> header now *only* exposes the POSIX.1e API. - To get access to the Solaris API, you will have to include <cygwin/acl.h> now. - There's a new header <acl/libacl.h> which exposes the libacl extension functions. - Fix potential hang when using LoadLibraryEx(LOAD_LIBRARY_SEARCH_SYSTEM32). Reported and tested via IRC. - Fix a bug in ACL handling which might result in a spurious extra entry for the primary group. Self-observed. - printf(3): Handle multibyte decimal point in field size computation. Addresses: https://cygwin.com/ml/cygwin/2016-02/msg00014.html - cygwin_conv_path: Always preserve trailing backslashes in conversion to POSIX paths. Addresses: https://cygwin.com/ml/cygwin/2016-01/msg00480.html Have fun, Corinna (*) http://wt.tuxomania.net/publications/posix.1e/ -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat