From owner-freebsd-standards@freebsd.org Mon Jan 25 19:42:31 2021 Return-Path: Delivered-To: freebsd-standards@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 05AA34EECF5 for ; Mon, 25 Jan 2021 19:42:31 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: from mailrelay119.isp.belgacom.be (mailrelay119.isp.belgacom.be [195.238.20.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "relay.skynet.be", Issuer "GlobalSign RSA OV SSL CA 2018" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DPgHp2l6kz3CMZ; Mon, 25 Jan 2021 19:42:30 +0000 (UTC) (envelope-from tijl@freebsd.org) IronPort-SDR: HJxCkdaPAbk7ttScb409ZcV1l/jbZwGUkFvFhlO4cdc2gEuHCcWptxVmcVPWOg1vbV+x5teuIE Fo97Qm+Htnc6lAL/05tN2TP8ib9mLoKDAx7Fkj4Zgno2nqzU/JOuAbN1fPx17+gxEKOFXj0/Pi BH+ShxFPtvNUf0l+CuV4NeA7wgdUx5IjcatazaMaVipBllLjTi1Z/AvOse4ih2NOdIrJoadkFa EpY5pD+mSY5p3fpf7yozKZOSzAAyj5IFmXMXQtOTx7hS1wQvsVBDa3Ddu9uiIUef5txAuH1p1l LBs= X-Belgacom-Dynamic: yes IronPort-PHdr: =?us-ascii?q?9a23=3Aj1JlbBKmRipFYETafNmcpTZWNBhigK39O0sv0r?= =?us-ascii?q?FitYgXK/X7rarrMEGX3/hxlliBBdydt6sVzbCN+Pm6ASRAuc/H7CldNsQUFl?= =?us-ascii?q?cssoY/p0QYGsmLCEn2frbBThcRO4B8bmJj5GyxKkNPGczzNBX4q3y26iMOSF?= =?us-ascii?q?2kbVImbuv6FZTPgMupyuu854PcYxlShDq6fLh+MAi6oR/eu8ULhYZuMLg9xx?= =?us-ascii?q?XGrndVZeha2X5jKVaPkxrh/Mu984Nv/iZKt/4968JMVLjxcrglQ7BfEDkoKX?= =?us-ascii?q?0+6tfxtRnEQwuP538cXXsTnxFVHQXL7wz0U4novCfiueVzxCeVPcvtTbApQj?= =?us-ascii?q?ui9LtkSAXpiCgcKTE09nzch9Fqg6JapBKhoAF/w5LRbYqIOvdyYr/RcNUHTm?= =?us-ascii?q?daQM1fSzJODZ+9b4sXDuoOI+BYr5Xmp1ATqReyHBSgCP/zxjNNgHL9wK803P?= =?us-ascii?q?k7EQze0gIuH8wAvmnXotr3OqcdXvy6wqbTwDXfbf5bwyvx5JTUfhw/p/yHQL?= =?us-ascii?q?J+cdDWyUkqDw7LkFCSqYj4ND6L0eQNtHOb4PRlVe21jW4nsBx6rz+zxsctiI?= =?us-ascii?q?nJgpkYxFDe9Spn3ok4OMC2RkBhbd6jCptQuDiXOo1rScwtX29mojw1yqEauZ?= =?us-ascii?q?GlZigKzowqywLRZvKIc4aG7A7vWeKRLzp7mn5pZLKxigqw/ES8yuPxWMa53V?= =?us-ascii?q?VOoyZZltTCuG4B2gLP58aJVvZx41qt1zaO2g3V9+pKL0c0la/BJJ4gxL49jp?= =?us-ascii?q?QTsV7dESDog0r2l7KZel8j+uiy5OTrerrmpp6AN490lwHxKb4ildC4AeQ9Kg?= =?us-ascii?q?QOWHCb9vq61L3s5035R6hKjuUsnqneqpDaKsIWrbO6DQ9Nyosu6AuzAy243N?= =?us-ascii?q?kXg3ULNk9JdRCZg4TzNFzDJu3zA+2ljFS2ijhrwujLPrjmAprQMHfOiKzhfb?= =?us-ascii?q?Nh605Ezwoz0Mxf64pUCr4fJPLzXVf8tN/CAR89Mgy0xvjoCM961o8ERWKPA6?= =?us-ascii?q?2ZMKfIvVCU4eIvJPKMa5EQuDnnLfgl/OTijXgjmV8SZaWp3J0XZ26kHvl+IE?= =?us-ascii?q?iVfGDgjskOHGsUpAYyUe7nhEOYXTNcf3qyWrgz5jA/CIKoF4fDQYWtjaSd3C?= =?us-ascii?q?e6HJ1WYntLCl6WEXj2aYqLQOwMZz+ILs9miDwEWqCtS5U92hG2qA/6171nI/?= =?us-ascii?q?LR+iIEtpLjycN15+zPmhEx7jF0Ad6d3H+TQG5vhWMHWiU63KdloUxy0l2Dy7?= =?us-ascii?q?R3g+REFdxP4PNEShk1NZvGwOxhF9D9RBnMftmTSFm4XNqpGioxQc8rz98JeU?= =?us-ascii?q?Z9FM2ojgrf0CqyH78Vi7uLCYQ28qLd23jxI9hyy23d2akvlVkpXNVAOna9hq?= =?us-ascii?q?Fi7QTTAJTJk0qBnaawaascxDLN9HuEzWeWskFYShB/XrveUnAEe0TatM/55l?= =?us-ascii?q?/YQL+oFLsoKBFBxtOZKqZRZN3pl0tJS+n4N9TFfm29gWCwBQyHxuDEUI2/S2?= =?us-ascii?q?QblAHcQFYFmkgd53uLPxMyQzy9qmTSBSZiDhq7bVnh/ONlpDagUkYywwiQY1?= =?us-ascii?q?ZJ2aC49xQOibqbUfxFjZwevyJ0l9JwVH262MnbDtOGvEI1YKReZfsT+lpK/1?= =?us-ascii?q?n18QtnMcrzfOhZmlcCflEv7AvV3BJtB9AFyJByoQ=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2ACAABkHg9g/wSs8lFiGQEBAQEBAQE?= =?us-ascii?q?BAQEBAQEBAQEBARIBAQEBAQEBAQEBAQFAB4E0BAEBAQEBCwGDCxVXAUkYjGR?= =?us-ascii?q?ghj4Bghk4imWPKIF8CwEBAQEBAQEBAS4KBAEBhAZEAoF5JjQJDgIDAQEBAwI?= =?us-ascii?q?FAQEGAQEBAQEBBQQBhhg5DII4KQGDEgEFOj8QCxguVwYTgyeDCguyVYE0hEA?= =?us-ascii?q?BhRmBAgaBOAGNPUGCAIERgxk+gl0CAQEXhz8Egj6BAj0CgU8zYZwGnDKDAYk?= =?us-ascii?q?wkjAxongtnRaBepg2ghFNMAiDJBIBPRkNji0Xg06FFIVFQAMwAgE0AgYKAQE?= =?us-ascii?q?DCYwVAQE?= X-IPAS-Result: =?us-ascii?q?A2ACAABkHg9g/wSs8lFiGQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?RIBAQEBAQEBAQEBAQFAB4E0BAEBAQEBCwGDCxVXAUkYjGRghj4Bghk4imWPK?= =?us-ascii?q?IF8CwEBAQEBAQEBAS4KBAEBhAZEAoF5JjQJDgIDAQEBAwIFAQEGAQEBAQEBB?= =?us-ascii?q?QQBhhg5DII4KQGDEgEFOj8QCxguVwYTgyeDCguyVYE0hEABhRmBAgaBOAGNP?= =?us-ascii?q?UGCAIERgxk+gl0CAQEXhz8Egj6BAj0CgU8zYZwGnDKDAYkwkjAxongtnRaBe?= =?us-ascii?q?pg2ghFNMAiDJBIBPRkNji0Xg06FFIVFQAMwAgE0AgYKAQEDCYwVAQE?= Received: from 4.172-242-81.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([81.242.172.4]) by relay.skynet.be with ESMTP; 25 Jan 2021 20:42:27 +0100 Received: from localhost (localhost [127.0.0.1]) by kalimero.tijl.coosemans.org (8.16.1/8.16.1) with ESMTP id 10PJgQO8025847; Mon, 25 Jan 2021 20:42:26 +0100 (CET) (envelope-from tijl@FreeBSD.org) Date: Mon, 25 Jan 2021 20:42:25 +0100 From: =?UTF-8?B?VMSzbA==?= Coosemans To: Xin Li via freebsd-standards Cc: d@delphij.net, Jilles Tjoelker , Ed Maste , Xin Li , Marshall Kirk McKusick Subject: Re: _POSIX_C_SOURCE and S_IFMT macros Message-ID: <20210125204225.1a9e38d3@FreeBSD.org> In-Reply-To: <69977864-0a68-909d-8ecb-1d72c0ec0ef9@delphij.net> References: <69977864-0a68-909d-8ecb-1d72c0ec0ef9@delphij.net> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4DPgHp2l6kz3CMZ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2021 19:42:31 -0000 On Mon, 25 Jan 2021 01:04:25 -0800 Xin Li via freebsd-standards wrote: > Hi, > > I recently discovered [1] a difference between FreeBSD's handling of > _POSIX_C_SOURCE and what I have observe on Linux and macOS systems, > basically, if a program defines _POSIX_C_SOURCE to 200809L, but did not > define _XOPEN_SOURCE, we will not define S_IFMT when sys/stat.h is included. > > It appears that the glibc version of sys/stat.h won't define it either, > but their fcntl.h would define it by having _POSIX_C_SOURCE >= 200809L > to define _USE_XOPEN2K8 and expose it. > > A quick glance on my Macbook suggests that they were defining the S_IFMT > macros unconditionally. > > Based on my research, hiding these macros started in revision 40491 of > CSRG repository ( > https://svnweb.freebsd.org/csrg?view=revision&revision=40491 ); NetBSD > chose to make the macro visible when _XOPEN_SOURCE in revision 1.34 and > expanded the visibility scope to also cover _NETBSD_SOURCE. > > Do we need to hide these with 200809L when _XOPEN_SOURCE is not defined? > If I'm reading the standards correctly, I think we are required to > define these in modern POSIX revisions? > > > > [1] When building pigz (https://github.com/madler/pigz), I got: > > cc -O3 -Wall -Wextra -Wno-unknown-pragmas -Wcast-qual -c pigz.c -o pigz.o > pigz.c:3817:47: error: use of undeclared identifier 'S_IFMT' > if (stat(from, &st) != 0 || (st.st_mode & S_IFMT) != S_IFREG) > ^ > [...] S_IFMT is marked as an XSI extension so _XOPEN_SOURCE needs to be defined to use it. POSIX programs are supposed to use the equivalent function-like macros, so in this case S_ISREG(st.st_mode) == 0. https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html