Go to:  Davar site entry | Site contents | Site index | Miscellaneous | Downloads | Text bottom

CONVLNK  Link  List  Conversion  and  Management

CONVLNK program (and the system of batch scripts that has been built around it) was developed for conversion (and management) of multiple link lists by providing the following functionality:

Historically development was done in the reverse order — CONVLNK has grown from the necessity to maintain links on my web site.  This has been a major pain in the neck for me for quite a long time.  Despite their seeming simplicity, link lists are rather hard to maintain — links come in abundace, and sometimes go away pretty quickly — keeping track of them, and keeping them in some order is a task in itself, and at periods can consume plenty of time, and become quite frustrating.  I believe that selection of content-rich links has a real value by itself, and is also an essential complimentary part to the main content of the web site.  I've always tried to at least keep what came my way more or less complete and in a relative order... and failed time and again.  The task was overwhelming and stood on the way of working on the site content, and thus inevitably got postponed, and eventually neglected.

Another problem was maintaining bookmarks (favorites) saved while browsing the web.  Some of them were related to the content of my web site, and had to be moved later to the corresponding link pages.  Others were not related to the site, but were worth keeping to facilitate navigation through the web, and required some sort of organization to be useful.  Browser offers the ways to organize link hierarchy and to move links within it (drag-and-drop or cut-and-paste).  Thus browser saved bookmarks could serve the dual purpose:  accumulation space for the new raw links, and organized hierarchy of selected links — personal web directory.  This is quite sufficient in most cases, but for those who spread their job over several computers it presents additional, and not easily solvable problem of synchronizing and merging link lists across diffrent computers.

There was yet another challenge — Netscape's Personal Toolbar — extremely effective tool when used properly, which could provide the top level navigation within local and remote sets of links.  It too imposed the same problems of organization and synchronization.  And though for the Personal Toolbar these problem were on a much lower scale than for the bulk of general bookmarks, Personal Toolbar by its nature created yet another problem for me — it differed slightly from computer to computer in the links to some local resources that were located on different drives at different machines.

I've been trying for years to resolve the first problem — management of the web site link selections.  I couldn't even dream of ever approching to the other two problems — so ovewhelming the first one was.  At certain moment in time after much trial-and-error I came up with the HTML format for the link list that provided resonable functionality and was as simple as I was able to make it.  Minimal HTML format here as links not insertion


<HR><!---------------------------------------------------------------*
    <A NAME="..."></A>
             |
             Section name (always specify, even if currently not used)
    &nbsp;<A HREF="___.HTM"><B>...</B></A>
                   |           |
                   Linked file Linked section title (and NAME above)

    &nbsp;<FONT COLOR=Teal><B></B></FONT>
                              |
                              Non-linked section title
<BR>&nbsp; &nbsp; &nbsp;
    <A HREF="">
       </A>
       |     Link URL between quotes (and section title in NAME above)
       Link name (and comment after the tag)
 -->
        

Links Management System Finalized

1. When your links are processed and uploaded by PROCLNK, corresponding *.TXT file will go up along with the *.HTM files. Thus *.TXTs can be saved anywhere, and updated on the fly when necessary. This gives a complete handle on the REMOTE personal links.

2. LOCAL personal links - universal substitute for the "Personal Toolbar" (see C:\VLAD.HTM) are handled by PERSLNK. Create your own prototype from C:\VLAD.HTM - pretty obvious, and use C:\CONTROL\VLAD.TXT as a model for defining your personal toolbar links. Those are by their nature always local (never uploaded), might be computer-specific (I doubt any of you will need this - I have an impression that you work with huge C:  drives keeping it all). I've made it my home page, so whenever browser opens, I have my basic links ready to move around. Though there is no actual limitation to the size of this autogenerated page it makes sense to keep it relatively small, and push the bulk of the links to the lower levels.

C:\#-BASE.ID - Sample computer identification file. Needed only if your info resources referenced from LOCAL personal links are located on different drives, i.e., if you need replacements of variables for drive letters in *.TXT file (see PERSLNK).

C:\VLAD.HTM - LOCAL personal links *.HTM file. Use as a prototype of your own, ignoring everything within Links Start/Finish comment (it will be substituted by links generated from your own C:\CONTROL\VLAD.TXT file). File name can be anything that you'll choose, of course, but don't forget to make proper adjustments to PERSLNK.BTM batch script.

C:\CONTROL\VLAD.TXT - LOCAL personal links *.TXT file. Just to get the idea what might go there.

C:\4DOS - 4DOS directory - all scripts run under if. Just execute 4DOS at command prompt and it will be installed until session get closed. Hit [F1] to see excellent help, if you are curious what it is.

LINK-DAV - Conversion of all updated link lists within the local image of the web site. Uploading of converted links is done by the separate script that calls LINK-DAV before actual uploading of the local site image updates to the remote site.  However, the LINK-DAV script is a stand-alone one, and can be executed any time from the 4DOS command prompt to update all links of local site image.

PROCLNK - Conversion and uploading of all updated link lists within the directory of the local image of remote personal links.  This is very useful when there's a possibility that you might require to access your personal computer other than yours:  job, class, library friends, etc.  Customize the script to your preferences by adjusting parameter defaults.  Script is very quick as it works only with what has been changed, so it can be run virtually after every change, if necessary. Script asks for the password for uploading links to your web space — it's a bad practice to hardcode a password (though pretty tempting) — a small convenience that might result in a big security troube.  There's an option to suppress uploading of converted links.

PERSLNK - Conversion of personal local link list (functional substitute of "personal Toolbar").  Being local those links are never uploaded.  Their *.TXT plain text source is stored and updated in the directory synchronizable across the group of computers, while *.HTM converted links are placed into the root to avoid synchronization (after conversion they might become computer-specific. If you don't need replacements, just substitute ALL lines that select command for the computer, e.g.: IF EXIST C:\#-BASE.ID CONVLNK %File_Name%,INT=E/INF=H with the SINGLE line: CONVLNK %File_Name% Can be run any time you need it. I call it from daily backup script to make sure links are always up to date.

C:\PBASIC\CONVLNK.* - Program BAS and EXE files. BAS starts with detailed description and has plenty of comments.

C:\DAVAR\LINKS\*.* - My REMOTE personal links. Use as format prototypes.

C:\DAVAR\... - All Davar site LINKS.TXT and LINKS.HTM files.

PBASIC - Program and debugging stuff (demonstrates all special cases): CONVLNK - Program LINKS-n.* - Debugging for 1,2,3 sections (*.TXT - source, *.HTM - target with links inserted) LINKS-3R.* - Debugging for 3 sections with Regular font (shows non-italic font version) LINKS.* - Larger size debugging (shows more or less realistic internal navigation bars)

DAVAR\LINKS - Personal links known by file name (presumably in the Personal Toolbar), but non-accessable via directory listing (I've placed the redirector to site entry). To handle them more easily I've placed simple list VLAD.HTM (to be placed in Personal Toolbar).

To maintain personal links (that you are welcome to keep at www.davar.net/LINKS and anywhere locally) I'm completing batch script PROCLNK. It operates on entire local directory, finds updated *.TXTs, converts and inserts them into corresponding *.HTMs (complains, if can't find), and uploads modifications to the web site for easy access from anywhere. All in one shot. Password entered dynamically - don't want to store it anywhere for security reasons. You'll get it today or tomorrow - it's written and basically works, but I have to get rid of a couple of glitches and do more intensive testing.

Copy with new name that you need. Change title, edit dates and file name - first 3 lines. Change title in ... Change Author Change mailto:

That's it. Don't care about anything else in this file, just prepare corresponding *.TXT link file - script (will send it out tomorrow) and CONVLNK will take care of everything else.

I hope this will make finally possible for you as it did for me to "drop" the "drag" of this endless frustration of inability to effectively handle and use the link collections.

My special thanks to Daniel who prompted me the idea of "insertion" (that's the heart of the entire system) while we were working on somewhat similar system of converting quotes selections for him. This quotes stuff still have to be finished, but along with the central idea it gave me the initial push, as well as the initial raw code patterns.


Below there is a brief description of CONVLNK operation modes extracted from program text.  Please look through it in order to understand the basic program functionality and the use of its control parameters.  You can get more details about CONVLNK program and examples of its functioning in the PowerBASIC section.


' CONVLNK(2.1)  Conv Plain Text Link List into HTML    02/11/2003-05/28/2003
' --------------------------------------------------------------------------
' Copyright (C) 2003 by Vladimir Veytsel                       www.davar.net

' Type ---------------------------------------------------------------------

'    Procedure

' Parameters (up to 2 Optional Separated by "," or " ") --------------------

'    1. Name of the links TXT/HTM file (Deflt:  LINKS in the CURRENT direct)

'    2. Replacement specification (Default:  No replacements)
'       Form:   <Key_1>-<Val_1>/<Key_2>-<Val_2>/<Key_3>-<Val_3>...
'       E.g.:   INT-E/INF-H
'       ("-" is used instead of "=" to simplify setting it via environment)
'       Up to 10 replacements may be specified as the second parameter.
'       Replacement might be necessary only for conversion of personal
'       links that are used instead on Netscape's "Personal Toolbar".
'       They provide the mechanism to specify local drives for the local
'       links, so that the same *.TXT personal links file could be adjusted
'       to the specific computer at the time of links conversion.

' TXT Links File Format ----------------------------------------------------

'  - First line is always a title, last 10 positions of which represent
'    link list modification date to be inserted into the <name>.HTM file
'    first and second lines.  Title should be delimited from dates by
'    at least TWO spaces.  Year is inserted in the right part of the
'    Copyright range if one is found.

'  - Any blank lines are ignored (serve as convenient vertical visual
'    delimiter) - link formatting is controlled by the indentation only.

'  - Any lines starting with "*" (which might be preceded by spaces)
'    are ignored.  This permits to imbed any comments within <name>.TXT
'    links file as well as to comment out certain lines.

'  - Line consisting of all "=" terminates reading of plain text links
'    file.  This permits to keep any links yet to be verified below
'    this EOF line.

'  - If replacement is specified, every *.TXT line is checked for the
'    presence of every specified %<Key_x>%, and, if found, it gets
'    replaced by the corresponding value.  This permits to tune personal
'    links during conversion (substitute for "personal toolbar") according
'    to the specific computer where it has to be used.
'    E.g.:   Manual (vendor manuals) | file:///%INF%:/Manual/HTM
'    The "Manual" directory is located on different drives for different
'    computers of the group, and using %INF% parameter in *.TXT permits
'    to replace it with the proper drive letter at the time of conversion
'    (conversion batch script has to take care of that).

'  - Unindented lines are section headers in the form of:
'    <text> [(<comment>)] [| <URL>]
'    <text> represents the name of the section (preferably short, since
'           it goes into top and bottom internal navigation bars),
'    <comment> is optional (might be useful to explain short section name),
'    <URL> is optional and, if used, provides the link to the related
'          section of the same web site (directory structure), where
'          the <name>.HTM links page is located.

'  - Indented lines (indent size is irrelevant - at least one blank
'    is sufficient) are links in the form of:
'    <text> [(<comment>)] | <URL>
'    <text> represents the name of the link,
'    <comment> is optional,
'    <URL> provides link to the named page.

'  - The most obvious way to specify the URL is to specify it complete
'    with the protocol, i.e., "http://www.davar.net", not "www.davar.net".
'    However, it's obvious that close to 100% of all URLs will always
'    start with "http://", and it's pointless and wasteful to specify it
'    each time.  Exceptions, though negligible in volume, are still very
'    important, so, while assuming the "http://" as a default, the following
'    rules are used to handle the exceptions:

'    - If URL starts with the "_" (protocol is not necessary),
'         then "_" is trimmed away and the rest of URL is taken as is -
'              this covers rare, but vital case when it refers to the
'              page within the same directory structure.
'    - If URL contains "://" (protocol is specified explicitly),
'         then URL is taken as is - this covers the cases when either
'              "http://" is already specified (e.g.:  got there by
'              cut-and-paste), or another protocol is necessary for
'              this link, e.g.:  "https://", or "ftp://", or "file:///"
'    - If none of the above conditions is met (protocol is defaulted),
'         then "http://" is inserted in front of specified URL.

'    Note:   The above doesn't apply to section links - they are needed only
'           for cross-references (if any) within the same web site (directory
'           structure), and for this reason are always taken as is.

'  - E.g.:

'    Client / Server Links  (DAVAR\CS\LINKS.TXT)  09/27/2001-08/29/2002

'    Reference | REFER/REFER.HTM

'     On-Line Dictionary of Computing | wombat.doc.ic.ac.uk/foldoc
'     Dictionary of PC Hardware and Data Communication Terms | www.oreilly...

'    UNIX

'     UNIX References (HTML and PDF, University of Northern Carolina) | help...
'     UNIX Commands (University of Central Florida) | www.acs.ucf.edu/man...

' HTM Links File Format ----------------------------------------------------

'  - HTML prologue of the <name>.HTM links page that is finished by the line
'    "<!-- Links Start -->" (possibly padded with blanks on on both or any
'    side).  Indent of this line (if any) is used as the BASE indent for
'    all converted links.

'  - List of links to be substituted by the newly generated from <name>.TXT
'    file.  Note:  There is no <HR> before the FIRST section.

'  - E.g.:

'    <CENTER><FONT SIZE=4 COLOR=Red><B><U>Client / Server&nbsp; Links</U></B></FONT></CENTER>
'    <BR><!--------------------------------------------------------------->
'        <A NAME="Reference"></A>
'        <TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0>
'          <TR>
'            <TD>&nbsp;<A HREF="REFER/REFER.HTM"><I><B>Reference</B></I></A></TD>
'            <TD ALIGN=Right>
'              <I>
'                <FONT COLOR=Green>Go to:</FONT>&nbsp;
'                                          <A HREF="#UNIX">Next sect</A>
'                <FONT COLOR=Green>|</FONT>
'                                          <A HREF="#Bottom">List bot</A>
'              </I>
'            </TD>
'          </TR>
'        </TABLE>
'        &nbsp; &nbsp; &nbsp;
'        <A HREF="http://wombat.doc.ic.ac.uk/foldoc/index.html">
'           On-Line Dictionary of Computing</A>
'    <BR>&nbsp; &nbsp; &nbsp;
'        <A HREF="http://www.oreilly.com/reference/dictionary/">
'           Dictionary of PC Hardware and Data Communication Terms</A>
'    <HR><!--------------------------------------------------------------->
'        <A NAME="UNIX"></A>
'        <TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0>
'          <TR>
'            <TD>&nbsp;<FONT COLOR=Navy><I><B>UNIX</B></I></FONT></TD>
'            <TD ALIGN=Right>
'              <I>
'                <FONT COLOR=Green>Go to:</FONT>&nbsp;
'                                          <A HREF="#Top">List top</A>
'                <FONT COLOR=Green>|</FONT>
'                                          <A HREF="#Reference">Prev sect</A>
'                <FONT COLOR=Green>|</FONT>
'                                          <A HREF="#Solaris">Next sect</A>
'                <FONT COLOR=Green>|</FONT>
'                                          <A HREF="#Bottom">List bot</A>
'              </I>
'            </TD>
'          </TR>
'        </TABLE>
'        &nbsp; &nbsp; &nbsp;
'        <A HREF="http://help.unc.edu/index.xsp?id=1603&trail=1146,1603&sort=score&">
'           UNIX References</A>&nbsp; (University of Northern Carolina – HTML and PDF)
'    <BR>&nbsp; &nbsp; &nbsp;
'        <A HREF="http://www.acs.ucf.edu/manuals/unix/commands.html">
'           UNIX Commands</A>&nbsp; (University of Central Florida)
'    <BR>&nbsp; &nbsp; &nbsp;
'        <A HREF="http://www.acs.ucf.edu/manuals/unix/email.html">
'           E-Mail</A>&nbsp; (University of Central Florida)

'  - HTML epilogue of the <name>.HTM links page that is started by the line
'    "<!-- Links Finish -->".

' Action -------------------------------------------------------------------

'  - Reads <name>.TXT file and saves section titles to be used for
'    generating of the internal navigation links.

'  - Reads <name>.HTM file until it encounterers the line
'    "<!-- Links Start -->".  Every line of input file <name>.HTM gets
'    copied to temporary file <name>.ZZZ; modification date in the first
'    two lines being substituted by modification date from <name>.TXT file.

'  - Skips all lines of <name>.HTM file up to "<!-- Links Finish --> line.

'  - Writes top internal navigation bar to the <name>.ZZZ file.

'  - Converts all links in <name>.TXT file writing their HTML text to the
'    <name>.ZZZ file.

'  - Writes bottom internal navigation bar to the <name>.ZZZ file.

'  - Writes to the <name>.ZZZ file "<!-- Links Finish --> line.

'  - Reads <name>.HTM file up to its end copying every line to <name>.ZZZ
'    file.

'  - Deletes <name>.HTM file.

'  - Renames <name>.ZZZ file file into <name>.HTM file.

' Notes --------------------------------------------------------------------

'  - CONVLNK serves to support the 2-level link hierarchy that is quite
'    sufficient for most practical purposes.

'    1. Link page    within the web  site.
'    2. Link section within the link page.

'  - To avoid any possible problems with the presentation of delimiter lines
'    "<!-- Links Start -->" and  <!-- Links Finish -->" text of lines read
'    gets converted to the upper case before testing for delimiter line,
'    all successive internal spaces get compressed to single space, and
'    external spaces get truncated.

'  - If the line that immediately precedes the "<!-- Links Start -->"
'    delimiter line ends with "<I>", internal inter-section navigation
'    bars at section title get italicized.

'  - CONVLNK is supposed to be triggered by batch script that checks if the
'    <name>.TXT file date-time is later than that of the <name>.HTM file,
'    in which case CONVLNK is called to refresh the <name>.HTM file.

'  - This procedure presumes that ALL changes to the links list are done
'    ONLY in the corresponding <name>.TXT file.  Any direct changes to the
'    links body of the <name>.HTM file will be overwritten by the nearest
'    CONVLNK run.

'  - CONVLNK also is suited to be run from command line to convert the
'    individual links file.  In this case the most simple way is to run
'    CONVLNK within the current directory of the links file.

'  - CONVLNK operation is controlled by processing flags that are defined
'    separately as string constants and are expected to be present in the
'    <name>.HTM file.  Their absence in an anticipated context will yield
'    an unpredictable results.
  

CONVLNK program should be run from the DOS session and within the current directory of photo image files that have to be renamed.  Presuming that CONVLNK.EXE was downloaded to C:\PBASIC directory, that picture files were moved from the cartridge to the F:\P-020511 directory, and that most of the pictures from that cartridge were taken in Ridgewood, NJ, the sequence below presents a typical example of CONVLNK operation.

CONVLNK operation is illustrated below by a series of vital data snapshots.

And finally, several recommendations from my experience of using the Link Conversion and Management system described above.  These advices might be of some use to you before you'll figure out what your own preferences are.


View CONVLNK program description       Download CONVLNK.EXE file
(Use [Back] button or [Alt]+[CL] to return here from the viewed page)
Copyright © 1999–2002 by
Go to:  Davar site entry | Site contents | Site index | Miscellaneous | Downloads | Text top