Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

The best diplomat I know is a fully activated phaser bank. -- Scotty


devel / comp.os.msdos.djgpp / fcntl() fails to pass option flags to fs-ext handler

SubjectAuthor
* fcntl() fails to pass option flags to fs-ext handlerJ.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com]
`- Re: fcntl() fails to pass option flags to fs-ext handlerJ.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com]

1
fcntl() fails to pass option flags to fs-ext handler

<7cb7c635-4f9f-6904-6171-264266ef4fb6@gmail.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=356&group=comp.os.msdos.djgpp#356

  copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!69.80.99.22.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Wed, 28 Jun 2023 15:08:26 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687964689; x=1690556689; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=dFrWhafhHam9XFB/L8D3VZgN+RgLYcztLyHOWcT19qU=; b=Y5VFFTXitQvYUnST51ki7f5hZvUgH8RdgHbdDfi6e8xJZg4OS/GaQmYsF2CSJB4fhT hezyxkPzozPUgQQ1+GZKbvbv01jleXwDNkkE8SprhuV17vjlxZdXDiybDC9eLZseEPnT +GbcXg8zXM5P1r4ZVoDiBsg7uEwqJH4V1BN72DqoGmHOzt1etzXTnb8prvWn2S+/vnJI IzfSi2Uc8kDqhsAfXZoAkORzLYVR3Bo2EFKV6Dwp5NMABgpBdo5ZMfRSSrKJFDoMGxZm 0mkyoRtvxTlHpB9i76eQBaIMYCQUpNeocmPxKc0072KRqnwV+HFEnzJGeBvjwoNvHqgA tPQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687964689; x=1690556689; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dFrWhafhHam9XFB/L8D3VZgN+RgLYcztLyHOWcT19qU=; b=hL8Ggquk18y6QHQS4bTFppbgCI+WDCdgk57w2F9uY24siy9CgDpLJoM3pDh1eSdKhJ 9kaEMv1tMvw/2ZNti7ZZlRyej6kcVXRw2IXSL4/M//Zlk/99RZKntQZZsOvEeuXRXEFy 41Zp3u3yvJWRolekeCHC1NR7Q+ZkLusLKcn+1zG8YFBecwixU/NtJ1zXqMSV3WP3GSmN YLZV3sWullVhBWP9VciTMjdDWR6VTq7lP/SgSIVIK4Yt11LsFuczG/AZ4T0ctST+sKB3 0Dpm0As5V5s+qNb8B3I3iJxF8jk2lHWsOND39hNMXODmukDmNLsLremO1xYwskPoSoel pa/g==
X-Gm-Message-State: AC+VfDzK+RJyLav+Wzs/7MsBstKlJSwvBIAGxulEO/pxGIMlDQNCE7Aw eKERYEYe6JganzACjDo2guyY9O1hF6k=
X-Google-Smtp-Source: ACHHUZ7Llki6/IcCI7tj9v4j3Cbm4otwnFOl0hE7cjpCDtihcU1m5wU82/jCcIshgA+RhivLUiq+Kg==
X-Received: by 2002:aa7:d848:0:b0:51b:eb5f:baf with SMTP id f8-20020aa7d848000000b0051beb5f0bafmr13768088eds.18.1687964688809; Wed, 28 Jun 2023 08:04:48 -0700 (PDT)
Message-ID: <7cb7c635-4f9f-6904-6171-264266ef4fb6@gmail.com>
Date: Wed, 28 Jun 2023 17:04:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0
Content-Language: en-US
To: djgpp@delorie.com
Cc: gvanem@yahoo.no
From: djg...@delorie.com (J.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com])
Subject: fcntl() fails to pass option flags to fs-ext handler
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 31
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-NUmFa91ep8e7PHHPEpyrQwUstg+0QuX5nUeYiVUyjQjee0IHKMAWmmJwuOROvW5HbVIF8UHCn/fhlO/!huObvtHdzPTSzwRI1pRtI4oZrdr8Ou9uWcBnEiMEo5Jr6B5rHdvXMzj/cWc+NgR+AKr4bct66pCi
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: J.W. Jagersma (jwjag - Wed, 28 Jun 2023 15:04 UTC

Hi all,

I was trying to make a non-blocking socket in Watt32 via:

fcntl(sock, F_SETFL, O_NONBLOCK);

To my surprise, it did nothing. Replacing fcntl() with fcntlsocket() does set
the flag correctly, but that's not a portable solution.

Looking at the libc code, I see the fsext handler is invoked via:

int
fcntl(int fd, int cmd, ...)
{

/* ... */

func = __FSEXT_get_function(fd);
if (func)
{
int rv;
if (__FSEXT_func_wrapper(func, __FSEXT_fcntl, &rv, fd, cmd))
return rv;
}

/* ... */

}

From what I can tell, the flags (in va_list) are never passed through to the
fsext handler. Has this ever worked? It seems like a bug to me.

Re: fcntl() fails to pass option flags to fs-ext handler

<5a7896dd-2f76-d043-bcd3-a40526766465@gmail.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=357&group=comp.os.msdos.djgpp#357

  copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!newsfeed.hasname.com!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!feeder.usenetexpress.com!tr1.iad1.usenetexpress.com!69.80.99.22.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Wed, 28 Jun 2023 16:14:52 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687968671; x=1690560671; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ePWi3XA5FoSz6hVCHCYpY6KKzU5ia5TdtAvy6kK10N0=; b=NXWKCrcTuGj5kWpVbSWYgmnhCJHZx9lHHAdfA1ubO5SfzKMIlrha/74iK0ozCJJmSO kWdiK2YApRG37l/uO1gZ0IzCYRbWssGhbBguP3Mgd/F2hr8Vu8F7reC2s2thvkIMnXf2 AwkwajP24gmxId6RFijGLUoW2Q4u8GJfJATCM9tndyqMlRyQaCsQtwcIP8t2kUfvI8HH GqE0/ozzMZAQ1eHGRvAznNrU3fGLLXlSI5dAbDGBgRvxZ84XR6ObVuIRtfVpkLhbwlBt TZ8I+PyQzKhXxCTeBCCF5XxLHJpqCZysIANasC7hvGgshKYQQjtqPcp72P7eXtmnY7qr NYpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687968671; x=1690560671; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ePWi3XA5FoSz6hVCHCYpY6KKzU5ia5TdtAvy6kK10N0=; b=YE3yWX1l8kWbuTfeeEYNHlOG5D9FOHKKZTAtoc1YkINYGXWFa3LsuiN7OwdKmyjA0v V1SZOhIFVGXIIeVYYGFUQQpm7qVm69WTCfpjlNudm+Y1VWHcHQi/TinVjt3+rF0QTCxF vSP3W67z6YwJzgsitxMH/EsCmbXL8D5ST08rdDzz07r7HIkC6uxy2HPHOszB5ovX4WS5 CSA1r0g5+1deXjYdFvXSfzoLOxVWMjBkOjnaHkulyJqYalxsew3RKZp0hWBEGPAspCs6 FKxWx8xwoC8cuYIn1G7mxQA/IjRCyTbWp5nM9+7IoX74TLQJQ3Yjdg6lQpfJF5ATcZUZ +BRw==
X-Gm-Message-State: AC+VfDweQKQqdlJ8uDFNnu4trGDsUEFmJmxaLti1oQExEeu9t0Qy4/n1 nPsvXG4J2kuaHOn+7BEmJW4uk5FROpM=
X-Google-Smtp-Source: ACHHUZ4UZK59NoMe+3Q6Yil4KRcw4RBtO1kT4U4KHU+A3+hQyoto05av8ETFWsAAjIr1X+MMM+PlUg==
X-Received: by 2002:a2e:7819:0:b0:2b4:7fc5:21ab with SMTP id t25-20020a2e7819000000b002b47fc521abmr19062650ljc.51.1687968671333; Wed, 28 Jun 2023 09:11:11 -0700 (PDT)
Message-ID: <5a7896dd-2f76-d043-bcd3-a40526766465@gmail.com>
Date: Wed, 28 Jun 2023 18:11:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0
Subject: Re: fcntl() fails to pass option flags to fs-ext handler
Content-Language: en-US
From: djg...@delorie.com (J.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com])
To: djgpp@delorie.com
Cc: gvanem@yahoo.no
References: <7cb7c635-4f9f-6904-6171-264266ef4fb6@gmail.com>
In-Reply-To: <7cb7c635-4f9f-6904-6171-264266ef4fb6@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 82
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-1PF8gh1F5bG3DD8KYbHBr26bH+NVrsIgQBy1dnivKhQKadV208Et8HWXQyfkb0JTFHH0xC0Y3J6p2dN!ruieq44Q2c+eBF5qHHCACTyIGPc/EHPemglU+XngQh8597eotZCcCc8z91fcI5UGMWHDdCPSMeVt
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Received-Bytes: 5739
 by: J.W. Jagersma (jwjag - Wed, 28 Jun 2023 16:11 UTC

On 2023-06-28 17:04, J.W. Jagersma wrote:
> Hi all,
>
> I was trying to make a non-blocking socket in Watt32 via:
>
> fcntl(sock, F_SETFL, O_NONBLOCK);
>
> To my surprise, it did nothing. Replacing fcntl() with fcntlsocket() does set
> the flag correctly, but that's not a portable solution.
>
> Looking at the libc code, I see the fsext handler is invoked via:
>
> int
> fcntl(int fd, int cmd, ...)
> {
>
> /* ... */
>
> func = __FSEXT_get_function(fd);
> if (func)
> {
> int rv;
> if (__FSEXT_func_wrapper(func, __FSEXT_fcntl, &rv, fd, cmd))
> return rv;
> }
>
> /* ... */
>
> }
>
> From what I can tell, the flags (in va_list) are never passed through to the
> fsext handler. Has this ever worked? It seems like a bug to me.

I see ioctl() suffers from the same issue (and doesn't even pass cmd).

If I may propose a patch:

diff --git a/src/libc/compat/ioctl/ioctl.c b/src/libc/compat/ioctl/ioctl.c
index f4382755..182be1a6 100644
--- a/src/libc/compat/ioctl/ioctl.c
+++ b/src/libc/compat/ioctl/ioctl.c
@@ -336,8 +336,17 @@ int ioctl(int fd, int cmd, ...)
** see if this is a file system extension file
**
*/
- if (func && __FSEXT_func_wrapper(func, __FSEXT_ioctl, &rv, fd))
- return rv;
+ if (func)
+ {
+ char *arg;
+ + va_start(args, cmd);
+ arg = va_arg(args, char *);
+ va_end(args);
+ + if (__FSEXT_func_wrapper(func, __FSEXT_ioctl, &rv, fd, cmd, arg))
+ return rv;
+ }
va_start(args, cmd);
diff --git a/src/libc/posix/fcntl/fcntl.c b/src/libc/posix/fcntl/fcntl.c
index e08ffe2b..1d43c0ff 100644
--- a/src/libc/posix/fcntl/fcntl.c
+++ b/src/libc/posix/fcntl/fcntl.c
@@ -281,8 +281,13 @@ fcntl(int fd, int cmd, ...)
func = __FSEXT_get_function(fd);
if (func)
{
- int rv;
- if (__FSEXT_func_wrapper(func, __FSEXT_fcntl, &rv, fd, cmd))
+ int rv, arg;
+ + va_start(ap, cmd);
+ arg = va_arg(ap, int);
+ va_end(ap);
+ + if (__FSEXT_func_wrapper(func, __FSEXT_fcntl, &rv, fd, cmd, arg))
return rv;
}

1
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor