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=-1.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,PDS_OTHER_BAD_TLD, RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 27419 invoked from network); 18 Jan 2021 02:29:20 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 18 Jan 2021 02:29:20 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1610936960; b=B/Cc2WbBa0cVvhNRahDcT2OxVrcTjTtgFd7BdTZ8/mg0moUh8zIAr/5l3BPi2fL7Xm9euq0IjZ 4jtz+UUARy3BvCpyY2CFLi72vMX1u30O2IePdQWEPomv9eLNkA+gQ0STQpeCcsD3qzpeBQQkxk AI8MKuQ7f++Ztu2t7Rf7jViWg7d1k5GqTKo4O+7i9G0oe6UQ4PzMkceA3J95pF9PzYUp+L0fno NWvGxAF9PnTg/cmv60QcrHbuQSOBfrIOzIUhRfr7JiTATbk/Wq9mLFaVn539JZfxajLY8rVodr /7UaKa8CH2toQPtct5qsG5ErHF7dfmo10U2K2Of+C+7/1g==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-pg1-f176.google.com) smtp.remote-ip=209.85.215.176; dkim=pass header.d=gmail.com header.s=20161025 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-20200801; t=1610936960; bh=IcXKx3nwh8CB1hHUWIvWPZQ841jnG3p2eDWFPhY8ros=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=L87zui2I/FFHOb30BsVQg9+knCaVWWBysjJKsnchQXwgjYjGrIW7o9C058oJ19NuJQmkWqYKo2 7TKMsby85cLkInE1U5xe0FDEUoD1LEjQQSfltFb0LoIJ3WUZvFYDfebP0qkTsBS5aijeIs4GIh hAVUKC7FG0expUXaoqnFJ7ZsCqHzEkwCfqmtT3MO8cNLchjaGihunyGL92UZPGcwPpDpwDHOSp HIdbbSA/WN6tKE3ylfsRBiNXrQrIYIv2gzgMAO+32NPlQq5KEUTkwpI2riRtT17o6swzyoaxlb OB6uif3vAIoNfonlMg44fQPWV1zqlrjdHLTCVZrjL537MA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version: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=1HEiCmGDciN0cqknHCe8pjPKyIDMVannswJCxa9i+Ps=; b=SiKkC8u/bvlMJ0rv45+AJWMD5N fjgzhShFCVRU6ck2TWct4PDyIOnxCZJxlJ3wqiDhcaFl3YMeL/8ViyIUpy6i5owhsq02h8xpAfnt5 jdQXtHgWtmMVWMOVXIfgLFraxXIHOqbfU50iJS0X0FGMwJTDy/XRyWKMv6CkSgFr1ja56SbzJ6Se/ QXIbxlCmcTa3YYBAuzw1Qv44HBbI/DbGyd/GlXkH3kDI9HElr6oYFGduF6JoYuKvdIoDUA7gbg7Fn TczvHQt1h1fanfEa3SjQDXZbpgQI4L8aJzF9tCfhgcej2SvM/uSHbqBHf0s95WRlP+SpVuDP/vfYK MmGq7r8A==; Received: from authenticated user by zero.zsh.org with local id 1l1KI6-000MPD-Hs; Mon, 18 Jan 2021 02:29:14 +0000 Authentication-Results: zsh.org; iprev=pass (mail-pg1-f176.google.com) smtp.remote-ip=209.85.215.176; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-pg1-f176.google.com ([209.85.215.176]:46521) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1l1KHq-000MH0-Nw; Mon, 18 Jan 2021 02:28:59 +0000 Received: by mail-pg1-f176.google.com with SMTP id c22so9984482pgg.13 for ; Sun, 17 Jan 2021 18:28:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=1HEiCmGDciN0cqknHCe8pjPKyIDMVannswJCxa9i+Ps=; b=s/QYGZniiAx/rBN5CFVGnl0kqz3dnAmXhf7CaTLXZeDL41GMhYY/lGP3RKBzVM8sqI Iv2Be8b8+ceVFEACMWtWk5OXNRtbLYfBvP4pjRVsHn9TVIUsMJt9StUMIvpZE/MibNnc 1ovTQ/0YhyjlAWmvRyN/NVxZkJolm12yJ+XAtryw1l2fIIhjvyWCBcqg+ZLrQrqxKjdf 9lVdQdafS92kY1Ke4W9giwrm3+vSZ4Sb9t71WpVP+ZcLhCBs4n9uv17+sNNQlH6F74qD lnhHqf6aOroLUEJydDf5YsjkZ+DmGAXHpEampZ3Lr+d6d+9cjKQ3JSpqZe+HLTmfqaUN wUXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1HEiCmGDciN0cqknHCe8pjPKyIDMVannswJCxa9i+Ps=; b=fqSLNNZgGOY2Lr2kXWjrgrjPfzhbGWLth6tvZkBu0FKmVgyf9zGIl0oaXrpXYkRW/f 5ad+PIJyI9PGlVTfWnpx9qnJrb+4yK66jg3W+kAkCAkMdnnscgytQMUbNEUch6R8XDYq CFklKNm+Q2mm8K/vLNs2JoytAKlKe6/q5aFwl/XFv+lAl0p3u0eQuVjlCNCjwjAAKiyI s6peWjnSMXaZrz2fmUVf3me/lyW4XWaLaCWik19XjORBnSj9l07Ad3lR+5DlO5ORkgWe vB6D2pI0pXburWAl8T2NKKMgJozJAAuRbt95AYnHkA0Xz+6pUsQcnIF3W9380q+npxti 8fmw== X-Gm-Message-State: AOAM530BDWkBS8LwZqkn/BYjMjEMgith2qn3Nph4pnq8jz6qHptJiW/g x01az9oB1UAPVlB1nf0gk0EOGBQoT8aQEQTGr02uqSEh84oz7A== X-Google-Smtp-Source: ABdhPJxCZQ9uAbCaskOIUTbUYN7WhXzd1WOAY9iiQ+Og0Jw1rQoJPtyyDXCsr8evuusu3XnscVDnXssIYWsJHCavsXI= X-Received: by 2002:a05:6a00:1393:b029:1b4:7938:ff1d with SMTP id t19-20020a056a001393b02901b47938ff1dmr12435938pfg.31.1610936937233; Sun, 17 Jan 2021 18:28:57 -0800 (PST) MIME-Version: 1.0 From: Peiyuan Song Date: Mon, 18 Jan 2021 10:28:46 +0800 Message-ID: Subject: [PATCH v3] Make zpty module work in the cygwin and msys2 To: zsh-workers@zsh.org Content-Type: text/plain; charset="UTF-8" X-Seq: 47840 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: Archived-At: cygwin have /dev/ptmx, need defined `_GNU_SOURCE 1` to use it, but configure check /dev/ptmx is usable only defined it for linux. Another probleam is cygwin upstream have an issue https://cygwin.com/pipermail/cygwin-developers/2021-January/012030.html, because of that issue, movefd will broken the fd opened by posix_openpt, so that we mast disable movefd in zpty until cygwin fix that issue. v3 change: remove duplicate the code for check_fd_table, use addmodulefd, assume cygwin upstream issue will be fixed in version 3.2.0 --- Src/Modules/zpty.c | 11 +++++++++++ configure.ac | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index 45fd15ee0..dfd2a2a7a 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -30,6 +30,13 @@ #include "zpty.mdh" #include "zpty.pro" +#ifdef __CYGWIN__ +#include +#if defined(CYGWIN_VERSION_DLL_MAJOR) && CYGWIN_VERSION_DLL_MAJOR<3002 +#define USE_CYGWIN_FIX 1 +#endif +#endif + /* The number of bytes we normally read when given no pattern and the * upper bound on the number of bytes we read (even if we are give a * pattern). */ @@ -428,6 +435,7 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) mypid = 0; /* trick to ensure we _exit() */ zexit(lastval, ZEXIT_NORMAL); } +#ifndef USE_CYGWIN_FIX master = movefd(master); if (master == -1) { zerrnam(nam, "cannot duplicate fd %d: %e", master, errno); @@ -435,6 +443,9 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) ineval = oineval; return 1; } +#else + addmodulefd(master, FDT_INTERNAL); +#endif p = (Ptycmd) zalloc(sizeof(*p)); diff --git a/configure.ac b/configure.ac index 549cae3d6..16dafac05 100644 --- a/configure.ac +++ b/configure.ac @@ -2460,7 +2460,7 @@ if test x$ac_cv_have_dev_ptmx = xyes -o x$ac_cv_func_posix_openpt = xyes && \ test x$ac_cv_func_ptsname = xyes; then AC_CACHE_CHECK([if /dev/ptmx is usable], ac_cv_use_dev_ptmx, - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef __linux + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__linux) || defined(__CYGWIN__) #define _GNU_SOURCE 1 #endif #include -- 2.30.0.windows.2