PATCH: export XATTR_{NAME,SIZE,LIST}_MAX
Philippe Cerfon <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAN+za=MhQdD2mzYxqVAm9ZwBUBKsyPiH+9T5xfGXtgxq1X1LAA@mail.gmail.com> |
Hey there.
Linux exports XATTR_{NAME,SIZE,LIST}_MAX in it's linux/limits.h and
e.g. the CPython interpreter uses them for it's XATTRs functions.
I made a corresponding PR at CPython
https://github.com/python/cpython/pull/105075 to get the code built
for Cygwin, but right now this would fail due to the missing
XATTR_*_MAX symbols.
The attached patch below would add them to cygwin/limits.h.
But beware, I'm absolutely no Windows/Cygwin expert ^^ - so whether
the values I've chosen are actually correct, is more guesswork rather
than definite knowledge.
As written in the commit message, I think:
- XATTR_NAME_MAX corresponds to MAX_EA_NAME_LEN
and
- XATTR_SIZE_MAX to MAX_EA_VALUE_LEN
though I have no idea, whether these are just lower boundaries used by
Cygwin, while e.g. Windows itself might set longer names or value
lenghts, and thus - when Cygwin would try to read such - it might get
into troubles (or rather e.g. CPython, as it's buffers wouldn't
suffice to read the EA respectively XATTR.
Neither to i have an idea about XATTR_LIST_MAX. I'm not even 100% sure
what it means (I guess the max number of XATTRs per file). Not to
speak about whether there's such maximum for Windows EAs,
And again - as above - what would happen if Windows itself would set
more than that limit and within Cygwin one would try to read/list all.
Thanks,
Philippe
0001-export-XATTR_-NAME-SIZE-LIST-_MAX.patch
(text/x-patch, 1.2 KB)
From 824bcdf053bfb86570c7edda3c018626dc857a8b Mon Sep 17 00:00:00 2001 From: Philippe Cerfon <[email protected]> Date: Tue, 30 May 2023 13:16:18 +0200 Subject: [PATCH] export XATTR_{NAME,SIZE,LIST}_MAX These are used for example by CPython. XATTR_NAME_MAX should correspond to MAX_EA_NAME_LEN and XATTR_SIZE_MAX to MAX_EA_VALUE_LEN. It's unclear whether Windows imposes a maximum number of EA's per file and which value should be used for XATTR_LIST_MAX, so for now Linux' value. Signed-off-by: Philippe Cerfon <[email protected]> --- winsup/cygwin/include/cygwin/limits.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/winsup/cygwin/include/cygwin/limits.h b/winsup/cygwin/include/cygwin/limits.h index aefc7c7bd..939ab4f38 100644 --- a/winsup/cygwin/include/cygwin/limits.h +++ b/winsup/cygwin/include/cygwin/limits.h @@ -56,4 +56,11 @@ details. */ #define __PATH_MAX 4096 #define __PIPE_BUF 4096 +/* Keep in sync with MAX_EA_NAME_LEN respectively MAX_EA_VALUE_LEN in + * winsup/cygwin/ntea.cc but don not use values that exceed their Linux + * counterparts as defined in linux/limits.h. */ +#define XATTR_NAME_MAX 255 +#define XATTR_SIZE_MAX 65536 +#define XATTR_LIST_MAX 65536 + #endif /* _CYGWIN_LIMITS_H__ */ -- 2.40.1