
Version History


(Anywhere I say "see section foo" that refers to the a section in the
file README.txt)

CHANGES
-------

changes from version 3.0 to 4.0  (This was going to be 3.1, but there
were so many significan changes that I bumped the number up.)

  Added DISPLAY variable to list of allowed tags in the urlmonrc file
(thanks to Bill Dyess <bill@dyess.com> for the patch).  This allows the
user to set what string gets printed by urlmon when a give URL has
changed.  More information and an example can be had in URLMONRC.txt

  The last release of urlmon allowed you to define your own filters (see
FILTERS.txt), but it didn't give an easy way to do so without modifying
the urlmon code itself.  Version 4.0 allows you to manipulate the
filtercode array by defining a library file in the urlmonrc file with the
CODE= tag.  See FILTERS.txt for more information.

  When urlmon runs in parallel, it needs to communicate the updated URL
information from the child monitoring processes to the parent executive
process.  Previous versions used temporary files.  This version has
experimental SysV IPC support, to avoid having to use /tmp files,
something I though was ugly as well as a potential security problem.
To enable it, you must find the line that says

$sysv = 0;

and change it to

$sysv = 1;

You must also install the IPC::SysV perl module from CPAN
(http://www.perl.com/CPAN/).  Also, your system must have SysV IPC
support. 

  Fixed usage of escape and unescape when passing data from children to
parent.  Duh. 

  Added debug() routine so that debugging statements can be controlled
more granularly.  Goodbye '$opt_d and print ...' statements. 

  Modified print_urls ('-p') to print more of information kept in urlmonrc
file.

  urlmon can now take URLs from standard input.  As a result, the
comment handling code was changed, so keep an eye on it. 

  Fixed bug in the logic that decides what filter to use (if none was
provided, or the current one is inappropriate).  Right now, '-s' will
force timestamps into checksums, but will not force anything else (e.g.
regexp) to checksums (because the already are checksums, of sorts). 

  Reworked the splitline() code to handle blank entries in the urlmonrc
file (i.e. COMM= is allowed).  Keep an eye on it. 

  Thanks to Robert Richard George 'reptile' Wal <reptile@reptile.eu.org>,
some bugs in the filtercode regexps have been fixed. 'reptile' also added
a method to view urlmon's progress using 'ps -aux | grep urlmon' on the
command line.  Pretty cool!

  I realized that 'pararegexp' filtercode is incorrect.  It didn't do
anything wrong, but did something silly.  Now, it simply applies its FARG
argument (a Perl pattern match) against the entire contents of the URL,
which is what it used to do.  It used to set the $/ variable to '', but
that was completely irrelavant.  It is misnamed, but since it has
documented, it is now Correct (TM).

  The 'regexp' filtercode now takes one or more s/foo/bar/ arguments,
applying each one at a time to the URL content.  This way, you can remove
multiple line from the URL content, or do substitutions that are too
complicated to do in one s/// line.  This works for pararegexp, too


Changes from version 2.3 to 3.0

  Finally, I've implemented filters.  Thanks to many people, especially
Markus Kohler, for the suggestion.  It wasn't as bad as I thought.  See
the file FILTERS.txt for info.

  In the process of doing that, I've cleaned up more code.  Implementing
filters forced me to streamline and generalize the way modifications to
URLs are detected, which allowed me to eliminate a lot of redundant code.

  The format of the urlmonrc file has drastically changed!!!  It is now
more flexible, so the format should never have to change ever again.  But
running old versions of urlmon on files with the new format will cause
BAD THINGS to happen, so don't do.  (nscape2urlmon was updated to use the
new file format.)

  When running with the '-c' flag, errors are now printed on standard error
instead of being silently ignored.  This is so that scripts using urlmon
can detect what URLs had error specifically.  Remember, you can just pipe
STDERR to /dev/null if you want.

  The version info was removed from the README.txt and placed in this
file, CHANGELOG.txt.  A description of how to use the filters is in
FILTERS.txt.  See URLMONRC.txt for a full description of the new urlmonrc
format.


Changes from version 2.2 to 2.3:

  Bug fixed that printed "Errors:" even when there were none.

  Fixed array to hash conversion in 'read_in_state' that gave "Odd number
    of elements in has list" (I think this was the error.  Either way,
    it's fixed.).

  Added ability to write out file to current directory in the that the
    URL has changed.  This code is still kind of iffy, so don't use it
    for anything important. See section 3k

  Added different return codes based on what happened, useful when 
    running in 'curt' mode (-c).  The return codes are:
      0 for no new URLs, modified URLs, or errors
      1 for modified URLs detected
      2 for new URLs added to database 
      3 for modified URLs detected, new URLs added
      4 for errors
      5 for modified URLs and errors
      6 for new URLs and errors
      7 for all three

  Added rudimentary file locking so urlmonrc file doesn't get corrupted


Changes from version 2.1 to 2.2:

  Bug fixes: warnings when adding new URLs, illegal div by 0 when
printing urlmonrc file, failure to load environmental proxy variables

  Added support for username/passwd pairs for doing basic http
authentication.  See section 3j. 

  Wrote companion script, nscape2urlmon, to merge a Netscape bookmarks
file into a .urlmonrc file.  This is a precursor to allowing urlmon to
actually use a Netscape bookmarks file as urlmonrc file.  There is one
big problem, and that is figuring out how Navigator determines last
modified info. if the server doesn't provide it.  See the source code for
more information. 

Changes from version 2.0 to 2.1:

  Added parallel URL monitoring.  See section 3i.

  Added proxying support.  See section 3g.

  Added ability to set a timeout.  See section 3h.

  Coding improvements, optimizations, and the fixing of some braindead
algorithms :)

  Wrote accompanying program called ns2urlmon that will convert a
Netscape Bookmark file to a urlmonrc file.  See its source code for
further details and usage.

Changes from version 1.0 to 2.0:

  Removed part of the 'normalization' code.  See section 4.

  Added support for commenting urlmonrc file.  See Section 3f.

  Fixed what urlmon tells web server as its 'agent name'.

  The urlmonrc file now does not default to '~/.urlmonrc', but,
is dependent on what urlmon is invoked as.  See section 3b.

