1.3.2 Catch-22 in tmpnam/tmpfile with gcc -mno-cygwin

Charles Wilson cwilson@ece.gatech.edu
Thu May 31 06:28:00 GMT 2001


But programs compiled with -mno-cygwin don't use cygwin1.dll (which contains
newlib, which contains the stdio functions).  -mno-cygwin programs will use the
msvcrt.dll runtime -- which has its own implementations of the stdio functions. 
Are you saying that msvcrt's version of tmpnam/tmpfile are broken?  If so,
that's not really our problem...

--Chuck


"John W. Kennedy" wrote:
> 
> Earnie Boyd wrote:
> >
> > Christopher Faylor wrote:
> > >
> > > On Wed, May 30, 2001 at 11:25:41AM -0400, John W. Kennedy wrote:
> > > >At present, gcc option -mno-cygwin is incompatible with tmpfile and
> > > >tmpnam.  When -mno-cygwin is used, at runtime all temporary files are
> > > >put into directory "/tmp", which is incompatible with no-cygwin
> > > >operation unless a writable "x:\tmp" directory happens to exist, where
> > > >x: is the current drive.
> > > >
> > > >The obvious fix would make -mno-cygwin executables sensitive to a
> > > >standard Windows environment variable such as TMP, or at least to an
> > > >ad-hoc environment variable.
> > >
> > > -mno-cygwin produced Microsoft native binaries.  It uses some libraries
> > > from the mingw project, but they are not supported here.  You probably want
> > > to send email to a mailing list mentioned at www.mingw.org.
> > >
> >
> > I'm not understanding this.  What is it that isn't working?  Give
> > examples of your environment, command line and results.
> 
> Any C program using the tmpnam/tmpfile functions (in stdio), and
> compiled with the -mno-cygwin flag, places the temporary file in
> directory "/tmp".  Using this directory name works fine with cygwin.dll,
> because it is mapped to (for example) "C:\Cygwin\tmp", but in
> -mno-cygwin mode, it is interpreted as "x:\tmp" where x: is the current
> drive.  This directory normally won't exist, and may not be writable; in
> either case, the program will fail.  With cygwin.dll, an environment
> variable at run time can override the "/tmp", but there appears to be no
> way to do it with -mno-cygwin.
> 
> In essence, all C programs compiled with -mno-cygwin and using tmpnam or
> tmpfile can be expected to fail.
> 
> --
> John W. Kennedy
> (Working from my laptop)
> 
> --
> Want to unsubscribe from this list?
> Check out: http://cygwin.com/ml/#unsubscribe-simple

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list