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=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5145 invoked from network); 31 Mar 2022 03:58:48 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 31 Mar 2022 03:58:48 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1648699128; b=VejGzocwGudYQsc/P8/CljIqgeUgFALK7kbcwE/Ldc6ezHM3hV3qoM4bglpCu4fQAmEmEvH3JX ms3q4co1m0In0qW2bUJoFi2YaGYGZRzm/sMv+ZABq+DP/MBwPni5tEYQkeSEsUjZuscLR5G8ui KMVQvlEkNMjXkElAhAVlA9gUbv48Q2QOrtv7XQAaolTXqUayHw9wFNvi+HHAJ7krElbWKGuuP1 WHF7IDo2R/VNrXP9OT9ySFgGK48sOLdFUM/OMsryslq1cREjyQEkVa3sQOKBidSxPIGmKiqCwY LWvRwF3+tVGlOzsWyRGDLM7noSsAouIAKoVNmxOV2i/jXw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-oa1-f49.google.com) smtp.remote-ip=209.85.160.49; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1648699128; bh=1VpXD8B/lrQK8fTL9csPsKiRLCQfJEQGGIUb7pUHdNQ=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:MIME-Version:Message-ID:Subject:To:From:Date: DKIM-Signature:DKIM-Signature; b=T7iaV6k4nLW9mWINkDNK7454hgxqdb7bBNd0Cjewetym+OgePqvASscxuL9ygpts7LGZYhEYz/ RS5i/IXrq9OO+mmJvQg2ZhNt9cV2biRXD7dp8YVq0SGk/G0XPX1738XqM/w3Utvnzt1xOl4pE/ DN7OocBgYe/b/gzVgFPlNPyJaw5LPJg0sQlfQ/jiKb4PSfOmcTMhAwK/FBvMAd8eqaBua0MWyG 3EcfMFCO028WUPMABiwJIYErxemMGNKHK40ofw22ugUzRjwihyyCeLMkLf45QCud6cJ3eGCreX WZ3L+6JW3Z7PE7tQRzpuTKRbJ0IzSzNYwjKUNcogXpzZEA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:MIME-Version:Message-ID: Subject:To:From:Date:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=jcKeNDtU2vQbD4s7aD2svNGFw7tVf5sf/1Ai9qTnyto=; b=ak0bizYPT9NVvdhR0hGSq71jSL cBcvTsy2gcD3r5BFLZxN1D3ahKowXd9PUyLnsXNOHmVdsxNJA3MK/9FpFS+dHU0r/gT0LZtWvYFjG FqlwWyAEb+u6swxpIVxXB8tgtLd+w+7wdmW1JnTsYsSQy4suVnkY5xt/4oSzUjWo3u5JxGlRjuGwP 8kH3gDskR2lj8cDeZzdgN+YoNAw7ns9yQPPkrvcfD3J+LdLHrlt04J+OSoagTtcM7j3u1flxKkeZO 3dy9pHLj+ll6GbTKSQrveC+fZKk9Vnt+3utltm1bbbI4oVAWmH7ZdP4dqtL8K9fxQpOuJ/j95DeVb nzUg0JwA==; Received: from authenticated user by zero.zsh.org with local id 1nZlxQ-000O4a-0n; Thu, 31 Mar 2022 03:58:48 +0000 Authentication-Results: zsh.org; iprev=pass (mail-oa1-f49.google.com) smtp.remote-ip=209.85.160.49; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-oa1-f49.google.com ([209.85.160.49]:37835) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1nZlx9-000Nk3-PW; Thu, 31 Mar 2022 03:58:32 +0000 Received: by mail-oa1-f49.google.com with SMTP id 586e51a60fabf-dee0378ce7so13754066fac.4 for ; Wed, 30 Mar 2022 20:58:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:subject:message-id:mail-followup-to:mime-version :content-disposition; bh=jcKeNDtU2vQbD4s7aD2svNGFw7tVf5sf/1Ai9qTnyto=; b=TEWAYLkeYnBAcQZ7K/88MYux/75FNYp4Xx00fS4T6LQF73BeEiWaS7ThEYxhSrekL+ yXRzkjxC8o13tyl/6T6o+4A/p99twroS/tD5Ty0MAOwWudq9ZrMyZLWt2ZxvXJNjq4oz k89dVg/UCG5Av4jU4/0ChtioPGsFbVjAs5Obx4KXgyyaP9QICkRNF/zE9Yan4BVagMMW GmMaxInl7pkk0e3pHK7Ed1qtGjLLtdaVtGYTCAp/3aI7I7OhH9NVclz/SHeTvI1z4iJ5 Ls4jDEtqjf502LhVJHXDhEimpTn+E2stpszbDOI2yC3MsoKtVhUQl7YU7ZNDkOn+azkJ sJ1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:subject:message-id:mail-followup-to :mime-version:content-disposition; bh=jcKeNDtU2vQbD4s7aD2svNGFw7tVf5sf/1Ai9qTnyto=; b=C+fa1gVrmtM3y48GT4uFwJcxl0LqyJ9MXj317Ee+sjFOYbncTPdUZoS1ahiowSVVzW lJDNGE9085YF0jeRErZd66Gso8Lu46bMumnBayeRhDFAG2L0DpSYzTRzpvmfbMbCgeBf e/FI3p5Az70rf2SrHZmx/kA9LPuOy96FjHg3os9DSpHjy1bHSE3pzAqnJU6MtBPvACHc pcRKQO5fizaeeO7tjHL0o5HsK2mdWpXNWRe7YzKSe2KP+COUa88VJ7GQBxRKheo+OZsh 7dVc61EN6fSw7awCYNFPc9bI0WZCCOW0Z+rMSdBmDC/pgogTHviOFgNYV48EFoj6GT8y 7r5w== X-Gm-Message-State: AOAM5323RxHjoGpniJfWJ1wMKymFfEqM3moo9EutuAFDOrjniQxp3Jrs BnVFhzjxwH/gdoZ/oHJSiT7XcbTYkoQ= X-Google-Smtp-Source: ABdhPJzd/adGfUcKmgR8GC2UscPVMrcdm2e9qWyTDvCYyGiL4a4rYzHy7bhSmtf95nmeRb4eQpleEQ== X-Received: by 2002:a05:6871:1d0:b0:da:b3f:3210 with SMTP id q16-20020a05687101d000b000da0b3f3210mr1764953oad.192.1648699110468; Wed, 30 Mar 2022 20:58:30 -0700 (PDT) Received: from CptOrmolo.darkstar (cpe-76-184-110-212.tx.res.rr.com. [76.184.110.212]) by smtp.gmail.com with ESMTPSA id p12-20020a0568708a0c00b000dea43cc316sm9192254oaq.4.2022.03.30.20.58.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Mar 2022 20:58:30 -0700 (PDT) Date: Wed, 30 Mar 2022 22:58:27 -0500 From: Matthew Martin To: zsh-workers@zsh.org Subject: PATCH: Add nonblock to sysopen Message-ID: Mail-Followup-To: zsh-workers@zsh.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Seq: 49933 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: A while back CcxWrk on IRC noted sysopen doesn't support O_NONBLOCK. The POSIX spec for open requires O_NONBLOCK; however, since the spec also requires O_CLOEXEC, O_NOFOLLOW, and O_SYNC, I wrapped nonblock in an ifdef as well. While here, the name member of the struct ought to be const. diff --git a/Doc/Zsh/mod_system.yo b/Doc/Zsh/mod_system.yo index 399b6fe03..884c3e753 100644 --- a/Doc/Zsh/mod_system.yo +++ b/Doc/Zsh/mod_system.yo @@ -62,6 +62,9 @@ suppress updating of the file atime item(tt(nofollow))( fail if var(file) is a symbolic link ) +item(tt(nonblock))( +the file is opened in nonblocking mode +) item(tt(sync))( request that writes wait until data has been physically written ) diff --git a/Src/Modules/system.c b/Src/Modules/system.c index ecd4e2546..71745548f 100644 --- a/Src/Modules/system.c +++ b/Src/Modules/system.c @@ -280,7 +280,7 @@ bin_syswrite(char *nam, char **args, Options ops, UNUSED(int func)) } -static struct { char *name; int oflag; } openopts[] = { +static struct { const char *name; int oflag; } openopts[] = { #ifdef O_CLOEXEC { "cloexec", O_CLOEXEC }, #else @@ -296,6 +296,9 @@ static struct { char *name; int oflag; } openopts[] = { #endif #ifdef O_NOATIME { "noatime", O_NOATIME }, +#endif +#ifdef O_NONBLOCK + { "nonblock", O_NONBLOCK}, #endif { "excl", O_EXCL | O_CREAT }, { "creat", O_CREAT },