From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 6970523819 for ; Wed, 24 Apr 2024 01:45:57 +0200 (CEST) Received: (qmail 11752 invoked by uid 550); 23 Apr 2024 23:45:51 -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 11714 invoked from network); 23 Apr 2024 23:45:51 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713915942; x=1714520742; darn=lists.openwall.com; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J2n6Ti+MRn3d3nG3IrXFrmJYGZw8yvPqzNu90ZdkVeg=; b=TAV7ozli1Kqz0QW+jwsmnGm6hdFPVctJly51Bd+byoMAhO6Ub5JXqz4T85Zthnemcs WED+FCFg/jq9w788el8gJE4TsuHPo8XhrgZ9VFuCp+wSDnwGj/7Z1lLilJKQo9wmCvR4 e2UoRKaS+yCriszsXC40vIMY3pOblRPun6qYsnf6cGqo1NAEy2vHT9cQ5pf7k+XV4MWz YGHMOWRY9pBl2ve1Gf2Yuq3jkE4seNnF0AR4racejUe5+B/hvMQJJJBVlBpNqRRcCpJR ACxeCD3ieSJzipkMXkGduRqF7NOAgUctJJbhXn/dveUyPsF+GEHN/5cGochDLvhxoX8l epgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713915942; x=1714520742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J2n6Ti+MRn3d3nG3IrXFrmJYGZw8yvPqzNu90ZdkVeg=; b=PMBZ8mezsjprqiKnMl+eI3SbYXBHN5waLfRbtwWNPJCqXkWzacIvKNL6wTTCY8yLAK Dl9I32cMDm8i5zz+xAhiW2j7Ad1a4hV5eB3BlKlH4LOT/dRJ9LTe/tjhDqi1U6gmlXha 4MKecttJO4+I9IE0spBXsycaKBB5gvAMu0VRqXifoDqJCuh6HiIE9vQ0NxQC5Wlon+5R qYv3P3HFHWYu+XwkaHU6vGJAUVpO7WCKihGIACklydLQwyjgIdhMYUFLnViMtBmlXjfx Z+UKrku6hSVWbnCZ0PCh1Afmn+z6m66WsSmBdUggRzD8J4Jm3AgwWLwXo8ApvMdUZYxz AcHw== X-Gm-Message-State: AOJu0Ywl/xmkf5XIxmT9Eun4eScZJxo/IkMZo6oa20U5zf1oKnlBGbQi UI+YKz1lJ7S+bLaIBxt9gLKiLcdwenDztK92PKA5k6WV6yKdOWDxQOGAnQ== X-Google-Smtp-Source: AGHT+IHcC+8Vhj+/HKK/uTc0IoGn/GCMyBALX7bM7Evy61FDiZyA65kXiTLzg8z6Dg/BAz7ulT+VHQ== X-Received: by 2002:a05:6a20:7351:b0:1a3:bd8a:141f with SMTP id v17-20020a056a20735100b001a3bd8a141fmr1062942pzc.54.1713915942137; Tue, 23 Apr 2024 16:45:42 -0700 (PDT) From: Tony Ambardar X-Google-Original-From: Tony Ambardar To: musl@lists.openwall.com Cc: Tony Ambardar Date: Tue, 23 Apr 2024 16:43:55 -0700 Message-Id: <20240423234355.2414567-1-Tony.Ambardar@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240421153640.379015-1-Tony.Ambardar@gmail.com> References: <20240421153640.379015-1-Tony.Ambardar@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [musl] [PATCH v2] add renameat2 linux syscall wrapper This syscall is available since Linux 3.15 and also implemented in glibc from version 2.28. It is commonly used in filesystem or security contexts. Constants RENAME_NOREPLACE, RENAME_EXCHANGE, RENAME_WHITEOUT are guarded by _GNU_SOURCE as with glibc. Signed-off-by: Tony Ambardar --- v1 -> v2: * align related constants * drop 'int' from 'unsigned int' * add fallback to SYS_renameat where applicable --- include/stdio.h | 7 +++++++ src/linux/renameat2.c | 12 ++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/linux/renameat2.c diff --git a/include/stdio.h b/include/stdio.h index cb858618..4ea4c170 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -158,6 +158,13 @@ char *ctermid(char *); #define L_ctermid 20 #endif +#if defined(_GNU_SOURCE) +#define RENAME_NOREPLACE (1 << 0) +#define RENAME_EXCHANGE (1 << 1) +#define RENAME_WHITEOUT (1 << 2) + +int renameat2(int, const char *, int, const char *, unsigned); +#endif #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) diff --git a/src/linux/renameat2.c b/src/linux/renameat2.c new file mode 100644 index 00000000..48ee8d53 --- /dev/null +++ b/src/linux/renameat2.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int renameat2(int oldfd, const char *old, int newfd, const char *new, unsigned flags) +{ + int r = __syscall(SYS_renameat2, oldfd, old, newfd, new, flags); +#ifdef SYS_renameat + if (r==-ENOSYS && !flags) r = __syscall(SYS_renameat, oldfd, old, newfd, new); +#endif + return __syscall_ret(r); +} -- 2.34.1