delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/05/10/21:18:36

From: "John M. Aldrich" <fighteer AT cs DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Compile probs.... --ACK!! Long file name probl & win 95!!!
Date: Sun, 10 May 1998 21:07:01 -0400
Organization: Two pounds of chaos and a pinch of salt.
Lines: 72
Message-ID: <35564F35.2BAC@cs.com>
References: <35562d4e DOT 0 AT news3 DOT ibm DOT net>
NNTP-Posting-Host: ppp131.cs.net
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

IBM News wrote:
> 
> Yes... I read the FAQ
> 
> I just don't understand what it says...

Which specific part don't you understand?  If we are to explain it to
you (or fix it), we need to know at least that.  If the terminology is
unfamiliar, try the DJGPP Lexicon
(http://www.delorie.com/djgpp/doc/lexicon/).  If it's that you don't
understand how to use DOS, find somebody who can teach you.

> When i run a program (test1.cpp) with # include <iostream.h>
> I get the error : streambuf.h : no such file or directory
> 
> ITs there....  I figure its got something to do with LFN 's....
> 
> what can I do??
> 
> The FAQ tells me to go renaming all my files (that part alone I don't
> understand) and editing my registry.... that seems a little complicated.  Is
> this the way all of you runnign win 95 and djgpp got around this??
> Shouldn't there be an easier way?!?!

The problem is that Windows 95, by default, handles conversion of long
filenames to short filenames in a completely brain-dead way.  When you
unzip 'streambuf.h', the short filename is called 'stream~1.h' instead
of 'streambu.h'.  Therefore, if you don't tell DJGPP programs to use
long filenames, or try to run DJGPP from plain DOS (instead of from a
DOS shell), they will be unable to find the file.

You have four choices to solve this problem:

1) Re-unzip all the DJGPP packages with an unzip utility (like pkunzip
2.04g) that does not use long filenames.  This will make your
installation 8+3 clean, but will prevent you from ever using long
filenames.
2) Copy or rename the troublesome files.  You can type "copy streambuf.h
streambu.h" to get two copies of the same file, one SFN-clean and the
other LFN-clean, or you can "rename streambuf.h streambuf.h", which in
another wonderful example of Windows 95's stupidity, causes a correct
short filename to be generated.
3) "SET LFN=Y" in your environment.  Either add that line to your
'autoexec.bat' or edit the line "+LFN=n" in 'djgpp.env' to read
"+LFN=y".  You will still not be able to run from plain DOS if you do
this.
4) Alter Windows 95's insane default behavior by setting NameNumericTail
= 0 in your registry, then reunzip the files.

The last choice takes the most work, but it's the best because it solves
the problem once and for all.  The third choice is the quickest and
easiest, but it prevents you from using plain DOS.  The second is both a
pain and dangerous from a standpoint of portability, since you'll have
to do it again each time a new C++ library comes out.  The first is
something I do not recommend, because it completely removes any
possibility of using long filenames in your DJGPP programs.

Yes, this is all complex, but it's not DJGPP's fault.  Blame Microsoft
for paying so little attention to the needs of DOS users.

P.S.:  Your email address is invalid.  It's customary to send copies of
all replies via direct email, because not all users read the newsgroup
or subscribe to the mailing list.  If you don't want direct email,
please say so in your posts.

-- 
---------------------------------------------------------------------
|      John M. Aldrich       | A singer in a smoky room / Smell of  |
|       aka Fighteer I       | wine and cheap perfume / For a smile |
|   mailto:fighteer AT cs DOT com   | they can share the night / It goes   |
| http://www.cs.com/fighteer | on and on and on...                  |
---------------------------------------------------------------------

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019