mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
gh-113666: Adding missing UF_ and SF_ flags to module 'stat' (#113667)
Add some constants to module 'stat' that are used on macOS. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
892155d736
commit
2010d45327
5 changed files with 217 additions and 8 deletions
|
|
@ -202,6 +202,10 @@ typedef unsigned short mode_t;
|
|||
|
||||
|
||||
/* Names for file flags */
|
||||
#ifndef UF_SETTABLE
|
||||
# define UF_SETTABLE 0x0000ffff
|
||||
#endif
|
||||
|
||||
#ifndef UF_NODUMP
|
||||
# define UF_NODUMP 0x00000001
|
||||
#endif
|
||||
|
|
@ -226,10 +230,22 @@ typedef unsigned short mode_t;
|
|||
# define UF_COMPRESSED 0x00000020
|
||||
#endif
|
||||
|
||||
#ifndef UF_TRACKED
|
||||
# define UF_TRACKED 0x00000040
|
||||
#endif
|
||||
|
||||
#ifndef UF_DATAVAULT
|
||||
# define UF_DATAVAULT 0x00000080
|
||||
#endif
|
||||
|
||||
#ifndef UF_HIDDEN
|
||||
# define UF_HIDDEN 0x00008000
|
||||
#endif
|
||||
|
||||
#ifndef SF_SETTABLE
|
||||
# define SF_SETTABLE 0xffff0000
|
||||
#endif
|
||||
|
||||
#ifndef SF_ARCHIVED
|
||||
# define SF_ARCHIVED 0x00010000
|
||||
#endif
|
||||
|
|
@ -250,6 +266,30 @@ typedef unsigned short mode_t;
|
|||
# define SF_SNAPSHOT 0x00200000
|
||||
#endif
|
||||
|
||||
#ifndef SF_FIRMLINK
|
||||
# define SF_FIRMLINK 0x00800000
|
||||
#endif
|
||||
|
||||
#ifndef SF_DATALESS
|
||||
# define SF_DATALESS 0x40000000
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__) && !defined(SF_SUPPORTED)
|
||||
/* On older macOS versions the definition of SF_SUPPORTED is different
|
||||
* from that on newer versions.
|
||||
*
|
||||
* Provide a consistent experience by redefining.
|
||||
*
|
||||
* None of bit bits set in the actual SF_SUPPORTED but not in this
|
||||
* definition are defined on these versions of macOS.
|
||||
*/
|
||||
# undef SF_SETTABLE
|
||||
# define SF_SUPPORTED 0x009f0000
|
||||
# define SF_SETTABLE 0x3fff0000
|
||||
# define SF_SYNTHETIC 0xc0000000
|
||||
#endif
|
||||
|
||||
|
||||
static mode_t
|
||||
_PyLong_AsMode_t(PyObject *op)
|
||||
{
|
||||
|
|
@ -467,18 +507,29 @@ S_IWOTH: write by others\n\
|
|||
S_IXOTH: execute by others\n\
|
||||
\n"
|
||||
|
||||
"UF_NODUMP: do not dump file\n\
|
||||
"UF_SETTABLE: mask of owner changable flags\n\
|
||||
UF_NODUMP: do not dump file\n\
|
||||
UF_IMMUTABLE: file may not be changed\n\
|
||||
UF_APPEND: file may only be appended to\n\
|
||||
UF_OPAQUE: directory is opaque when viewed through a union stack\n\
|
||||
UF_NOUNLINK: file may not be renamed or deleted\n\
|
||||
UF_COMPRESSED: OS X: file is hfs-compressed\n\
|
||||
UF_HIDDEN: OS X: file should not be displayed\n\
|
||||
UF_COMPRESSED: macOS: file is hfs-compressed\n\
|
||||
UF_TRACKED: used for dealing with document IDs\n\
|
||||
UF_DATAVAULT: entitlement required for reading and writing\n\
|
||||
UF_HIDDEN: macOS: file should not be displayed\n\
|
||||
SF_SETTABLE: mask of super user changeable flags\n\
|
||||
SF_ARCHIVED: file may be archived\n\
|
||||
SF_IMMUTABLE: file may not be changed\n\
|
||||
SF_APPEND: file may only be appended to\n\
|
||||
SF_RESTRICTED: entitlement required for writing\n\
|
||||
SF_NOUNLINK: file may not be renamed or deleted\n\
|
||||
SF_SNAPSHOT: file is a snapshot file\n\
|
||||
SF_FIRMLINK: file is a firmlink\n\
|
||||
SF_DATALESS: file is a dataless object\n\
|
||||
\n\
|
||||
On macOS:\n\
|
||||
SF_SUPPORTED: mask of super user supported flags\n\
|
||||
SF_SYNTHETIC: mask of read-only synthetic flags\n\
|
||||
\n"
|
||||
|
||||
"ST_MODE\n\
|
||||
|
|
@ -543,18 +594,32 @@ stat_exec(PyObject *module)
|
|||
ADD_INT_MACRO(module, S_IWOTH);
|
||||
ADD_INT_MACRO(module, S_IXOTH);
|
||||
|
||||
ADD_INT_MACRO(module, UF_SETTABLE);
|
||||
ADD_INT_MACRO(module, UF_NODUMP);
|
||||
ADD_INT_MACRO(module, UF_IMMUTABLE);
|
||||
ADD_INT_MACRO(module, UF_APPEND);
|
||||
ADD_INT_MACRO(module, UF_OPAQUE);
|
||||
ADD_INT_MACRO(module, UF_NOUNLINK);
|
||||
ADD_INT_MACRO(module, UF_COMPRESSED);
|
||||
ADD_INT_MACRO(module, UF_TRACKED);
|
||||
ADD_INT_MACRO(module, UF_DATAVAULT);
|
||||
ADD_INT_MACRO(module, UF_HIDDEN);
|
||||
ADD_INT_MACRO(module, SF_SETTABLE);
|
||||
ADD_INT_MACRO(module, SF_ARCHIVED);
|
||||
ADD_INT_MACRO(module, SF_IMMUTABLE);
|
||||
ADD_INT_MACRO(module, SF_APPEND);
|
||||
ADD_INT_MACRO(module, SF_NOUNLINK);
|
||||
ADD_INT_MACRO(module, SF_SNAPSHOT);
|
||||
ADD_INT_MACRO(module, SF_FIRMLINK);
|
||||
ADD_INT_MACRO(module, SF_DATALESS);
|
||||
|
||||
#ifdef SF_SUPPORTED
|
||||
ADD_INT_MACRO(module, SF_SUPPORTED);
|
||||
#endif
|
||||
#ifdef SF_SYNTHETIC
|
||||
ADD_INT_MACRO(module, SF_SYNTHETIC);
|
||||
#endif
|
||||
|
||||
|
||||
const char* st_constants[] = {
|
||||
"ST_MODE",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue