Re: Self Extractor
- Posted by Juergen Luethje <j.lue at gmx.de> Jun 07, 2003
- 516 views
Hi Kat, you wrote: > On 31 May 2003, at 20:25, Juergen Luethje wrote: > >> >> Hi Kat, you wrote: >> >>> On 29 May 2003, at 9:20, Carl W. wrote: >>> >>>> mistertrik at hotmail.com wrote: >>>> >>>>> I tried using PKUNZIP.EXE, but it can't handle long filenames (truncates >>>>> everything to 8 chars, ie PROGRAMF), and it borks about 3/4 of the way >>>>> through the extraction. >>>>> >>>>> Basically, it needs to be DOS based and not munge up long filenames.. is >>>>> that possible? >>>> >>>> DOS mode doesn't allow long filenames (Microsoft would rather you used >>>> the GUI), but there's a tool out there called LFNDos that will give >>>> access to long filenames in DOS mode. >>>> >>>> Second, grab a copy of the PKZip 2.5 package as this handles long >>>> filenames when it thinks it sees Windows running (LFNDos fools it >>>> successfully). Alternatively get the freeware DJGPP Unzip32.exe and >>>> cwsdpmi.exe (along with LFNDOS) to do the unzipping. >>> >>> <prolly !helpful> >>> It's my understanding you can do LFN in dos7 without windows running, and >>> without any other apps, IF the dos program knows how to stuff the cpu >>> registers for the interrupt call. >> >> Sorry, this understanding is false. There must be an appropriate API for >> Long File Names, and this is *not* provided by (any version of) bare >> MS-DOS. > > I took the time to scan in the book Unauthorized Windows a few years ago... > but it's on zip disk and the puter is too full of hds to plug in the zip > drive... but > in the book, open in front of me, it says if not in real mode, you can switch > to > a protected mode dos and get the LFN API with dos interrupts if you load the > vxd's provided for that purpose. > >> Normally, LFN are only available when IFSMgr (i.e. Windows 95+) is >> running. > > *normally*, but you can load the required vxd's without it. > >> Under bare MS-DOS, they only can be accessed by using special >> TSR programs, such as >> - LFNDOS: http://saturn.spaceports.com/~dosuser/dosutils.htm >> - DOSLFN: http://www.tu-chemnitz.de/~heha/hs_freeware/doslfn.zip >> >> That the DOS program knows how to stuff the cpu registers for the >> interrupt call, is necessary of course, but it's not sufficient. >> a) There must be an API for LFN, *and* >> b) the program must call the proper functions of that API. > > There is an api already. Well, not really, but sorta of, if you know where to > look..... Are you saying, that the authors of LFNDOS and DOSLFN only had to write their programs, because they didn't know where to look? > since all the info for the LFN is on disk, you can still get at it with > bios calls. It's plain visable in disk "hex" editors, like the olde Norton. As > someone who has written tsrs that did bios calls to manipulate the disk and > memory (dos isn't *normally* reintrant), this is easy. The long filename > simply takes up the next space in the FAT, with a byte flag to tell the LFN > driver that the filename it is reading has NOT ended, and to append the > following block to the filename, repeat as needed for whatever filename len is > needed. You can eat up gobs of drive space in filenames alone. Of course, the LFN are somewhere on the disk, and of course they can be accessed. That's what IFSMgr, LFNDOS and DOSLFN do. When I build the functionality of say LFNDOS into my own program, then I don't need LFNDOS any more. But I'm neither interested in, nor have the ability to do hardware programming. >> Point b) is simple for Eu programmers, because they just can use >> my lib http://www.rapideuphoria.com/lfn.zip which does the job >> automagically. > > Kool, thanks, Juergen! > > Kat You're welcome! But this lib ATM needs IFSMgr (or, not yet tested, LFNDOS or DOSLFN) running in the background. If you can tell me, how it can access LFN | in dos7 without windows running, and without any other apps, just by storing the appropriate values in the appropriate cpu registers, and then call the appropriate interrupt, then please tell me these values. No one will be happier than me! Best regards, Juergen -- /"\ ASCII ribbon campain | |\ _,,,---,,_ \ / against HTML in | /,`.-'`' -. ;-;;,_ X e-mail and news, | |,4- ) )-,_..;\ ( `'-' / \ and unneeded MIME | '---''(_/--' `-'\_)