This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GNU coreutils does not work on Cygwin because of freopen() ?


dazjorz wrote:

> - Cygwin didn't have md5sum,

  Cygwin does have md5sum in coreutils.  You can see this at the cygwin
package list:

   http://cygwin.com/packages/

by entering 'md5sum.exe' in the search box.

> - It should work, and "Because I Can" is always a valid reason in UNIX
> world

  However, you may have to recreate all the cygwin-specific patches that the
cygwin bash maintainer hasn't managed to send upstream yet...

> - I'm trying to bootstrap Debian on Cygwin, and coreutils from Debian is
> my first try; getting coreutils from Cygwin may be done later.

  Dunno if your project makes sense.  You'll have to end up porting
everything where the differences in the underlying OS show through... which is
basically what Cygwin package maintainers have already done for most of this
stuff.  Do you mean you're trying to cross-compile Debian on Cygwin, or do you
actually want to build the whole Debian distro under Cygwin to run on Windows
rather than natively under a linux kernel?

> However, I noticed there are some very weird bugs happening. See for
> example, this bug in cat (don't look at the title of the page, I blamed
> bash first)
> http://paster.dazjorz.com/?p=3845
>
> A friend of mine and me have been trying to figure out what causes this.
> First, we tested if it wasn't a bug in open() + fork(). This seemed not
> to be the case. So we started looking further, and we're down to GNU
> `cat` calling freopen(). This is not POSIX-compliant and can cause
> problems like this.

?? Are you using an old version??  It should be fixed by now.

http://www.mail-archive.com/bug-coreutils@gnu.org/msg10188.html

> `cat` and other coreutils tools only call freopen() if O_BINARY is
> defined on this platform. It's defined on Cygwin, because Cygwin makes a
> difference between O_TEXT and O_BINARY.
>
> 1. Why does Cygwin distinguish between O_TEXT and O_BINARY? Shouldn't
> this difference be removed from the Linux API side of Cygwin?

  Nope.  Cygwin runs on windows, which uses CR-LF for line endings, but
Cygwin is POSIX-compliant and uses LF internally.  This is exactly what O_TEXT
was invented for: it translates LF->CRLF on write and CRLF->LF on read.  On
Linux platforms, the native format is LF line-ends, so O_TEXT and O_BINARY are
the same, but not here.

> 2. I don't know why coreutils is calling freopen() at all. Should I
> patch it out completely, or add something like an #ifndef __CYGWIN__
> around the pieces of code in question?

  Well, if you really want to build coreutils under cygwin, why not use
setup.exe to install the corresponding source package, which comes with all
these problems pre-solved for you?

    cheers,
      DaveK

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]