DOS-based symbolic links

Aitor has started a new project called LinkLib that will provide a standard way for DOS apps to use symbolic links. This is based on a variant of what the SEAL developers are working with. Here is Aitor's announcement:


I have realised that Seal developers are using symbolic links, something which is actually very convenient. I myself am using symbolic links as well for Inspector (a filemanager I am building, and which source I am preparing to release, see the link below for a testing release: http://inicia.es/de/aitorsm/FreeDOS/DwnLoad/Inspect.zip).

My links were not too different from those used by Seal, so I have decided to unify criteria, and thought that this is also interesting for ALL the UIs that are DOS-based, or related to FreeDOS.

Therefore, I want to announce a small project, called 'LinkLib', which intention is to create some kind of standard unified libraries to manipulate symbolic links, so there are symbolic links for everybody. I hope this helps some cooperation between UIs developers, and the rest of FreeDOS developers.

The link file specification, which is discussed below, is 90% that of Seal, with a very slight modification.

I have written some C code for it, but I would like to discuss the specs with you, FreeDOS developers. And yes, there will be some (Borland)Pascal counterpart as well, for those UIs (like DWIN) which are written in this language.

I am planning to create in the future small commandline tools (startlk and createlk) to manage links from the commandline, and to include them in a small package.

I hope you liked the idea... I am open to every kind of suggestions... Please, read briefly the specs below, and give your opinion!

-Aitor


The link specification:

Extension:

(1) The most descriptive one would be that of M$-Windows, this is, .lnk The problem with this is that FreeDOS.lnk's could be then confused with Windows.lnk's, when you install a FreeDOS GUI to run under M$-Windows. But perhaps we shouldn't care...

(2) Seal uses this and also .ldv (link to a device), but the format of the link does not differ from the other, this is, Seal.lnk seems equivalent to Seal.ldv in its contents. I suggest using a unified name, so that the program that uses them should be up to determine if the target is a device or not.

(3) To avoid problem (1), I used to call .vlk (virtual link) the links in Inspector

So, what do you think?

File Contents:

I have sticked to Seal convenction, with two small modifications:

[definition]
link="C:\DOS\EDIT.EXE"
icon32="editor.pic"
startdir="C:\DOS"

The two modifications from the Seal standard that I suggest are:

(a) the backslashes replace the slashes. I think it is more appropiate (and easier to program) if the links use the backslashes, as we are programming for a DOS world. This way you can do directly a system() call.

(b) I simply added the field 'startdir', which states the directory where the program should be started to work properly. This doesn't affect at all presentday Seal links

I would like to know what do you think about these two modifications, and if you can imagine others. Well, I suppose that in the future we should include icon16, icon8 or whatever...

I am specially interested in knowing from Seal developers about (a), and also about all the other UI developers. Of course, Seal developers can continue to use their libraries (or slightly modified ones) that they are currently using. But this way, everybody can make use of symbolic links.