From owner-mint@fishpool.com Wed Jun 7 02:40:41 2000 From: "Guido Flohr" Date: Tue, 6 Jun 2000 23:51:58 +0200 To: MiNT list Subject: Re: [MiNT] Longfilename support functions? Message-ID: <20000606235158.H1626@zowee.kosmos.all> Reply-To: guido@freemint.de Mail-Followup-To: MiNT list References: <009d01bfcaee$53dc0aa0$0501a4c0@espace.cz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="xHFwDpU9dbj6ez1V" X-Mailer: Mutt 1.0.1i In-Reply-To: <009d01bfcaee$53dc0aa0$0501a4c0@espace.cz>; from opichals@alpha.inf.upol.cz on Wed, May 31, 2000 at 12:52:05PM +0200 X-Hello-To-Secret-Service: Bombs Terror Ghaddafi PGP Marx Engels Lenin Che Guevara Fidel Castro Anarchy Porno Punk Saddam Password Mafia Peter Graf X-Operating-System: Linux zowee 2.2.14 Sender: owner-mint@fishpool.com Precedence: bulk X-Loop: mint@fishpool.com --xHFwDpU9dbj6ez1V Content-Type: text/plain; charset=us-ascii Hi, On Wed, May 31, 2000 at 12:52:05PM +0200, Stanislav Opichal wrote: > Hi! > > > You could use Fxattr() (with "follow links" flag on) on the file. If dev > > and index are identical to an already opened group's file, don't open it > > again. This will not only work for different cases in filenames on > > filesystems not regarding case, but also for symbolic links. > > OK, thanks! Will this work with filesystems like TOS/VFAT (and both on MiNT and Magic) that don't record a file index? If you can live without driver letters (i. e. not "c:\\auto\\mint.prg" but "/c/auto/mint.prg") you can simply use the library function realpath which will resolve not only soft links but also (the special hard links) "." and ".." in pathname components. The function gives you a normalized path name, freed of all that stuff. You still need to check for a duplicate file index to detect hard links (i. e. incarnations of the same file under different names). File systems that offer hard links always record a file index and so this is safe. There is no need to check or remember the device the file resides on because soft links are already resolved by realpath() and there are no cross-device hard links. The manpage for realpath is attached. > Anyway, is there a way to get the right (including letter case) filename > from e.g. VFAT drive? I think VFAT fills in the "real" filename in struct stat/xattr when calling stat()/Fxattr(), no matter how you called the function. But I'm not sure whether this is always true and documented. Ciao Guido -- http://www.stud.uni-saarland.de/ Send your spam to president@whitehouse.gov and your replies to mailto:guido at freemint dot de --xHFwDpU9dbj6ez1V Content-Type: application/x-gunzip Content-Disposition: attachment; filename="realpath.3.gz" Content-Transfer-Encoding: base64 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 --xHFwDpU9dbj6ez1V--