From: "John M. Aldrich" 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 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk 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 > 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... | ---------------------------------------------------------------------