Mail Archives: djgpp-workers/2001/12/29/10:27:49
> From: Eli Zaretskii [mailto:eliz AT is DOT elta DOT co DOT il]
> > From: <wojciech DOT galazka AT polkomtel DOT com DOT pl>
> >
> > How about adding yet again possible value
> > set lfn=a always use LFN API, even if the filesystem
> doesn't support
> > it, the LFN API callee has to handle possible faults on its own
>
> In what situations would this option be useful? If the callee is
> expected to be able to cope with the LFN API calls, then why can't it
> just support function 71A0h and return the LFN supported flag when we
> call it?
>
Let's forget it, it wasn't a good idea. Here's something new
In order to provide the ability for a program (rather than by libc)
to decide how and when use LFN API, here are my suggestions
CHANGE
in include/fcntl.h
#define USE_LFN _use_lfn(0) /* assume it's the same on ALL drives */
to
char (*_use_lfn_handler)(const char * _path);
#define USE_LFN ((*_use_lfn_handler)(NULL)) /* assume it's the same
on ALL drives */
ADD
near the top of src/libc/dos/_use_lfn.c
static _use_lfn_handler = _use_lfn; /* default handler */
Now an application can define its own '_use_lfn' function, for example
char my_use_lfn(const char *_path)
{
if (some_condition_succeed(_path))
return 1;
else
returm 0;
}
int main()
{
...
_use_lfn_handler = my_use_lfn;
...
}
Perhaps this would be useful in cases when the default drive
does not support LFN API while other drivers do (and for some reasons one is
not willing to change from the non lfn-aware drive to the lfn-ware).
Scenarios:
1. Operating system DOS + LAN Manager
A diskless workstation with a floppy drive and readonly network shares
on a volatile network. If one switches to a network share and the
share gets disconnected later then this may cause a problem.
2. Operating system DOS + device driver for ext2fs partition
By using this suggestion to limit LFN API only to the ex2fs
partition it is not necessary to support LFN API for FAT access (which
is not trivial - one needs an intelligent filesystem cache to get it
working fast enough)
- Raw text -