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 9C82C201A4 for ; Tue, 7 May 2024 05:28:58 +0200 (CEST) Received: (qmail 17733 invoked by uid 550); 7 May 2024 03:28: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 17688 invoked from network); 7 May 2024 03:28:51 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715052523; x=1715657323; 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=3wwZvEQXedRP6a11iGitndZObQBQG6Jce9+9t1S+pvc=; b=dXFb8uXSI3YJVW52tmU6LxOGdj0W0sneTiR1sm9b5s5KQw45+f+fAK/PYcxeAUewhi DRGJ1nP0+C3DOnGGRHOYQXsRdDxJM+J5f5tKWGIMBFpkpI47sn7+6kchulhtG95am2bE OWKybp97dvHNpBRXXkjRFGCHe06UMkobthh0rmiPriYiGnsSmq0drMCTeLSmHfOfFFCI Qx5EQlELz83BDVPJBw2MNQS9wE/biSCrXg9Hu6/OUHEmclUpiEptGAZapo4da+mLA/Bn cNaOE+O7sXWhoU7vuhnljwq9PShcKsMm3KyHzKB5C8Gf3R1n6L11PsEK8HazrEqU12cr xm7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715052523; x=1715657323; 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=3wwZvEQXedRP6a11iGitndZObQBQG6Jce9+9t1S+pvc=; b=eH4isfibhyjWxL1i3pN0vFokXVCYSd6ejdSXN/QA7FOzDtBQArn82KTY8HiDrfNzJx 8L94xbkKyTyeiomajCVaIiMYiwadw2GAM5gQ+MQvetP6b19747P6lu6DiSIVavQNYRSM 6/2k3IJ5FtDD2NZO+F6nFJi+TfnbJX+iDVI2fHc1GliH+CdFdHjIrHppkZaKJi7GzG4a DNAu3sT3eE84gkwla/DA+EhLGynbDePjI7BpOXouEA/nO+VJrJmLxn+9IMJv3t0lSHhy ZRAVLSIVfjpaSGXwc6WnXRl9A+CF+00BKeIBjbV0uH6mfaVqNMAvTqvghxcJGi1E//9Y E5lQ== X-Gm-Message-State: AOJu0YxCS7ywyWiGGnCV2t7h+/vgfsdjjlu9DiFAfUyE6aVHuDhKqi8O 534qUVCkDUHZ442v9nTJYSew2Ax2NhIzpx8z2gfWj/IHGUPjIPnIvzw2HA== X-Google-Smtp-Source: AGHT+IEQjC5WoTLhtt5FZNPTGAuhdhMpGIB26xyLG0etxJOLt9z0na8aq9KTBGTEGL0M0lWLZmKTMQ== X-Received: by 2002:a17:903:246:b0:1e5:d021:cf58 with SMTP id j6-20020a170903024600b001e5d021cf58mr16249352plh.36.1715052522837; Mon, 06 May 2024 20:28:42 -0700 (PDT) From: Tony Ambardar X-Google-Original-From: Tony Ambardar To: musl@lists.openwall.com Cc: Tony Ambardar , Rich Felker Date: Mon, 6 May 2024 20:28:32 -0700 Message-Id: <20240507032832.2432241-1-Tony.Ambardar@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423234355.2414567-1-Tony.Ambardar@gmail.com> References: <20240423234355.2414567-1-Tony.Ambardar@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [musl] [PATCH v3] 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 --- v2 -> v3: * call SYS_renameat first if applicable * drop unneeded error code handling 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 | 11 +++++++++++ 2 files changed, 18 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..b8060388 --- /dev/null +++ b/src/linux/renameat2.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int renameat2(int oldfd, const char *old, int newfd, const char *new, unsigned flags) +{ +#ifdef SYS_renameat + if (!flags) return syscall(SYS_renameat, oldfd, old, newfd, new); +#endif + return syscall(SYS_renameat2, oldfd, old, newfd, new, flags); +} -- 2.34.1