Re: [PATCH] Use O_BINARY to detect whether to pass "rb" to popen

Eli Zaretskii <[email protected]> Thu, 21 May 2015 20:09:43 +0300
Newsgroups gmane.comp.gnu.utils.bugs
Message-ID <[email protected]>
> Date: Thu, 21 May 2015 09:36:18 -0700
> From: Filipe Brandenburger <[email protected]>
> Cc: [email protected], [email protected], [email protected]
> 
> I think checking for whether popen accepts "rb" / "wb" is fine, but if
> it's done, I think it should be done in gnulib and then gnulib could
> provide one that accepts it regardless.
> 
> However, this was attempted before and rejected because it would
> consider glibc as "broken" since it's actually the only one that
> doesn't accept it...

Ahm...

> The problem is that it's currently impossible to cross-compile
> sharutils without butchering the build system.
> 
> For instance, this is what Gentoo does to the "configure" script after
> it's generated:
> https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-arch/sharutils/files/sharutils-4.14-popen-rb.patch?view=markup

AFAIU, you are saying that the popen-binary test relies on running a
program, which of course is a cross-compilation killer.

> > (One reason why you may wish to leave that configure test is that many
> > modern platforms support "rb" and "wb" in calls to 'fopen', but not in
> > calls to 'popen'.  AFAIR, glibc doesn't support binary modes in
> > 'popen'.)
> 
> I think *all* of them support "rb" and "wb" to fopen, isn't that part
> of POSIX anyways?

I think so, yes.  But not for 'popen', AFAIK.

> Any suggestions of what's the best way to solve this?

If a better test for popen-binary cannot be written that only compiles
and links a program, then I guess your solution is the next best,
indeed.

Thanks.