delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2003/07/20/17:39:34

From: Bart Oldeman <bartoldeman AT NOSPAM DOT users DOT sourceforge DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: DJGPP/LFNs/DOSEMU
Date: Sun, 20 Jul 2003 21:05:44 +0000 (UTC)
Organization: BT Openworld
Lines: 40
Message-ID: <Pine.LNX.4.44.0307202150140.20885-100000@enm-bo-lt.localdomain>
NNTP-Posting-Host: dial81-131-49-73.in-addr.btopenworld.com
Mime-Version: 1.0
X-Trace: sparta.btinternet.com 1058735144 12770 81.131.49.73 (20 Jul 2003 21:05:44 GMT)
X-Complaints-To: news-complaints AT lists DOT btinternet DOT com
NNTP-Posting-Date: Sun, 20 Jul 2003 21:05:44 +0000 (UTC)
X-X-Sender: enbeo AT enm-bo-lt DOT localdomain
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hi,

I have added some experimental LFN support on redirected "network"
drives to current testing versions of DOSEMU (download version 1.1.5 from
dosemu.sf.net and patch up to 1.1.5.6 using
http://www.dosemu.org/testing/patchset-1.1.5.6.tgz).

This adds an $_lfn_support option to dosemu.conf which can be on or off.

If the underlying filesystem is VFAT then the short filenames are the
exact ones (obtained using a special Linux ioctl) whereas on ext2 they are
the mangled samba style SFNs. The long filenames are case insensitive but
case preserving.

All functions are implemented except for
        case 0xa6: /* get file info by handle */
        case 0xa9: /* server create or open file */
        case 0xaa: /* create/terminate/query subst */
this is enough for DJGPP -- I tested by compiling the LIBC.

I had to work around one issue with DJGPP: it assumes that the findfirst
handles are non-zero -- where my initial implementation used
0,1,2,3,4,... for findfirst handles. This "findfirst handles are
non-zero" fact(?) is not documented in Ralf Brown's interrupt list.

-- look at this piece of code to see why:
    r.x.ax = 0x714f;
    r.x.bx = ffblk->lfn_handle;
    if(!r.x.bx)
    {
      errno = ENMFILE;
      return 1;
    }
(src/libc/dos/dir/findnext.c)

Testers are very welcome. The old DPMI descriptor leak problem is fixed in
recent DOSEMU development versions too (by Stas Sergeev).

Bart

- Raw text -


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