From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 25767 invoked from network); 29 Aug 2022 13:50:47 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 29 Aug 2022 13:50:47 -0000 Received: (qmail 16215 invoked by uid 550); 29 Aug 2022 13:50:44 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 16183 invoked from network); 29 Aug 2022 13:50:43 -0000 Content-Type: text/plain; charset=utf-8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denkimushi.com; s=dkim; t=1661781030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o+iFFQOoRm0RW2ta3UM2k/Bl2Iik+KRaDGSmFFdCNeo=; b=iyFN/0T624NWXDwhZL2i3HnTNOBBjOPgoZZBYmDtqxfip1pBURYB8MIgdajtQThVISx5C2 CaLA2J/2hMA4W4gbQKjE/hJZQnqhEuim4WMk9SJ7S6GYJcKNOCax8m1xSFxPJ07DsbwC9X op5A78w9c3RzAUnBICzihn8xPw/JDsA= Content-Transfer-Encoding: quoted-printable From: Dunk MIME-Version: 1.0 (1.0) Date: Mon, 29 Aug 2022 14:50:28 +0100 Message-Id: References: <20220827231143.3324909-2-dunk@denkimushi.com> Cc: musl@lists.openwall.com In-Reply-To: <20220827231143.3324909-2-dunk@denkimushi.com> To: info@bnoordhuis.nl ARC-Seal: i=1; s=dkim; d=denkimushi.com; t=1661781030; a=rsa-sha256; cv=none; b=TgJ2CjrMSE0TrFpfwmhxDsQUX8Pa0oTQ1JfmVHnuy1bVqHPLwLhJUWohDfv//uacF/xTyi snHD+5oJKZOoz4f0OtUjBd/zlR6C8L9/mQdJLtniE+YaF7PyrJBb19WEsQrMjQYPiTUNoH GMOLeXNElpI0NV+7FpcRJLUxg2eNrzI= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=dunk@denkimushi.com smtp.mailfrom=dunk@denkimushi.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=denkimushi.com; s=dkim; t=1661781030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o+iFFQOoRm0RW2ta3UM2k/Bl2Iik+KRaDGSmFFdCNeo=; b=ypz1+zr7KiRnicTzgTjkY64Ny1K+Uv4D6PAkgeTlsfY7mKNL4oS36c2yfo0rE8hqb7Wbph qnao60KBUcg9ru5aAnwtwCb7kYRcIdujnurRI9iFK0tWcdS9wi6wdRYrUh9gFTHyau7x/A L94xRG5jZWLHG5m0wnbTM5A7/xirJiQ= Subject: [musl] Re: [PATCH 1/2] V2 resubmitting old statx patch with changes > On 28 Aug 2022, at 00:13, Duncan Bellamy wrote: >=20 > =EF=BB=BF--- > include/sys/stat.h | 49 ++++++++++++++++++++++++++++++++++++++++++++++ > src/stat/statx.c | 39 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 88 insertions(+) > create mode 100644 src/stat/statx.c >=20 > diff --git a/include/sys/stat.h b/include/sys/stat.h > index 10d446c4..21668a51 100644 > --- a/include/sys/stat.h > +++ b/include/sys/stat.h > @@ -70,6 +70,55 @@ extern "C" { > #define UTIME_NOW 0x3fffffff > #define UTIME_OMIT 0x3ffffffe >=20 > +#if defined(_GNU_SOURCE) > +#include > + > +#define STATX_TYPE 1U > +#define STATX_MODE 2U > +#define STATX_NLINK 4U > +#define STATX_UID 8U > +#define STATX_GID 0x10U > +#define STATX_ATIME 0x20U > +#define STATX_MTIME 0x40U > +#define STATX_CTIME 0x80U > +#define STATX_INO 0x100U > +#define STATX_SIZE 0x200U > +#define STATX_BLOCKS 0x400U > +#define STATX_BASIC_STATS 0x7ffU > +#define STATX_BTIME 0x800U > +#define STATX_ALL 0xfffU > + > +struct statx_timestamp { > + int64_t tv_sec; > + uint32_t tv_nsec, __pad; > +}; > + > +struct statx { > + uint32_t stx_mask; > + uint32_t stx_blksize; > + uint64_t stx_attributes; > + uint32_t stx_nlink; > + uint32_t stx_uid; > + uint32_t stx_gid; > + uint16_t stx_mode; > + uint16_t __pad0[1]; > + uint64_t stx_ino; > + uint64_t stx_size; > + uint64_t stx_blocks; > + uint64_t stx_attributes_mask; > + struct statx_timestamp stx_atime; > + struct statx_timestamp stx_btime; > + struct statx_timestamp stx_ctime; > + struct statx_timestamp stx_mtime; > + uint32_t stx_rdev_major; > + uint32_t stx_rdev_minor; > + uint32_t stx_dev_major; > + uint32_t stx_dev_minor; > + uint64_t __pad1[14]; > +}; > + > +int statx(int, const char *__restrict, int, unsigned, struct statx *__res= trict); > +#endif > int stat(const char *__restrict, struct stat *__restrict); > int fstat(int, struct stat *); > int lstat(const char *__restrict, struct stat *__restrict); > diff --git a/src/stat/statx.c b/src/stat/statx.c > new file mode 100644 > index 00000000..6788476a > --- /dev/null > +++ b/src/stat/statx.c > @@ -0,0 +1,39 @@ > +#define _GNU_SOURCE > +#include > +#include > +#include > +#include > + > +int statx(int dirfd, const char *restrict path, int flags, unsigned mask,= struct statx *restrict stx) > +{ > + int ret =3D __syscall(SYS_statx, dirfd, path, flags, mask, stx); > + if (ret !=3D -ENOSYS) return __syscall_ret(ret); > + > + #if defined(SYS_fstatat) > + struct stat st; > + ret =3D fstatat(dirfd, path, &st, flags); > + if (ret =3D=3D -ENOSYS) return -1; > + > + stx->stx_dev_major =3D major(st.st_dev); > + stx->stx_dev_minor =3D minor(st.st_dev); > + stx->stx_ino =3D st.st_ino; > + stx->stx_mode =3D st.st_mode; > + stx->stx_nlink =3D st.st_nlink; > + stx->stx_uid =3D st.st_uid; > + stx->stx_gid =3D st.st_gid; > + stx->stx_size =3D st.st_size; > + stx->stx_blksize =3D st.st_blksize; > + stx->stx_blocks =3D st.st_blocks; > + stx->stx_atime.tv_sec =3D st.st_atim.tv_sec; > + stx->stx_atime.tv_nsec =3D st.st_atim.tv_nsec; > + stx->stx_mtime.tv_sec =3D st.st_mtim.tv_sec; > + stx->stx_mtime.tv_nsec =3D st.st_mtim.tv_nsec; > + stx->stx_ctime.tv_sec =3D st.st_ctim.tv_sec; > + stx->stx_ctime.tv_nsec =3D st.st_ctim.tv_nsec; > + stx->stx_btime =3D (struct statx_timestamp){.tv_sec=3D0, .tv_nsec=3D0= }; > + stx->stx_mask =3D STATX_BASIC_STATS; > + ret =3D EINVAL; > + #endif > + > + return ret; > +} > --=20 > 2.37.1 I guess this is missing `return __syscall_ret(ret)` instead of just `return r= et` at the end