The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
2004-05-08 10:19  epaepa

	* mkdist: Updated for new CVS hostname.

2004-05-08 10:17  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in,
	  lib/exe_wrap.pl: Version 0.5.33.

2004-05-08 10:04  epaepa

	* grab/no/tv_grab_no: Fixed occasional intrusion of HTML into
	  title.

2004-05-08 09:24  epaepa

	* grab/no/tv_grab_no: Fixed episode number handling, I hope.

2004-05-08 09:15  epaepa

	* grab/na_dd/tv_grab_na_dd.IN: Don't write 'duplicate' channel
	  elements for two channels that have the same id.  However, we
	  still have a problem deciding what to do when zap2it gives this
	  data.

2004-05-07 18:33  epaepa

	* grab/no/tv_grab_no: Filter out bad character 25.

2004-05-06 20:16  epaepa

	* grab/no/tv_grab_no: Fixed for more site changes.

2004-05-05 22:24  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: exit before doing any listings if
	  --list-channels add documentation for DD account expirations

2004-05-05 19:15  epaepa

	* Makefile.PL: Added --components option to let you choose what to
	  install on the command line rather than interactively.  As
	  requested by Sagar Shah.

2004-05-05 18:59  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: warn users about wasted bandwidth
	  downloading ignored channels and suggest updating lineup at
	  datadirect.

2004-05-05 14:18  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: doc changes to mention new icon
	  handling

2004-05-04 19:50  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Work around malformed title
	  attribute in source HTML.

2004-05-03 20:47  epaepa

	* grab/jp/tv_grab_jp: Check that the euc-jp encoding is available
	  and that Encode::JP could be loaded - on my box that module seems
	  to silently fail to load.

2004-05-03 19:32  epaepa

	* grab/hu/tv_grab_hu: Marking myself as maintainer since Attila
	  Szekeres is no longer contactable.

2004-05-02 18:20  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: added warning message if
	  tvtoday.de doesn't supply data, don't just die.

	  advise user to reconfigure, if config-file names channel-ids that
	  aren't served by tvtoday.de (anymore)

2004-05-02 18:17  stesie

	* grab/de_tvtoday/channel_ids: adjust to new channel-names used by
	  tvtoday.de

2004-05-02 16:32  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: don't use backslash on windows, not
	  valid XML

2004-05-01 23:07  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: add file:: to icon URI when needed.
	  Also use backslash on windows path.

2004-05-01 16:28  rmeden

	* MANIFEST, Makefile.PL, README, doc/README.win32: remove
	  tv_grab_na from distribution

2004-04-30 01:14  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: minor bug fix

2004-04-30 01:13  rmeden

	* grab/na_icons/tv_grab_na_icons.IN: remove debug code..

2004-04-28 22:53  rmeden

	* MANIFEST: fix filenames to match case fo _na_icon, _na_dd changes

2004-04-28 22:50  rmeden

	* grab/na_dd/tv_grab_na_dd.PL: add proxy support

2004-04-28 19:57  epaepa

	* lib/XMLTV.pm.in: When stripping whitespace from with-lang
	  strings, print the original string for easier debugging.

2004-04-28 19:45  epaepa

	* grab/hu/tv_grab_hu: Remove 'Kb.' from the front of times, as
	  pointed out by Gabor Ziegler.

2004-04-28 19:18  epaepa

	* grab/no/tv_grab_no: Fixed for minor changes on the site.  Try to
	  vaguely work with the old format as well, just in case.

2004-04-28 18:45  epaepa

	* grab/pt/tv_grab_pt: Fail cleanly on 'temporarily unavailable'
	  error.

2004-04-27 19:04  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: ignore digital-tv caption
	  within html channel list.

2004-04-27 18:32  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: Updated the grabber to
	  support the slightly changed php pages of tvtoday.de.  Since the
	  change came along with a lot of added channels (especially
	  Premiere digital ones) it seems they didn't block us with intent.

2004-04-27 15:13  rmeden

	* grab/na_dd/tv_grab_na_dd.IN: stupid!	I could have sword I tested
	  the code before checking in!

2004-04-27 01:27  rmeden

	* README, doc/README.win32: include info on tv_grab_na_icons

2004-04-27 01:16  rmeden

	* grab/: na_dd/tv_grab_na_dd.IN, na_icons/tv_grab_na_icons.IN: add
	  proxy support

2004-04-25 22:13  rmeden

	* MANIFEST: change tv_grab_na_dd to use --share add
	  tv_grab_na_icons

2004-04-25 22:11  rmeden

	* Makefile.PL, grab/na_dd/tv_grab_na_dd.IN: change tv_grab_na_dd to
	  use --share, and include icons

2004-04-25 22:10  rmeden

	* grab/na_dd/tv_grab_na_dd: tv_grab_na_dd is now tv_grab_na_dd.in
	  (for --share processing)

2004-04-25 22:02  rmeden

	* grab/na_icons/tv_grab_na_icons.IN: simplify --share handling

2004-04-25 22:01  rmeden

	* lib/exe_wrap.pl: tv_grab_na_dd and na_icon --share support

2004-04-25 05:17  rmeden

	* Makefile.PL, grab/na_icons/tv_grab_na_icons.IN,
	  grab/na_icons/tv_grab_na_icons.PL: initial load of
	  tv_grab_na_icons

2004-04-23 17:52  rmeden

	* choose/tv_check/tv_check: use  <originalAirDate> to mark as
	  repeats episodes > 30 days old improved myreplaytv debug handling

2004-04-23 17:50  rmeden

	* grab/na_dd/tv_grab_na_dd: add <originalAirDate> to --low-mem

2004-04-22 21:29  rmeden

	* grab/na_dd/tv_grab_na_dd: don't use <OriginalAirDate> for <date>
	  when Episode info not known

2004-04-21 14:36  rmeden

	* grab/na_dd/tv_grab_na_dd: ignore empty config file during
	  --configure

2004-04-21 06:35  rmeden

	* grab/na_dd/tv_grab_na_dd: add extra --configure question trying
	  to talk someone out of local channel filtering

2004-04-21 06:11  rmeden

	* grab/na_dd/tv_grab_na_dd: don't give line number if number of
	  days is negative

2004-04-21 06:04  rmeden

	* lib/exe_wrap.pl: put error messages back after change to use "do"

2004-04-20 05:32  rmeden

	* grab/na_dd/tv_grab_na_dd: doc fix to resolve equal sign separator

2004-04-18 09:55  epaepa

	* Makefile.PL: Whoops, forgot to re-add tv_grab_fr to Makefile.PL.

2004-04-16 19:21  epaepa

	* grab/na_dd/tv_grab_na_dd: Bail out early if SOAP download gives
	  empty result (part of fixing warnings seen in Sourceforge bug
	  #935843).

2004-04-16 19:19  epaepa

	* grab/na_dd/tv_grab_na_dd: Check that we get the schema version
	  (part of fixing warnings seen in Sourceforge bug #935843).

2004-04-16 19:13  epaepa

	* grab/na_dd/tv_grab_na_dd: Fixed uninitialized value warning (part
	  of Sourceforge bug #935843).

2004-04-16 18:50  epaepa

	* xmltv.dtd: Make it clear tat empty text elements are usually
	  meaningless.

2004-04-16 14:59  rmeden

	* grab/na_dd/tv_grab_na_dd: fix dd_progid to be consistent with
	  other episide-num formats

2004-04-15 19:06  mattiasholmlund

	* grab/se/tv_grab_se: Adapt to the new XMLTV::DST. Patch by Andrey
	  Nauman. Fix url-tags when there were several urls for a single
	  programme.

2004-04-14 22:11  rmeden

	* grab/na_dd/tv_grab_na_dd: use OriginalAirDate to populate <DATE>
	  unless copyright <YEAR> is specified.

2004-04-14 16:57  mattiasholmlund

	* grab/se/tv_grab_se: Add support for Viasats subscription-based
	  channels (TV1000, Cinema, Sport, Nature/Action, Explorer). This
	  includes channels in Norwegian, Finnish and Danish as well as the
	  Swedish channels. Based on patch from Andrey Nauman.

2004-04-13 22:20  epaepa

	* Makefile.PL, README, doc/README.win32, grab/DST.pm,
	  grab/se/tv_grab_se, lib/exe_wrap.pl: Version 0.5.32.

2004-04-13 22:06  epaepa

	* grab/pt/tv_grab_pt: Trim whitespace from channel display-names.

2004-04-11 04:35  rmeden

	* grab/na_dd/tv_grab_na_dd: oops.. fix timezone default

2004-04-11 04:27  rmeden

	* grab/na_dd/tv_grab_na_dd: move --tz-offset to the config file
	  (also don't stress UTC default)

2004-04-10 22:13  epaepa

	* grab/DST.pm: Support US and Canadian conventions by setting
	  $XMLTV::DST::Mode = 'na'.

2004-04-10 22:12  epaepa

	* grab/na_dd/tv_grab_na_dd: Undoing accidental checkin of this
	  file.

2004-04-10 22:09  epaepa

	* grab/DST.pm, grab/na_dd/tv_grab_na_dd, t/test_dst.t: Renamed
	  XMLTV::Europe_TZ to XMLTV::DST and made subroutine names less
	  Europe-specific.

2004-04-10 22:00  epaepa

	* MANIFEST, Makefile.PL, grab/Europe_TZ.pm, grab/de/tv_grab_de,
	  grab/de_tvtoday/tv_grab_de_tvtoday.in, grab/dk/tv_grab_dk,
	  grab/es/tv_grab_es, grab/es_digital/tv_grab_es_digital,
	  grab/fi/tv_grab_fi, grab/fr/tv_grab_fr, grab/hu/tv_grab_hu,
	  grab/it/tv_grab_it.in, grab/nl/tv_grab_nl.in, grab/no/tv_grab_no,
	  grab/pt/tv_grab_pt, grab/se/tv_grab_se,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/TZ.pm, t/test_europe_tz.t:
	  Renamed XMLTV::Europe_TZ to XMLTV::DST and made subroutine names
	  less Europe-specific.

2004-04-09 16:26  rmeden

	* grab/na_dd/tv_grab_na_dd: fix typo in documentation

2004-04-08 01:25  rmeden

	* lib/exe_wrap.pl: use "do" instead of "require" so scripts don't
	  need to return true value.

2004-04-06 06:36  rmeden

	* lib/exe_wrap.pl: return a 0 ERRORLEVEL should the script return
	  control to exe_wrap. An error code is still reported should
	  something "DIE".

2004-04-05 19:36  epaepa

	* Makefile.PL: Continue even if prereqs missing so that CPAN shell
	  doesn't get upset.

2004-04-05 19:17  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Fixed timezone wobblies by always
	  converting with utc_offset() after a calculation.  Should
	  probably refactor this.

2004-04-05 17:47  epaepa

	* grab/Europe_TZ.pm: parse_eur_date(): allow UTC as the timezone
	  passed in.

2004-04-04 08:31  epaepa

	* lib/AskTerm.pm: askQuestion(): fixed default in long mode
	  (Sourceforge bug #924538).

2004-04-04 04:22  rmeden

	* lib/exe_wrap.pl: backing out change again.  Script files are not
	  available for normal reading, so you can't use open

2004-04-04 03:41  rmeden

	* grab/na_dd/tv_grab_na_dd: oops.. forgot to say version dd_schema
	  1.3 is ok

2004-04-04 03:39  rmeden

	* grab/na_dd/tv_grab_na_dd: add XMLTV module version check add
	  support for --beta-data add warning if dd schema is updated use
	  dd schema 1.3 channel Ids (with migration help) add dd schema 1.3
	  fields to --list-lineups add dd schema 1.3
	  syndicatedEpisodeNumber field as episode-number type "onscreen"
	  die if we don't have a valid lineup only process a single element
	  of a twig (performance?)

2004-04-04 01:20  rmeden

	* lib/XMLTV.pm.in: prematurely bump version due to <episode-number>
	  incompatability and module checking

2004-04-03 18:48  rmeden

	* lib/exe_wrap.pl: corrected version to avoid problems with scripts
	  not returning true

2004-04-03 18:39  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: tvtoday.de homepage
	  actually doesn't allow to view program more than six days ahead,
	  however the grabber allowed to do so (using --force).  Turned off
	  this behaviour, since setting ztag=8 (as http get arg) returns
	  program for yesterday - allow the user to do "--offset -1"
	  instead.

2004-04-03 17:45  epaepa

	* grab/es/tv_grab_es: Take care not to pass undef to
	  write_programme().

2004-04-03 17:41  epaepa

	* lib/XMLTV.pm.in: Better error when undef passed to
	  write_programme().

2004-04-03 17:07  rmeden

	* lib/exe_wrap.pl: backing out change... screws up configure mode

2004-04-03 16:56  rmeden

	* grab/na_dd/tv_grab_na_dd: correct xmltv-ns tag for episode num
	  take --tz-offset into consideration when calculating start time

2004-04-03 14:27  epaepa

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: Progress messages go to
	  stderr not stdout!

2004-04-03 11:29  epaepa

	* grab/na_dd/tv_grab_na_dd: Catch bad XML from zap2it (at least for
	  the first part of configuration).

2004-04-03 11:01  epaepa

	* lib/exe_wrap.pl: Don't use require() to run the executable, since
	  that needs the last statement to give a true value.  Just load
	  the code and eval it.

	  Also fixed exit status of this script so it is true for success.

2004-04-03 10:05  epaepa

	* lib/XMLTV.pm.in: Strip leading/trailing whitespace when writing
	  with-lang content.

2004-04-01 23:33  rmeden

	* grab/na_dd/tv_grab_na_dd: die if config file doesn't have a
	  lineup (usually old config version)

2004-03-31 19:06  epaepa

	* MANIFEST, doc/QuickStart, grab/fr/tv_grab_fr: It turns out
	  tv_grab_fr was not blocked by the upstream site; there was just a
	  technical problem, so I'm putting it back.  Sylvain F. can use
	  the new Get_nice stuff to change the way tv_grab_fr does http
	  gets.

2004-03-31 19:05  epaepa

	* lib/AskTerm.pm: If there is only one choice, don't bother asking,
	  just say.

2004-03-31 18:22  epaepa

	* xmltv.dtd, choose/tv_check/tv_check, filter/tv_extractinfo_en,
	  grab/dk/tv_grab_dk, grab/na_dd/tv_grab_na_dd,
	  grab/nl/tv_grab_nl.in, grab/no/tv_grab_no, lib/XMLTV.pm.in:
	  <episode-num> can now be repeated.  This is a
	  backwards-incompatible change for users of XMLTV.pm (it's now a
	  list reference) and anyone reading xmltv files.  However the new
	  files are a superset of the old ones, so it does not break
	  existing data.

2004-03-31 07:07  rmeden

	* choose/tv_check/tv_check: improve handling of multi-part episodes

2004-03-31 07:04  rmeden

	* grab/na_dd/tv_grab_na_dd: added --version to docs added
	  --download-only option added warning if DD schema changes added
	  show-id, episode-id to <episode-num> added advisories to
	  <ratings> added showType to <category> corrected multipart
	  episode handling corrected <length> handling

2004-03-30 19:54  epaepa

	* grab/nl/tv_grab_nl.in: Fix from Bas Hulsken to avoid crash when
	  Term::ProgressBar not used.

2004-03-30 19:41  epaepa

	* grab/Get_nice.pm: You can change the function used to fetch pages
	  by setting $get.  The default is still LWP::Simple::get().

2004-03-30 03:54  rmeden

	* grab/na_dd/tv_grab_na_dd: output timezone is now UTC unless a
	  --tz-offset switch is used

2004-03-28 15:17  epaepa

	* MANIFEST, Makefile.PL, doc/QuickStart, grab/fr/tv_grab_fr: Sadly
	  tv_grab_fr has been blocked by the upstream site.

2004-03-28 15:12  epaepa

	* lib/AskTerm.pm: askQuestion(): Use default even in
	  numbered-multiple-choice mode.  This should fix Sourceforge bug
	  #924538 but I have not yet tested it.

2004-03-28 12:30  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Comment.

2004-03-27 22:10  rmeden

	* grab/na_dd/tv_grab_na_dd: better identify messsages received from
	  DD

2004-03-27 22:10  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: change credits
	  (generator-info-name) to XMLTV

2004-03-27 22:08  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: replace date-mismatch
	  assertion by a less strict warning and use the date provided by
	  tvtoday's webpages instead.

2004-03-27 06:09  rmeden

	* README, doc/README.win32: add notes about tv_grab_na_dd

2004-03-26 21:34  rmeden

	* grab/na_dd/tv_grab_na_dd: add a orig_id field to --list-lineups

2004-03-26 06:04  rmeden

	* grab/na_dd/tv_grab_na_dd: changes to work with XML::Twig 3.14's
	  Simplify method

2004-03-26 00:28  rmeden

	* grab/na_dd/tv_grab_na_dd: Add example for handling multiple
	  lineups

2004-03-25 23:54  rmeden

	* grab/na_dd/tv_grab_na_dd: make channel IDs RFC complient.  Add
	  separators to --list-lineups to make it easier to parse.

2004-03-25 17:10  epaepa

	* grab/se/tv_grab_se: Refactored language into constant LANG and
	  corrected it to 'sv' (Sourceforge bug #923061).

2004-03-25 15:55  rmeden

	* grab/na_dd/tv_grab_na_dd: Provide --list-lineups and procedure to
	  automate configuration

2004-03-25 08:36  rmeden

	* choose/tv_check/tv_check: Date::Manip no longer likes "TODAY",
	  using "NOW"

2004-03-25 07:54  rmeden

	* grab/na_dd/tv_grab_na_dd: fix bad pointer when using -old-chan-id

2004-03-25 04:07  rmeden

	* grab/na_dd/tv_grab_na_dd: add --list-channels switch

2004-03-25 03:55  rmeden

	* grab/na_dd/tv_grab_na_dd: major change to add channels to config
	  file compromise on password security

2004-03-24 16:09  epaepa

	* MANIFEST, Makefile.PL, doc/QuickStart, grab/pt/tv_grab_pt: Adding
	  Bruno Tavares's tv_grab_pt grabber for Portugal.

2004-03-24 15:12  rmeden

	* grab/na_dd/tv_grab_na_dd: change TV rating to TVCHIP to match
	  tv_grab_na In COLOUR change B&W to 0 so it causes boolean
	  comparision to fail fix length calcuation when runtime is known.

2004-03-24 14:00  epaepa

	* lib/exe_wrap.pl: tv_grab_jp and tv_grab_se are not included.

2004-03-23 15:57  epaepa

	* grab/na_dd/tv_grab_na_dd: Fixed error report when no 'id' in
	  station element.

2004-03-22 22:29  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart,
	  grab/no/tv_grab_no: Adding Christian Wattengard's tv_grab_no for
	  Norway.

2004-03-22 22:23  epaepa

	* MANIFEST: Removed tv_check.bat.

2004-03-22 22:07  epaepa

	* choose/tv_check/tv_check_doc.html: Updated example grabber names.

2004-03-22 22:06  epaepa

	* choose/tv_check/tv_check.bat: Removed because out of date.

2004-03-22 22:04  epaepa

	* choose/tv_check/README.tv_check: Use tv_grab_fi as the example,
	  and --output rather than --listings.	(I would prefer
	  redirection, but there may still be some problem with it on
	  WinDOS.)

2004-03-22 22:01  epaepa

	* filter/tv_imdb: Don't mention tv_grab_na by name, since its
	  replacement has a different name.

2004-03-22 21:58  epaepa

	* doc/QuickStart: Mention tv_grab_na_dd.  Use tv_grab_fi in
	  examples, it's a bit easier that way.

2004-03-22 19:34  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: Don't use regexp to find
	  categories from not understood information, if the grabbed
	  website explicitly names a category.

2004-03-22 16:25  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch from Ryan Dalzell to remove
	  javascript gunk from URLs.

2004-03-22 16:06  epaepa

	* grab/na_dd/tv_grab_na_dd: Better error reporting when the
	  <station> element has no 'id' attribute.

2004-03-22 15:56  epaepa

	* grab/na_dd/tv_grab_na_dd: Don't write 'date' attribute in <tv>
	  element.  If present, it measn the date of the listings at the
	  source, not the time of the grab.

2004-03-22 15:44  epaepa

	* grab/nl/tv_grab_nl.in: Handle 'Kenmerken' descriptions and
	  'Website'.

2004-03-22 03:17  rmeden

	* doc/README.win32: add 0.5.31 notes

2004-03-21 14:51  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in,
	  lib/exe_wrap.pl: Version 0.5.31.

2004-03-19 21:15  epaepa

	* grab/uk_rt/channel_ids: Channel updates from Ryan Dalzell.

2004-03-19 21:12  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch from Ryan Dalzell to not add
	  'Remind me by text' to programme descriptions.

2004-03-19 13:14  epaepa

	* grab/Europe_TZ.pm: Convert DST start and end dates into local
	  winter time before comparing against the local time string.

2004-03-19 12:39  epaepa

	* grab/na_dd/tv_grab_na_dd: generator-info-name="XMLTV", like the
	  other grabbers.

2004-03-19 12:35  epaepa

	* grab/na_dd/tv_grab_na_dd: Added --password-file to read DD
	  password from a file.

2004-03-19 11:33  epaepa

	* grab/na_dd/tv_grab_na_dd: Accidentally turned off reading
	  password from config file in earlier change.	It will go away
	  eventually, though.

2004-03-19 11:26  epaepa

	* grab/Europe_TZ.pm: Cope with impossible dates (during the one
	  hour skip from winter to summer time).  Assume they are winter
	  time.

2004-03-18 19:24  epaepa

	* grab/na_dd/tv_grab_na_dd: Don't store the password in the config
	  file - prompt for it when grabbing.

2004-03-18 17:03  epaepa

	* grab/na_dd/tv_grab_na_dd: Use undef rather than the empty string
	  as the unset value for various options, and test definedness
	  rather than truth.  This fixes a few bugs with the filename '0'
	  and so on.

	  Refactored credits handling and fixed a spelling mistake, so it
	  now does more roles.	Added a check for unknown roles so that
	  similar mistakes will be caught.

	  Small change to progress bar message.

2004-03-18 16:06  epaepa

	* grab/na_dd/tv_grab_na_dd: Titles and descriptions are not
	  necessarily in English.

2004-03-18 15:45  epaepa

	* grab/na_dd/tv_grab_na_dd: Catch '401 Unauthorized' from site.

2004-03-18 15:37  epaepa

	* grab/na_dd/tv_grab_na_dd: Use GNU long option style with words
	  separated by hyphen not underscore.  The underscore format is
	  still accepted.

2004-03-17 21:10  epaepa

	* t/test_tv_split.t: Added explicit close() to make sure the temp
	  directory can be cleaned up at exit (bug on Cygwin spotted by
	  Niel Markwick).

2004-03-17 18:36  epaepa

	* MANIFEST: Corrected filename.

2004-03-17 17:43  mattiasholmlund

	* grab/se/tv_grab_se: Detect filler for tv3. Fix urls for shows
	  from viasat.

2004-03-17 06:00  rmeden

	* choose/tv_check/tv_check: fix problems with the on-exit handler

2004-03-16 22:43  rmeden

	* lib/exe_opt.pl: fix underf warning when storing version number in
	  windows

2004-03-16 22:39  rmeden

	* lib/exe_wrap.pl: make list of valid commands easier to read

2004-03-15 21:26  rmeden

	* grab/na_dd/tv_grab_na_dd: add --dd_data, and --reprocess options.
	  add code to allow debugging of SOAP fetch

2004-03-15 17:48  mattiasholmlund

	* grab/se/tv_grab_se: Rewrite grabber for tv4.se to make it simpler
	  and remove filler-entries that signify that there is no programme

2004-03-13 18:15  rmeden

	* grab/na_dd/tv_grab_na_dd: replace certificate code tvRating is in
	  <schedule> not <program>

2004-03-12 20:37  mattiasholmlund

	* grab/se/tv_grab_se: Add urls to program descriptions for SVT and
	  TV4.	More robust handling of relative links.

2004-03-12 18:08  rmeden

	* grab/na_dd/tv_grab_na_dd: add workaround for non-unique lineup
	  names

2004-03-12 17:32  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: handle brackets within
	  show-titles correctly

2004-03-12 17:18  stesie

	* grab/de_tvtoday/tv_grab_de_tvtoday.in: fixed timezone problem
	  (mail by Mark Swanson, from 2004-03-08): global $today expected
	  to store current date in CE(S)T timezone, not local TZ

2004-03-12 15:50  rmeden

	* Makefile.PL: fix tv_grab_na_dd name

2004-03-12 15:43  rmeden

	* README: mention tv_grab_na_dd and XML::Twig 3.10

2004-03-11 23:58  rmeden

	* MANIFEST, Makefile.PL: add tv_grab_na_dd

2004-03-11 01:13  rmeden

	* grab/na_dd/tv_grab_na_dd: add minor channel numbers for digital
	  tv

2004-03-10 23:17  rmeden

	* grab/na_dd/tv_grab_na_dd: Initial commit of grabber to use
	  Zap2IT's Data Direct service

2004-03-07 21:18  epaepa

	* doc/README.win32: Corrected release note for 0.5.30-win32-2
	  build.

2004-03-07 14:02  epaepa

	* filter/tv_imdb: Removed obsolete todo item.

2004-03-06 12:06  epaepa

	* README: Updated signature line.

2004-03-06 12:04  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in,
	  lib/exe_wrap.pl: Version 0.5.30.

2004-03-06 11:43  epaepa

	* Makefile.PL, README: XML::Writer 0.4.6 is now required.

2004-03-06 11:35  epaepa

	* grab/es_digital/tv_grab_es_digital: If title not found, try using
	  description instead.

2004-03-06 11:26  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Use get_url() for channels pages
	  instead of calling get_nice() directly.

2004-02-29 13:54  epaepa

	* grab/uk_rt/: channel_ids, tv_grab_uk_rt.in: Patch from Dan
	  Sheridan to add radio channels.

2004-02-26 04:28  komoriya

	* grab/jp/tv_grab_jp: fixed unexpected deletion of figures in wide
	  charactors.

2004-02-24 11:43  mattiasholmlund

	* grab/se/tv_grab_se: Include information on exit status in
	  documentation.

2004-02-23 20:55  epaepa

	* MANIFEST, Makefile.PL, doc/QuickStart, grab/fr/tv_grab_fr: Adding
	  Sylvain Fabre's tv_grab_fr grabber for France.

2004-02-23 20:30  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart,
	  grab/se/tv_grab_se: Adding Mattias Holmlund's tv_grab_se for
	  Sweden.

2004-02-23 20:13  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart,
	  grab/de_tvtoday/channel_ids,
	  grab/de_tvtoday/tv_grab_de_tvtoday.PL,
	  grab/de_tvtoday/tv_grab_de_tvtoday.in, lib/exe_wrap.pl: Adding
	  Stefan Siegl's tv_grab_de_tvtoday.

2004-02-23 19:58  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Comment.

2004-02-23 06:49  rmeden

	* choose/tv_check/tv_check: use parse_date in XMLTV::Date instead
	  of Date::Manip to improve error handling

2004-02-22 19:03  epaepa

	* lib/XMLTV.pm.in: The <language> contained inside <subtitles> is a
	  normal <language> element, so it can have a 'lang' attribute.
	  Call the with-lang handler to read and write it.

2004-02-22 18:59  epaepa

	* t/data/: test.xml, tv_cat_all_UTF8.expected,
	  tv_cat_test_xml.expected, tv_cat_test_xml_test_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_test_xml.expected,
	  tv_extractinfo_en_test_xml_test_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_test_xml.expected,
	  tv_grep_a_test_xml_test_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_test_xml.expected,
	  tv_grep_category_g_or_title_h_test_xml_test_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  tv_grep_channel_xyz_or_not_channel_b_test_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_test_xml_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  tv_grep_eval_scalar_keys_5_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_xml_test_xml.expected,
	  tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  tv_grep_not_channel_id_channel4_com_test_xml.expected,
	  tv_grep_not_channel_id_channel4_com_test_xml_test_xml.expected,
	  tv_grep_not_channel_name_d_all_UTF8.expected,
	  tv_grep_not_channel_name_d_test_xml.expected,
	  tv_grep_not_channel_name_d_test_xml_test_xml.expected,
	  tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  tv_grep_on_before_200302161330_UTC_test_xml.expected,
	  tv_grep_on_before_200302161330_UTC_test_xml_test_xml.expected,
	  tv_remove_some_overlapping_all_UTF8.expected,
	  tv_remove_some_overlapping_test_xml.expected,
	  tv_remove_some_overlapping_test_xml_test_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_test_xml.expected,
	  tv_sort_by_channel_test_xml_test_xml.expected,
	  tv_sort_test_xml.expected, tv_sort_test_xml_test_xml.expected:
	  Test that <subtitles> can contain <language>.

2004-02-21 19:20  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart, doc/README.win32,
	  grab/jp/README.CATV, grab/jp/README.CATV.ja, grab/jp/tv_grab_jp:
	  Takeru Komoriya's tv_grab_jp for Japan.

2004-02-21 18:54  epaepa

	* MANIFEST: Added missing files.

2004-02-21 18:50  epaepa

	* t/test_europe_tz.t: Tiny test suite for XMLTV::Europe_TZ (one
	  person was having strange problems).

2004-02-21 18:47  epaepa

	* grab/Europe_TZ.pm: Comment.

2004-02-21 18:43  epaepa

	* choose/tv_check/.cvsignore: Removing .cvsignore file - not part
	  of the source code and not really needed.

2004-02-14 22:33  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in,
	  lib/exe_wrap.pl: Version 0.5.29.

2004-02-14 22:19  epaepa

	* grab/nl/channels: Changed names to match the site.

2004-02-14 22:10  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Removed debugging print.

2004-02-14 17:53  ramonroca

	* doc/QuickStart, doc/README.win32, grab/es/tv_grab_es: New grabber
	  for D+ (Spain)

2004-02-14 17:50  ramonroca

	* grab/es_digital/tv_grab_es_digital, Makefile.PL, README: New
	  grabber for D+ (Spain)

2004-02-14 11:53  ramonroca

	* grab/es/tv_grab_es, Makefile.PL: New grabber for D+ (Spain)

2004-02-12 22:56  rmeden

	* lib/exe_opt.pl: add some optional modules so the exe can find
	  them

2004-02-12 20:20  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Another patch from Niel Markwick:
	  fix the occasional title-parsing bug, and replace one while () {
	  shift; ... } with a foreach.	For the latter change I don't
	  understand why it worked at all before, but the new code seems
	  probably correct.

2004-02-11 21:04  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Skip zero-length files on the site.

2004-02-11 20:40  epaepa

	* README: HTML::Entities needed by tv_grab_uk_rt.

2004-02-11 20:39  epaepa

	* Makefile.PL: tv_grab_uk_rt now needs HTML::Entities (part of the
	  HTML::Parser package).

2004-02-11 20:34  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch mostly by Neil Markwick to
	  reduce the number of page fetches by remembering the last
	  programme seen on a channel and skipping ahead some hours if
	  possible.  Also to give a --limit-details range for restricting
	  the download of programme details (not all or nothing like
	  --slow), and clean up some bad characters in grabbing, and handle
	  multi-paragraph descriptions as one <desc> element.

2004-02-07 18:02  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch from Charles Brej (with one
	  change) to not grab redundant pages - those where the times have
	  already been seen in an earlier fetch.

2004-02-05 23:47  epaepa

	* lib/exe_wrap.pl: Chatter goes to stderr not stdout.

2004-02-03 21:44  epaepa

	* README: Storable is needed.

2004-02-03 21:39  epaepa

	* mkdist: Upse -P flag in checkout to prune empty directories.

2004-02-01 21:47  epaepa

	* README: Fixed date.

2004-02-01 21:46  epaepa

	* mkdist: Updated VERSION check to handle exe_wrap.pl (it works
	  this time).

2004-02-01 21:45  epaepa

	* lib/exe_wrap.pl: Moved version number into a more obvious place
	  so mkdist can check it.

2004-02-01 21:42  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in,
	  lib/exe_wrap.pl: Version 0.5.28.

2004-02-01 21:40  epaepa

	* MANIFEST: Added missing file.

2004-02-01 21:26  epaepa

	* grab/uk_rt/channel_ids: Added some more channels.

2004-02-01 21:07  epaepa

	* grab/uk_rt/channel_ids: Removed tv_grab_uk.

2004-02-01 20:38  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart, doc/README.win32,
	  grab/fi/tv_grab_fi, grab/hu/tv_grab_hu, grab/it/tv_grab_it.in,
	  grab/uk_rt/tv_grab_uk_rt.PL, lib/exe_wrap.pl: Removed tv_grab_uk.

2004-02-01 20:23  epaepa

	* Makefile.PL: Removed ' from regexp to avoid confusing Emacs
	  fontification.

2004-02-01 20:11  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Don't output duplicate programmes.

2004-02-01 20:07  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Made the previous-day check happen
	  for listings pages that aren't for midnight.	I don't fully
	  understand what is going on.

2004-02-01 19:06  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Correctly handle programmes on the
	  00:00 page which began late the previous day.

2004-02-01 17:49  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Changed domain name of source
	  website and made sure code uses $DOMAIN.

2004-02-01 11:46  epaepa

	* Makefile.PL: Skip over autosave and backup files in the
	  grab/uk/channel_pkgs/ directory.  This makes no difference to
	  users of the source tarball but avoids bizarre errors when
	  building from a working copy.

2004-01-30 21:16  rmeden

	* choose/tv_check/tv_check: fix new XML processing for LANG (which
	  no one really uses anyway)

2004-01-29 21:23  epaepa

	* lib/XMLTV.pm.in: Moved the <icon> handler into a new routine
	  read_icon(), which was being called to read icons inside ratings
	  even though it didn't exist.

2004-01-29 21:22  epaepa

	* t/data/: test.xml, tv_cat_all_UTF8.expected,
	  tv_cat_test_xml.expected, tv_cat_test_xml_test_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_test_xml.expected,
	  tv_extractinfo_en_test_xml_test_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_test_xml.expected,
	  tv_grep_a_test_xml_test_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_test_xml.expected,
	  tv_grep_category_g_or_title_h_test_xml_test_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  tv_grep_channel_xyz_or_not_channel_b_test_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_test_xml_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  tv_grep_eval_scalar_keys_5_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_xml_test_xml.expected,
	  tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  tv_grep_not_channel_id_channel4_com_test_xml.expected,
	  tv_grep_not_channel_id_channel4_com_test_xml_test_xml.expected,
	  tv_grep_not_channel_name_d_all_UTF8.expected,
	  tv_grep_not_channel_name_d_test_xml.expected,
	  tv_grep_not_channel_name_d_test_xml_test_xml.expected,
	  tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  tv_grep_on_before_200302161330_UTC_test_xml.expected,
	  tv_grep_on_before_200302161330_UTC_test_xml_test_xml.expected,
	  tv_remove_some_overlapping_all_UTF8.expected,
	  tv_remove_some_overlapping_test_xml.expected,
	  tv_remove_some_overlapping_test_xml_test_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_test_xml.expected,
	  tv_sort_by_channel_test_xml_test_xml.expected,
	  tv_sort_test_xml.expected, tv_sort_test_xml_test_xml.expected:
	  Added icon to rating in test.xml example input.  This catches a
	  bug where rating icon support was not implemented in XMLTV.pm.

2004-01-29 21:05  epaepa

	* t/test_icon.t: Made into a proper test ('ok 1', at least when it
	  passes).  Fixed charset warning.

2004-01-26 15:25  rmeden

	* README: remove requirement for XML::Simple

2004-01-26 03:41  rmeden

	* Makefile.PL: TV_CHECK now uses XML::Twig and XML::Writer so
	  XML::Simple not needed

2004-01-26 03:41  rmeden

	* choose/tv_check/tv_check: replace XML::Simple with XML::Twig so
	  UTF-8 chacaters can be included in titles.  Also remove a
	  dependency.

2004-01-25 00:03  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Brown-paper-bag bug in previous
	  change.

2004-01-24 23:57  epaepa

	* t/test_icon.t: Test case for Sourceforge bug #876003.

2004-01-24 23:46  epaepa

	* lib/XMLTV.pm.in: Added missing write_icon(), fixing Sourceforge
	  bug #876003.

2004-01-24 23:43  epaepa

	* lib/AskTerm.pm: askQuestion(): recover properly when stdin cannot
	  be read, returning undef (in code for numbered list).

2004-01-24 23:40  epaepa

	* grab/Get_nice.pm: Applied Sourceforge patch #875950 from Niel
	  Markwick: have a delay between page fetches, but remember when
	  the last fetch was and sleep() only for the time necessary to
	  make up the delay.

2004-01-24 22:39  epaepa

	* grab/uk_rt/: channel_ids, tv_grab_uk_rt.in: Applied (with minor
	  tweaks) Sourceforge patch #877617 from Niel Markwick to get extra
	  channels from the site.  It turns out you only need supply a
	  couple of cookies, and the site doesn't care what their values
	  are.

	  Made the grabber fetch summary data by default, with a --slow
	  flag to enable the one-page-per-programme detailed grabbing.

	  Better behaviour if asking questions during configuration fails.

2004-01-20 20:57  epaepa

	* filter/tv_split, t/test_tv_split.t: If tv_split is splitting by
	  channel, then just one <channel> element should be written to
	  each output file.

2004-01-20 20:33  epaepa

	* t/test_tv_split.t: Fixed filename in error messages.

2004-01-20 20:06  epaepa

	* lib/IMDB.pm: closeMaybeGunzip(): even a plain close() segfaults
	  on some systems, so do nothing.

2004-01-13 03:38  jveldhuis

	* lib/IMDB.pm: updated estimates and now .info file is written in
	  sorted order

2004-01-10 10:47  jskov

	* grab/dk/tv_grab_dk: Lang is da for Danish

2004-01-07 20:07  epaepa

	* Makefile.PL: Avoid // at start of installation paths (Sourceforge
	  bug #872444).

2004-01-07 19:55  epaepa

	* grab/nl/tv_grab_nl.in: --share option takes a string, it is not a
	  flag.

2004-01-07 19:26  epaepa

	* Makefile.PL, lib/Date.pm: Patch from Debian (modified a bit) to
	  fix XMLTV::Date manual page.

2004-01-07 06:56  rmeden

	* lib/exe_opt.pl: add safe to ignore dependancy to  avoid warning
	  during PerlApp

2004-01-07 06:47  rmeden

	* choose/tv_check/tv_check: include year in date checks to avoid
	  end of year problems

2004-01-06 20:45  epaepa

	* filter/tv_sort, t/data/tv_sort_overlap_xml.expected_err: Made the
	  error output (overlap warning) repeatable by adding a 'sort' and
	  by removing a $Log::TraceMessages::On that caused warnings.

2004-01-06 20:42  epaepa

	* choose/tv_pick/tv_pick_cgi, lib/Clumps.pm: Commented out lone
	  mentions of $Log::TraceMessages::On which tend to cause warnings.

2004-01-06 20:15  epaepa

	* lib/exe_wrap.pl: Check for the mistake of running a command with
	  redirections from Windows's Run dialogue box instead of the
	  command prompt.

2004-01-06 19:53  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch from Edward Wildgoose to
	  recognize the site's star ratings.

2004-01-05 21:52  epaepa

	* mkdist, lib/exe_wrap.pl: Support 'xmltv.exe --version'.  (mkdist
	  changes not yet tested.)

2004-01-04 18:04  epaepa

	* lib/XMLTV.pm.in: Moved the __WARN__ handler on writing down a
	  level to call_handlers_write() so that the warning message can
	  include the name of the subelement being written as well as the
	  big element ('programme' or whatever).  call_handlers_write() now
	  returns a success value which is checked before calling it again
	  with the real XML::Writer.

2004-01-04 13:17  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.27.

2004-01-04 12:14  epaepa

	* Makefile.PL: Discard stderr when trying to run python - it might
	  not be installed.

2004-01-04 11:48  epaepa

	* lib/XMLTV.pm.in: 'require' rather than 'use' XMLTV::Date because
	  XMLTV.pm is loaded at build time and XMLTV::Date is not available
	  then.  (Sourceforge bug #870171.)

2004-01-04 11:33  epaepa

	* Makefile.PL: Suppress 'isn't numeric' warnings from MakeMaker
	  (Sourceforge bug #870170, but has been an annoyance for a while).

2004-01-03 22:44  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.26.

2004-01-03 22:15  epaepa

	* MANIFEST: Added a missing file.

2004-01-03 21:55  epaepa

	* grab/it/tv_grab_it.in: Fixed --days and --offset.

2004-01-03 21:24  epaepa

	* grab/dk/tv_grab_dk: --offset was being counted twice.

2004-01-03 14:52  epaepa

	* Makefile.PL, Uninstall.pm, analyse_tvprefs/analyse_tvprefs,
	  choose/tv_pick/merge_tvprefs, filter/Grep.pm,
	  grab/Config_file.pm, grab/Europe_TZ.pm, grab/Get_nice.pm,
	  grab/Grab_XML.pm, grab/Memoize.pm, grab/Mode.pm,
	  grab/nz/tv_grab_nz.PL, grab/uk_rt/tv_grab_uk_rt.PL, lib/Ask.pm,
	  lib/AskTerm.pm, lib/AskTk.pm, lib/Clumps.pm, lib/Date.pm,
	  lib/Gunzip.pm, lib/Summarize.pm, lib/TZ.pm, lib/Usage.pm,
	  lib/XMLTV.pm.in, lib/set_share_dir.pl, t/add_time_info,
	  t/test_filters.t, t/test_library.t, t/test_tv_split.t: Made sure
	  every Perl source file has a CVS Id: thingy.

2004-01-03 14:35  epaepa

	* grab/nl/channels: Changed some channel names to match those on
	  the site.  I hope the rest are correct.

2004-01-03 12:14  epaepa

	* MANIFEST: Added a missing file.

2004-01-03 12:10  epaepa

	* t/test_filters.t: Comment.

2004-01-03 12:03  epaepa

	* doc/QuickStart: Updated the list of grabbers.

2004-01-03 11:57  epaepa

	* analyse_tvprefs/analyse_tvprefs: 'use warnings' instead of -w.

2004-01-03 11:52  epaepa

	* grab/Grab_XML.pm: Added __DIE__ handler to print URL.

2004-01-03 11:49  epaepa

	* grab/Get_nice.pm: Comment.

2004-01-03 11:46  epaepa

	* grab/Europe_TZ.pm: Improved error message.

2004-01-02 20:41  epaepa

	* grab/nl/tv_grab_nl.in: get_channels(): read the channel names
	  file.  The new boolean parameter says whether to read the site as
	  well and reconcile the two (more paranoia, but also more
	  downloading).

	  Call get_channels() to get channel details before grabbing as
	  well as for --configure and --list-channels.	--configure still
	  downloads the channel list from the site but --list-channels and
	  grabbing do not.  Changed the error about bad channel names to a
	  warning, since it can happen if the channels file has different
	  names from the site.

2004-01-02 20:07  epaepa

	* MANIFEST, Makefile.PL, grab/nl/channels, grab/nl/tv_grab_nl,
	  grab/nl/tv_grab_nl.PL, grab/nl/tv_grab_nl.in, lib/exe_wrap.pl:
	  Repackaged tv_grab_nl so it follows some of the other grabbers in
	  having a data file in share/ which it needs to load at run time.
	  tv_grab_nl is generated from tv_grab_nl.in by substituting in the
	  configured share/ path.

	  Now this new version doesn't _do_ anything different, and has no
	  code changes apart from setting the share/ directory and the
	  filename of the channels file, but because the source filename
	  has changed I'm committing now so that diffing will be simpler.

2004-01-02 19:34  epaepa

	* grab/nl/tv_grab_nl: Don't rely on channel names in the config
	  file: wait until we've read the listings pages (and so have got
	  channel names) before writing any <channel> elements.  The config
	  file no longer contains channel names, although old format files
	  are still accepted for now.

2004-01-02 19:27  epaepa

	* lib/XMLTV.pm.in: Made the writing handlers accept undef instead
	  of an XML::Writer, and take it as meaning don't write anything.
	  Then write_element_with_handlers() first calls all the handlers
	  with undef and makes sure there are no warnings before it writes
	  anything.  This makes it a bit harder to produce invalid output.

2004-01-02 18:59  epaepa

	* grab/nl/tv_grab_nl: Take note of the channel names on the site
	  and check them against what's in the config file.

2004-01-01 12:39  epaepa

	* grab/es/tv_grab_es: Include the channel number (the number from
	  the site, which is apparently the same as the button number on a
	  television) as an extra display-name.

2004-01-01 12:31  epaepa

	* mkdist, filter/tv_extractinfo_en, filter/tv_grep.in,
	  filter/tv_remove_some_overlapping, filter/tv_sort,
	  grab/Europe_TZ.pm, grab/Grab_XML.pm, grab/dk/tv_grab_dk,
	  grab/es/tv_grab_es, grab/fi/tv_grab_fi, grab/hu/tv_grab_hu,
	  grab/nl/tv_grab_nl, grab/uk_rt/tv_grab_uk_rt.in, lib/Clumps.pm,
	  lib/Date.pm, lib/TZ.pm, lib/XMLTV.pm.in: Changed most ParseDate()
	  calls to parse_date() instead.  Then a manual check of the return
	  value is not needed (though in cases where a bad date is
	  acceptable the parse_date() call must be wrapped in eval {}).
	  Also changed parse_eur_date() and tz_to_num() to throw exceptions
	  on error.

	  Where ParseDate() is called, the recommended way in the
	  Date::Manip docs to check for errors is to test the truth value
	  of what's returned.

2003-12-31 21:54  epaepa

	* Makefile.PL, grab/Europe_TZ.pm, grab/nl/tv_grab_nl,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/Date.pm: New library XMLTV::Date
	  with a parse_date() wrapper for ParseDate() that makes a more
	  intelligent choice of year.  ParseDate() assumes the current year
	  if it's not given, which obviously causes problems when grabbing
	  listings across a year boundary.  parse_date() picks the closest
	  possibility to the current time.  It also throws an exception on
	  failure rather than returning the empty string.

	  Eventually I hope to replace all ParseDate() calls with this
	  function, but for now I just fixed Europe_TZ.pm (which gets
	  tv_grab_nl working again) and tv_grab_uk_rt.

2003-12-31 21:51  epaepa

	* t/test_filters.t: Set LANG=C for running tests; we can do this
	  with the latest Lingua::Preferred.

2003-12-31 21:50  epaepa

	* lib/AskTerm.pm: When presenting a numbered list of options,
	  accept typing the option string instead of the number.  (And made
	  the prompt shorter.)

2003-12-31 19:28  epaepa

	* Makefile.PL: Lingua::Preferred 0.2.4 now recommended (it accepts
	  LANG=C).

2003-12-31 19:13  epaepa

	* lib/IMDB.pm: Added a missing /i to compare titles
	  case-insensitively; this fixes the bug found by Karen Etheridge
	  where duplicate (modulo case) titles would be added.

2003-12-30 21:51  epaepa

	* grab/fi/tv_grab_fi: Recognize class 'kanava-klo-nyt' (used for
	  current programme) as well as 'kanava-klo'.  Pointed out by Riku
	  Voipo.

2003-12-30 21:15  epaepa

	* MANIFEST: tv_grab_uk channel package for NTL analogue cable TV in
	  the Republic of Ireland.

2003-12-29 21:21  epaepa

	* MANIFEST: Fixed some errors and warnings in tv_grab_uk's channel
	  ids; the 'scotland' package has disappeared since it contained
	  only one channel and that is no longer on the site.

	  Implemented Sourceforge feature request #858792 by adding more
	  channels to the 'ireland' package.  I've also set xmltv ids for
	  those Irish channels that lacked them.

2003-12-19 06:09  rmeden

	* Makefile.PL: correct min version for HTML::Parser (got confused
	  with XML::Parser)

2003-12-19 06:01  rmeden

	* filter/tv_imdb: expand on memory requirments in man page

2003-12-18 20:48  epaepa

	* lib/AskTerm.pm: match(): new routine factoring out selecting an
	  exact or substring match.

2003-12-18 20:44  epaepa

	* lib/AskTerm.pm: askQuestion(): if going to numbered prompting,
	  and any of the options happen to themselves be numbers in the
	  range, make sure they are at that question number.  Too confusing
	  to type '5' to enter option '6'.  The list of options is now
	  required to have no duplicates.

2003-12-14 20:52  epaepa

	* filter/tv_sort, t/data/tv_sort_overlap_xml.expected_err: Changed
	  tv_sort to complain less about overlapping programmes.  In
	  particular if two programmes start at the same time and one of
	  them is zero length, assume it just squeezes in before the other.
	  As a side effect, fixed some other minor bugs in reporting of
	  overlaps (I hope that tv_sort will now not report an overlap
	  unless it's certain there is one).  But this whole exercise has
	  proven I don't really understand the intended meaning of
	  zero-length programmes and intervals (many listings sources
	  generate zero-length programmes, and they seem to be of some
	  vague practical use, but I haven't really thought out the
	  implications).  Hopefully the new DTD (with explicit timeslots
	  replacing clumpidxes) will be a bit saner.

2003-12-14 19:12  epaepa

	* t/data/tv_sort_overlap_xml.expected_err: Catch bug in tv_sort
	  where it incorrectly reports about overlapping programmes because
	  it doesn't treat (start, stop) as a half-closed interval.

2003-12-14 19:09  epaepa

	* t/test_filters.t: Include tv_to_text, and running commands on
	  just overlap.xml, in the standard set of tests.

2003-12-14 19:08  epaepa

	* t/data/: overlap.xml, tv_cat_all_UTF8.expected,
	  tv_cat_overlap_xml.expected, tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_overlap_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_overlap_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_overlap_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  tv_grep_channel_xyz_or_not_channel_b_overlap_xml.expected,
	  tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  tv_grep_not_channel_id_channel4_com_overlap_xml.expected,
	  tv_grep_not_channel_name_d_all_UTF8.expected,
	  tv_grep_not_channel_name_d_overlap_xml.expected,
	  tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  tv_grep_on_before_200302161330_UTC_overlap_xml.expected,
	  tv_remove_some_overlapping_all_UTF8.expected,
	  tv_remove_some_overlapping_overlap_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_overlap_xml.expected,
	  tv_sort_overlap_xml.expected, tv_to_latex_all_UTF8.expected,
	  tv_to_latex_overlap_xml.expected, tv_to_text_all_UTF8.expected,
	  tv_to_text_overlap_xml.expected: Additions to overlap.xml in aid
	  of catching a bug in tv_sort.

2003-12-14 18:56  epaepa

	* t/data/: tv_to_text_all_UTF8.expected,
	  tv_to_text_amp_xml.expected, tv_to_text_amp_xml_amp_xml.expected,
	  tv_to_text_amp_xml_clump_xml.expected,
	  tv_to_text_amp_xml_dups_xml.expected,
	  tv_to_text_amp_xml_empty_xml.expected,
	  tv_to_text_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_to_text_clump_xml_amp_xml.expected,
	  tv_to_text_dups_xml_amp_xml.expected,
	  tv_to_text_empty_xml_amp_xml.expected: Corrected expected output
	  for tv_to_text after previous 'TA' channel name change in an
	  input file.

2003-12-14 18:33  epaepa

	* filter/tv_remove_some_overlapping,
	  t/data/tv_remove_some_overlapping_all_UTF8.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_intervals_xml.expected,
	  t/data/tv_remove_some_overlapping_sort1_xml.expected,
	  t/data/tv_remove_some_overlapping_sort2_xml.expected,
	  t/data/tv_remove_some_overlapping_sort_xml.expected:
	  tv_remove_some_overlapping: write output programmes in same order
	  as input, rather than writing uninteresting programmes as early
	  as possible.

2003-12-14 17:58  epaepa

	* filter/tv_remove_some_overlapping: Corrected manual page.

2003-12-14 17:45  epaepa

	* README, Makefile.PL: XML::Writer-0.4.1 is now required.  This
	  release can currently be found only in my CPAN author directory,
	  but I hope the same fix (for an annoying warning) can be included
	  in the official version eventually.

2003-12-14 11:11  epaepa

	* t/test_filters.t: If a 'foo.expected_err' file exists, check
	  stderr against it.

2003-12-14 10:50  epaepa

	* t/test_tv_split.t: Whitespace.

2003-12-14 10:48  epaepa

	* t/test_filters.t: Comment.

2003-12-14 09:44  epaepa

	* xmltv.dtd: ISO 3316 is 'assembly tools for screws and nuts'
	  apparently - no idea why I thought it specified language codes.
	  Anyway, we should use RFC 1766.

2003-12-10 21:37  epaepa

	* mkdist, grab/Get_nice.pm: Set User-Agent to
	  "xmltv/$XMLTV::VERSION".

2003-12-10 21:30  epaepa

	* grab/: Grab_XML.pm, Memoize.pm, de/tv_grab_de, dk/tv_grab_dk,
	  nl_wolf/tv_grab_nl_wolf, uk_rt/tv_grab_uk_rt.in: Refactoring: use
	  XMLTV::Get_nice instead of LWP::Simple, with $Delay = 0 where
	  appropriate.

2003-12-10 20:56  epaepa

	* grab/Get_nice.pm: Let the user change the default five seconds as
	  $Delay.

2003-12-09 06:46  rmeden

	* lib/exe_opt.pl: add perlio::gzip to trim list.  At least until we
	  upgrade EXE to Perl58

2003-12-09 06:45  rmeden

	* Makefile.PL: correct minimum version number of XML::Parser.  3.34
	  doesn't exist 2.34 is current.

2003-12-08 21:00  jskov

	* grab/dk/tv_grab_dk: subtitles fix (by Martin Moeller)

2003-12-07 22:28  epaepa

	* README, doc/README.win32, lib/XMLTV.pm.in, Makefile.PL: Version
	  0.5.25.

2003-12-07 22:08  epaepa

	* grab/dk/tv_grab_dk: Don't set sub-title to '1' on seeing (TH) in
	  listings.  But what does that flag mean?

2003-12-07 21:56  epaepa

	* grab/nz/tv_grab_nz.in: If gen_time fails to parse the start time,
	  do not write the programme.  (This doesn't seem to be happening
	  at the moment.)

2003-12-07 17:15  epaepa

	* Makefile.PL: HTML::Parser 3.34 is required for tv_grab_na because
	  it may fix the segfaults some people have seen.

2003-12-06 16:29  epaepa

	* filter/tv_grep.in: Spelling.

2003-12-06 11:54  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart: Removed
	  tv_grab_sn.

2003-11-30 18:40  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.24.

2003-11-29 23:17  epaepa

	* lib/IMDB.pm: Realized why getstore() appeared to succeed without
	  generating a file - I was checking the return status wrongly.  It
	  returns an http status, not true/false.

	  If --download is given (in other words, we are starting from
	  scratch with no data files), create the IMDB directory if needed.

	  Added some vertical space to warning messages.

2003-11-29 21:44  epaepa

	* lib/IMDB.pm: Catch the case when LWP::Simple::getstore() reports
	  success but did not create the output file.

2003-11-29 17:28  jveldhuis

	* lib/IMDB.pm: default for star-ratings is to not replace added
	  stubs to control if 'date' field will get updated or not fixed
	  url field so it properly identifies duplicates.  fixed categories
	  where if any categories exists, nothing was added.

2003-11-29 12:33  epaepa

	* grab/Europe_TZ.pm: parse_eur_date(): more robust handling of bad
	  date passed in.

	  dst_dates(): now private to this module (it was not used anywhere
	  else), so die() instead of croak() on error.

2003-11-29 12:31  epaepa

	* grab/dk/tv_grab_dk: get_courteous(): call get_courteous_aux()
	  with a single scalar argument, to make extra sure of scalar
	  context.

	  tidy(): new routine, similar to that in many other grabbers, to
	  clean up illegal characters in the site's HTML.

	  More robust handling of dates.

2003-11-29 11:37  epaepa

	* lib/Gunzip.pm: zlib_gunzip_open(): check return value from tie.

2003-11-29 11:26  epaepa

	* README, lib/Gunzip.pm: XMLTV::Gunzip uses PerlIO::gzip, if
	  available, for reading .gz files - much faster than making a tied
	  filehandle from Compress::Zlib.

2003-11-29 10:41  epaepa

	* lib/IMDB.pm: Comment.

2003-11-29 10:40  epaepa

	* Makefile.PL: Require XML::Parsser 2.34 - see
	  <http://rt.cpan.org/NoAuth/Bug.html?id=4501>.

2003-11-29 02:04  jveldhuis

	* filter/tv_imdb: fixed help/usage message

2003-11-29 02:03  jveldhuis

	* lib/IMDB.pm: cosmetic message changes, added note about errors in
	  stage 7 are normal and unlink .offline file before stage7 sanity
	  checks

2003-11-28 21:54  jveldhuis

	* lib/IMDB.pm: pretty things up and manually track linecounts since
	  Gunzip.pm does not set \$.

2003-11-26 15:53  jveldhuis

	* lib/IMDB.pm: Found genres fail to parse bug in 0.5.23.

	  Turns out I had the header string in a regular expression with
	  the o flag so it was only getting compiled twice. This would have
	  been okay if the subroutine wasn't being used for both the Movies
	  list and the Genres list.

2003-11-22 13:34  epaepa

	* Makefile.PL: Not all versions of pod2text take an input and
	  output filename, so use redirection.

2003-11-22 13:23  epaepa

	* Makefile.PL: Prompt about README.win32.

2003-11-22 13:22  epaepa

	* doc/README.win32: Updated release notes, mentioning tv_imdb
	  problems.

2003-11-19 22:40  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.23.

2003-11-19 22:28  epaepa

	* filter/tv_imdb: Respect --download flag no matter what
	  preparation stage is chosen.

2003-11-19 22:04  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patches from Edward Wildgoose:
	  enable --output option (which seems to have worked all along);
	  more robust handling of categories; handle deaf-signed and
	  audio-described by adding to description; include URL in warning
	  message; deal more gracefully with pages that explicitly have no
	  programmes available.

2003-11-19 21:59  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Don't output (or warn about)
	  duplicate <sub-title>s.

2003-11-19 21:47  epaepa

	* Makefile.PL: Fixed to work with older Getopt::Long versions.

2003-11-19 03:47  jveldhuis

	* lib/IMDB.pm: moved come FUTURE/BUG comments local to
	  alternativeTitles subroutine

2003-11-18 16:28  jveldhuis

	* lib/IMDB.pm: added some version checking to fail nicer with
	  instructions

2003-11-18 07:14  jveldhuis

	* filter/tv_imdb: added star-ratings and genres to categories - now
	  has 7 stages

2003-11-18 07:13  jveldhuis

	* lib/IMDB.pm: added star-ratings and genres to the mix

2003-11-16 19:10  jveldhuis

	* lib/IMDB.pm: added bug description

2003-11-16 18:52  jveldhuis

	* lib/IMDB.pm: added more info to moviedb.info file - file
	  locations and sizes

2003-11-15 02:28  jveldhuis

	* lib/IMDB.pm: bug - directors and actors only updated if its
	  replacing or updating an existing list

2003-11-09 21:10  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.22.

2003-11-09 20:49  epaepa

	* grab/nz/tv_grab_nz.in: Remove carriage returns from output.

2003-11-09 20:16  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: get_url(): throw an exception if the
	  page cannot be downloaded rather than returning undef.  This
	  interacts better with memoization.

2003-11-09 18:55  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Remove BS characters if they appear
	  in downloaded HTML (Brian Collins reported this can sometimes
	  happen).

2003-11-08 18:37  epaepa

	* Makefile.PL: windows_dist: ported to work on Windows (I hope).

2003-11-08 15:43  epaepa

	* Makefile.PL: windows_dist: generate documentation directly with
	  pod2text, rather than from the installed man pages.

2003-11-08 15:23  epaepa

	* Makefile.PL: Fixed rather dangerous bug (well, a bug in
	  MakeMaker, made dangerous by this code) of rm -rf'ing
	  $(INSTALLBIN) - that directory may not have the same PREFIX as
	  other stuff.

2003-11-08 13:57  epaepa

	* grab/: es/tv_grab_es, fi/tv_grab_fi, hu/tv_grab_hu,
	  it/tv_grab_it.in: Give the 'base' timezone for Europe_TZ as a
	  numeric not named timezone.  This is (hopefully) the last bit of
	  work for Sourceforge bug/feature #834143.

2003-11-08 13:55  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Use numeric timezones.  Handle a few
	  more bits of description.

2003-11-08 13:53  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Fix timezones from the upstream
	  data with tz_to_num().

2003-11-08 13:51  epaepa

	* grab/Europe_TZ.pm: Comment.

2003-11-08 13:37  epaepa

	* grab/nz/tv_grab_nz.in: It can sometimes be useful to give a
	  negative offset, and it seems to work.

2003-11-08 13:01  epaepa

	* lib/TZ.pm: Work around bug in ParseDate()'s handling of numeric
	  timezones.  Added some trace code.

2003-11-07 20:08  epaepa

	* filter/tv_remove_some_overlapping: When a programme could be
	  removed because of partitioning, but isn't because we don't want
	  to throw away information, print a warning.

	  <url> is a boring subelement of <programme> and shouldn't stop
	  one being discarded.

2003-11-03 20:50  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.21.

2003-11-03 20:35  epaepa

	* doc/README.win32: Release notes for 0.5.20 Windows binary
	  distribution.

2003-11-03 20:24  epaepa

	* t/test_tv_split.t: Fixed to work with tv_split in blib/script/
	  rather than expecting it to be in the PATH.

2003-11-02 22:43  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.20.

2003-11-02 22:38  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Handle 'Deaf-signed' (well,
	  actually, discard it with a warning).

2003-11-02 22:19  epaepa

	* grab/nz/tv_grab_nz.in: Fixed to work (again) with Python 1.5.
	  Handle series title included as what looks like a 'part'.

2003-11-02 22:18  epaepa

	* grab/hu/tv_grab_hu: Fixed crash when (for some reason I haven't
	  investigated) the result of $txt->content_list() contains plain
	  scalars.

2003-11-02 22:17  epaepa

	* MANIFEST: Adding test_remove_some_overlapping test files which I
	  committed earlier.

2003-11-01 19:19  epaepa

	* t/data/: tv_to_latex_all_UTF8.expected,
	  tv_to_latex_amp_xml.expected,
	  tv_to_latex_amp_xml_amp_xml.expected,
	  tv_to_latex_amp_xml_clump_xml.expected,
	  tv_to_latex_amp_xml_dups_xml.expected,
	  tv_to_latex_amp_xml_empty_xml.expected,
	  tv_to_latex_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_to_latex_clump_xml_amp_xml.expected,
	  tv_to_latex_dups_xml_amp_xml.expected,
	  tv_to_latex_empty_xml_amp_xml.expected: Changed 'T & A' -> 'TA'
	  in LaTeX expected output.

2003-11-01 19:02  epaepa

	* MANIFEST, t/test_tv_split.t: Test suite for tv_split.

2003-11-01 18:41  epaepa

	* t/data/: amp.xml, tv_cat_all_UTF8.expected,
	  tv_cat_amp_xml.expected, tv_cat_amp_xml_amp_xml.expected,
	  tv_cat_amp_xml_clump_xml.expected,
	  tv_cat_amp_xml_dups_xml.expected,
	  tv_cat_amp_xml_empty_xml.expected,
	  tv_cat_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_cat_clump_xml_amp_xml.expected,
	  tv_cat_dups_xml_amp_xml.expected,
	  tv_cat_empty_xml_amp_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_amp_xml.expected,
	  tv_extractinfo_en_amp_xml_amp_xml.expected,
	  tv_extractinfo_en_amp_xml_clump_xml.expected,
	  tv_extractinfo_en_amp_xml_dups_xml.expected,
	  tv_extractinfo_en_amp_xml_empty_xml.expected,
	  tv_extractinfo_en_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_extractinfo_en_clump_xml_amp_xml.expected,
	  tv_extractinfo_en_dups_xml_amp_xml.expected,
	  tv_extractinfo_en_empty_xml_amp_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_amp_xml.expected,
	  tv_grep_a_amp_xml_amp_xml.expected,
	  tv_grep_a_amp_xml_clump_xml.expected,
	  tv_grep_a_amp_xml_dups_xml.expected,
	  tv_grep_a_amp_xml_empty_xml.expected,
	  tv_grep_a_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_a_clump_xml_amp_xml.expected,
	  tv_grep_a_dups_xml_amp_xml.expected,
	  tv_grep_a_empty_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml_dups_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml_empty_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_clump_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_dups_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_not_channel_b_empty_xml_amp_xml.expected,
	  tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml_amp_xml.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml_clump_xml.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml_dups_xml.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml_empty_xml.expected,
	  tv_grep_not_channel_id_channel4_com_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_not_channel_id_channel4_com_clump_xml_amp_xml.expected,
	  tv_grep_not_channel_id_channel4_com_dups_xml_amp_xml.expected,
	  tv_grep_not_channel_id_channel4_com_empty_xml_amp_xml.expected,
	  tv_grep_not_channel_name_d_all_UTF8.expected,
	  tv_grep_not_channel_name_d_amp_xml.expected,
	  tv_grep_not_channel_name_d_amp_xml_amp_xml.expected,
	  tv_grep_not_channel_name_d_amp_xml_clump_xml.expected,
	  tv_grep_not_channel_name_d_amp_xml_dups_xml.expected,
	  tv_grep_not_channel_name_d_amp_xml_empty_xml.expected,
	  tv_grep_not_channel_name_d_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_not_channel_name_d_clump_xml_amp_xml.expected,
	  tv_grep_not_channel_name_d_dups_xml_amp_xml.expected,
	  tv_grep_not_channel_name_d_empty_xml_amp_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_all_UTF8.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml_amp_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml_clump_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml_dups_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml_empty_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_clump_xml_amp_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_dups_xml_amp_xml.expected,
	  tv_grep_on_after_2002_02_05_UTC_empty_xml_amp_xml.expected,
	  tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml_amp_xml.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml_clump_xml.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml_dups_xml.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml_empty_xml.expected,
	  tv_grep_on_before_200302161330_UTC_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_on_before_200302161330_UTC_clump_xml_amp_xml.expected,
	  tv_grep_on_before_200302161330_UTC_dups_xml_amp_xml.expected,
	  tv_grep_on_before_200302161330_UTC_empty_xml_amp_xml.expected,
	  tv_remove_some_overlapping_all_UTF8.expected,
	  tv_remove_some_overlapping_amp_xml.expected,
	  tv_remove_some_overlapping_amp_xml_amp_xml.expected,
	  tv_remove_some_overlapping_amp_xml_clump_xml.expected,
	  tv_remove_some_overlapping_amp_xml_dups_xml.expected,
	  tv_remove_some_overlapping_amp_xml_empty_xml.expected,
	  tv_remove_some_overlapping_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_remove_some_overlapping_clump_xml_amp_xml.expected,
	  tv_remove_some_overlapping_dups_xml_amp_xml.expected,
	  tv_remove_some_overlapping_empty_xml_amp_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_amp_xml.expected,
	  tv_sort_amp_xml_amp_xml.expected,
	  tv_sort_amp_xml_clump_xml.expected,
	  tv_sort_amp_xml_dups_xml.expected,
	  tv_sort_amp_xml_empty_xml.expected,
	  tv_sort_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_amp_xml.expected,
	  tv_sort_by_channel_amp_xml_amp_xml.expected,
	  tv_sort_by_channel_amp_xml_clump_xml.expected,
	  tv_sort_by_channel_amp_xml_dups_xml.expected,
	  tv_sort_by_channel_amp_xml_empty_xml.expected,
	  tv_sort_by_channel_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_sort_by_channel_clump_xml_amp_xml.expected,
	  tv_sort_by_channel_dups_xml_amp_xml.expected,
	  tv_sort_by_channel_empty_xml_amp_xml.expected,
	  tv_sort_clump_xml_amp_xml.expected,
	  tv_sort_dups_xml_amp_xml.expected,
	  tv_sort_empty_xml_amp_xml.expected: Changed channel name 'T & A'
	  to 'TA'.  The former is not a valid RFC2838 identifier and so I'm
	  not particularly concerned to test with it, but it does make
	  testing tv_split awkward.

2003-11-01 18:34  epaepa

	* t/data/test_remove_some_overlapping.xml: Adding this file - some
	  test cases for tv_remove_some_overlapping - which got
	  accidentally left out of CVS earlier.

2003-11-01 16:49  epaepa

	* Makefile.PL: Indentation.

2003-11-01 14:37  epaepa

	* grab/Europe_TZ.pm: parse_eur_date(): Fixed winter time when base
	  timezone not UTC.

2003-11-01 14:36  epaepa

	* grab/fi/tv_grab_fi: Logging.

2003-10-26 20:19  jveldhuis

	* lib/AskTerm.pm: make sure we don't end up with two newlines in
	  say() calls

2003-10-25 14:22  epaepa

	* MANIFEST, Makefile.PL, filter/tv_remove_some_overlapping,
	  t/test_filters.t, t/data/tv_cat_all_UTF8.expected,
	  t/data/tv_cat_test_remove_some_overlapping_xml.expected,
	  t/data/tv_extractinfo_en_all_UTF8.expected,
	  t/data/tv_extractinfo_en_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_a_all_UTF8.expected,
	  t/data/tv_grep_a_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_category_b_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_channel_name_d_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_channel_xyz_or_channel_b_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_new_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_not_channel_name_d_all_UTF8.expected,
	  t/data/tv_grep_not_channel_name_d_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_UTC_all_UTF8.expected,
	  t/data/tv_grep_on_after_2002_02_05_UTC_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_on_after_200302161330_UTC_all_UTF8.expected,
	  t/data/tv_grep_on_after_200302161330_UTC_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_on_before_200302161330_UTC_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_premiere_test_remove_some_overlapping_xml.expected,
	  t/data/tv_grep_previously_shown_test_remove_some_overlapping_xml.expected,
	  t/data/tv_remove_some_overlapping_all_UTF8.expected,
	  t/data/tv_remove_some_overlapping_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_attrs_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_extract_1_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_extract_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_clump_xml_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_dups_xml_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml_amp_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml_clump_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml_dups_xml.expected,
	  t/data/tv_remove_some_overlapping_empty_xml_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_intervals_xml.expected,
	  t/data/tv_remove_some_overlapping_length_xml.expected,
	  t/data/tv_remove_some_overlapping_overlap_xml.expected,
	  t/data/tv_remove_some_overlapping_simple_xml.expected,
	  t/data/tv_remove_some_overlapping_simple_xml_x_whatever_xml.expected,
	  t/data/tv_remove_some_overlapping_sort1_xml.expected,
	  t/data/tv_remove_some_overlapping_sort2_xml.expected,
	  t/data/tv_remove_some_overlapping_sort_xml.expected,
	  t/data/tv_remove_some_overlapping_test_empty_xml.expected,
	  t/data/tv_remove_some_overlapping_test_livre_xml.expected,
	  t/data/tv_remove_some_overlapping_test_remove_some_overlapping_xml.expected,
	  t/data/tv_remove_some_overlapping_test_sort_by_channel_xml.expected,
	  t/data/tv_remove_some_overlapping_test_xml.expected,
	  t/data/tv_remove_some_overlapping_test_xml_test_xml.expected,
	  t/data/tv_remove_some_overlapping_whitespace_xml.expected,
	  t/data/tv_remove_some_overlapping_x_whatever_xml.expected,
	  t/data/tv_sort_all_UTF8.expected,
	  t/data/tv_sort_by_channel_all_UTF8.expected,
	  t/data/tv_sort_by_channel_test_remove_some_overlapping_xml.expected,
	  t/data/tv_sort_test_remove_some_overlapping_xml.expected,
	  t/data/tv_to_latex_all_UTF8.expected,
	  t/data/tv_to_latex_test_remove_some_overlapping_xml.expected,
	  t/data/tv_to_text_all_UTF8.expected,
	  t/data/tv_to_text_test_remove_some_overlapping_xml.expected: New
	  filter program tv_remove_some_overlapping to get rid of
	  'magazine' programmes whose only purpose is to contain (ie,
	  overlap with) several others.

2003-10-25 11:55  epaepa

	* lib/XMLTV.pm.in: write_programme(): don't delete every element in
	  the caller's hash.

2003-10-25 11:51  epaepa

	* MANIFEST, t/test_library.t: Catch bug in
	  XMLTV::Writer::write_programme() where it deletes the contents of
	  the passed-in hash.

2003-10-25 09:59  epaepa

	* filter/tv_cat: Data::Dumper is not used.

2003-10-14 07:05  jveldhuis

	* lib/IMDB.pm: fixed broken tv series keys.

2003-10-14 06:41  jveldhuis

	* lib/IMDB.pm: db version now at 0.3 which will require a
	  --prepStage 3 and --prepStage 5 to be re-run. Indexes fixed to
	  preserve original database key for titles so urls can be more
	  exact.

	  if stage5 fails, database is now offline and says so when tv_imdb
	  is run in a non-prep mode later.

	  stage 3 now tracks narrators and hosts and puts them in output
	  credits as commentator and presenter.

	  added control over what elements are updated and replaced, but
	  haven't added support in tv_imdb to set/get these. New defaults,
	  to not replace title, but prepend imdb version, same for urls,
	  default to replacing directors, presenters and commentators but
	  only prepend actors to the list and preserve others.

	  Category entries now include lang=en.

	  URLs fixed to use http://us.imdb.com/M/title-exact cgi at
	  imdb.com so the urls get us directly to the movie page on imdb
	  instead of possibly a list of matches.

2003-10-13 19:57  epaepa

	* t/test_filters.t: Set $ENV{LANG} to 'en' before running tests.
	  Kenneth Pronovici discovered (from a Debian bug report) that
	  tv_to_latex's behaviour and therefore its test suite is affected
	  by language.

2003-10-13 19:25  epaepa

	* Makefile.PL: Corrected share directory stored in installed files.
	  It should not include $(DESTDIR).

2003-10-12 17:49  epaepa

	* Makefile.PL: When pasting in bits of Makefile, respect $(DESTDIR)
	  as well as $(PREFIX).  The Perl variable $location holds a
	  fragment of Makefile concatenating those two directories.
	  (Sourceforge bug #82002)

	  Disabled tv_grab_de (I thought this change was committed before).

2003-10-12 16:17  epaepa

	* lib/XMLTV.pm.in: parse_callback(): Fixed prototype, as pointed
	  out by Christophe Beauregard.

2003-09-28 20:17  jveldhuis

	* mkdist: added compression to cvs commands

2003-09-28 20:16  jveldhuis

	* README: updated date line

2003-09-28 09:32  epaepa

	* README: Corrected description of tv_grab_de.

2003-09-27 19:06  jveldhuis

	* README: updated

2003-09-27 18:21  jveldhuis

	* Makefile.PL, doc/README.win32, lib/XMLTV.pm.in: version number
	  updated to 0.5.19

2003-09-27 18:20  jveldhuis

	* README: added release notes for 0.5.19 release

2003-09-25 22:21  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Add unknown bits of text to the
	  first description by default.  Improved (needlessly, it turns
	  out) the reporting of date mismatches.

2003-09-25 22:09  epaepa

	* grab/fi/tv_grab_fi: Remove a bad character (205) that's gotten
	  into the data.

2003-09-25 22:01  epaepa

	* grab/it/tv_grab_it.in: Warn if known-bad channels are mentioned
	  in the config file.

	  Fixed --days so that it it should work correctly with --offset.
	  (--days should always be the number of days downloaded, from
	  --offset onwards.)

	  Always warn if a downloaded page contains no programmes, and
	  always skip a whole channel if this happens for the first day.

2003-09-14 17:43  epaepa

	* grab/nl/tv_grab_nl: Spelling.

2003-09-14 17:41  epaepa

	* grab/nl/tv_grab_nl: Handle a few more Dutch strings following
	  advice from Martijn Vernooij.

2003-09-13 19:34  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.18.

2003-09-13 10:55  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Remove stop times which are before
	  the start time.

2003-09-13 10:29  epaepa

	* grab/hu/tv_grab_hu: Don't guess stop times based on the 'next'
	  programme on the site: these are often wrong and lead to nonsense
	  like programmes that stop before they start or overlap with other
	  programmes on the same channel.  If the site does not provide
	  stop times explicitly, it's better to omit them and let the user
	  add them with a tool like tv_sort if he wants guessed stop times.

2003-09-13 09:24  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Fixed some progress messages:
	  they're not appropriate to display with say(), they should be
	  printed on stderr as before.	It would be better to have a single
	  progress bar, however.

	  Handle a few more random bits of text appearing in listings - but
	  these new ones are just added to the end of the programme
	  description.

2003-09-13 09:05  epaepa

	* grab/it/tv_grab_it.in: Make channel ids lowercase, like domain
	  names.

2003-09-13 09:03  epaepa

	* grab/it/tv_grab_it.in: Moved domain name guidatv.libero.it into
	  $domain.

2003-09-12 22:04  epaepa

	* grab/it/dud_channels: Updated for new channel ids
	  (guidatv.libero.it); added dud channel 102.5.

2003-09-12 21:24  epaepa

	* grab/it/tv_grab_it.in: Reformatted code in preparation for
	  patching.

2003-09-11 05:43  rmeden

	* lib/exe_opt.pl: add some more excludes for bogus missing module
	  messages

2003-09-10 19:49  epaepa

	* lib/Ask.pm: Disable graphical config unless the XMLTV_TK
	  environment variable is set to a true value.

2003-09-06 19:14  epaepa

	* grab/de/tv_grab_de: Added a warning that the grabber is currently
	  not working.

2003-08-29 21:16  epaepa

	* MANIFEST, filter/tv_grep.in, t/test_filters.t,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_all_UTF8.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml_amp_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml_dups_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_attrs_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_extract_1_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_extract_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_xml_amp_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_xml_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_xml_dups_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_clump_xml_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_dups_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_dups_xml_amp_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_dups_xml_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_dups_xml_dups_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_dups_xml_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_empty_xml_amp_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_empty_xml_clump_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_empty_xml_dups_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_empty_xml_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_intervals_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_length_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_overlap_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_simple_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_simple_xml_x_whatever_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_sort1_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_sort2_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_sort_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_empty_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_livre_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_sort_by_channel_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_test_xml_test_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_whitespace_xml.expected,
	  t/data/tv_grep_channel_xyz_or_not_channel_b_x_whatever_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_all_UTF8.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_attrs_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_extract_1_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_extract_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_clump_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_dups_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_dups_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_dups_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_dups_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_dups_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_empty_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_empty_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_empty_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_empty_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_intervals_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_length_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_overlap_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_simple_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_simple_xml_x_whatever_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_sort1_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_sort2_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_sort_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_empty_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_livre_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_sort_by_channel_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_test_xml_test_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_whitespace_xml.expected,
	  t/data/tv_grep_not_channel_id_channel4_com_x_whatever_xml.expected,
	  t/data/tv_grep_not_channel_name_d_all_UTF8.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_attrs_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_extract_1_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_extract_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_name_d_clump_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_dups_xml.expected,
	  t/data/tv_grep_not_channel_name_d_dups_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_name_d_dups_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_dups_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_name_d_dups_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_empty_xml_amp_xml.expected,
	  t/data/tv_grep_not_channel_name_d_empty_xml_clump_xml.expected,
	  t/data/tv_grep_not_channel_name_d_empty_xml_dups_xml.expected,
	  t/data/tv_grep_not_channel_name_d_empty_xml_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_intervals_xml.expected,
	  t/data/tv_grep_not_channel_name_d_length_xml.expected,
	  t/data/tv_grep_not_channel_name_d_overlap_xml.expected,
	  t/data/tv_grep_not_channel_name_d_simple_xml.expected,
	  t/data/tv_grep_not_channel_name_d_simple_xml_x_whatever_xml.expected,
	  t/data/tv_grep_not_channel_name_d_sort1_xml.expected,
	  t/data/tv_grep_not_channel_name_d_sort2_xml.expected,
	  t/data/tv_grep_not_channel_name_d_sort_xml.expected,
	  t/data/tv_grep_not_channel_name_d_test_empty_xml.expected,
	  t/data/tv_grep_not_channel_name_d_test_livre_xml.expected,
	  t/data/tv_grep_not_channel_name_d_test_sort_by_channel_xml.expected,
	  t/data/tv_grep_not_channel_name_d_test_xml.expected,
	  t/data/tv_grep_not_channel_name_d_test_xml_test_xml.expected,
	  t/data/tv_grep_not_channel_name_d_whitespace_xml.expected,
	  t/data/tv_grep_not_channel_name_d_x_whatever_xml.expected: Added
	  --not option to tv_grep.  It negates the following predicate.
	  Not yet thoroughly tested.

2003-08-29 19:05  epaepa

	* Makefile.PL: windows_dist no longer uses any Unix commands - only
	  commands that come with perl.

2003-08-28 20:56  epaepa

	* MANIFEST, Makefile.PL, grab/Config_file.pm, grab/dk/tv_grab_dk,
	  grab/es/tv_grab_es, grab/fi/tv_grab_fi, grab/hu/tv_grab_hu,
	  grab/it/tv_grab_it.in, grab/nl/tv_grab_nl,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/Ask.pm, lib/AskTerm.pm,
	  lib/AskTk.pm: Applying Andy Balaam's patch for Tk configuration
	  in environments that support it (with a few changes).

	  XMLTV::Ask now has two implementations, AskTerm and AskTk, and
	  chooses one based on whether Tk is usable.  The grabbers need to
	  use the XMLTV::Ask routines exclusively when they want to
	  communicate with the user; in particular this means the new say()
	  routine rather than print().

	  I haven't tested the Tk configuration half yet.

2003-08-28 19:46  epaepa

	* grab/nz/tv_grab_nz.in: Patch from James Sleeman to extract
	  episode titles, except for certain titles mentioned in the
	  episode_names file.

	  Also changed to turn 'Movie: ' into a category.

2003-08-26 21:03  epaepa

	* Makefile.PL: Version 0.5.17.

2003-08-26 21:00  epaepa

	* README, doc/README.win32, lib/XMLTV.pm.in: Version 0.5.17.

2003-08-26 20:40  epaepa

	* grab/nz/tv_grab_nz.in: Re-enabled tv_grab_nz as it seems to be
	  working again (though not perhaps 100% of the time).

2003-08-25 03:36  rmeden

	* choose/tv_check/: tv_check, tv_check_doc.html: add --bluenew
	  option to highlight non-repeat episodes

2003-08-17 15:10  epaepa

	* Makefile.PL, README: Reinstated tv_grab_nz, it is now working
	  again.

2003-08-17 14:01  epaepa

	* lib/Ask.pm: Reformatted @EXPORT with one word per line - this
	  makes it easier to diff and patch.

2003-08-17 09:31  epaepa

	* t/test_filters.t: When a command fails, report the arguments as
	  well.

2003-08-17 09:18  epaepa

	* lib/IMDB.pm: When files have been automatically downloaded, don't
	  then warn about them being missing.

2003-08-17 09:11  epaepa

	* lib/TZ.pm: Added trace messages; corrected comment.

2003-08-17 09:07  epaepa

	* grab/Config_file.pm: Give an error for seemingly empty config
	  files.

2003-08-17 09:06  epaepa

	* filter/tv_grep.in: More log messages.

2003-08-17 09:05  epaepa

	* mkdist: Remove .cvsignore files from the release as well as CVS/
	  directories.

2003-08-16 09:22  epaepa

	* doc/README.win32: Updated for 0.5.16 release.  This file needs to
	  be self-contained because at the moment 'make windows_dist'
	  installs it as the README for the Windows distribution and leaves
	  out the source code README.  Maybe we can change this for a later
	  release.

2003-08-16 09:15  epaepa

	* Makefile.PL: Added --yes option to choose to install everything,
	  and --nodeps to write the Makefile even if dependencies are
	  missing.  These help with building the Windows distribution.

2003-08-14 21:14  epaepa

	* README: Whoops, forgot to update the signature line.

2003-08-14 21:11  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.15.

2003-08-14 21:00  epaepa

	* Makefile.PL, grab/nz/tv_grab_nz.in: Disabling tv_grab_nz since I
	  don't have time to fix it right now and we need a new release to
	  fix tv_grab_na.

2003-08-13 13:37  rmeden

	* doc/README.win32: updated README to include current windows tips

2003-08-09 22:40  epaepa

	* xmltv.dtd: Corrected UT to UTC.

2003-07-29 20:56  epaepa

	* Makefile.PL: Fixed to work with newer versions of MakeMaker,
	  which define a FIRST_MAKEFILE variable.

2003-07-25 15:47  rmeden

	* choose/tv_check/tv_check_doc.html: document wildcard scans
	  document --notruncate option

2003-07-25 15:47  rmeden

	* choose/tv_check/tv_check: add --notruncate option to allow
	  title-scans more than 7 days away

2003-07-25 15:41  rmeden

	* choose/tv_check/.cvsignore: [no log message]

2003-07-25 15:41  rmeden

	* choose/tv_check/.cvsignore: Updated by TortoiseCVS

2003-07-25 15:28  rmeden

	* choose/tv_check/tv_check: case sensitivity to title-scans have
	  been put back in.  a case insensitive wildcard title search
	  capability has been adde

2003-07-25 14:21  rmeden

	* choose/tv_check/tv_check: make Title-Search case insensitive

2003-07-24 19:13  jveldhuis

	* lib/IMDB.pm: update estimate to reflect latest counts

2003-07-20 16:22  epaepa

	* grab/: dk/tv_grab_dk, es/tv_grab_es, fi/tv_grab_fi,
	  hu/tv_grab_hu, it/tv_grab_it.in, nl/tv_grab_nl: Changed grabbers
	  to use XMLTV::Ask::askManyBooleanQuestions() for handling 'none'
	  and 'all' answers.

2003-07-20 16:18  epaepa

	* lib/Ask.pm: askManyBooleanQuestions(): carp() about the mistake
	  of passing 'no' as the default instead of 0 (since the string
	  'no' is false).

2003-07-20 12:49  epaepa

	* lib/Ask.pm: askManyBooleanQuestions(): Offer both 'all' and
	  'none' options regardless of the default answer.

2003-07-19 16:15  epaepa

	* Makefile.PL, Uninstall.pm, mkdist, choose/tv_pick/tv_pick_cgi,
	  filter/Grep.pm, filter/tv_extractinfo_en, filter/tv_sort,
	  grab/Europe_TZ.pm, grab/Get_nice.pm, grab/es/tv_grab_es,
	  grab/fi/tv_grab_fi, grab/hu/tv_grab_hu, grab/nl/tv_grab_nl,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/Ask.pm, lib/Clumps.pm,
	  lib/Gunzip.pm, lib/IMDB.pm, lib/Summarize.pm, lib/TZ.pm,
	  lib/Usage.pm, lib/XMLTV.pm.in, t/parallel_test, t/test_filters.t:
	  Say 'our' instead of 'use vars'.  Changes checked by hand but not
	  every program has been run ('make test' passes).

2003-07-19 14:51  epaepa

	* grab/it/tv_grab_it.PL, grab/nz/tv_grab_nz.PL,
	  lib/set_share_dir.pl: set_share_dir.pl now provides a
	  set_share_dir() function to call with two arguments, rather than
	  using a global $in variable and @ARGV.

2003-07-19 12:24  epaepa

	* t/test_filters.t: Allow extra arguments as regexps for tests to
	  run, so you can say for example './t/test_filters.t --full
	  tv_sort'.

2003-07-15 02:25  rmeden

	* choose/tv_check/tv_check: fix some more loose ends on channel
	  name changes

2003-07-14 20:56  epaepa

	* xmltv.dtd: Clarified the meaning of the 'part number' field in
	  xmltvns episode-nums.

2003-07-12 20:51  epaepa

	* Makefile.PL, filter/tv_sort: Replaced data_eq() in tv_sort with
	  the Storable module, which can be used to implement deep equality
	  testing.

2003-07-12 16:48  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: When an unknown bit of text is very
	  long, it's probably an extra description or review.

2003-07-12 16:48  epaepa

	* grab/nz/tv_grab_nz.in: Handle part numbers like 'P2' (I hope this
	  does express a part number and isn't junk text).

2003-07-11 05:46  rmeden

	* choose/tv_check/tv_check: keep up with tv_grab_na's changes to
	  the channel name field.  It's used to auto-convert from the old
	  tv_grab_na id format to new RFC format.  Once the the show file
	  is written again, the new id values are stored.

2003-07-10 21:18  epaepa

	* mkdist: Check the date in the README file before release.

2003-07-06 19:13  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.15.

2003-07-06 19:12  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Handle (or rather explicitly
	  do-not-handle) another piece of information on the site,
	  'subsequent programmes may be altered or late'.

2003-07-06 18:39  epaepa

	* grab/nz/tv_grab_nz.in: get_programs(): If there's a failure
	  downloading the URL, warn about it and return nothing (rather
	  than aborting).

2003-07-06 17:12  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Fixed for change in the layout of
	  the index page on the upstream site.

2003-07-06 16:46  epaepa

	* grab/nl/tv_grab_nl: process_summary_page(): Refactored parsing of
	  dates: annotate @todo with start day and stop day and then parse
	  each element of it afterwards.

2003-07-06 16:21  epaepa

	* grab/nl/tv_grab_nl: The code to work out when a midnight crossing
	  should be placed was wrong because it wasn't comparing
	  Date::Manip's deltas correctly.  You have to use Delta_Format()
	  before you can compare them - I chose to format them as a number
	  of seconds.

	  This fixes the problem found by Paul Webster where Sport from
	  12:30 to 00:00 would bump the day, giving the wrong day for all
	  the following programmes that were contained inside Sport.  But
	  it does so almost by accident.

2003-07-06 13:20  epaepa

	* lib/IMDB.pm: Now uses XMLTV::Gunzip to open gzipped files.

	  openMaybeGunzip(): new routine to factor out code of gunzipping
	  or opening normally depending on file extension.

2003-07-06 13:02  epaepa

	* lib/Gunzip.pm: This module now provides a way to open .gz files
	  as well as decompressing data in memory.  The opening works by
	  using gzopen() and a simple Tie::Handle wrapper to make
	  Compress::Zlib look like a filehandle.  This code ought to be
	  part of Compress::Zlib itself one day.  If the module is not
	  installed then of course we open a pipe from gzip.

2003-07-05 18:34  epaepa

	* MANIFEST, Makefile.PL, grab/de/tv_grab_de, lib/Gunzip.pm: Moved
	  the code to call Compress::Zlib-or-gzip(1) out of tv_grab_de into
	  a new library XMLTV::Gunzip.

2003-07-05 06:58  rmeden

	* lib/IMDB.pm: change from LWP::Simple::getprint to getstore.
	  getprint converts line endings on MacOS and windows, and this
	  screws up the gziped listing files. In addition, getstore doesn't
	  need all the games with STDOUT.

2003-07-03 21:21  epaepa

	* Makefile.PL, README: The complicated testing of Date::Manip
	  should no longer be needed, version 5.42 incorporates the fixes
	  we want so we can just require that.

2003-07-03 21:20  epaepa

	* lib/TZ.pm: Changed a few die()s to croak() when they are the
	  caller's fault.

2003-07-03 21:19  epaepa

	* grab/Europe_TZ.pm: parse_eur_date(): added usage check.

2003-07-03 20:51  epaepa

	* grab/de/tv_grab_de: The upstream timezones are incorrect, don't
	  rely on them but use Europe_TZ instead.

2003-07-02 23:58  jveldhuis

	* Makefile.PL: reversed an accidental check-in that removed the
	  checks for Date::Manip versions

2003-07-01 19:01  jveldhuis

	* Makefile.PL: version 0.5.14 numbers

2003-07-01 18:56  jveldhuis

	* lib/XMLTV.pm.in: version 0.5.14 numbers

2003-07-01 18:50  jveldhuis

	* Makefile.PL, README, doc/README.win32: version 0.5.14 numbers

2003-07-01 16:44  jveldhuis

	* mkdist: put back in cvs tagging

2003-07-01 16:43  jveldhuis

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: updated
	  version numbers and descriptions for 0.5.13 release

2003-06-29 21:15  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.12.

2003-06-29 20:54  epaepa

	* lib/IMDB.pm: Declare the name 'OLDOUT' to quell warning.

2003-06-29 19:15  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: The warning about channel names now
	  allows the small difference 'Sky One' -> 'Sky 1', etc.

2003-06-29 19:14  epaepa

	* grab/nl/tv_grab_nl: In --slow mode, deal with a couple of
	  non-Latin-1 characters that creep into the HTML.  A more general
	  character check is still todo.

2003-06-29 19:03  epaepa

	* grab/hu/tv_grab_hu: Trim leading and trailing whitespace from
	  programme titles.

2003-06-29 15:53  epaepa

	* choose/tv_check/tv_check, filter/tv_cat,
	  filter/tv_extractinfo_en, filter/tv_grep.in, filter/tv_imdb,
	  filter/tv_sort, filter/tv_split, filter/tv_to_latex,
	  filter/tv_to_text, grab/de/tv_grab_de, grab/dk/tv_grab_dk,
	  grab/es/tv_grab_es, grab/fi/tv_grab_fi, grab/hu/tv_grab_hu,
	  grab/it/tv_grab_it.in, grab/nl/tv_grab_nl,
	  grab/nl_wolf/tv_grab_nl_wolf, grab/nz/tv_grab_nz.in,
	  grab/uk_rt/tv_grab_uk_rt.in: All files with pod documentation now
	  have '=pod'.	This should let them get noticed by older versions
	  of MakeMaker.

2003-06-29 14:51  epaepa

	* grab/de/tv_grab_de: Added 'use bytes' to work around baffling
	  problem reported by Axel Thimm.

	  Remove empty <desc> elements to avoid complaints from XMLTV.pm.

2003-06-29 14:40  epaepa

	* grab/nl/tv_grab_nl: Rewrote --slow mode so that it uses the
	  summary information of 'fast' mode and just adds extra details.
	  This should get rid of the bugs with missing programmes or wrong
	  times in --slow mode.

2003-06-24 04:32  jveldhuis

	* lib/IMDB.pm: how rude, some entries have (TV) appearing more than
	  once.

2003-06-23 22:57  rmeden

	* choose/tv_check/tv_check.bat: [no log message]

2003-06-22 19:46  epaepa

	* mkdist: Fixed regexp to match xmltv/0.5.11 or whatever in
	  ZapListings.pm.

2003-06-22 19:22  epaepa

	* Makefile.PL, README, mkdist, doc/README.win32, lib/XMLTV.pm.in:
	  Version 0.5.11.

	  Added Zaplistings.pm to the version checker in mkdist.

2003-06-22 17:56  epaepa

	* grab/it/tv_grab_it.in: Use get_nice() to download channels page,
	  not get() which is not imported.

2003-06-22 17:54  epaepa

	* grab/it/tv_grab_it.in: Robert E. spotted that --share was broken.

2003-06-22 17:32  epaepa

	* Makefile.PL: Changed description of tv_check as suggested by
	  Robert Eden.

2003-06-22 16:39  rmeden

	* lib/exe_wrap.pl: added tv_grab_it to those programs that need a
	  --share directory

2003-06-22 10:40  epaepa

	* Makefile.PL: More windows_dist fixes: remove useless files and
	  directories.

2003-06-22 10:25  epaepa

	* Makefile.PL: Fixed manual page generation (again).  For some
	  reason $(INSTALLMAN1DIR), which is normally the final resting
	  place of section 1 manual pages, wasn't created at the time
	  windows_dist ran.  Instead we now fetch the pages from
	  $(INST_MAN1DIR), which is the temporary place in blib/, and
	  should always be there.  I hope this doesn't break on anyone
	  else's system with a different MakeMaker.

	  The 'unix2dos' program also has a tendency to misbehave - it can
	  run in two modes, modifying a file in-place or running as a
	  filter and writing the new text to stdout.  My unix2dos seems to
	  have decided to switch from one to the other, so I've replaced it
	  with some Perl code to do the same job.

2003-06-22 09:44  epaepa

	* Makefile.PL: Made the prompting for optional things a bit more
	  manageable - you are offered a default configuration to accept.

2003-06-21 20:12  epaepa

	* grab/fi/tv_grab_fi: Updated for new layout of channel list on
	  front page - the grabber now works again.

2003-06-21 20:02  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Handle alternate spellings 'Related
	  websites' and 'Related features'; report the correct URL in error
	  messages.

2003-06-21 19:54  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Loosened regexp to match channel
	  list, so the grabber now works again.

2003-06-21 19:45  epaepa

	* grab/nz/tv_grab_nz.in: Parse 'Part 2' etc. and turn it into
	  <episode-num>.

2003-06-21 15:37  epaepa

	* Makefile.PL: Don't create plain text versions of section 3 manual
	  pages for the Windows binary distribution - they are not needed.

	  But where the pages are installed, give them the correct name:
	  XMLTV::Foo rather than just Foo.

2003-06-21 15:07  epaepa

	* Makefile.PL: Fixed windows_dist target: a line was missing.
	  Converted some spaces to tabs (it didn't seem to matter, but
	  might as well be consistent).

2003-06-21 14:44  epaepa

	* MANIFEST: Added merge_tvprefs to file list.

2003-06-21 14:26  epaepa

	* grab/de/tv_grab_de: Fix up the downloaded XML to have
	  proper-looking channel ids and <channel> elements.

2003-06-21 13:02  epaepa

	* grab/nl/tv_grab_nl: Moved most of write_details() into a new
	  routine process_details_page() which returns a programme hash
	  from a single page.  Then write_details()'s job is to track
	  next-day changes and write the programmes.

	  time_van_str(), time_tot_str(): these do now return strings, not
	  Date::Manip objects.

2003-06-21 11:38  epaepa

	* grab/nl/tv_grab_nl: Refactored the calls of summary_page_data()
	  on each of @to_get - the results are needed for both slow and
	  fast modes.

	  Removed detail_urls(), it is not and was not used.

	  Don't warn about empty 'Genre', just skip it.

2003-06-21 10:43  epaepa

	* grab/nl/tv_grab_nl: Trimmed trailing spaces.

2003-06-14 17:26  epaepa

	* Makefile.PL: Version 5.40.epa1 of Date::Manip is now required;
	  added a selection of different verbose error messages explaining
	  what you might or might not need to install.

2003-06-08 18:21  rmeden

	* choose/tv_check/tv_check: added code to automatically convert to
	  new RFC based tv_grab_na channel Ids

	  added code to remove false alarm and "never mind" message when
	  --myrelaytv can't guess a show day, but assumes the old day is
	  ok.

2003-06-08 10:10  epaepa

	* filter/: Grep.pm, tv_grep.in: Fixed bug found by Jeffrey Arundel
	  Ralph and Robert Eden.  An empty regexp does not 'always match',
	  instead it uses the last successfully matching regexp.  This
	  meant it appeared to work for some users but failed for others.
	  Now there is an explicit check for empty regexp whenever one is
	  used.  The strange thing is that this check already existed in
	  some parts of the code, but not everywhere.

2003-06-08 09:47  epaepa

	* choose/tv_pick/merge_tvprefs: Adding trivial merge_tvprefs script
	  to combine two or more prefs files.

2003-06-07 17:09  epaepa

	* choose/tv_pick/tv_pick_cgi: Removed support for very old tvprefs
	  files with 'maybe'.

2003-06-03 03:38  rmeden

	* Makefile.PL: blank lines were left in new windows_dist code.

2003-06-01 21:11  epaepa

	* grab/Europe_TZ.pm: date_to_eur(): Removed unused $clock_shift
	  variable.

2003-06-01 18:31  epaepa

	* grab/nl/tv_grab_nl: process_summary_page(): Rewrote handling of
	  times.  Now instead of taking the first programme with stop <
	  start as the point where the listings cross midnight, all such
	  programmes are compared and the one with the shortest length is
	  taken as the 'real' one (so we ignore things like 'Kilroy
	  10:00-00:00', which is both absurd and all too plausible).  The
	  results returned should now guarantee no programme stops before
	  it starts, and should be in time order.

	  This should fix some of the problems reported by Johan
	  Schravesande.

2003-06-01 16:49  epaepa

	* MANIFEST, t/data/sort1.xml, t/data/sort2.xml,
	  t/data/tv_cat_all_UTF8.expected,
	  t/data/tv_cat_sort1_xml.expected,
	  t/data/tv_cat_sort2_xml.expected,
	  t/data/tv_extractinfo_en_all_UTF8.expected,
	  t/data/tv_extractinfo_en_sort1_xml.expected,
	  t/data/tv_extractinfo_en_sort2_xml.expected,
	  t/data/tv_grep_a_all_UTF8.expected,
	  t/data/tv_grep_a_sort1_xml.expected,
	  t/data/tv_grep_a_sort2_xml.expected,
	  t/data/tv_grep_category_b_sort1_xml.expected,
	  t/data/tv_grep_category_b_sort2_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_sort1_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_sort2_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_sort1_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_sort2_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_sort1_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_sort2_xml.expected,
	  t/data/tv_grep_channel_name_d_sort1_xml.expected,
	  t/data/tv_grep_channel_name_d_sort2_xml.expected,
	  t/data/tv_grep_channel_xyz_or_channel_b_sort1_xml.expected,
	  t/data/tv_grep_channel_xyz_or_channel_b_sort2_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_sort1_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_sort2_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_sort1_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_sort2_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_sort1_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_sort2_xml.expected,
	  t/data/tv_grep_i_last_chance_c_sort1_xml.expected,
	  t/data/tv_grep_i_last_chance_c_sort2_xml.expected,
	  t/data/tv_grep_new_sort1_xml.expected,
	  t/data/tv_grep_new_sort2_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_UTC_sort1_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_UTC_sort2_xml.expected,
	  t/data/tv_grep_on_after_200302161330_UTC_sort1_xml.expected,
	  t/data/tv_grep_on_after_200302161330_UTC_sort2_xml.expected,
	  t/data/tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  t/data/tv_grep_on_before_200302161330_UTC_sort1_xml.expected,
	  t/data/tv_grep_on_before_200302161330_UTC_sort2_xml.expected,
	  t/data/tv_grep_premiere_sort1_xml.expected,
	  t/data/tv_grep_premiere_sort2_xml.expected,
	  t/data/tv_grep_previously_shown_sort1_xml.expected,
	  t/data/tv_grep_previously_shown_sort2_xml.expected,
	  t/data/tv_sort_all_UTF8.expected,
	  t/data/tv_sort_by_channel_all_UTF8.expected,
	  t/data/tv_sort_by_channel_sort1_xml.expected,
	  t/data/tv_sort_by_channel_sort2_xml.expected,
	  t/data/tv_sort_sort1_xml.expected,
	  t/data/tv_sort_sort2_xml.expected,
	  t/data/tv_to_latex_all_UTF8.expected,
	  t/data/tv_to_latex_sort1_xml.expected,
	  t/data/tv_to_latex_sort2_xml.expected,
	  t/data/tv_to_text_all_UTF8.expected,
	  t/data/tv_to_text_sort1_xml.expected,
	  t/data/tv_to_text_sort2_xml.expected: A couple of test cases for
	  the recently found (and now fixed) bug in tv_sort.

2003-06-01 16:02  epaepa

	* filter/tv_sort, t/data/tv_sort_all_UTF8.expected,
	  t/data/tv_sort_by_channel_all_UTF8.expected: Fixed a design bug
	  in tv_sort.  Previously, when comparing two programmes, if either
	  of them lacked a stop time then it did not consider stop times
	  and went straight on to comparing other things.  But this makes a
	  bad comparison function: for example three programmes which have
	  the same start time, one of them has no stop time, and the other
	  two have different stop times.  You can see that the <= relation
	  is no longer transitive.  Fixed this by deciding that 'no stop
	  time' comes before 'some stop time'.

	  This meant some changes to add_stop(), the routine which guesses
	  stop times for programmes that don't have them.  This function
	  ought perhaps to be in a separate filter program, but it's still
	  part of tv_sort for now.  add_stop() needs to maintain the
	  invariant that its list of programmes is sorted, so you can't
	  always add stop times because that could now change the sorting
	  order.  But I've rewritten it so it's a bit less tangled than
	  before, I'm fairly sure it's correct, and the results seem about
	  the same as before (except in cases where the old version broke).

2003-06-01 15:55  epaepa

	* MANIFEST: Added new lib/exe_opt.pl to file list.

2003-06-01 15:53  epaepa

	* lib/exe_opt.pl: It's 'xmltv' for the project or maybe 'XMLTV',
	  but definitely not 'xmlTV' :-P.

2003-06-01 15:47  epaepa

	* t/test_filters.t: run(): if system() fails, put STDERR back
	  before trying to report an error!

2003-06-01 10:16  epaepa

	* grab/nl/tv_grab_nl: Skip quietly over the 'Ieder heel uur' and
	  'onder voorbehoud' notices.

2003-06-01 10:02  epaepa

	* Makefile.PL: Make requires tabs not spaces before commands.

2003-06-01 09:12  epaepa

	* lib/XMLTV.pm.in: Remove \r characters when reading input; this is
	  for reading files with CP/M line endings, and should fix some
	  test failures on Windows.

2003-06-01 09:10  epaepa

	* grab/nl/tv_grab_nl: Tidied some code; don't use 'next' to exit a
	  subroutine.

2003-06-01 08:20  epaepa

	* MANIFEST: A couple of files were recently deleted.

2003-06-01 08:00  epaepa

	* grab/nl/tv_grab_nl: Removed lone mention of
	  $Log::TraceMessages::On which was causing a warning.

2003-06-01 06:22  rmeden

	* Makefile.PL: forgot to delete exe_opt.txt

2003-06-01 05:46  rmeden

	* lib/exe_opt.pl: Initial Checkin.  This scipt is used to seed the
	  PERLAPP options for for use in making xmltv.exe It's pretty much
	  constants except for the version fields.

2003-06-01 05:44  rmeden

	* Makefile.PL: add version and other meta-data to xmltv.exe

2003-05-31 18:05  epaepa

	* grab/nl/tv_grab_nl: Changed the handling of programmes with
	  missing start or stop times.	Added <url> to the output where it
	  is known.

2003-05-31 13:59  epaepa

	* grab/nl/tv_grab_nl: Whoops, the last version didn't compile due
	  to one too many }s.

2003-05-31 13:34  epaepa

	* filter/tv_grep.in: Added undocumented --echo option which must
	  appear as the first argument and causes tv_grep to dump its
	  arguments to stdout and exit.  This might diagnose some strange
	  bugs on Windows.

2003-05-31 13:11  epaepa

	* filter/tv_imdb: Documented more clearly the memory requirements.

	  Print chatter to STDERR not STDOUT.

2003-05-30 20:47  epaepa

	* lib/IMDB.pm: Use getprint() to download files without loading the
	  whole file into memory.  (OK, later processing does require
	  loading the whole file, but still, this greater frugality in
	  downloading is useful to me.) Also this lets you keep partially
	  written files, which should be renamed to filename.partial.

2003-05-30 20:21  epaepa

	* filter/tv_imdb: Added --download option which if given in
	  --prepStage sets the new 'downloadMissingFiles' flag for
	  XMLTV::IMDB::Crunch.	Changed documentation to reflect this.

	  Documented the slowness in Windows.

2003-05-30 20:07  epaepa

	* lib/IMDB.pm: new(): the new 'downloadMissingFiles' option turns
	  on a simple-minded attempt to get the files from an imdb FTP
	  site.  This might suffice for users on fast connections.  Create
	  the lists/ directory if it doesn't already exist.

2003-05-30 19:11  epaepa

	* filter/tv_imdb: Documented that IMDB.pm runs an external gzip
	  rather than using Compress::Zlib.

2003-05-30 13:58  rmeden

	* Makefile.PL: fix errors dealing with the MAN pages.

2003-05-29 21:17  epaepa

	* grab/nl/tv_grab_nl: Changed the handling of programmes with
	  missing start and stop times: now process_summary_page() returns
	  what it can (including even programmes with stop time but no
	  start) and there is less inclination to spoil a 'good' programme
	  by putting it in a clump with bad ones.

	  This might or might not satisfactorily solve the problems
	  reported by Johan Schravesande.

2003-05-26 14:47  epaepa

	* doc/README.win32: Noted that ^ is the quote character on some
	  Windows versions.

2003-05-26 11:49  epaepa

	* Makefile.PL: Dealt with FIXME: replaced Unix commands (other than
	  echo(1)) with invocations of ExtUtils::Command.  This should
	  improve portability, particularly to Windows.

2003-05-26 09:45  epaepa

	* Makefile.PL, doc/README.win32: Documented date formats for
	  xmltv.exe users in a generated file date_formats.txt.

2003-05-26 09:42  epaepa

	* filter/tv_split: Removed reference to nonexistent xmltv(5)
	  manpage.

2003-05-25 05:31  rmeden

	* lib/exe_wrap.pl: remove error on directory with space in it...
	  doesn't seem to be a problem now

2003-05-22 20:45  epaepa

	* Makefile.PL: Made the configuration process more consistent by
	  having every grabber optional.  Only the XMLTV libraries and
	  filter programs are required.

2003-05-22 20:14  epaepa

	* Makefile.PL: Made all occurrences of tv_grab_nz contained in its
	  hash of conditional stuff.  This should fix the bug where
	  Makefile.PL doesn't run if you say 'no' to tv_grab_nz.

2003-05-22 20:02  epaepa

	* Makefile.PL: Refactoring.

2003-05-22 19:57  epaepa

	* Makefile.PL: Refactoring.

2003-05-22 19:50  epaepa

	* Makefile.PL: Refactoring.

2003-05-22 19:22  epaepa

	* Makefile.PL: Fixed 'set LC_ALL to en_US' error message.

2003-05-21 19:50  epaepa

	* grab/nz/episode_names: Adding dummy episode_names file to keep
	  the Makefile.PL happy.  I hope that soon it will be replaced with
	  a real list of episode names.

2003-05-20 19:25  epaepa

	* MANIFEST: Renamed test cases.

2003-05-19 20:09  epaepa

	* t/: test_filters.t,
	  data/tv_grep_on_after_2002_02_05_UTC_all_UTF8.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_attrs_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_extract_1_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_extract_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_clump_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_dups_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_dups_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_dups_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_dups_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_empty_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_empty_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_empty_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_intervals_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_length_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_overlap_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_simple_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_sort_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_test_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_test_livre_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_test_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_test_xml_test_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_whitespace_xml.expected,
	  data/tv_grep_on_after_2002_02_05_UTC_x_whatever_xml.expected,
	  data/tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_attrs_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_extract_1_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_extract_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_intervals_xml.expected,
	  data/tv_grep_on_after_2002_02_05_length_xml.expected,
	  data/tv_grep_on_after_2002_02_05_overlap_xml.expected,
	  data/tv_grep_on_after_2002_02_05_simple_xml.expected,
	  data/tv_grep_on_after_2002_02_05_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_after_2002_02_05_sort_xml.expected,
	  data/tv_grep_on_after_2002_02_05_test_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_test_livre_xml.expected,
	  data/tv_grep_on_after_2002_02_05_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_after_2002_02_05_test_xml.expected,
	  data/tv_grep_on_after_2002_02_05_test_xml_test_xml.expected,
	  data/tv_grep_on_after_2002_02_05_whitespace_xml.expected,
	  data/tv_grep_on_after_2002_02_05_x_whatever_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_all_UTF8.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_attrs_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_extract_1_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_extract_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_clump_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_dups_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_dups_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_dups_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_dups_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_empty_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_empty_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_empty_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_intervals_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_length_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_overlap_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_simple_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_sort_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_test_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_test_livre_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_test_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_test_xml_test_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_whitespace_xml.expected,
	  data/tv_grep_on_after_200302161330_UTC_x_whatever_xml.expected,
	  data/tv_grep_on_after_200302161330_all_UTF8.expected,
	  data/tv_grep_on_after_200302161330_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_amp_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_amp_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_amp_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_amp_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_attrs_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_extract_1_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_extract_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_clump_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_dups_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_dups_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_dups_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_dups_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_empty_xml_amp_xml.expected,
	  data/tv_grep_on_after_200302161330_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_200302161330_empty_xml_dups_xml.expected,
	  data/tv_grep_on_after_200302161330_empty_xml_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_intervals_xml.expected,
	  data/tv_grep_on_after_200302161330_length_xml.expected,
	  data/tv_grep_on_after_200302161330_overlap_xml.expected,
	  data/tv_grep_on_after_200302161330_simple_xml.expected,
	  data/tv_grep_on_after_200302161330_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_after_200302161330_sort_xml.expected,
	  data/tv_grep_on_after_200302161330_test_empty_xml.expected,
	  data/tv_grep_on_after_200302161330_test_livre_xml.expected,
	  data/tv_grep_on_after_200302161330_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_after_200302161330_test_xml.expected,
	  data/tv_grep_on_after_200302161330_test_xml_test_xml.expected,
	  data/tv_grep_on_after_200302161330_whitespace_xml.expected,
	  data/tv_grep_on_after_200302161330_x_whatever_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_all_UTF8.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_attrs_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_extract_1_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_extract_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_clump_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_dups_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_dups_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_dups_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_dups_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_empty_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_empty_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_empty_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_empty_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_intervals_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_length_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_overlap_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_simple_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_sort_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_test_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_test_livre_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_test_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_test_xml_test_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_whitespace_xml.expected,
	  data/tv_grep_on_before_200302161330_UTC_x_whatever_xml.expected,
	  data/tv_grep_on_before_200302161330_all_UTF8.expected,
	  data/tv_grep_on_before_200302161330_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_amp_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_amp_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_amp_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_amp_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_attrs_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_extract_1_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_extract_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_clump_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_dups_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_dups_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_dups_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_dups_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_empty_xml_amp_xml.expected,
	  data/tv_grep_on_before_200302161330_empty_xml_clump_xml.expected,
	  data/tv_grep_on_before_200302161330_empty_xml_dups_xml.expected,
	  data/tv_grep_on_before_200302161330_empty_xml_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_intervals_xml.expected,
	  data/tv_grep_on_before_200302161330_length_xml.expected,
	  data/tv_grep_on_before_200302161330_overlap_xml.expected,
	  data/tv_grep_on_before_200302161330_simple_xml.expected,
	  data/tv_grep_on_before_200302161330_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_before_200302161330_sort_xml.expected,
	  data/tv_grep_on_before_200302161330_test_empty_xml.expected,
	  data/tv_grep_on_before_200302161330_test_livre_xml.expected,
	  data/tv_grep_on_before_200302161330_test_sort_by_channel_xml.expected,
	  data/tv_grep_on_before_200302161330_test_xml.expected,
	  data/tv_grep_on_before_200302161330_test_xml_test_xml.expected,
	  data/tv_grep_on_before_200302161330_whitespace_xml.expected,
	  data/tv_grep_on_before_200302161330_x_whatever_xml.expected: The
	  recent change to tv_grep and other programs to parse command-line
	  dates according to the local timezone broke the test suite.
	  Changed the tv_grep commands so that UTC is explicitly specified
	  for the dates.

2003-05-19 19:31  epaepa

	* MANIFEST, Makefile.PL, choose/tv_check/tv_check, filter/tv_cat,
	  filter/tv_extractinfo_en, filter/tv_grep.in, filter/tv_imdb,
	  filter/tv_sort, filter/tv_split, filter/tv_to_latex,
	  filter/tv_to_text, grab/de/tv_grab_de, grab/dk/tv_grab_dk,
	  grab/es/tv_grab_es, grab/fi/tv_grab_fi, grab/hu/tv_grab_hu,
	  grab/it/tv_grab_it.in, grab/nl/tv_grab_nl,
	  grab/nl_wolf/tv_grab_nl_wolf, grab/nz/tv_grab_nz.in,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/Version.pm: Every executable now
	  has a --version argument, provided by the new XMLTV::Version
	  library which can parse the CVS id you import it with.

2003-05-18 19:11  rmeden

	* lib/exe_wrap.pl: die if a space is found in the exe path and a
	  --share directory is needed.	we know this causes problems.

2003-05-18 15:11  epaepa

	* grab/de/tv_grab_de: Kludge around the 'und uuml;' brokenness.

2003-05-18 14:11  epaepa

	* grab/Grab_XML.pm: Need to import XMLTV::TZ for
	  parse_local_date().

2003-05-17 18:16  epaepa

	* grab/nl/tv_grab_nl: Removed documentation for recently-fixed bug;
	  added documentation about missing channels reported by Johan
	  Schravesande.

2003-05-17 17:56  epaepa

	* grab/nl/tv_grab_nl: A further refinement to the
	  stick-dodgy-programmes-into-a-clump code: delete the stop time of
	  the clump, it was taken from the first programme but we have no
	  indication that this time applies to the clump as a whole (it
	  probably doesn't).  So delete it.

2003-05-17 17:48  epaepa

	* grab/nl/tv_grab_nl: Fixed recently-introduced timezone bug.
	  Added some more trace messages.

	  OK, with this commit I think the bug/feature reported by Johan
	  Schravesande is fixed.  Instead of giving up when confronted with
	  missing or nonsensical times, the grabber will try to output the
	  programmes as part of a clump.

2003-05-17 17:37  epaepa

	* grab/nl/tv_grab_nl: Whoops, fixed so it compiles :-P.

2003-05-17 15:32  epaepa

	* grab/nl/tv_grab_nl: process_summary_page() is now allowed to
	  return results with undef start and stop times, and it's up to
	  the caller to work out what to do with them.	Previously,
	  process_summary_page() would discard the bad results itself.

2003-05-17 15:21  epaepa

	* grab/nl/tv_grab_nl: In fast mode, don't allow programmes to cross
	  midnight twice on the same page (give up if this happens).

	  Added some trace messages.

2003-05-16 07:16  epaepa

	* MANIFEST, Makefile.PL, grab/nz/tv_grab_nz, grab/nz/tv_grab_nz.PL,
	  grab/nz/tv_grab_nz.in, lib/set_share_dir.pl: Changed the
	  installation of tv_grab_nz to use the .in / .PL approach, so it
	  can have a share directory, like some of the other grabbers.

2003-05-15 21:06  epaepa

	* Makefile.PL: Moved %share_files to the top level and let it be
	  altered by optional things.

2003-05-15 20:56  epaepa

	* Makefile.PL: Refactoring WriterMakefile()'s PL_FILES argument
	  into a variable %pl_files which can be added to by individual
	  optional things.

2003-05-15 20:26  epaepa

	* filter/tv_grep.in, grab/Grab_XML.pm, lib/TZ.pm: Another attempt
	  at fixing the tv_grep timezone bug.  A new routine
	  XMLTV::TZ::parse_local_date() parses a date and converts it to
	  UTC, so that when Date_Init('TZ=UTC') is called the date object
	  does not get changed.

2003-05-15 04:24  rmeden

	* lib/exe_wrap.pl: limit output of Carp::Confess (called by
	  Date::Manip)

2003-05-14 23:02  epaepa

	* lib/XMLTV.pm.in: Go one better - bad programme or channel
	  elements are not returned to the caller at all.

2003-05-14 22:57  epaepa

	* lib/XMLTV.pm.in: Ignore <programme> elements missing required
	  attributes (return them as undef rather than a hash).

2003-05-13 22:39  epaepa

	* Makefile.PL: Date::Manip 5.41 is required, earlier versions have
	  a bug with numbered (rather than named) timezones.

2003-05-13 22:05  epaepa

	* t/data/: sort.xml, tv_cat_all_UTF8.expected,
	  tv_cat_sort_xml.expected, tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_sort_xml.expected, tv_grep_a_all_UTF8.expected,
	  tv_grep_a_sort_xml.expected,
	  tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  tv_grep_on_after_2002_02_05_sort_xml.expected,
	  tv_grep_on_after_200302161330_all_UTF8.expected,
	  tv_grep_on_after_200302161330_sort_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_sort_xml.expected, tv_sort_sort_xml.expected,
	  tv_to_latex_all_UTF8.expected, tv_to_latex_sort_xml.expected,
	  tv_to_text_all_UTF8.expected, tv_to_text_sort_xml.expected: Added
	  test case for Date::Manip bug (fixed in 5.41).

2003-05-13 06:06  rmeden

	* lib/exe_wrap.pl: oops.. forgot File::Basename

2003-05-13 05:40  rmeden

	* choose/tv_check/README.tv_check: minor doc update

2003-05-13 05:36  rmeden

	* choose/tv_check/tv_check: adding a newline to improve error
	  display

2003-05-13 05:35  rmeden

	* lib/exe_wrap.pl: Pretty much a total rewrite.

	  On my development box (and hence the resulting EXEs) application
	  DIE messages were not being delivered to the users.

	  This version is much simpler (no self generating code), uses a
	  "require" instead of a "do" and seems to work fine.  Error
	  statuses are even passed as DOS ERRORLEVELS if you case to script
	  it.

2003-05-12 21:42  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Fixed last fix.

2003-05-12 21:32  epaepa

	* grab/nl_wolf/tv_grab_nl_wolf: Added sanity check of index page.

2003-05-12 21:23  epaepa

	* filter/tv_grep.in, grab/Grab_XML.pm, grab/nl/tv_grab_nl,
	  grab/uk_rt/tv_grab_uk_rt.in: Attempting to fix bug with parsing
	  'now' or 'today' dates.  This can't be done after calling
	  Date_Init('TZ=UTC').

2003-05-12 21:15  epaepa

	* grab/nl/tv_grab_nl: Fixed --offset handling.

2003-05-11 21:30  epaepa

	* Makefile.PL: Whoops, cut-n-paste error.

2003-05-11 21:24  epaepa

	* MANIFEST, Makefile.PL, grab/dk/tv_grab_dk: Adding Jesper Skov's
	  tv_grab_dk grabber for Denmark.

2003-05-11 11:25  epaepa

	* MANIFEST, Makefile.PL, grab/hu/tv_grab_hu: New grabber:
	  tv_grab_hu for Hungary written by Attila Szekeres and Zsolt Varga
	  (although I have changed bits myself as well).

2003-05-11 11:22  epaepa

	* grab/es/tv_grab_es: Don't read the config file twice, use
	  @config_lines which was read early on.

2003-05-11 10:29  epaepa

	* lib/XMLTV.pm.in: XMLTV::Writer now overrides dataElement() to
	  catch all cases of writing empty (or all-whitespace) element
	  content.  (For things which are intended to be empty call
	  emptyTag().)

2003-05-10 16:02  epaepa

	* grab/Mode.pm: Forgot to add and commit this file earlier.

2003-05-10 15:14  epaepa

	* MANIFEST, Makefile.PL, grab/es/tv_grab_es, grab/fi/tv_grab_fi,
	  grab/nl/tv_grab_nl, grab/uk_rt/tv_grab_uk_rt.in: A new library
	  XMLTV::Mode factors out the check 'you cannot configure and list
	  channels at the same time'.

	  Made sure all the grabbers fail early if they cannot read the
	  config file during grabbing, rather than starting to download or
	  write data before the config file is checked.

2003-05-10 14:48  epaepa

	* grab/nz/tv_grab_nz: Whoops, botched the last change - there was
	  already a config file message.  But it wasn't displayed until
	  later in the process.

2003-05-10 14:44  epaepa

	* grab/nz/tv_grab_nz: Print a message to stderr saying what config
	  filename has been guessed.

2003-05-10 13:23  epaepa

	* grab/es/tv_grab_es: Fixed spelling of --list-channels in
	  documentation.

2003-05-09 21:15  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart, doc/README.win32:
	  Removed tv_grab_us_gist, the gist.com site is no longer providing
	  listings.

	  Removed the 'changes in this release' from README and
	  README.win32.

2003-05-09 20:58  epaepa

	* MANIFEST: Added grab/Get_nice.pm to file list.

2003-05-08 23:26  rmeden

	* lib/exe_wrap.pl: removed error for tv_imdb.  It works on windows
	  now.

2003-05-08 23:23  rmeden

	* choose/tv_check/tv_check: rename $MYREPLAY_SAVE ->
	  $MYREPLAY_DEBUG more accurate added debug messages when
	  $MYREPLAY_DEBUG==2 shorten the "Mon, Tue, Wed...." to "*" in
	  warning if all days specified filter out episodes more than a
	  week away in extra eposide scan fix bug where day not set on
	  initial myrelaytv import

2003-05-06 15:41  jveldhuis

	* filter/tv_imdb: optimized a bit and now open/close database only
	  once instead of for every query

2003-05-06 15:41  jveldhuis

	* lib/IMDB.pm: removed come commented out code

2003-05-06 15:40  jveldhuis

	* lib/IMDB.pm: optimized a bit and now open/close database
	  index/deails files only once

2003-05-06 15:17  jveldhuis

	* lib/IMDB.pm: no longer dependent on look(1), now uses
	  Search::Dict

2003-05-06 15:16  jveldhuis

	* filter/tv_imdb: no longer dependent on look(1)

2003-05-04 21:05  ramonroca

	* grab/es/tv_grab_es: Fixed a bug when the listing has not
	  description and now parses the title-subtitle

2003-05-04 18:09  epaepa

	* grab/Get_nice.pm: Whoops, I removed LWP::Simple from grabbers but
	  forgot to add it to Get_nice.pm.

2003-05-04 12:38  epaepa

	* Makefile.PL, grab/Get_nice.pm, grab/es/tv_grab_es,
	  grab/fi/tv_grab_fi, grab/it/tv_grab_it.in, grab/nl/tv_grab_nl:
	  Factored out the code to get a page and then sleep() into a new
	  library XMLTV::Get_nice.

2003-05-04 11:32  epaepa

	* Makefile.PL: MY::manifypods(): small refactoring.

2003-04-26 21:28  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.10.

2003-04-26 20:38  epaepa

	* grab/Memoize.pm: Handle Memoize versions that are not numeric.
	  (I don't think there have been any, it's just my local
	  hacked-around copy, but on principle...)

2003-04-26 20:37  epaepa

	* grab/Europe_TZ.pm: Changed a few input-validation errors to
	  Carp::croak() rather than die().

2003-04-26 20:31  epaepa

	* grab/fi/tv_grab_fi: Fixed timezone handling to use Europe_TZ.

2003-04-26 19:10  epaepa

	* grab/it/tv_grab_it.in: The bug 'I haven't even considered what
	  happens with DST issues' no longer exists!

2003-04-26 19:06  epaepa

	* grab/nz/tv_grab_nz: Removed redundant 'timezone' variable.  But
	  I'm still not sure what the code is doing with timezones... I
	  think it just ignores them.

2003-04-26 18:57  epaepa

	* grab/nl/tv_grab_nl: Fixed to use Europe_TZ for dates so the
	  timezone is correct in output.

	  Handle 'Behaalde prijzen' in programme descriptions.

2003-04-26 16:26  epaepa

	* grab/it/tv_grab_it.in: xmltv_date(): fixed to use Europe_TZ so
	  that the timezone switches correctly between +0100 and +0200.

2003-04-26 16:18  epaepa

	* grab/it/tv_grab_it.in: Stylistic change to remove unneeded
	  quotation marks around hash keys - this makes it easier to grep
	  through the code for {start}, for example.  Also removed some
	  trailing whitespace.

2003-04-26 14:00  epaepa

	* grab/fi/tv_grab_fi: If a stop time is not known, then no stop
	  time is written - this is better than guessing a wrong time.

2003-04-26 13:56  epaepa

	* grab/es/tv_grab_es: Removed incorrect comment - in fact the
	  grabber does not set top times at all.

2003-04-26 13:53  epaepa

	* grab/es/tv_grab_es: Fixed timezone handling, now uses
	  Europe_TZ.pm.  This gives the correct output now (summer time,
	  +0200) and hopefully will keep working after the change back to
	  CET.

2003-04-26 13:20  epaepa

	* grab/Memoize.pm: Realized that Getopt::Long has a 'passthrough'
	  option, so I don't need to write my own argument-parsing code
	  just to extract the --cache option.  We use the OO interface to
	  Getopt::Long to avoid setting global options which would affect
	  other callers.

2003-04-26 11:45  epaepa

	* grab/Grab_XML.pm: Instead of calling XMLTV::Memoize::check_argv()
	  with a fixed list of functions at the top of the script, call it
	  inside the go() method and get the list of things to memoize from
	  a new method cachables().  Then subclasses which have their own
	  way of fetching web pages can override that method.

2003-04-26 11:42  epaepa

	* grab/Memoize.pm: Whoops, forgot to turn of trace mesages.

2003-04-26 11:40  epaepa

	* grab/Memoize.pm: Fixed to work with names of functions not in the
	  caller's package (eg, calling check_argv('LWP::Simple::get')).
	  Now returns a reference to a list of memoized functions, or undef
	  if no memoization happens (this is consistent with the earlier
	  true/false return values).  Checks that memoize() succeeds and
	  dies if not.

2003-04-26 10:18  epaepa

	* grab/: Config_file.pm, es/tv_grab_es, fi/tv_grab_fi,
	  it/tv_grab_it.in, nl/tv_grab_nl, uk_rt/tv_grab_uk_rt.in:
	  XMLTV::Config_file::filename(): print a message to stderr saying
	  what filename has been picked for the config file.  A new
	  optional 'quiet' argument turns this off.

	  Factored out the code for reading a config file as lines and
	  removing comments: a new routine
	  XMLTV::Config_file::read_lines().

2003-04-26 08:08  epaepa

	* grab/: Config_file.pm, es/tv_grab_es, fi/tv_grab_fi,
	  it/tv_grab_it.in, nl/tv_grab_nl, nz/tv_grab_nz,
	  uk_rt/tv_grab_uk_rt.in: A new routine
	  XMLTV::Config_file::check_no_overwrite() factors out the
	  duplicated 'are you sure you want to overwrite the config file?'
	  check in most grabbers.

2003-04-25 21:17  epaepa

	* grab/Grab_XML.pm: Changed the undocumented --cache option to
	  cache LWP::Simple::get() rather than the method Grab_XML->get().

2003-04-25 20:18  epaepa

	* grab/nl/tv_grab_nl: Rateher than initializing Date::Manip to work
	  with Dutch date strings, keep it in English and change the
	  strings before passing them to ParseDate().  This is because the
	  language is a single global setting and we want to interoperate
	  with libraries that use English strings.

2003-04-24 23:00  staffanmalmgren

	* grab/Europe_TZ.pm: Added convenience function utc_offset

2003-04-23 19:23  epaepa

	* Makefile.PL, README: Promoted Memoize from 'recommended' to
	  'required', since perl 5.8 includes it.  Yes, you can always
	  scrape by without Memoize, but the user may not understand why
	  things are running slowly.  I could print a warning, but simpler
	  just to require the modulee, as more and more vendors ship 5.8 or
	  later.  VS:

2003-04-22 19:32  epaepa

	* grab/Europe_TZ.pm: date_to_eur(): Fixed (I hope) to work with
	  timeonzes other than UTC/UTC+1.  Thanks to Staffan M. for finding
	  the bug,

2003-04-22 14:07  ramonroca

	* grab/es/tv_grab_es: Another break at elpais.es, seems active
	  those days

2003-04-21 00:57  rmeden

	* choose/tv_check/tv_check: don't use Replay fuzzy logic for
	  MYREPLAYTV devices because the episode will be added as a
	  separate show by the MYREPLAYTV fetch logic.

	  Removed extra fields from SHOW file.

2003-04-20 20:40  epaepa

	* MANIFEST, Makefile.PL, grab/Config_file.pm, grab/es/tv_grab_es,
	  grab/fi/tv_grab_fi, grab/it/tv_grab_it.in, grab/nl/tv_grab_nl,
	  grab/nz/tv_grab_nz, grab/uk_rt/tv_grab_uk_rt.in: A new library
	  XMLTV::Config_file encapsulates the job of working out the config
	  filename and doing weird things like creating directories or
	  migrating config filenames.

2003-04-20 12:26  epaepa

	* MANIFEST, Makefile.PL, grab/Europe_TZ.pm,
	  grab/uk_rt/tv_grab_uk_rt.in, lib/TZ.pm, lib/UK_TZ.pm: Replaced
	  the UK_TZ.pm library with Europe_TZ.pm, which should work for
	  most European countries.  The functions are the same but you must
	  pass in the 'base' or winter timezone as an extra parameter (so
	  for British times pass 'UTC').

	  TZ.pm has a new routine tz_to_num() which converts named
	  timezones to their numeric equivalent.

2003-04-20 10:07  ramonroca

	* grab/es/tv_grab_es: Solved a break due to change in elpais.es,
	  and othe minor things

2003-04-18 14:24  epaepa

	* lib/exe_wrap.pl: Each 'command' subroutine stored in %cmds is now
	  expected to handle errors itself - to exit(1) or die() if things
	  went wrong.  This means that the commands for do()ing some Perl
	  script need to check the return value of do() and the $! and $@
	  variables.  Then if a command returns control to the caller, we
	  just exit successfully.

	  This should fix the bug reported by Andy Balaam on xmltv-devel,
	  'non-zero exit codes in Windows'.  But it is *untested*, I don't
	  have access to the Windows exe compiler.

2003-04-18 13:54  epaepa

	* grab/nl/tv_grab_nl: Added function prototypes.

	  get_courteous(): there seems to be a difference in Perl versions
	  on how calling get_courteous_aux(@_) is interpreted.	Or some
	  weird interaction with Memoize.  It seems that @_ was being
	  turned into a scalar by taking the length of the list, ie 1.
	  I've changed it to call get_courteous_aux($_[0]), which works on
	  perl 5.8 and should work on all other versions.

2003-04-16 13:15  rmeden

	* lib/exe_wrap.pl: removed CST6CDT style filenames. Replaced with
	  numeric style.  (The above was required due to a big in
	  Parse::Date, which has been fixed)

	  Added a module to block tv_imdb, since it requires a unix "look"
	  program.

2003-04-16 13:09  rmeden

	* choose/tv_check/tv_check: don't alarm on unexpected show length
	  if length missing or zero.  fixed problem with "NO GUIDE"
	  messages if last entry of the day

2003-04-15 20:02  epaepa

	* filter/tv_cat, lib/XMLTV.pm.in: Moved catfiles() from tv_cat into
	  XMLTV.pm.

2003-04-15 19:46  epaepa

	* filter/tv_cat: catfiles(): Refactored the code into this routine,
	  which is passed some arguments for an XMLTV::Writer and some
	  filenames to read from.  Intending to move into XMLTV.pm soon.

2003-04-12 20:40  epaepa

	* grab/: Grab_XML.pm, de/tv_grab_de, nl_wolf/tv_grab_nl_wolf:
	  XMLTV::Grab_XML::get(): new package method to get the contents of
	  a page at a given URL.  This will let grabbers override the
	  mechanism used to fetch a page (the default implementation uses
	  LWP::Simple).

	  This does mean that packages inheriting from XMLTV::Grab_XML
	  should not import LWP::Simple's get() function, it will clash
	  with the method of the same name.

2003-04-12 11:45  epaepa

	* MANIFEST, Makefile.PL, doc/QuickStart: Adding a new grabber
	  tv_grab_us_gist to fetch the XMLTV listings made available by
	  gist.com.  It's not yet finished and in fact I don't even know if
	  it works - but it will soon.	(Committing so I can run it from my
	  shell account rather than over a modem link!)

2003-04-10 03:55  jveldhuis

	* lib/IMDB.pm: make argument naming consistant with tv_imdb

2003-04-10 03:53  jveldhuis

	* filter/: tv_imdb: --moviesOnly is no --movies-only

2003-04-06 21:27  jveldhuis

	* filter/tv_imdb, lib/IMDB.pm: added --moviesOnly option

2003-04-06 20:40  jveldhuis

	* lib/IMDB.pm: Term::ProgressBar now optional - thanks to Ed for
	  the patch

2003-04-06 20:34  jveldhuis

	* lib/IMDB.pm: removed a duplicated conditional

2003-04-06 17:20  epaepa

	* MANIFEST, Makefile.PL, grab/nl_wolf/tv_grab_nl_wolf: New grabber:
	  tv_grab_nl_wolf downloads XMLTV files from Carlo de Wolf's site.
	  Is is based on the Grab_XML library recently factored out of
	  tv_grab_de.

2003-04-06 17:17  epaepa

	* mkdist: Comment.

2003-04-06 16:59  epaepa

	* lib/XMLTV.pm.in: cat(): when several sets of listings have
	  different 'dates', choose the latest date for the result.  Other
	  attributes of <tv> are processed as before (taken arbitrarily
	  from the first file).

2003-04-06 16:29  epaepa

	* mkdist: chdir() to $TMP_CHECKOUT_DIR once rather than prepending
	  a 'cd' to every command run.

	  Don't use tar --bzip2, it pads the compressed data with zeros or
	  something weird.

2003-04-06 16:22  epaepa

	* mkdist: FTP the tarball in binary mode!

2003-04-06 14:55  epaepa

	* MANIFEST, Makefile.PL, grab/Grab_XML.pm, grab/de/tv_grab_de,
	  lib/Usage.pm: Factored out most code from tv_grab_de into a new
	  library XMLTV::Grab_XML.  Changed XMLTV::Usage so you can pass a
	  usage message to usage(), you don't have to set it when importing
	  the module.  Fixed a Makefile bug where manual pages would be
	  installed under the wrong filename.

2003-04-06 10:36  epaepa

	* Makefile.PL: Version 0.5.9.

2003-04-06 10:31  epaepa

	* doc/README.win32: Updated with changes for the new release
	  (assuming that tv_imdb and the new grabbers will be included in
	  xmltv.exe).

2003-04-06 10:28  epaepa

	* doc/README.win32: Version 0.5.9 (although the Windows binary
	  won't come out immediately).

2003-04-06 10:26  epaepa

	* lib/XMLTV.pm.in: Version 0.5.9.

2003-04-06 09:58  epaepa

	* README: Updated for 0.5.9.

2003-04-06 09:39  epaepa

	* grab/de/tv_grab_de: Documented the fact that the upstream
	  listings currently have broken timezones.

2003-04-06 09:24  epaepa

	* doc/QuickStart: Added a paragraph about tv_imdb.

2003-04-05 21:29  epaepa

	* grab/nz/tv_grab_nz: Documented a bug.

2003-04-05 21:05  epaepa

	* grab/nl/tv_grab_nl: Don't output 'debug_more' comments in fast
	  mode (this was left in the code by mistake).

2003-04-05 21:05  epaepa

	* grab/nl/tv_grab_nl: Added support for 'Orginele Titel' in
	  programme description pages.

2003-04-05 20:52  epaepa

	* grab/nl/tv_grab_nl: Fixed several bugs including missing
	  programmes when a day is split over two pages ('Volgende' link,
	  which previously was not handled by --slow mode).  This has
	  involved commonizing some of the code between fast and slow,
	  which is no bad thing.

2003-04-05 18:50  epaepa

	* lib/XMLTV.pm.in: Fixed the handling of 'debug' keys in hases so
	  it does what it says on the tin.  It should work now for channels
	  as well as programmes.

2003-04-05 18:26  epaepa

	* lib/XMLTV.pm.PL: Don't 'use diagnostics', they slow down loading
	  and aren't that helpful.

2003-04-05 11:18  epaepa

	* grab/nl/tv_grab_nl: do_summary_page(): handle (recursively) the
	  'Volgende' links that sometimes appear.  These mean next page for
	  the same day.  This has involved adding a new parameter,
	  'official day' which is not necessarily the same as 'actual day',
	  and is used only to sanity-check the date printed in the page.

2003-04-05 09:08  epaepa

	* grab/nz/tv_grab_nz: Removed debugging message left in the code my
	  mistake.

2003-04-04 21:57  epaepa

	* grab/nl/tv_grab_nl: Moved the code for downloading and processing
	  the programme summary page for each day into a routine
	  do_summary_page().

2003-04-04 21:39  epaepa

	* grab/nl/tv_grab_nl: Eliminated confusing $date variable.

2003-04-04 21:11  epaepa

	* grab/nz/tv_grab_nz: Fixed bug where a programme crossing midnight
	  would have a stop time in the wrong day.

2003-04-04 19:36  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Handle URLs which appear in without
	  preceding text like 'Related Websites'.

2003-04-03 07:26  epaepa

	* grab/nl/tv_grab_nl: Fixed bug reported by Marcel where the first
	  programme after midnight on a given day would not have its stop
	  time moved forward by 24 hours - due to a 'my' in an inner scope
	  hiding the real $stop variable.

2003-04-03 07:23  epaepa

	* filter/tv_sort: Added a warnong for programmes whose stop time is
	  before their start time.

2003-04-02 19:32  epaepa

	* grab/nl/tv_grab_nl: Changed default number of days to seven.

2003-04-02 19:29  epaepa

	* grab/nl/tv_grab_nl: Fixed to work again with offset zero: I
	  didn't realize that (uniquely among the sites fetched from so
	  far) the listings source does number its days from zero.

	  Better handling of pages that have no listings content at all (as
	  when you ask for more days than the site has).

2003-03-31 07:21  epaepa

	* doc/QuickStart: Updated for newly added grabbers.

2003-03-30 13:03  epaepa

	* grab/nl/tv_grab_nl: Fixed date calculation bug: the day numbers
	  on the site count from 1 meaning today.

2003-03-30 13:02  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: get_programmes(): prepend the URL to
	  warning and error messages.

2003-03-30 12:25  epaepa

	* grab/de/tv_grab_de: Accept but politely ignore the --config-file
	  option.

2003-03-30 12:22  epaepa

	* grab/nz/tv_grab_nz: Added support for a --cache option which is
	  ignored.  This is for consistency with the undocumented --cache
	  option in other grabbers: the option now means 'cache me if you
	  can'.

2003-03-30 12:14  epaepa

	* grab/nz/tv_grab_nz: More thorough command-line checking: error if
	  there are arguments left over after parsing options.

2003-03-29 23:14  epaepa

	* grab/nl/tv_grab_nl: Don't warn about 'Volgende' link which has
	  started appearing on channel summary pages.

2003-03-29 23:13  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Suppress duplicate warnings when the
	  channel name of a programme details page doesn't match that on
	  the channels page (this has started firing for a difference
	  bwtween 'Sky 1' and 'Sky One').

2003-03-29 22:49  epaepa

	* grab/nl/tv_grab_nl: Was being a bit overzealous in delete()ing a
	  TreeBuilder object before the data from it had been extracted.

2003-03-29 21:17  epaepa

	* filter/tv_extractinfo_en: Don't memoize list_names().  My Memoize
	  seems to have gone funny recently, confusing scalar and list
	  context.

2003-03-29 20:53  epaepa

	* MANIFEST, Makefile.PL, grab/nl/tv_grab_nl: Added tv_grab_nl, a
	  grabber for the Netherlands.	This is based on the version Guido
	  Diepen sent me but I have rewritten parts of it - in particular,
	  the default mode is now to output only brief programme details
	  and save on page fetches.

2003-03-29 00:28  rmeden

	* doc/README.win32: add warning about using spaces in xmltv.exe
	  path

2003-03-28 19:49  epaepa

	* filter/tv_extractinfo_en, grab/de/tv_grab_de, grab/es/tv_grab_es,
	  grab/fi/tv_grab_fi, grab/it/tv_grab_it.in: Benjamin Goldberg on
	  comp.lang.perl.moderated pointed out a better way to check if a
	  module is availabl, setting a compile-time constant rather than a
	  variable.  So the constant Have_bar replaces the variable
	  $have_bar.

2003-03-28 19:34  epaepa

	* filter/Grep.pm: Explicitly list the handlers which cannot be
	  queried on; die if a handler name is not recognized.	This makes
	  sure that when adding a new handler to XMLTV.pm we also decide
	  what should happen with it in XMLTV/Grep.pm.

2003-03-28 19:13  epaepa

	* MANIFEST: Added tv_grab_it to file list.

2003-03-27 10:01  rmeden

	* choose/tv_check/tv_check: added code to skip episodes without a
	  start time

2003-03-26 22:12  epaepa

	* grab/nz/tv_grab_nz: Added --config-file option.

	  Accept 'yes' answer to y/N question.

	  When reading the config file give an error if the 'channels' line
	  is not present or appears more than once.  Also don't default the
	  channels list if an I/O error occurs; just give an error.

2003-03-22 23:34  epaepa

	* grab/Memoize.pm: Memoize the function in list context as well as
	  scalar context - but using the same cache for both (the MERGE
	  option).

2003-03-17 00:20  epaepa

	* lib/XMLTV.pm.in: When writing <episode-number>, if the 'system'
	  attribute is not given then default it to 'onscreen'.  This
	  agrees more with what the docs say (and avoids the current bug
	  where it could be written as an empty string if undef).

2003-03-15 15:21  epaepa

	* MANIFEST, Makefile.PL, grab/es/tv_grab_es: Adding Ramon Roca's
	  tv_grab_es grabber for Spain.

2003-03-15 11:17  epaepa

	* filter/tv_grep.in: Dcoumentation clarification.

2003-03-15 11:03  epaepa

	* filter/tv_grep.in: Generalized the warning about not always using
	  the programme autgenerated tests.

2003-03-15 10:53  epaepa

	* filter/: tv_grep.PL, tv_grep.in: Get the manual page information
	  from the Grep.pm library.  This should make sure the manual page
	  stays in sync with changes to tv_grep (it was inconsistent
	  before).

2003-03-13 20:42  rmeden

	* choose/tv_check/README.tv_check: bring the quick-start guide up
	  to date with current version

2003-03-13 00:22  mnbjhguyt

	* grab/it/tv_grab_it.in: more messed up chars fixed

2003-03-12 23:16  epaepa

	* MANIFEST, Makefile.PL, filter/Grep.pm, filter/tv_grep.in: Moved
	  get_matcher() out of tv_grep into a new library Grep.pm.  This is
	  just so it can later be used in pod generation.

2003-03-12 22:18  epaepa

	* filter/tv_grep.in: Fixed a bug in get_handler() and in the use of
	  the same.  Added some trace messages.

2003-03-11 22:54  epaepa

	* filter/tv_grep.in: get_matcher(): new function to replace
	  %queryable hash.  Returns working subs rather than subs you must
	  call to get more subs.

2003-03-11 22:24  epaepa

	* filter/tv_grep.in: Moved the information of how to match on
	  different data types into the hash %queryable, which is used both
	  to look up matching subroutines and to generate the usage
	  message.  (It is a bit convoluted, with subs returning subs, but
	  that could be fixed later.)  Next I have to fix the manual page
	  generation, which is incorrect.

2003-03-10 22:51  epaepa

	* Makefile.PL, README, doc/QuickStart, grab/it/dud_channels,
	  grab/it/tv_grab_it.PL, grab/it/tv_grab_it.in: New grabber
	  tv_grab_it contributed by Davide Chiarini.

2003-03-10 22:50  epaepa

	* filter/tv_imdb: Escaped a quotation mark to avoid confusing
	  emacs.

2003-03-10 22:33  epaepa

	* lib/set_share_dir.pl: Oops, it didn't work, should now.

2003-03-10 22:27  epaepa

	* MANIFEST, lib/set_share_dir.pl: Generalized tv_grab_uk.PL, which
	  sets the $SHARE_DIR constant in a source file, into the 'library'
	  set_share_dir.pl.

2003-03-10 18:39  epaepa

	* Makefile.PL: Term::ProgressBar version 2 is recommended (tv_imdb
	  uses the new interface).

2003-03-10 18:34  epaepa

	* MANIFEST: Added tv_imdb files and new tv_grab_uk provider channel
	  packages to file list.

2003-03-10 06:59  jveldhuis

	* lib/IMDB.pm: minor adjustment to success/failure message

2003-03-10 06:55  jveldhuis

	* lib/IMDB.pm: adopted use of Term::ProgressBar, and lots of it.
	  better feedback on every part of each of the 5 stages.

	  also error messages for each stage appear in stageX.log files
	  instead of being lost to stderr. The number of error messages is
	  reported at the end of each stage's success or failure.

2003-03-09 17:23  epaepa

	* grab/fi/tv_grab_fi: Log the URL that's being fetched.

2003-03-09 16:55  jveldhuis

	* lib/IMDB.pm: added note to look at Term::ProgressBar

2003-03-09 14:52  epaepa

	* grab/fi/tv_grab_fi: Debugging trace messages.

2003-03-09 13:22  epaepa

	* grab/fi/tv_grab_fi: process_table(): now returns a list of
	  programme hashes to be written, rather than taking the
	  XMLTV::Writer as a parameter.

2003-03-09 13:15  epaepa

	* grab/fi/tv_grab_fi: make_programme_hash(): new name for
	  write_data(), it no longer writes but just returns a hash
	  suitable for XMLTV.pm.

2003-03-09 12:45  epaepa

	* grab/fi/tv_grab_fi: Whitespace.

2003-03-09 12:40  epaepa

	* grab/fi/tv_grab_fi: Fixed documentation of config filename.

2003-03-08 13:41  epaepa

	* xmltv.dtd: Clarified that we use DNS-like names for channels not
	  whole URIs.

2003-03-05 23:56  epaepa

	* Makefile.PL: Install files for new tv_imdb filter.

2003-03-05 21:03  epaepa

	* Makefile.PL: Added warning for possibly-buggy perl versions.

2003-03-04 20:59  jveldhuis

	* lib/IMDB.pm: bugs in db_version:  - directors who did multiple
	  episodes of tv series appeared more than once.   - actresses
	  didn't appear in list of actors :) (thanks Chris L. and Bob Y.)

2003-03-04 18:44  jveldhuis

	* filter/tv_imdb: BUG:	How and what to look up needs to be option
	  driven.

2003-03-04 06:29  jveldhuis

	* filter/tv_imdb: perldoc fixes

2003-03-04 06:23  jveldhuis

	* filter/tv_imdb, lib/IMDB.pm: more major enhancements

2003-03-04 00:43  jveldhuis

	* doc/QuickStart: added tv_imdb

2003-03-04 00:41  jveldhuis

	* lib/IMDB.pm: fixed typo

2003-03-04 00:37  jveldhuis

	* filter/tv_imdb, lib/IMDB.pm: now looks up tv series in imdb.com
	  data added in-memory cache for tv series lookups

2003-03-03 22:58  jveldhuis

	* lib/IMDB.pm: minor fix

2003-03-03 22:57  jveldhuis

	* filter/tv_imdb: fixed typo

2003-03-03 21:19  jveldhuis

	* lib/IMDB.pm: now handles gzipped directors/actors and actresses
	  files

2003-03-03 15:40  jveldhuis

	* filter/tv_imdb: filter to augment listing data with imdb.com
	  plain text files

2003-03-03 15:39  jveldhuis

	* lib/IMDB.pm: first swing at indexing the imdb.com plain text
	  files

2003-03-01 11:40  epaepa

	* lib/XMLTV.pm.in: Debugging message.

2003-03-01 11:30  epaepa

	* xmltv.dtd: Added a note about ordering of <channel> elements.

2003-02-26 21:42  epaepa

	* Makefile.PL: Install tv_grab_uk's channel_pkgs, including those
	  in subdirectories.

2003-02-26 20:24  epaepa

	* MANIFEST: Removed directory from MANIFEST, it should list only
	  plain files.

2003-02-22 22:10  epaepa

	* grab/fi/tv_grab_fi: Added --list-channels mode partly based on
	  patch by Julian Cable.  Also tidied up some of the code.

2003-02-21 04:28  rmeden

	* choose/tv_check/tv_check: prevent warnings when we don't have a
	  stop time by using the start time.

2003-02-21 04:26  rmeden

	* lib/exe_wrap.pl: remove constants when computing timezone.. oops

2003-02-20 22:49  epaepa

	* MANIFEST, filter/tv_grep.in, t/test_filters.t,
	  t/data/tv_grep_on_after_200302161330_all_UTF8.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml_dups_xml.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_attrs_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_extract_1_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_extract_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_xml_dups_xml.expected,
	  t/data/tv_grep_on_after_200302161330_clump_xml_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_dups_xml.expected,
	  t/data/tv_grep_on_after_200302161330_dups_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_200302161330_dups_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_dups_xml_dups_xml.expected,
	  t/data/tv_grep_on_after_200302161330_dups_xml_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_empty_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_200302161330_empty_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_200302161330_empty_xml_dups_xml.expected,
	  t/data/tv_grep_on_after_200302161330_empty_xml_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_intervals_xml.expected,
	  t/data/tv_grep_on_after_200302161330_length_xml.expected,
	  t/data/tv_grep_on_after_200302161330_overlap_xml.expected,
	  t/data/tv_grep_on_after_200302161330_simple_xml.expected,
	  t/data/tv_grep_on_after_200302161330_simple_xml_x_whatever_xml.expected,
	  t/data/tv_grep_on_after_200302161330_sort_xml.expected,
	  t/data/tv_grep_on_after_200302161330_test_empty_xml.expected,
	  t/data/tv_grep_on_after_200302161330_test_livre_xml.expected,
	  t/data/tv_grep_on_after_200302161330_test_sort_by_channel_xml.expected,
	  t/data/tv_grep_on_after_200302161330_test_xml.expected,
	  t/data/tv_grep_on_after_200302161330_test_xml_test_xml.expected,
	  t/data/tv_grep_on_after_200302161330_whitespace_xml.expected,
	  t/data/tv_grep_on_after_200302161330_x_whatever_xml.expected,
	  t/data/tv_grep_on_before_200302161330_all_UTF8.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml_amp_xml.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml_dups_xml.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_attrs_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_extract_1_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_extract_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_xml_amp_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_xml_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_xml_dups_xml.expected,
	  t/data/tv_grep_on_before_200302161330_clump_xml_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_dups_xml.expected,
	  t/data/tv_grep_on_before_200302161330_dups_xml_amp_xml.expected,
	  t/data/tv_grep_on_before_200302161330_dups_xml_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_dups_xml_dups_xml.expected,
	  t/data/tv_grep_on_before_200302161330_dups_xml_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_empty_xml_amp_xml.expected,
	  t/data/tv_grep_on_before_200302161330_empty_xml_clump_xml.expected,
	  t/data/tv_grep_on_before_200302161330_empty_xml_dups_xml.expected,
	  t/data/tv_grep_on_before_200302161330_empty_xml_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_intervals_xml.expected,
	  t/data/tv_grep_on_before_200302161330_length_xml.expected,
	  t/data/tv_grep_on_before_200302161330_overlap_xml.expected,
	  t/data/tv_grep_on_before_200302161330_simple_xml.expected,
	  t/data/tv_grep_on_before_200302161330_simple_xml_x_whatever_xml.expected,
	  t/data/tv_grep_on_before_200302161330_sort_xml.expected,
	  t/data/tv_grep_on_before_200302161330_test_empty_xml.expected,
	  t/data/tv_grep_on_before_200302161330_test_livre_xml.expected,
	  t/data/tv_grep_on_before_200302161330_test_sort_by_channel_xml.expected,
	  t/data/tv_grep_on_before_200302161330_test_xml.expected,
	  t/data/tv_grep_on_before_200302161330_test_xml_test_xml.expected,
	  t/data/tv_grep_on_before_200302161330_whitespace_xml.expected,
	  t/data/tv_grep_on_before_200302161330_x_whatever_xml.expected:
	  New feature for tv_grep: --on-before is a kind of opposite to
	  --on-after, it gives all those programmes which have been
	  broadcast (at least partly) at a given data.

2003-02-20 22:27  epaepa

	* lib/exe_wrap.pl: Even more obvious error message for people who
	  mistakenly run 'xmltv.exe --configure' or whatever.

2003-02-20 22:20  epaepa

	* MANIFEST: Added more test case outputs to file list.

2003-02-20 20:42  epaepa

	* t/data/: intervals.xml, tv_cat_all_UTF8.expected,
	  tv_cat_intervals_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_intervals_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_intervals_xml.expected,
	  tv_grep_category_b_intervals_xml.expected,
	  tv_grep_category_e_and_title_f_intervals_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_intervals_xml.expected,
	  tv_grep_channel_id_channel4_com_intervals_xml.expected,
	  tv_grep_channel_name_d_intervals_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_intervals_xml.expected,
	  tv_grep_eval_scalar_keys_5_intervals_xml.expected,
	  tv_grep_i_category_i_title_h_intervals_xml.expected,
	  tv_grep_i_category_i_title_j_intervals_xml.expected,
	  tv_grep_i_last_chance_c_intervals_xml.expected,
	  tv_grep_new_intervals_xml.expected,
	  tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  tv_grep_on_after_2002_02_05_intervals_xml.expected,
	  tv_grep_premiere_intervals_xml.expected,
	  tv_grep_previously_shown_intervals_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_intervals_xml.expected,
	  tv_sort_intervals_xml.expected, tv_to_latex_all_UTF8.expected,
	  tv_to_latex_intervals_xml.expected, tv_to_text_all_UTF8.expected,
	  tv_to_text_intervals_xml.expected: Another new test case, giving
	  all sorts of intervals to test tv_grep's --on-after and
	  forthcoming --on-before.

2003-02-19 22:11  epaepa

	* filter/tv_sort,
	  t/data/tv_sort_by_channel_test_sort_by_channel_xml.expected:
	  add_stop(): Rewrote using a simpler algorithm: go through all the
	  following programmes and pick the start time if it is later than
	  ours, or the stop time if it exists.	If neither condition is
	  true move on to the next following programme.

	  I don't know why I made it so complex to start with, I think it
	  was because I thought it sensible to start at the end of the
	  sorted list and work backwards.  And it would be sensible, if you
	  only looked at start times.  But we don't any more.

	  This should fix the pesky bug where tv_sort --by-channels doesn't
	  work because add_stop() would break the sortedness of its input
	  programmes list.

2003-02-18 23:07  epaepa

	* filter/tv_sort: pd(): new function, just a wrapper for
	  ParseDate() which dies if the date couldn't be parsed.  This
	  removes the need for an explicit check after every call.  It has
	  a shorter name too.

2003-02-18 22:43  epaepa

	* t/data/tv_sort_test_sort_by_channel_xml.expected: Whoops, forgot
	  to update this expected output file I think.	Well now the
	  expected output from tv_sort for this case is actually sorted
	  :-).

2003-02-18 22:32  epaepa

	* filter/tv_sort, t/data/tv_sort_all_UTF8.expected,
	  t/data/tv_sort_by_channel_all_UTF8.expected: add_stop(): jump
	  through some hoops to avoid making the list of programmes out of
	  order.  This fixes the bug where tv_sort would sometimes generate
	  output that wasn't sorted.  However there are still differences
	  between tv_sort and tv_sort --by-channel on the
	  test_sort_by_channel.xml test case, and I will investigate those
	  further.

2003-02-18 21:49  epaepa

	* filter/tv_sort: check_sorted(): new function to assert that a
	  list is sorted according to a given comparison function.

	  Added calls to check_sorted() after each operation that changes a
	  list of programmes.  This catches the bug in --by-channels, so
	  that tv_sort now dies rather than produce incorrect output.  This
	  is a small improvement.  Next task is to fix the bug.

2003-02-16 16:44  epaepa

	* t/data/: tv_cat_all_UTF8.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_sort_by_channel_test_sort_by_channel_xml.expected,
	  tv_to_latex_all_UTF8.expected: Oops, I somehow forgot to add
	  test_sort_by_channel.xml's contribution to some of the expected
	  all_UTF8 files, and didn't make the expected output from tv_sort
	  --by-channel on that file the same as that from tv_sort.

2003-02-16 16:20  epaepa

	* t/test_filters.t: Moved tv_sort --by-channel into the main body
	  of tests, since it has a known bug, and moved a few other
	  commands out into the 'full' list of tests to keep 'make test'
	  relatively quick.

2003-02-16 16:10  epaepa

	* t/data/: test_sort_by_channel.xml,
	  tv_cat_test_sort_by_channel_xml.expected,
	  tv_extractinfo_en_test_sort_by_channel_xml.expected,
	  tv_grep_a_test_sort_by_channel_xml.expected,
	  tv_grep_category_b_test_sort_by_channel_xml.expected,
	  tv_grep_category_e_and_title_f_test_sort_by_channel_xml.expected,
	  tv_grep_category_g_or_title_h_test_sort_by_channel_xml.expected,
	  tv_grep_channel_id_channel4_com_test_sort_by_channel_xml.expected,
	  tv_grep_channel_name_d_test_sort_by_channel_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_test_sort_by_channel_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_sort_by_channel_xml.expected,
	  tv_grep_i_category_i_title_h_test_sort_by_channel_xml.expected,
	  tv_grep_i_category_i_title_j_test_sort_by_channel_xml.expected,
	  tv_grep_i_last_chance_c_test_sort_by_channel_xml.expected,
	  tv_grep_new_test_sort_by_channel_xml.expected,
	  tv_grep_on_after_2002_02_05_test_sort_by_channel_xml.expected,
	  tv_grep_premiere_test_sort_by_channel_xml.expected,
	  tv_grep_previously_shown_test_sort_by_channel_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_test_sort_by_channel.expected,
	  tv_sort_by_channel_test_sort_by_channel_xml.expected,
	  tv_sort_test_sort_by_channel_xml.expected,
	  tv_to_latex_test_sort_by_channel_xml.expected,
	  tv_to_text_test_sort_by_channel_xml.expected: Discovered a
	  strange bug where tv_sort --by-channel produces different output
	  from tv_sort, even when all the programmes in the input have the
	  same channel.  This test case demonstrates it (the expected
	  output from tv_sort and tv_sort --by-channel is the same for the
	  input test_sort_by_channel.xml, but the actual outputs currently
	  differ.)

2003-02-16 15:18  epaepa

	* filter/tv_sort: Removed the global %orig_order and moved the
	  'make the sort stable' stuff into a new routine
	  make_stable_sort_function(), which can be applied to
	  \&programme_cmp and a list of programmes, or anything else to
	  that matter.	Now the sorting for --by-channel is also a stable
	  sort.

	  Hmm, this didn't fix the bug I was hoping to fix, still, none of
	  the other tests break and it seems like a good thing.

2003-02-16 14:42  epaepa

	* filter/tv_sort: Made a note that perl 5.8 has a use sort
	  'stable'; pragma and we should make use of that if available.  I
	  won't implement it until I have a perl5.8-equipped box to test
	  with.

2003-02-16 12:58  epaepa

	* xmltv.dtd: Clarified the meaning of start and stop, that they are
	  a half-closed interval.  This is what everybody knew anyway, but
	  it's just as well to have it in writing.

2003-02-16 12:28  epaepa

	* filter/tv_grep.in: Whoops, the documentation of --on-after was
	  completely the opposite of what it does.

2003-02-16 11:25  epaepa

	* grab/nz/tv_grab_nz: Create ~/.xmltv/ if it doesn't already exist.

2003-02-16 01:25  epaepa

	* grab/: fi/tv_grab_fi, nz/tv_grab_nz, uk_rt/tv_grab_uk_rt.in: As
	  mentioned on xmltv-devel, changing the names of all the grabber
	  configuration files to end in '.conf'.  This is so that on
	  Windows, when run from the current directory, they do not try to
	  overwrite themselves.  Thanks to Davide Chiarini for pointing
	  this out.  Also it's probably more obvious what the files are for
	  with '.conf' stuck on the end of the filename.

	  The migration should be automatic, you just get a message saying
	  that the old file is being renamed to end in .conf.  Of course
	  _this_ will go wrong for Windows users running from the current
	  directory, but it's only a short-term measure.

	  Hmm, perhaps some of this config file reading/writing could be
	  factored out.  It's a lot of almost identical code.

2003-02-16 01:10  epaepa

	* grab/nz/tv_grab_nz: If HOME is not set in the environment, look
	  in the current direcetory for the config file.

2003-02-16 00:48  epaepa

	* grab/nz/tv_grab_nz: Changed strip() method on string object
	  (which is not supported in Python 1.5.2) to use string.strip()
	  function instead.

2003-02-15 22:40  epaepa

	* mkdist: mkdist now does the uploading to upload.sourceforge.net,
	  though you still have to do the fiddling with SF's web pages by
	  hand.  Made the instructions for that a bit more concise (better
	  to give a URL than to give 'click on X...' instructions IMHO).

2003-02-15 21:54  epaepa

	* mkdist: Added a couple of FIXMEs for code that might be removed.

2003-02-15 21:18  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.8.

2003-02-15 10:15  epaepa

	* xmltv.dtd: Clarified the meaning of 'width' and 'height'
	  attributes in <icon>.

2003-02-15 00:12  epaepa

	* filter/tv_to_text: Kenneth Pronovici sent me a manual page
	  (actually it is almost the same as tv_to_latex's manpage, which
	  makes sense).

2003-02-11 05:23  rmeden

	* choose/tv_check/tv_check: added  Kenneth J. Pronovici's POD page.
	  Thanks Kenneth!

2003-02-10 16:52  jveldhuis

	* mkdist: clarification

2003-02-10 16:40  jveldhuis

	* mkdist: updated comments at bottom and made some of the cvs
	  commands quieter

2003-02-09 22:00  jveldhuis

	* doc/README.win32: updated to release 0.5.7 and new release notes

2003-02-09 15:21  jveldhuis

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: updated
	  to release 0.5.7 and new release notes

2003-02-09 12:23  epaepa

	* lib/XMLTV.pm.in: Don't assume that every program using this
	  module is distributed as part of xmltv.

2003-02-08 00:20  epaepa

	* lib/XMLTV.pm.PL: Don't use IO::File, use the prehistoric typeglob
	  method for passing filehandles, because I suspect that IO::File
	  was triggering a segfault with perl-5.6.0 on some systems.

2003-02-02 18:22  epaepa

	* MANIFEST, Makefile.PL, doc/QuickStart, filter/tv_to_text,
	  t/test_filters.t, t/data/tv_to_text_all_UTF8.expected,
	  t/data/tv_to_text_amp_xml.expected,
	  t/data/tv_to_text_amp_xml_amp_xml.expected,
	  t/data/tv_to_text_amp_xml_clump_xml.expected,
	  t/data/tv_to_text_amp_xml_dups_xml.expected,
	  t/data/tv_to_text_amp_xml_empty_xml.expected,
	  t/data/tv_to_text_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_to_text_attrs_xml.expected,
	  t/data/tv_to_text_clump_extract_1_xml.expected,
	  t/data/tv_to_text_clump_extract_xml.expected,
	  t/data/tv_to_text_clump_xml.expected,
	  t/data/tv_to_text_clump_xml_amp_xml.expected,
	  t/data/tv_to_text_clump_xml_clump_xml.expected,
	  t/data/tv_to_text_clump_xml_dups_xml.expected,
	  t/data/tv_to_text_clump_xml_empty_xml.expected,
	  t/data/tv_to_text_dups_xml.expected,
	  t/data/tv_to_text_dups_xml_amp_xml.expected,
	  t/data/tv_to_text_dups_xml_clump_xml.expected,
	  t/data/tv_to_text_dups_xml_dups_xml.expected,
	  t/data/tv_to_text_dups_xml_empty_xml.expected,
	  t/data/tv_to_text_empty_xml.expected,
	  t/data/tv_to_text_empty_xml_amp_xml.expected,
	  t/data/tv_to_text_empty_xml_clump_xml.expected,
	  t/data/tv_to_text_empty_xml_dups_xml.expected,
	  t/data/tv_to_text_empty_xml_empty_xml.expected,
	  t/data/tv_to_text_length_xml.expected,
	  t/data/tv_to_text_overlap_xml.expected,
	  t/data/tv_to_text_simple_xml.expected,
	  t/data/tv_to_text_simple_xml_x_whatever_xml.expected,
	  t/data/tv_to_text_sort_xml.expected,
	  t/data/tv_to_text_test_empty_xml.expected,
	  t/data/tv_to_text_test_livre_xml.expected,
	  t/data/tv_to_text_test_xml.expected,
	  t/data/tv_to_text_test_xml_test_xml.expected,
	  t/data/tv_to_text_whitespace_xml.expected,
	  t/data/tv_to_text_x_whatever_xml.expected: New filter tv_to_text.
	  This is very similar to tv_to_latex (using the same code
	  recently moved into the XMLTV::Summarize module) but outputs
	  plain text.  I originally wrote it when I was on a box that
	  didn't have LaTeX installed.

2003-02-02 18:09  epaepa

	* xmltv.dtd, filter/tv_grep.in, lib/XMLTV.pm.in: Small change to
	  the file format: newlines in element content are not allowed
	  except for <desc>, <premiere> and <last-chance> elements (these
	  contain a 'paragraph' of text).  Changed XMLTV.pm.in to check
	  this.

2003-02-02 18:04  epaepa

	* lib/XMLTV.pm.in: Pod formatting fix.

2003-02-02 17:14  epaepa

	* xmltv.dtd: Fixed the version numbering.

2003-02-02 17:11  epaepa

	* lib/XMLTV.pm.in: chomp() the warning or error message before
	  adding a newline to the end.	This lets you give messages using
	  the normal convention of ending in \n without ending up with a
	  blank line in the output.

2003-02-02 14:14  epaepa

	* t/data/: test_empty.xml, tv_cat_all_UTF8.expected,
	  tv_cat_test_empty_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_test_empty_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_test_empty_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_test_empty_xml.expected,
	  tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  tv_grep_eval_scalar_keys_5_test_empty_xml.expected,
	  tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  tv_grep_on_after_2002_02_05_test_empty_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_test_empty_xml.expected,
	  tv_sort_test_empty_xml.expected, tv_to_latex_all_UTF8.expected,
	  tv_to_latex_test_empty_xml.expected: Removed a newline from the
	  <title> of one of the test inputs.  I've decided that titles and
	  other similar things should not contain newlines.

2003-02-02 10:50  epaepa

	* grab/fi/tv_grab_fi: Corrected line endings.  Checking out the
	  file on DOSish systems should add the carriage returns anyway, so
	  there is no need to put them in CVS.

2003-01-31 23:04  epaepa

	* grab/de/tv_grab_de: Fixed warning (noticed in Debian bug #178692)
	  about memGunzip name used only once, when Compress::Zlib could
	  not be loaded.

2003-01-31 22:59  epaepa

	* grab/de/tv_grab_de: my_gunzip(): Patch from Debian bug #178692 to
	  make call to tempfile() actually work.

2003-01-31 16:45  rmeden

	* choose/tv_check/tv_check: don't crash on no episode match for
	  replay scan

2003-01-24 03:07  rmeden

	* choose/tv_check/tv_check_doc.html: documented --DDMM switch.
	  Also edited with Mozilla, so it reformatted it bunch

2003-01-24 02:49  rmeden

	* choose/tv_check/tv_check: added --DDMM switch to optinally use
	  that date format in reports

2003-01-23 05:05  rmeden

	* choose/tv_check/tv_check: use channel-id for dislpaly-name if
	  guide doesn't have a channel section.  index channels after guide
	  instead of before in case channels not predefined set show day to
	  empty string to avoid rare undef fix index name in configure
	  mode, so you can just click on a title

2003-01-21 06:33  rmeden

	* lib/exe_wrap.pl: Date::Manip doesn't always deal with numeric
	  time zones correctly.  They have fixed their code, but it's not
	  in wide distribution.  For now, when exe_xmit tries to guess the
	  time zone, let it use some named values.

	  This will be fased out in a few months, once Date::Manip is
	  distributed.

2003-01-20 03:48  rmeden

	* choose/tv_check/tv_check: allow MYREPLAY devices to be included
	  in specialy ReplayTV fuzzy logic checks fix misleading "wrong
	  show in slot" when there is really "NO GUIDE DATA" (hole)

2003-01-20 03:46  rmeden

	* Makefile.PL: specify module path to PerlApp so local libraries
	  (not installed) are used when building xmltv.exe

2003-01-19 18:59  epaepa

	* MANIFEST, Makefile.PL, filter/tv_to_latex, lib/Summarize.pm:
	  Factored out most of tv_to_latex's code into a new library
	  XMLTV::Summarize.

2003-01-19 08:08  rmeden

	* Makefile.PL: when making windows_dist, don't run UNIX2DOS against
	  a JPG file!

2003-01-18 16:39  rmeden

	* lib/exe_wrap.pl: fix --share directory processing for those apps
	  that need it.

2003-01-16 02:39  chunkygoodness

	* grab/nz/tv_grab_nz: Removed BUG entry from manpage relating to
	  primetv - no longer relevant now that we are using the ontv url

2003-01-12 11:13  epaepa

	* mkdist: Rewrote the instructions for uploading a new release to
	  Sourceforge, adding an explanation of what the release notes and
	  changelog should be.

2003-01-11 01:17  epaepa

	* Makefile.PL: Corrected LC_ALL detection bug noticed by Robert
	  Boardman; made the message printed more sentenceful.
	  (sententious?  sentent?)

2003-01-08 06:02  rmeden

	* Makefile.PL: fix some bugs in the make windows_dist function

2003-01-07 23:22  jveldhuis

	* mkdist: updated some of the ftp related hints at the end

2003-01-07 17:17  jveldhuis

	* README, doc/README.win32: added blub about some recent changes to
	  the _na grabber

2003-01-06 22:17  chunkygoodness

	* grab/nz/tv_grab_nz: Fixed bug in regular expression that wouldn't
	  match programs with hyper links in their names

2003-01-06 07:32  chunkygoodness

	* grab/nz/tv_grab_nz: Changed parser to use ontv.nzoom.com for all
	  channels - this means that there are descriptions for all
	  channels now, and makes maintenance easier (only one website to
	  track for changes)

2003-01-03 07:30  rmeden

	* choose/tv_check/tv_check: Minor tweak to code that reuses
	  previous show file options during MyReplayTV processing.

2003-01-02 21:46  epaepa

	* Makefile.PL, lib/XMLTV.pm.in: Version 0.5.6.

2003-01-01 22:27  epaepa

	* doc/README.win32: Updated for 0.5.6.	We don't currently know how
	  to fix the % shell metacharacter problem.

2003-01-01 22:03  epaepa

	* README: Updated for 0.5.6.

2003-01-01 19:27  epaepa

	* MANIFEST: Removed file README.tv_check.

2003-01-01 19:10  epaepa

	* MANIFEST, Makefile.PL, README, doc/QuickStart,
	  grab/fi/tv_grab_fi: Adding Matti Arias's tv_grab_fi for Finnish
	  listings.  Hopefully this commit should include all changes
	  needed to add it to the distribution.

	  Also mentioned tv_grab_uk_rt (the ugly sister of tv_grab_uk) in
	  the QuickStart guide, for completeness.

2003-01-01 18:59  epaepa

	* doc/QuickStart: Rephrased the introduction to grabbers, and added
	  mention of tv_split.

2003-01-01 18:51  epaepa

	* README.tv_check: Removing this copy of README.tv_check because it
	  is an exact duplicate (or was until recent changes) of the copy
	  in choose/tv_check/.

2003-01-01 18:46  epaepa

	* choose/tv_check/README.tv_check: Make it slightly more explicit
	  that you can run any grabber and not just tv_grab_na... it was
	  probably clear enough already, but what the heck.

2002-12-29 16:55  rmeden

	* choose/tv_check/tv_check: work around a bug where Date::Manip
	  doesn't deal with appended TZ correctly.  The problem has been
	  fixed, but there isn't a real benefit to having the TZ in the
	  times, so dropping them instead adding a later Date::Manip
	  dependency.

2002-12-26 20:05  epaepa

	* doc/README.win32: Oops, I accidentally committed bogus
	  instructions for Windows users.  We're still waiting for a
	  solution to the % problem.

2002-12-26 19:54  epaepa

	* MANIFEST, Makefile.PL, filter/tv_split: Added an implementation
	  of tv_split.	This one does not require the input to be sorted.
	  It tries to be clever and keep one open XMLTV::Writer for each
	  output file, so programmes can be written out as they are read
	  in, but I had to add workaround code for the case when the
	  process runs out of open filehandles.  I haven't added tv_split
	  to the test suite but it seems to work.

2002-12-26 19:52  epaepa

	* lib/XMLTV.pm.in: Added a warning for a common mistake in using
	  XMLTV::Writer - passing a filename where a filehandle is
	  expected.  At least, it's a mistake that I make often.

2002-12-26 14:49  epaepa

	* lib/XMLTV.pm.in: Added some runtime checks to make sure the
	  various XMLTV::Writer methods are called in the right order.

2002-12-25 21:51  epaepa

	* choose/tv_check/tv_check, choose/tv_check/tv_check_doc.html,
	  doc/README.win32, lib/XMLTV.pm.in: After I found that perl was
	  complaining when run in a UTF-8 locale, I decided to purge all
	  non-ASCII characters from the source code.  The characters were
	  mostly in the code in order to purge bad characters from the web
	  pages fetched :-P.  Now we just use \xAB style hex escapes.

	  Also tidied up the tv_check documentation, it previously had some
	  Microsoftisms including the notorious 'smart quotes' and lumps of
	  non-breaking spaces used for layout.

2002-12-23 20:23  epaepa

	* analyse_tvprefs/analyse_tvprefs, choose/tv_pick/tv_pick_cgi,
	  grab/uk_rt/tv_grab_uk_rt.in: Fixed several places with
	  configuration-file-parsing code.  You need to strip comments
	  _before_ stripping trailing spaces, otherwise a space before a
	  comment is left.  Hmm, perhaps this should be factored out.

2002-12-21 02:47  chunkygoodness

	* grab/nz/tv_grab_nz: Fixed tv1 regular expression - the source had
	  changed

2002-12-18 16:47  epaepa

	* MANIFEST, Makefile.PL, grab/uk_rt/tv_grab_uk_rt.in: Finally got
	  rid of the Ananova_Channel library for tv_grab_uk.  It seemed
	  like a good idea at the time, providing an OO abstraction around
	  the list of channels and enforcing various properties, but it
	  just became too complex and unwieldy.

	  Actually, so far all I've done is move code out of
	  Ananova_Channel.pm and put it directly into tv_grab_uk.in.  But
	  next I can start cleaning up.

2002-12-18 16:39  epaepa

	* t/data/: tv_grep_previously_shown_all_UTF8.expected,
	  tv_grep_previously_shown_amp_xml.expected,
	  tv_grep_previously_shown_amp_xml_amp_xml.expected,
	  tv_grep_previously_shown_amp_xml_clump_xml.expected,
	  tv_grep_previously_shown_amp_xml_dups_xml.expected,
	  tv_grep_previously_shown_amp_xml_empty_xml.expected,
	  tv_grep_previously_shown_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  tv_grep_previously_shown_attrs_xml.expected,
	  tv_grep_previously_shown_clump_extract_1_xml.expected,
	  tv_grep_previously_shown_clump_extract_xml.expected,
	  tv_grep_previously_shown_clump_xml.expected,
	  tv_grep_previously_shown_clump_xml_amp_xml.expected,
	  tv_grep_previously_shown_clump_xml_clump_xml.expected,
	  tv_grep_previously_shown_clump_xml_dups_xml.expected,
	  tv_grep_previously_shown_clump_xml_empty_xml.expected,
	  tv_grep_previously_shown_dups_xml.expected,
	  tv_grep_previously_shown_dups_xml_amp_xml.expected,
	  tv_grep_previously_shown_dups_xml_clump_xml.expected,
	  tv_grep_previously_shown_dups_xml_dups_xml.expected,
	  tv_grep_previously_shown_dups_xml_empty_xml.expected,
	  tv_grep_previously_shown_empty_xml.expected,
	  tv_grep_previously_shown_empty_xml_amp_xml.expected,
	  tv_grep_previously_shown_empty_xml_clump_xml.expected,
	  tv_grep_previously_shown_empty_xml_dups_xml.expected,
	  tv_grep_previously_shown_empty_xml_empty_xml.expected,
	  tv_grep_previously_shown_length_xml.expected,
	  tv_grep_previously_shown_overlap_xml.expected,
	  tv_grep_previously_shown_simple_xml.expected,
	  tv_grep_previously_shown_simple_xml_x_whatever_xml.expected,
	  tv_grep_previously_shown_sort_xml.expected,
	  tv_grep_previously_shown_test_empty_xml.expected,
	  tv_grep_previously_shown_test_livre_xml.expected,
	  tv_grep_previously_shown_test_xml.expected,
	  tv_grep_previously_shown_test_xml_test_xml.expected,
	  tv_grep_previously_shown_whitespace_xml.expected,
	  tv_grep_previously_shown_x_whatever_xml.expected: Added
	  <previously-shown /> to some test data so I can test the new
	  features in tv_grep.	I thought these changes were committed
	  earlier.  Oh well.

2002-12-17 15:32  epaepa

	* MANIFEST, filter/tv_grep.PL, filter/tv_grep.in, t/test_filters.t:
	  New feature for tv_grep: there are some elements which cannot be
	  fully queried, but now at least you can query whether they are
	  present or not.  For example,

	  % tv_grep --previously-shown ''

	  will find programmes that are repeats.

2002-12-17 15:16  epaepa

	* t/data/: simple.xml, tv_cat_all_UTF8.expected,
	  tv_cat_simple_xml.expected,
	  tv_cat_simple_xml_x_whatever_xml.expected,
	  tv_cat_x_whatever_xml.expected,
	  tv_extractinfo_en_all_UTF8.expected,
	  tv_extractinfo_en_simple_xml.expected,
	  tv_extractinfo_en_simple_xml_x_whatever_xml.expected,
	  tv_extractinfo_en_x_whatever_xml.expected,
	  tv_grep_a_all_UTF8.expected, tv_grep_a_simple_xml.expected,
	  tv_grep_a_simple_xml_x_whatever_xml.expected,
	  tv_grep_a_x_whatever_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_simple_xml.expected,
	  tv_grep_category_g_or_title_h_simple_xml_x_whatever_xml.expected,
	  tv_grep_category_g_or_title_h_x_whatever_xml.expected,
	  tv_grep_channel_id_channel4_com_all_UTF8.expected,
	  tv_grep_channel_id_channel4_com_simple_xml.expected,
	  tv_grep_channel_id_channel4_com_simple_xml_x_whatever_xml.expected,
	  tv_grep_channel_id_channel4_com_x_whatever_xml.expected,
	  tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  tv_grep_eval_scalar_keys_5_simple_xml.expected,
	  tv_grep_eval_scalar_keys_5_simple_xml_x_whatever_xml.expected,
	  tv_grep_eval_scalar_keys_5_x_whatever_xml.expected,
	  tv_grep_i_category_i_title_h_all_UTF8.expected,
	  tv_grep_i_category_i_title_h_simple_xml.expected,
	  tv_grep_i_category_i_title_h_simple_xml_x_whatever_xml.expected,
	  tv_grep_i_category_i_title_h_x_whatever_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_simple_xml.expected,
	  tv_sort_by_channel_simple_xml_x_whatever_xml.expected,
	  tv_sort_by_channel_x_whatever_xml.expected,
	  tv_sort_simple_xml.expected,
	  tv_sort_simple_xml_x_whatever_xml.expected,
	  tv_sort_x_whatever_xml.expected, x-whatever.xml: Added
	  <previously-shown /> to some of the sample data so I can later
	  test grepping it.

2002-12-17 12:41  epaepa

	* lib/exe_wrap.pl: Untested change to pass a --share argument to
	  the grabbers which need it.

2002-12-16 22:46  epaepa

	* lib/Ask.pm: Made more robust against input-reading failures (such
	  as EOF).  Now it is documented that if the input could not be
	  read, undef is returned.

2002-12-14 15:39  epaepa

	* lib/XMLTV.pm.in: Added some more trace statements.

2002-12-14 11:13  epaepa

	* grab/nz/tv_grab_nz: Changed some string functions to make them
	  work with Python 1.5.2.

2002-12-13 23:11  epaepa

	* Makefile.PL: Cahnged the Python version checking to primt
	  sys.hexversion because the Python 1.5.2 interpreter doesn't
	  understand -V.

2002-12-13 23:06  epaepa

	* Makefile.PL: Formatting change for perl 5.005.

2002-12-13 14:32  epaepa

	* README, doc/README.win32: Staffan Malmgren's channel-selection
	  patch to tv_grab_sn has made it into the 0.5.5 release.

2002-12-13 14:26  epaepa

	* grab/nz/tv_grab_nz: Changed configuration behaviour to be more
	  like the other grabbers (just more chatter, really).

2002-12-13 01:52  chunkygoodness

	* grab/nz/tv_grab_nz: Modifed the manpage slightly, as well as
	  added the initial support for the --configure option to select
	  which channels are to be downloaded.

2002-12-13 00:56  epaepa

	* filter/tv_extractinfo_en, lib/Ask.pm, lib/XMLTV.pm.in: Global
	  style fix for uncuddled elses as mandated by 'perlstyle'.  A pity
	  that Emacs keeps putting them back again.

2002-12-12 16:49  epaepa

	* lib/exe_wrap.pl: Friendlier error message for tv_grab_nz.

2002-12-12 16:47  epaepa

	* lib/exe_wrap.pl: Generalized this a bit so that each command name
	  has a lump of Perl code associated with it, so we can do exciting
	  things like print a warning message for tv_grab_nz :-).

2002-12-12 12:19  epaepa

	* Makefile.PL, README, doc/QuickStart, doc/README.win32,
	  lib/XMLTV.pm.in: Updated for the forthcoming 0.5.5 release.  But
	  I don't know what to do about tv_grab_nz on Windows.

2002-12-12 11:40  epaepa

	* grab/nz/tv_grab_nz: Tidied the usage message.  Added pod
	  documentation (perhaps a bit odd in a Python program, but it's
	  the easiest way to get a manual page).

2002-12-11 22:56  epaepa

	* README: Added Python to the list of dependencies, at least for
	  tv_grab_nz.

2002-12-11 22:20  epaepa

	* MANIFEST: Added tv_grab_nz to the file list.

2002-12-11 22:18  epaepa

	* Makefile.PL: Now as well as testing module prerequisites with the
	  'prereqs' key, you can specify arbitrary bits of code to be run
	  under 'special_prereqs', with version number comparison as for
	  modules.

	  I've used this to add tv_grab_nz with a dependency on Python
	  1.5.2 or later.

2002-12-11 17:27  epaepa

	* grab/nz/tv_grab_nz: Adding Andre Renaud's New Zealand grabber.
	  Now to arrange the necessary installation gubbins.

2002-12-10 23:55  epaepa

	* lib/XMLTV.pm.in: Some runtime type errors during writing XML that
	  would previously have aborted the program are now just warnings,
	  with the particular element affected being skipped.

	  A new private routine check_multiplicity() makes sure that a hash
	  has the mandatory elements required by a set of handlers.  The
	  new private routine write_element_with_handlers() calls
	  check_multiplicity() before opening the element, so there is less
	  chance of writing invalid XML from bad Perl data structures.

2002-12-10 23:14  epaepa

	* Makefile.PL: The location of manual pages varies from one system
	  to another.  But I think to keep things simple, for XMLTV they
	  can always be in PREFIX/share/man/ which is the FHS-approved
	  place.

2002-12-08 10:58  epaepa

	* Makefile.PL: Corrected the message given when UTF-8 problems are
	  detected: updating Date::Manip won't fix it, but changing your
	  locale will.	Thanks to Derek J. Kalweit for bringing this to my
	  attention.

2002-12-01 17:14  epaepa

	* Makefile.PL, README, doc/README.win32, lib/XMLTV.pm.in: Version
	  0.5.4.

2002-12-01 16:58  epaepa

	* analyse_tvprefs/analyse_tvprefs: Updated link to top 3000 words
	  in the BNC; now it points to my mirror of that page.

2002-12-01 10:12  epaepa

	* mkdist: Now there are two readme files the mkdist reminder needs
	  to mention them both.

2002-11-24 05:10  rmeden

	* doc/README.win32: Mention the fact that TZ can be determined
	  automatically.

2002-11-24 00:04  epaepa

	* Makefile.PL: Version 0.5.3.

2002-11-23 23:48  epaepa

	* lib/XMLTV.pm.in: Bumping version to 0.5.3.  It seems that the
	  version of the XMLTV module follows that of the xmltv project.

2002-11-23 23:47  epaepa

	* doc/README.win32: Updated the Win32 instructions.  It's nice not
	  to have to mention arcane details of Perl module versions.  The
	  list of contributors could be done better, I haven't worked out
	  the best way of giving credit in the docs.

2002-11-23 23:29  epaepa

	* README: Updated for version 0.5.3; I've tried to summarize the
	  changes but focusing mostly on the emergency tv_grab_na fix.
	  Also I've attempted to explain the Date::Manip problems on Red
	  Hat 8... still waiting for a response from the module's developer
	  on this.

2002-11-23 20:53  epaepa

	* grab/de/tv_grab_de: Better error message when the site appears to
	  be out of date.  This is the signal for me to bring up the page
	  in my web browser and hit 'reload' to kick my proxy server into
	  getting a newer version of the page :-P.

2002-11-23 20:44  epaepa

	* grab/de/tv_grab_de: Added a warning message if --configure is
	  given (this grabber needs and supports no configuration stage).

2002-11-19 08:07  epaepa

	* Makefile.PL: HTML::TableExtract 1.08 or later required (found by
	  Kenneth Pronovici).

2002-11-18 22:53  epaepa

	* filter/tv_extractinfo_en: multipart_split_desc(): be more
	  discriminating before deciding it's the Radio Times style.  Look
	  for the word 'at' as well as 'with'.

2002-11-18 19:52  epaepa

	* grab/: de/tv_grab_de, uk_rt/tv_grab_uk_rt.in: Adding a --quiet
	  flag to four grabbers; this is in response to Debian bug 169157
	  and discussions with Kenneth Pronovici.

2002-11-16 22:41  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Patch from Walter Duncan to add
	  --offset.

2002-11-16 11:11  epaepa

	* grab/de/tv_grab_de: Added --offset option, improved warning
	  messages when downloads fail.

2002-11-15 17:24  rmeden

	* choose/tv_check/tv_check: fix MyReplayTV case where day changes
	  and old day is reused

2002-11-12 14:56  rmeden

	* lib/exe_wrap.pl: I thought a script could end with RETURN.
	  Someone had a problem

2002-11-11 21:19  epaepa

	* Makefile.PL: Jerry V. pointed out that string comparison might
	  work better than numeric comparison for version numbers.

2002-11-07 13:20  epaepa

	* filter/tv_extractinfo_en: There was an infinite loop where a
	  programme looked a bit like a multipart, but was 'split' into
	  only one programme, which in turn looked like a multipart...	Now
	  if a programme is split into just one result, special_multipart()
	  decides to leave it alone.

2002-11-07 10:30  epaepa

	* filter/tv_cat, lib/XMLTV.pm.in: Fixed the tv_cat bug reported by
	  Jerry Veldhuis where it duplicates <channel> elements.  The
	  mistake lay in treating parsefiles_callback() as if it could
	  simply be used instead of parsefile_callback(), when in fact a
	  little more checking is needed when getting channels from
	  multiple files.

	  Added a warning to the XMLTV.pm documentation about this.  I
	  might change the way this works later, so that duplicate channels
	  are weeded out in XMLTV.pm and the data returned to the user is
	  always clean: not sure what is best here.

2002-11-07 10:25  epaepa

	* MANIFEST: Oops, I added a few generated test outputs to the file
	  list by mistake.

2002-11-07 10:12  epaepa

	* MANIFEST, t/test_filters.t,
	  t/data/tv_cat_test_xml_test_xml.expected,
	  t/data/tv_extractinfo_en_test_xml_test_xml.expected,
	  t/data/tv_grep_a_test_xml_test_xml.expected,
	  t/data/tv_grep_category_b_test_xml_test_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_xml_test_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_xml_test_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_xml_test_xml.expected,
	  t/data/tv_grep_channel_name_d_test_xml_test_xml.expected,
	  t/data/tv_grep_channel_xyz_or_channel_b_test_xml_test_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_xml_test_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_test_xml_test_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_xml_test_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_xml_test_xml.expected,
	  t/data/tv_grep_new_test_xml_test_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_test_xml_test_xml.expected,
	  t/data/tv_grep_premiere_test_xml_test_xml.expected,
	  t/data/tv_sort_by_channel_test_xml_test_xml.expected,
	  t/data/tv_sort_test_xml_test_xml.expected,
	  t/data/tv_to_latex_test_xml_test_xml.expected: Added a new set of
	  filter test cases: using the file test.xml twice.  This is to
	  catch a bug in tv_cat where <channel> elements are duplicated.
	  The expected outputs being committed show the correct behaviour.

2002-11-06 19:18  epaepa

	* MANIFEST: Dealt with the new Ananova television channels,
	  assigned them XMLTV ids and put each in one or more packages.

2002-11-06 19:16  epaepa

	* Makefile.PL: The Makefile depends on grab/uk/channel_pkgs/
	  because every time a new package is added to that directory some
	  new commands need to appear in the Makefile.

2002-11-05 05:41  rmeden

	* lib/exe_wrap.pl: Set the TZ variable if it is not already set.

2002-10-29 17:32  epaepa

	* Makefile.PL: Added a special check for Red Hat's uniquely broken
	  Date::Manip installation.  I hope it works.

2002-10-27 12:55  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Changed the date handling to use the
	  UK_TZ.pm code that was originally written for the Ananova
	  grabber.  Unless the programme details give an explicit timezone
	  we just guess.

	  This probably still has bugs but it is a lot better than it was
	  before.  The local system's timezone will no longer affect the
	  listings output (we set Date::Manip to UTC for everything).  A
	  pity that I did this too late for last night's BST->UTC
	  changeover :-(.

2002-10-27 09:29  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Instead of ParseDate() use
	  parse_uk_date() which guesses a timezone.  This was intended to
	  fix the BST/GMT changeover bugs, it does not, but hopefully the
	  code is no worse than before.

	  Changed memoization to get_url() instead of get() because
	  memoizing get() failed for some obscure reason.

2002-10-27 09:28  epaepa

	* MANIFEST, Makefile.PL, lib/UK_TZ.pm: Moved the library UK_TZ.pm
	  out of the grab/uk/ directory and into lib/, since it will now be
	  used by two grabbers.  (Still haven't decided the best way to
	  organize the directory structure with libraries that are used by
	  only one or two programs, but it's a small issue.)

2002-10-27 09:25  epaepa

	* Uninstall.pm: Made uninstall work correctly with perl 5.005, its
	  File::Find seems a bit broken.

2002-10-25 19:26  epaepa

	* Makefile.PL: A nicer warning message when a module fails to load.

2002-10-25 19:18  epaepa

	* lib/XMLTV.pm.in: Pod documentation syntax fixes.

2002-10-25 19:14  epaepa

	* MANIFEST: Adding the Windows executable generator to the file
	  list (there's no harm in distributing it as part of the source
	  tarballs and if it's not in MANIFEST you get a warning).

2002-10-23 18:02  rmeden

	* Makefile.PL: Replace leading spaces with tabs in generated
	  Makefile for compatability

2002-10-22 04:25  rmeden

	* lib/exe_wrap.pl: Still working on that file id!

2002-10-22 04:24  rmeden

	* lib/exe_wrap.pl: Fix file ID number

2002-10-22 04:22  rmeden

	* lib/exe_wrap.pl: Initial commit of script used as wrapper for
	  windows EXE

2002-10-22 04:12  rmeden

	* Makefile.PL: Added code to build windows executable

2002-10-20 10:21  epaepa

	* Makefile.PL: Require XML::Twig version 3.09.	This should finally
	  fix the problems with XML::Twig not being detected by the
	  Makefile.PL.	This version of XML::Twig has not yet been
	  officially released to CPAN, you have to get it as a development
	  version from the author's website.  But I'm told it will be
	  released soon.

2002-10-16 17:51  epaepa

	* Makefile.PL: Scott Rose reported that LWP 5.63 had missing
	  methods, but upgrading to 5.65 worked.  So we'll require that
	  version.

2002-10-16 17:31  epaepa

	* Makefile.PL: The minimum required version of XML::Twig is now the
	  latest, 3.08.  This fixes various weird problems that Red Hat 8
	  or Mandrake 9 users have been having, though probably not all of
	  them.  Not all users will strictly need to upgrade but it's way
	  simpler just to get everyone on the same version.

2002-10-15 19:45  epaepa

	* MANIFEST, Makefile.PL, mkdist, doc/README.win32: Added a couple
	  of files to the distribution created by 'make windows_dist': the
	  standard xmltv.dtd, and a new file README.win32 which replaces
	  the standard README.

2002-10-14 19:43  epaepa

	* Makefile.PL: windows_dist: convert all the files to DOS line
	  endings; move READMEs to the top-level directory.

2002-10-13 20:46  epaepa

	* Makefile.PL: The test I put in to check for manual page breakage
	  didn't work because of shell wildcard expansion.

2002-10-11 19:14  epaepa

	* filter/tv_extractinfo_en: Turn 'X interviews...' into a
	  'presenter' credit (though really it would be something more
	  specific if the XMLTV format allowed it).

2002-10-11 19:01  epaepa

	* filter/tv_extractinfo_en: New multipart splitting method: look
	  for 'including at TIME TITLE' in description.  This isn't perfect
	  (the main programme continues afterwards, there is 'followed by
	  weather' which isn't handled, and I'm still not happy about
	  throwing away all the programme's other data when splitting on
	  description) but a further step in the War On English.

2002-10-11 17:23  epaepa

	* filter/tv_extractinfo_en: A few more todo-list items.

	  special_credits(): 'Written by' and just 'By' create a 'writer'
	  credit.  Some of the extractor regexps have been tweaked to
	  preserve sentence boundaries better.	A sentence 'X concludes the
	  series' makes X a presenter and adds the new text 'Last in
	  series' - which some day might be picked up by another handler.

	  special_new_series(): recognize a wider range of 'New series'
	  sentences.

	  special_useless(): recognize and remove 'Coverage of' anywher at
	  the start of a sentence.

2002-10-11 15:05  epaepa

	* filter/tv_extractinfo_en: The name regular expressions were made
	  weaker to accommodate names like 'LL Cool J' (sigh).	But I added
	  a negative lookbehind test to make sure that 'the' does not
	  precede a name unless it is part of the name.  How many of these
	  lookbehind and lookahead tests should be part of $NAME_RE, and
	  how many part of the regexps which embed it, is still to be
	  sorted out.

	  special_category(): report more accurately whether the programme
	  has been changed.

	  special_credits(): work on all the descriptions in the right
	  language, not just the first.  Improved some of the extractor
	  regexps, and more extractors now examine categories, or the
	  presence of an existing person with the same job, to see whether
	  they should run.  Did away with the silly (non?)optimization of
	  'caches' stored in the programme details listing people in a
	  given job.  It is not possible for a person to both be a guest
	  and do some other job.

2002-10-11 14:36  epaepa

	* t/data/tv_extractinfo_en_clump_extract_1_xml.expected: I think
	  this test file didn't get committed earlier for some reason.

2002-10-10 19:05  epaepa

	* filter/tv_extractinfo_en: The assignmnent of new categories is a
	  bit subtler: it looks at all the programme's titles and
	  descriptions which are in English, and knows that mention of
	  'news' in a soap opera doesn't make it a news show.

	  'With' in game show means presenter, not actor (just as already
	  for news, business, etc).

2002-10-10 18:16  epaepa

	* filter/tv_extractinfo_en: Removed some references to 'en'
	  scattered around the code, now there is a routine pair_ok() to
	  tell you whether a [ text, lang ] pair is eligible for
	  processing, and if you must use the language directly then use
	  the variable $LANG.

2002-10-10 17:58  epaepa

	* filter/tv_extractinfo_en: Parse a sentence like 'Roy Hattersley
	  guests'.

2002-10-10 16:33  epaepa

	* mkdist: Updated the instructions to reflect the new naming
	  convention for file releases.   (Just '0.5.2' not 'xmltv-0.5.2'
	  which is kinda redundant.)

2002-10-10 14:46  epaepa

	* README: Removed references to slowness of test suite - it's not
	  so bad now.

2002-10-10 14:28  epaepa

	* README: Improved summary of changes since last release: it's
	  harder to remember what other people have committed :-(.

2002-10-10 13:45  epaepa

	* lib/XMLTV.pm.in, t/data/amp.xml, t/data/tv_cat_all_UTF8.expected,
	  t/data/tv_cat_amp_xml.expected,
	  t/data/tv_cat_amp_xml_amp_xml.expected,
	  t/data/tv_cat_amp_xml_clump_xml.expected,
	  t/data/tv_cat_amp_xml_dups_xml.expected,
	  t/data/tv_cat_amp_xml_empty_xml.expected,
	  t/data/tv_cat_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_cat_clump_xml_amp_xml.expected,
	  t/data/tv_cat_dups_xml_amp_xml.expected,
	  t/data/tv_cat_empty_xml_amp_xml.expected,
	  t/data/tv_extractinfo_en_all_UTF8.expected,
	  t/data/tv_extractinfo_en_amp_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml_amp_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml_clump_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml_dups_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml_empty_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_extractinfo_en_clump_xml_amp_xml.expected,
	  t/data/tv_extractinfo_en_dups_xml_amp_xml.expected,
	  t/data/tv_extractinfo_en_empty_xml_amp_xml.expected,
	  t/data/tv_grep_a_all_UTF8.expected,
	  t/data/tv_grep_a_amp_xml.expected,
	  t/data/tv_grep_a_amp_xml_amp_xml.expected,
	  t/data/tv_grep_a_amp_xml_clump_xml.expected,
	  t/data/tv_grep_a_amp_xml_dups_xml.expected,
	  t/data/tv_grep_a_amp_xml_empty_xml.expected,
	  t/data/tv_grep_a_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_a_clump_xml_amp_xml.expected,
	  t/data/tv_grep_a_dups_xml_amp_xml.expected,
	  t/data/tv_grep_a_empty_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml_dups_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_clump_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_dups_xml_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_empty_xml_amp_xml.expected,
	  t/data/tv_sort_all_UTF8.expected,
	  t/data/tv_sort_amp_xml.expected,
	  t/data/tv_sort_amp_xml_amp_xml.expected,
	  t/data/tv_sort_amp_xml_clump_xml.expected,
	  t/data/tv_sort_amp_xml_dups_xml.expected,
	  t/data/tv_sort_amp_xml_empty_xml.expected,
	  t/data/tv_sort_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_sort_by_channel_all_UTF8.expected,
	  t/data/tv_sort_by_channel_amp_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml_amp_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml_clump_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml_dups_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml_empty_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_sort_by_channel_clump_xml_amp_xml.expected,
	  t/data/tv_sort_by_channel_dups_xml_amp_xml.expected,
	  t/data/tv_sort_by_channel_empty_xml_amp_xml.expected,
	  t/data/tv_sort_clump_xml_amp_xml.expected,
	  t/data/tv_sort_dups_xml_amp_xml.expected,
	  t/data/tv_sort_empty_xml_amp_xml.expected,
	  t/data/tv_to_latex_all_UTF8.expected,
	  t/data/tv_to_latex_amp_xml.expected,
	  t/data/tv_to_latex_amp_xml_amp_xml.expected,
	  t/data/tv_to_latex_amp_xml_clump_xml.expected,
	  t/data/tv_to_latex_amp_xml_dups_xml.expected,
	  t/data/tv_to_latex_amp_xml_empty_xml.expected,
	  t/data/tv_to_latex_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  t/data/tv_to_latex_clump_xml_amp_xml.expected,
	  t/data/tv_to_latex_dups_xml_amp_xml.expected,
	  t/data/tv_to_latex_empty_xml_amp_xml.expected: When I changed the
	  code to use XML::Twig's KeepEncoding I altered get_text() to
	  clean up entities like &amp; by hand, but forgot to do the same
	  for attribute values.  (Hopefully it will not be needed for
	  attribute names, I don't know.)  Extended the amp.xml test cases
	  to check this bug.

	  Made sure that in the callback interface, if a callback is
	  undefined it won't be called (as the docs say).

2002-10-10 11:07  epaepa

	* grab/uk_rt/channel_ids: BBC Knowledge is now called BBC4,
	  although the XMLTV id is still knowledge.bbc.co.uk for now.

2002-10-10 11:05  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Don't download categories unless
	  $GET_CATEGORIES is on, which it isn't.  When a page says 'no
	  programmes available' then assume this is deliberate and don't
	  print a warning.  Warnings that are printed should have the URL
	  prepended.

2002-10-10 10:44  epaepa

	* grab/uk_rt/channel_ids: Removing duplicate entry for RT channel
	  248.

2002-10-10 10:43  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Errors in the config file should be
	  warned about with name and line number, not 'FH' :-P.

2002-10-10 10:38  epaepa

	* Makefile.PL, README, doc/QuickStart, lib/XMLTV.pm.in: Preparing
	  for 0.5.2 release.  Just a bit more testing first.

2002-10-10 10:36  epaepa

	* grab/uk_rt/tv_grab_uk_rt.in: Use the extra display names for
	  channels.

2002-10-10 10:15  epaepa

	* MANIFEST, Makefile.PL, grab/uk_rt/channel_ids,
	  grab/uk_rt/tv_grab_uk_rt, grab/uk_rt/tv_grab_uk_rt.PL,
	  grab/uk_rt/tv_grab_uk_rt.in: Moved tv_grab_uk_rt's lookup table
	  of Radio Times channel ids into a separate file installed under
	  share/ and read at runtime - exactly the same way tv_grab_uk does
	  it.

2002-10-10 09:20  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Added a pod manual page.  The configure
	  routine now has a stern warning (and no downloading happens
	  unless you choose to proceed).  The %channels hash is no longer a
	  global variable.

2002-10-09 20:52  epaepa

	* filter/tv_extractinfo_en: A new category 'talk' is set
	  automatically if a show mentions the word 'interviews'; it
	  affects the handling of 'with X' (treated as presenter, not
	  actor).

2002-10-09 20:44  epaepa

	* filter/tv_extractinfo_en: 'X introduces...' means X is a
	  presenter.

	  Removed meaningless phrase 'Coverage of'.

2002-10-09 20:14  epaepa

	* filter/tv_extractinfo_en: Change 'X round-up' to 'Xs'.  Hey, it
	  works for X = 'Headline'...

2002-10-09 18:24  epaepa

	* filter/tv_extractinfo_en: Handle a fourth kind of multipart
	  programme: that which has times in the form 'from-to' followed by
	  title and description.

	  Remove the phrase 'round-up of' since it has no meaning.  Eg
	  'round-up of news' becomes just 'news'.

2002-10-09 15:18  epaepa

	* filter/tv_extractinfo_en: special_multipart(): now handles two
	  styles of multipart programme found in the Radio Times listings,
	  as well as the Ananova style.

2002-10-09 13:46  epaepa

	* MANIFEST, lib/Clumps.pm,
	  t/data/tv_extractinfo_en_all_UTF8.expected: I've more or less
	  given up on fixing Clumps.pm; instead I've just removed the
	  sanity check about the times of replacement programmes being
	  within those of the old programme.  It relates to cases where a
	  programme in the middle of a clump is altered or replaced.  I
	  know what the Right Thing is here, but the Clumps.pm code is such
	  a mess I can't be bothered to implement it now.

	  Luckily all this clumps stuff will go out the window when the DTD
	  is revised.

2002-10-09 13:13  epaepa

	* MANIFEST: Adding new test case to file list.

2002-10-09 13:11  epaepa

	* t/data/: clump_extract_1.xml, tv_cat_all_UTF8.expected,
	  tv_cat_clump_extract_1_xml.expected,
	  tv_cat_clump_extract_xml.expected,
	  tv_extractinfo_en_clump_extract_xml.expected,
	  tv_grep_a_all_UTF8.expected,
	  tv_grep_a_clump_extract_1_xml.expected,
	  tv_grep_a_clump_extract_xml.expected,
	  tv_grep_category_b_clump_extract_1_xml.expected,
	  tv_grep_category_b_clump_extract_xml.expected,
	  tv_grep_category_e_and_title_f_clump_extract_1_xml.expected,
	  tv_grep_category_e_and_title_f_clump_extract_xml.expected,
	  tv_grep_category_g_or_title_h_all_UTF8.expected,
	  tv_grep_category_g_or_title_h_clump_extract_1_xml.expected,
	  tv_grep_category_g_or_title_h_clump_extract_xml.expected,
	  tv_grep_channel_id_channel4_com_clump_extract_1_xml.expected,
	  tv_grep_channel_id_channel4_com_clump_extract_xml.expected,
	  tv_grep_channel_name_d_clump_extract_1_xml.expected,
	  tv_grep_channel_name_d_clump_extract_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_amp_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_amp_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_amp_xml_dups_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_amp_xml_empty_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_extract_1_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_extract_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_xml_dups_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_clump_xml_empty_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_dups_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_dups_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_dups_xml_dups_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_dups_xml_empty_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_empty_xml_amp_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_empty_xml_clump_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_empty_xml_dups_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_empty_xml_empty_xml.expected,
	  tv_grep_channel_xyz_or_channel_b_x_whatever_xml.expected,
	  tv_grep_eval_scalar_keys_5_clump_extract_1_xml.expected,
	  tv_grep_eval_scalar_keys_5_clump_extract_xml.expected,
	  tv_grep_i_category_i_title_h_clump_extract_1_xml.expected,
	  tv_grep_i_category_i_title_h_clump_extract_xml.expected,
	  tv_grep_i_category_i_title_j_clump_extract_1_xml.expected,
	  tv_grep_i_category_i_title_j_clump_extract_xml.expected,
	  tv_grep_i_last_chance_c_clump_extract_1_xml.expected,
	  tv_grep_i_last_chance_c_clump_extract_xml.expected,
	  tv_grep_new_clump_extract_1_xml.expected,
	  tv_grep_new_clump_extract_xml.expected,
	  tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  tv_grep_on_after_2002_02_05_clump_extract_1_xml.expected,
	  tv_grep_on_after_2002_02_05_clump_extract_xml.expected,
	  tv_grep_premiere_clump_extract_1_xml.expected,
	  tv_grep_premiere_clump_extract_xml.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_sort_by_channel_clump_extract_1_xml.expected,
	  tv_sort_by_channel_clump_extract_xml.expected,
	  tv_sort_clump_extract_1_xml.expected,
	  tv_sort_clump_extract_xml.expected,
	  tv_to_latex_all_UTF8.expected,
	  tv_to_latex_clump_extract_1_xml.expected,
	  tv_to_latex_clump_extract_xml.expected: Adding another test case
	  for tv_extractinfo_en: this one causes it to crash.

2002-10-09 07:58  epaepa

	* lib/XMLTV.pm.in: Better warning message when input files (to be
	  concatenated) have different encodings.

2002-10-09 07:52  epaepa

	* lib/Clumps.pm: Added some more trace messages.

2002-10-07 18:16  epaepa

	* lib/Clumps.pm: Improved a fatal error message - but I still don't
	  know what is triggering it.

2002-10-07 18:08  epaepa

	* filter/tv_extractinfo_en: For a long time now there has been a
	  nuke_from_rel() call when a programme has been fully processed,
	  forgetting the information of which programmes it shares a clump
	  with.  The idea was that once a programme has been dealt with, we
	  don't need to keep track of it any more.  'Probably not needed,
	  but can't hurt' said the comment: tempting fate if ever that was
	  done.

	  No, we may need to modify a programme even once it has been fully
	  munged, because if others in the clump have been deleted we will
	  need to update its clumpidx.	So it shouldn't be removed from the
	  relation.  Getting rid of that call initially caused a section of
	  code in Clumps.pm (which had never been run before) to break.
	  But it should all be fixed now, I hope.

	  Also added some trace messages.

2002-10-07 18:05  epaepa

	* t/data/tv_extractinfo_en_all_UTF8.expected: This is the expected
	  result from tv_extractinfo_en, now that I've stopped it crashing
	  or printing warnings (fix to be committed).  Confusingly, the
	  programme 'News; Weather' is not split into two, although one day
	  it might be.

2002-10-07 17:59  epaepa

	* lib/Clumps.pm: A while ago I came across a mystifying
	  misbehaviour in perl, and I added all sorts of debugging and
	  wrapper routines like set_stop_time() to track it down.  I never
	  did get to the bottom of the problem, but later on some of the
	  code was moved out of tv_extractinfo_en into this module.  A call
	  to set_stop_time() was left in but until now, it has never been
	  called!  That was due to a bug in the programs using this module
	  I think.

	  Anyway, hoping that I won't be bitten again by this bug (or that
	  if I will be, then a special routine set_stop_times() offers no
	  protection), I have changed the call to just '$foo->{stop} = x'.

2002-10-07 17:55  epaepa

	* MANIFEST: Adding new test input to file list.  (But the expected
	  outputs have yet to be generated.)

2002-10-07 17:51  epaepa

	* t/data/: clump_extract.xml, tv_cat_all_UTF8.expected,
	  tv_grep_channel_xyz_or_channel_b_all_UTF8.expected,
	  tv_sort_all_UTF8.expected, tv_to_latex_all_UTF8.expected: This
	  test case uncovers a bug in tv_extractinfo_en related to breaking
	  up programmes which are part of a clump.  I haven't yet fixed the
	  bug, so the full test results aren't part of this checkin.

2002-10-07 17:43  epaepa

	* lib/Clumps.pm: It is morally better to use nested hashes rather
	  than concatenating two strings into a hash key.

2002-10-04 20:07  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Whoops, forgot that best_name()
	  requires a _list_ of allowable languages.

2002-10-04 20:01  epaepa

	* filter/tv_extractinfo_en: Corrected programme length calculation
	  (Date_Calc() returns an object you then have to turn into a
	  number of seconds with Delta_Format()).  Fixed a couple of
	  undefined value warnings.  Stopped using [:punct:] character
	  class which isn't supported in perl 5.005.

2002-10-04 12:04  epaepa

	* lib/XMLTV.pm.in: Added an extra warning.

2002-10-04 12:01  epaepa

	* filter/tv_extractinfo_en: Try to grok 'Classic Austrailian
	  western' and similar programme descriptions.	Made small tweaks
	  to full stops and spacing when pasting sentences together.

2002-10-04 01:53  rmeden

	* choose/tv_check/tv_check: if bug where a title of \d\d\d\d get's
	  interpreted as a date.

2002-10-03 21:01  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Changed the progress messages to print
	  a human-readable channel name rather than the XMLTV id (which
	  should normally be hidden from the user).

	  Times in the output now conform to what the DTD says and are in
	  the same format as tv_grab_uk.

	  When a page fails to parse, just print the URL and not the whole
	  content, because that gets excessive.

2002-10-03 20:13  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Attempt to keep going when the basic
	  HTML munging fails.

2002-10-03 19:57  epaepa

	* grab/uk_rt/tv_grab_uk_rt: I had removed most of the progress
	  indicators from the code in the hope of replacing them with
	  Term::ProgressBars like the other grabbers use.  But I think that
	  will take time to sort out (there are various routines calling
	  other routines, the total number of pages to grab isn't known at
	  the outset but is very large) so for the next release I've gone
	  back to quick-and-dirty print STDERR '#'.

2002-10-03 19:39  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Whoops, I committed the code with it
	  set to grab yesterday's listings.  Fixed.

	  Made the grabbing more robust against download failures: where
	  possible it will just skip the details for that programme.

2002-10-03 16:55  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Dealt with the remaining bits of data
	  that were thrown away; now almost everything on the site is
	  included in the XMLTV output.  There are three things which
	  cannot be written out because the DTD doesn't have provision for
	  them: the names of parts played by each actor, the link text and
	  description for each URL, and a signed-for-the-deaf flag.  These
	  are now warned about just once per run, I hope to add them to the
	  DTD when we overhaul it.

2002-10-02 19:21  epaepa

	* choose/tv_pick/tv_pick_cgi: Oops, in my attempt to make the code
	  work without Lingua::EN::Numbers::Ordinate installed I think I
	  broke it when that module is installed.  This patch might fix the
	  problem.

2002-10-02 18:12  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Small refactoring.

2002-10-02 17:29  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Improvements to parsing; now it
	  understands links to related websites, and follow-on programmes.

2002-10-02 10:02  epaepa

	* grab/uk_rt/tv_grab_uk_rt: get_programme_details(): instead of
	  munging the HTML into a big string with | characters and using
	  regexps on it, split the string into a list of 'bits' and process
	  each individually.  This has made some things like sub-title and
	  description more robust, previously they might not get noticed.
	  I've also added warning messages for when some information is
	  discarded or ignored; each of these represents a to-do item.

2002-10-02 02:40  rmeden

	* choose/tv_check/tv_check: added Length field to myreplaytv fetch

2002-10-01 21:12  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Mostly cosmetic changes to HTML
	  'parsing'.

2002-10-01 14:54  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Added a --configure option based on
	  that of tv_grab_uk.  There are no regions, packages or channel
	  types (radio vs television), so for now you just have to type in
	  the names of channels.  It's likely the Radio Times site does
	  have some type information associated with each channel which we
	  could use; alternatively there could be some common table of
	  channel information between this grabber and tv_grab_uk.

	  In fact, common / centralized configuration of grabbers is
	  definitely something to look into.

	  Eliminated some global variables, and changed some routines to
	  pass around Date::Manip objects rather than weird time strings.

	  Changed some warning messages which were wrong before, and
	  improved the robustness of get_available_dates()'s HTML parsing.

	  Added usage message and --days option to go along with
	  --configure: but not all of the grabber options are fully working
	  yet.	--share is completely pointless at the moment since there
	  are no data files used by this grabber, but I hope to move the
	  big channel data hash into a share/ data file at some point.

	  Reduced occurrences of the magic string 'radiotimes.beeb.com',
	  etc.	Fixed <tv> element credits.

2002-10-01 14:43  epaepa

	* lib/Clumps.pm: More informative warning message.

2002-10-01 14:40  epaepa

	* filter/tv_grep.in: I had misunderstood the /o flag for regular
	  expressions.	If you create a closure which captures $foo, and do
	  a regexp /$foo/o, then it really will be just one value of $foo
	  throughout the whole program, even if different closures had
	  captured different values.  This caused a bug where you couldn't
	  give the same programme content test twice with different
	  regexps.

2002-10-01 14:38  epaepa

	* MANIFEST: Adding new test case files to MANIFEST.

2002-10-01 14:36  epaepa

	* t/: test_filters.t,
	  data/tv_grep_channel_xyz_or_channel_b_all_UTF8.expected,
	  data/tv_grep_channel_xyz_or_channel_b_amp_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_attrs_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_clump_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_dups_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_empty_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_length_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_overlap_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_simple_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_sort_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_test_empty_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_test_livre_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_test_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_whitespace_xml.expected,
	  data/tv_grep_channel_xyz_or_channel_b_x-whatever_xml.expected:
	  Found a bug in tv_grep with specifying --channel twice (or any
	  programme content test twice, it turns out); here is a test case.

2002-09-30 12:19  epaepa

	* lib/XMLTV.pm.in: Refactored the 'unknown key foo in bar hash'
	  warnings into the routine warn_unknown_keys().

2002-09-30 12:17  epaepa

	* Makefile.PL: Now that tv_grab_uk_rt no longer has any unusual
	  dependencies, it can be installed by default and without
	  prompting.  Although I really ought to do something more
	  consistent between parts which are prompted for and parts which
	  aren't.

2002-09-30 11:46  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Made sure the XML is valid by cleaning
	  up ('demoronizing') a couple of non-Latin-1 characters which were
	  being carried through from the HTML pages.

	  Removed retry-fetching, I may add it back later if it proves to
	  be needed.  But it interferes with caching which is a nuisance
	  for development.

	  Changed non-standard keys in hashes to begin with an underscore,
	  so XMLTV::Writer will silently skip them rather than complaining.

	  Added some more error checking, in particular a check that
	  regular expression matches actually succeed before we go off and
	  use captured strings.

	  Strip leading and trailing whitespace from titles and
	  descriptions.

	  Rejigged the channel handling a little; now we try to use XMLTV
	  ids internally and only convert them to Radio Times ids when
	  contacting the site.	Also, only the channels which are actually
	  used are written out as <channel> elements, and with the correct
	  id.  Still some more to do here, in particular a real
	  configuration stage.

	  Added prototypes for all subroutines.

	  Cosmetic formatting, indentation and code style changes.

	  Removed use of Time::ParseDate, now we use Date::Manip
	  exclusively for that stuff.

2002-09-29 18:25  epaepa

	* MANIFEST, Makefile.PL: Added tv_grab_uk_rt to the makefile
	  machinery.

2002-09-29 18:24  epaepa

	* t/parallel_test: Sorting is necessary to compare the output of
	  tv_grab_uk from the 0.5 release with that in 0.5.1.  The order of
	  the XML output has changed.

	  (Also it's necessary to turn off $KEEP_ENCODING in XMLTV.pm, if
	  you want to get the same output from the grabber.)

	  I'm pleased to report that with the exception of cases which
	  crashed the old version of the grabber, the output of old and new
	  is unchanged up to sorting.

	  BTW, if anyone else wants to know how to use this script (like to
	  check that tv_grab_na still works after some major change to the
	  code), do ask.  I plan to start using it for tv_grab_sn and
	  tv_grab_uk_rt as well.

2002-09-29 18:09  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Made warnings-clean, and turned the
	  commented-out category-fetching code into a configurable option
	  (though I haven't yet tested it).

2002-09-29 18:08  epaepa

	* grab/uk_rt/tv_grab_uk_rt: Adding Jerome Benedict Hettich's Radio
	  Times grabber, which was written as part of a group project at
	  the Department of Computing, Imperial College - another case of
	  someone in the same department using XMLTV without me knowing!
	  He sent it to me a while ago but I never got around to adding it.

	  At the moment it does a pretty good job of fetching data from the
	  Radio Times site - their listings are very detailed, particularly
	  in giving the cast of each programme.  And they stretch to two
	  weeks whereas Ananova's go to one.  I believe that the RT data is
	  'completely unrelated' to the Press Association feed which
	  Ananova uses, but I'll investigate later whether there are
	  similarities.

2002-09-29 04:23  rmeden

	* choose/tv_check/tv_check: MyReplayTV fetches now retains options
	  set with --configure MyReplayTV warning about not being able to
	  guess the show day improved MyReplayTV uses old day if show not
	  on the schedule this week Title-only header now includes all set
	  fields so you can see the options.

2002-09-28 22:49  epaepa

	* filter/tv_extractinfo_en: Found a mysterious bug and added some
	  more error handling and trace messages in an attempt to track it
	  down.  Then for some reason renaming one variable @progs to @pps
	  made the bug go away again.

2002-09-28 21:15  epaepa

	* filter/tv_extractinfo_en: Adding some more function prototypes.

2002-09-28 14:20  epaepa

	* Uninstall.pm: Clearer error message.

2002-09-28 12:38  epaepa

	* filter/tv_grep.in, lib/XMLTV.pm.in: I realized that the handling
	  of attributes in XMLTV.pm was very buggy.  Some like 'showview'
	  had never worked!  Now the list of attributes is centralized and
	  returned as part of the output of list_programme_keys() - so that
	  routine really does tell you all the keys that might be in a
	  programme hash.

	  The change to list_programme_keys() means tv_grep has sprouted a
	  lot of new tests, including a somewhat-redundant --channel.

2002-09-28 12:31  epaepa

	* MANIFEST: Added attrs.xml and its test cases to the file listing.

2002-09-28 12:02  epaepa

	* t/data/: tv_cat_all_UTF8.expected,
	  tv_extractinfo_en_all_UTF8.expected, tv_grep_a_all_UTF8.expected,
	  tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  tv_sort_all_UTF8.expected, tv_sort_by_channel_all_UTF8.expected,
	  tv_to_latex_all_UTF8.expected: The new test input attrs.xml
	  affects the 'all_UTF8' tests too.

2002-09-28 12:02  epaepa

	* t/data/: tv_to_latex_amp_xml_dups_xml.expected,
	  tv_to_latex_clump_xml_dups_xml.expected: A couple of test cases I
	  forgot to commit with the earlier tv_to_latex change.

2002-09-28 12:00  epaepa

	* t/data/: attrs.xml, tv_cat_attrs_xml.expected,
	  tv_extractinfo_en_attrs_xml.expected,
	  tv_grep_a_attrs_xml.expected,
	  tv_grep_category_b_attrs_xml.expected,
	  tv_grep_category_e_and_title_f_attrs_xml.expected,
	  tv_grep_category_g_or_title_h_attrs_xml.expected,
	  tv_grep_channel_id_channel4_com_attrs_xml.expected,
	  tv_grep_channel_name_d_attrs_xml.expected,
	  tv_grep_eval_scalar_keys_5_attrs_xml.expected,
	  tv_grep_i_category_i_title_h_attrs_xml.expected,
	  tv_grep_i_category_i_title_j_attrs_xml.expected,
	  tv_grep_i_last_chance_c_attrs_xml.expected,
	  tv_grep_new_attrs_xml.expected,
	  tv_grep_on_after_2002_02_05_attrs_xml.expected,
	  tv_grep_premiere_attrs_xml.expected, tv_sort_attrs_xml.expected,
	  tv_sort_by_channel_attrs_xml.expected,
	  tv_to_latex_attrs_xml.expected: New test case to check that all
	  attributes of <programme> are read and written correctly.

2002-09-28 11:53  epaepa

	* t/test_filters.t: Previously testing would rely on particular
	  filenames appearing first alphabetically.  But of course this
	  completely breaks when you add new filenames in the middle.
	  Rather than rename things to 00amp.xml, etc, I have gone for the
	  only slightly smaller kludge of reordering files by hand in this
	  script.

	  Should fix properly some time.  Maybe a separate configuration
	  file should list the tests to run.

2002-09-28 11:44  epaepa

	* filter/tv_to_latex, t/data/tv_to_latex_dups_xml.expected,
	  t/data/tv_to_latex_dups_xml_amp_xml.expected,
	  t/data/tv_to_latex_dups_xml_clump_xml.expected,
	  t/data/tv_to_latex_dups_xml_dups_xml.expected,
	  t/data/tv_to_latex_dups_xml_empty_xml.expected,
	  t/data/tv_to_latex_empty_xml_dups_xml.expected: Notice a timezone
	  change even when only the start time of a programme is given.

2002-09-28 11:39  epaepa

	* xmltv.dtd: Spelling change.

2002-09-24 20:24  rmeden

	* choose/tv_check/tv_check: Fix serious bug where title-scan never
	  matches unless a device is defined.  (It skips it thinking the
	  episode is already scheduled to record)

2002-09-23 15:19  epaepa

	* MANIFEST: Fixing cut-and-paste error.

2002-09-23 15:17  epaepa

	* MANIFEST, Makefile.PL: Adding Stefan Görling's grabber for Sweden
	  and Norway (with a few fixes).  I will probably give him CVS
	  access to upload new versions, if necessary.

2002-09-23 15:14  epaepa

	* MANIFEST: Adding the data files for the new test cases to the
	  MANIFEST.

2002-09-23 13:54  epaepa

	* t/: test_filters.t, data/tv_cat_all_UTF8.expected,
	  data/tv_cat_amp_xml_amp_xml.expected,
	  data/tv_cat_amp_xml_clump_xml.expected,
	  data/tv_cat_amp_xml_dups_xml.expected,
	  data/tv_cat_amp_xml_empty_xml.expected,
	  data/tv_cat_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_cat_clump_xml_amp_xml.expected,
	  data/tv_cat_clump_xml_clump_xml.expected,
	  data/tv_cat_clump_xml_dups_xml.expected,
	  data/tv_cat_clump_xml_empty_xml.expected,
	  data/tv_cat_dups_xml_amp_xml.expected,
	  data/tv_cat_dups_xml_clump_xml.expected,
	  data/tv_cat_dups_xml_dups_xml.expected,
	  data/tv_cat_dups_xml_empty_xml.expected,
	  data/tv_cat_empty_xml_amp_xml.expected,
	  data/tv_cat_empty_xml_clump_xml.expected,
	  data/tv_cat_empty_xml_dups_xml.expected,
	  data/tv_cat_empty_xml_empty_xml.expected,
	  data/tv_cat_simple_xml_x_whatever_xml.expected,
	  data/tv_extractinfo_en_all_UTF8.expected,
	  data/tv_extractinfo_en_amp_xml_amp_xml.expected,
	  data/tv_extractinfo_en_amp_xml_clump_xml.expected,
	  data/tv_extractinfo_en_amp_xml_dups_xml.expected,
	  data/tv_extractinfo_en_amp_xml_empty_xml.expected,
	  data/tv_extractinfo_en_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_extractinfo_en_clump_xml_amp_xml.expected,
	  data/tv_extractinfo_en_clump_xml_clump_xml.expected,
	  data/tv_extractinfo_en_clump_xml_dups_xml.expected,
	  data/tv_extractinfo_en_clump_xml_empty_xml.expected,
	  data/tv_extractinfo_en_dups_xml_amp_xml.expected,
	  data/tv_extractinfo_en_dups_xml_clump_xml.expected,
	  data/tv_extractinfo_en_dups_xml_dups_xml.expected,
	  data/tv_extractinfo_en_dups_xml_empty_xml.expected,
	  data/tv_extractinfo_en_empty_xml_amp_xml.expected,
	  data/tv_extractinfo_en_empty_xml_clump_xml.expected,
	  data/tv_extractinfo_en_empty_xml_dups_xml.expected,
	  data/tv_extractinfo_en_empty_xml_empty_xml.expected,
	  data/tv_extractinfo_en_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_a_all_UTF8.expected,
	  data/tv_grep_a_amp_xml_amp_xml.expected,
	  data/tv_grep_a_amp_xml_clump_xml.expected,
	  data/tv_grep_a_amp_xml_dups_xml.expected,
	  data/tv_grep_a_amp_xml_empty_xml.expected,
	  data/tv_grep_a_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_a_clump_xml_amp_xml.expected,
	  data/tv_grep_a_clump_xml_clump_xml.expected,
	  data/tv_grep_a_clump_xml_dups_xml.expected,
	  data/tv_grep_a_clump_xml_empty_xml.expected,
	  data/tv_grep_a_dups_xml_amp_xml.expected,
	  data/tv_grep_a_dups_xml_clump_xml.expected,
	  data/tv_grep_a_dups_xml_dups_xml.expected,
	  data/tv_grep_a_dups_xml_empty_xml.expected,
	  data/tv_grep_a_empty_xml_amp_xml.expected,
	  data/tv_grep_a_empty_xml_clump_xml.expected,
	  data/tv_grep_a_empty_xml_dups_xml.expected,
	  data/tv_grep_a_empty_xml_empty_xml.expected,
	  data/tv_grep_a_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_category_b_all_UTF8.expected,
	  data/tv_grep_category_b_amp_xml_amp_xml.expected,
	  data/tv_grep_category_b_amp_xml_clump_xml.expected,
	  data/tv_grep_category_b_amp_xml_dups_xml.expected,
	  data/tv_grep_category_b_amp_xml_empty_xml.expected,
	  data/tv_grep_category_b_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_category_b_clump_xml_amp_xml.expected,
	  data/tv_grep_category_b_clump_xml_clump_xml.expected,
	  data/tv_grep_category_b_clump_xml_dups_xml.expected,
	  data/tv_grep_category_b_clump_xml_empty_xml.expected,
	  data/tv_grep_category_b_dups_xml_amp_xml.expected,
	  data/tv_grep_category_b_dups_xml_clump_xml.expected,
	  data/tv_grep_category_b_dups_xml_dups_xml.expected,
	  data/tv_grep_category_b_dups_xml_empty_xml.expected,
	  data/tv_grep_category_b_empty_xml_amp_xml.expected,
	  data/tv_grep_category_b_empty_xml_clump_xml.expected,
	  data/tv_grep_category_b_empty_xml_dups_xml.expected,
	  data/tv_grep_category_b_empty_xml_empty_xml.expected,
	  data/tv_grep_category_b_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_category_e_and_title_f_all_UTF8.expected,
	  data/tv_grep_category_e_and_title_f_amp_xml_amp_xml.expected,
	  data/tv_grep_category_e_and_title_f_amp_xml_clump_xml.expected,
	  data/tv_grep_category_e_and_title_f_amp_xml_dups_xml.expected,
	  data/tv_grep_category_e_and_title_f_amp_xml_empty_xml.expected,
	  data/tv_grep_category_e_and_title_f_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_category_e_and_title_f_clump_xml_amp_xml.expected,
	  data/tv_grep_category_e_and_title_f_clump_xml_clump_xml.expected,
	  data/tv_grep_category_e_and_title_f_clump_xml_dups_xml.expected,
	  data/tv_grep_category_e_and_title_f_clump_xml_empty_xml.expected,
	  data/tv_grep_category_e_and_title_f_dups_xml_amp_xml.expected,
	  data/tv_grep_category_e_and_title_f_dups_xml_clump_xml.expected,
	  data/tv_grep_category_e_and_title_f_dups_xml_dups_xml.expected,
	  data/tv_grep_category_e_and_title_f_dups_xml_empty_xml.expected,
	  data/tv_grep_category_e_and_title_f_empty_xml_amp_xml.expected,
	  data/tv_grep_category_e_and_title_f_empty_xml_clump_xml.expected,
	  data/tv_grep_category_e_and_title_f_empty_xml_dups_xml.expected,
	  data/tv_grep_category_e_and_title_f_empty_xml_empty_xml.expected,
	  data/tv_grep_category_e_and_title_f_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_category_g_or_title_h_all_UTF8.expected,
	  data/tv_grep_category_g_or_title_h_amp_xml_amp_xml.expected,
	  data/tv_grep_category_g_or_title_h_amp_xml_clump_xml.expected,
	  data/tv_grep_category_g_or_title_h_amp_xml_dups_xml.expected,
	  data/tv_grep_category_g_or_title_h_amp_xml_empty_xml.expected,
	  data/tv_grep_category_g_or_title_h_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_category_g_or_title_h_clump_xml_amp_xml.expected,
	  data/tv_grep_category_g_or_title_h_clump_xml_clump_xml.expected,
	  data/tv_grep_category_g_or_title_h_clump_xml_dups_xml.expected,
	  data/tv_grep_category_g_or_title_h_clump_xml_empty_xml.expected,
	  data/tv_grep_category_g_or_title_h_dups_xml_amp_xml.expected,
	  data/tv_grep_category_g_or_title_h_dups_xml_clump_xml.expected,
	  data/tv_grep_category_g_or_title_h_dups_xml_dups_xml.expected,
	  data/tv_grep_category_g_or_title_h_dups_xml_empty_xml.expected,
	  data/tv_grep_category_g_or_title_h_empty_xml_amp_xml.expected,
	  data/tv_grep_category_g_or_title_h_empty_xml_clump_xml.expected,
	  data/tv_grep_category_g_or_title_h_empty_xml_dups_xml.expected,
	  data/tv_grep_category_g_or_title_h_empty_xml_empty_xml.expected,
	  data/tv_grep_category_g_or_title_h_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_channel_id_channel4_com_all_UTF8.expected,
	  data/tv_grep_channel_id_channel4_com_amp_xml_amp_xml.expected,
	  data/tv_grep_channel_id_channel4_com_amp_xml_clump_xml.expected,
	  data/tv_grep_channel_id_channel4_com_amp_xml_dups_xml.expected,
	  data/tv_grep_channel_id_channel4_com_amp_xml_empty_xml.expected,
	  data/tv_grep_channel_id_channel4_com_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_channel_id_channel4_com_clump_xml_amp_xml.expected,
	  data/tv_grep_channel_id_channel4_com_clump_xml_clump_xml.expected,
	  data/tv_grep_channel_id_channel4_com_clump_xml_dups_xml.expected,
	  data/tv_grep_channel_id_channel4_com_clump_xml_empty_xml.expected,
	  data/tv_grep_channel_id_channel4_com_dups_xml_amp_xml.expected,
	  data/tv_grep_channel_id_channel4_com_dups_xml_clump_xml.expected,
	  data/tv_grep_channel_id_channel4_com_dups_xml_dups_xml.expected,
	  data/tv_grep_channel_id_channel4_com_dups_xml_empty_xml.expected,
	  data/tv_grep_channel_id_channel4_com_empty_xml_amp_xml.expected,
	  data/tv_grep_channel_id_channel4_com_empty_xml_clump_xml.expected,
	  data/tv_grep_channel_id_channel4_com_empty_xml_dups_xml.expected,
	  data/tv_grep_channel_id_channel4_com_empty_xml_empty_xml.expected,
	  data/tv_grep_channel_id_channel4_com_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_channel_name_d_all_UTF8.expected,
	  data/tv_grep_channel_name_d_amp_xml_amp_xml.expected,
	  data/tv_grep_channel_name_d_amp_xml_clump_xml.expected,
	  data/tv_grep_channel_name_d_amp_xml_dups_xml.expected,
	  data/tv_grep_channel_name_d_amp_xml_empty_xml.expected,
	  data/tv_grep_channel_name_d_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_channel_name_d_clump_xml_amp_xml.expected,
	  data/tv_grep_channel_name_d_clump_xml_clump_xml.expected,
	  data/tv_grep_channel_name_d_clump_xml_dups_xml.expected,
	  data/tv_grep_channel_name_d_clump_xml_empty_xml.expected,
	  data/tv_grep_channel_name_d_dups_xml_amp_xml.expected,
	  data/tv_grep_channel_name_d_dups_xml_clump_xml.expected,
	  data/tv_grep_channel_name_d_dups_xml_dups_xml.expected,
	  data/tv_grep_channel_name_d_dups_xml_empty_xml.expected,
	  data/tv_grep_channel_name_d_empty_xml_amp_xml.expected,
	  data/tv_grep_channel_name_d_empty_xml_clump_xml.expected,
	  data/tv_grep_channel_name_d_empty_xml_dups_xml.expected,
	  data/tv_grep_channel_name_d_empty_xml_empty_xml.expected,
	  data/tv_grep_channel_name_d_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_all_UTF8.expected,
	  data/tv_grep_eval_scalar_keys_5_amp_xml_amp_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_amp_xml_clump_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_amp_xml_dups_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_amp_xml_empty_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_clump_xml_amp_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_clump_xml_clump_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_clump_xml_dups_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_clump_xml_empty_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_dups_xml_amp_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_dups_xml_clump_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_dups_xml_dups_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_dups_xml_empty_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_empty_xml_amp_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_empty_xml_clump_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_empty_xml_dups_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_empty_xml_empty_xml.expected,
	  data/tv_grep_eval_scalar_keys_5_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_i_category_i_title_h_all_UTF8.expected,
	  data/tv_grep_i_category_i_title_h_amp_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_h_amp_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_h_amp_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_h_amp_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_h_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_h_clump_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_h_clump_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_h_clump_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_h_clump_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_h_dups_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_h_dups_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_h_dups_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_h_dups_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_h_empty_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_h_empty_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_h_empty_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_h_empty_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_h_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_i_category_i_title_j_all_UTF8.expected,
	  data/tv_grep_i_category_i_title_j_amp_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_j_amp_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_j_amp_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_j_amp_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_j_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_j_clump_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_j_clump_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_j_clump_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_j_clump_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_j_dups_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_j_dups_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_j_dups_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_j_dups_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_j_empty_xml_amp_xml.expected,
	  data/tv_grep_i_category_i_title_j_empty_xml_clump_xml.expected,
	  data/tv_grep_i_category_i_title_j_empty_xml_dups_xml.expected,
	  data/tv_grep_i_category_i_title_j_empty_xml_empty_xml.expected,
	  data/tv_grep_i_category_i_title_j_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_i_last_chance_c_all_UTF8.expected,
	  data/tv_grep_i_last_chance_c_amp_xml_amp_xml.expected,
	  data/tv_grep_i_last_chance_c_amp_xml_clump_xml.expected,
	  data/tv_grep_i_last_chance_c_amp_xml_dups_xml.expected,
	  data/tv_grep_i_last_chance_c_amp_xml_empty_xml.expected,
	  data/tv_grep_i_last_chance_c_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_i_last_chance_c_clump_xml_amp_xml.expected,
	  data/tv_grep_i_last_chance_c_clump_xml_clump_xml.expected,
	  data/tv_grep_i_last_chance_c_clump_xml_dups_xml.expected,
	  data/tv_grep_i_last_chance_c_clump_xml_empty_xml.expected,
	  data/tv_grep_i_last_chance_c_dups_xml_amp_xml.expected,
	  data/tv_grep_i_last_chance_c_dups_xml_clump_xml.expected,
	  data/tv_grep_i_last_chance_c_dups_xml_dups_xml.expected,
	  data/tv_grep_i_last_chance_c_dups_xml_empty_xml.expected,
	  data/tv_grep_i_last_chance_c_empty_xml_amp_xml.expected,
	  data/tv_grep_i_last_chance_c_empty_xml_clump_xml.expected,
	  data/tv_grep_i_last_chance_c_empty_xml_dups_xml.expected,
	  data/tv_grep_i_last_chance_c_empty_xml_empty_xml.expected,
	  data/tv_grep_i_last_chance_c_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_new_all_UTF8.expected,
	  data/tv_grep_new_amp_xml_amp_xml.expected,
	  data/tv_grep_new_amp_xml_clump_xml.expected,
	  data/tv_grep_new_amp_xml_dups_xml.expected,
	  data/tv_grep_new_amp_xml_empty_xml.expected,
	  data/tv_grep_new_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_new_clump_xml_amp_xml.expected,
	  data/tv_grep_new_clump_xml_clump_xml.expected,
	  data/tv_grep_new_clump_xml_dups_xml.expected,
	  data/tv_grep_new_clump_xml_empty_xml.expected,
	  data/tv_grep_new_dups_xml_amp_xml.expected,
	  data/tv_grep_new_dups_xml_clump_xml.expected,
	  data/tv_grep_new_dups_xml_dups_xml.expected,
	  data/tv_grep_new_dups_xml_empty_xml.expected,
	  data/tv_grep_new_empty_xml_amp_xml.expected,
	  data/tv_grep_new_empty_xml_clump_xml.expected,
	  data/tv_grep_new_empty_xml_dups_xml.expected,
	  data/tv_grep_new_empty_xml_empty_xml.expected,
	  data/tv_grep_new_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_on_after_2002_02_05_all_UTF8.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_clump_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_dups_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_amp_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_clump_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_dups_xml.expected,
	  data/tv_grep_on_after_2002_02_05_empty_xml_empty_xml.expected,
	  data/tv_grep_on_after_2002_02_05_simple_xml_x_whatever_xml.expected,
	  data/tv_grep_premiere_all_UTF8.expected,
	  data/tv_grep_premiere_amp_xml_amp_xml.expected,
	  data/tv_grep_premiere_amp_xml_clump_xml.expected,
	  data/tv_grep_premiere_amp_xml_dups_xml.expected,
	  data/tv_grep_premiere_amp_xml_empty_xml.expected,
	  data/tv_grep_premiere_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_grep_premiere_clump_xml_amp_xml.expected,
	  data/tv_grep_premiere_clump_xml_clump_xml.expected,
	  data/tv_grep_premiere_clump_xml_dups_xml.expected,
	  data/tv_grep_premiere_clump_xml_empty_xml.expected,
	  data/tv_grep_premiere_dups_xml_amp_xml.expected,
	  data/tv_grep_premiere_dups_xml_clump_xml.expected,
	  data/tv_grep_premiere_dups_xml_dups_xml.expected,
	  data/tv_grep_premiere_dups_xml_empty_xml.expected,
	  data/tv_grep_premiere_empty_xml_amp_xml.expected,
	  data/tv_grep_premiere_empty_xml_clump_xml.expected,
	  data/tv_grep_premiere_empty_xml_dups_xml.expected,
	  data/tv_grep_premiere_empty_xml_empty_xml.expected,
	  data/tv_grep_premiere_simple_xml_x_whatever_xml.expected,
	  data/tv_sort_all_UTF8.expected,
	  data/tv_sort_amp_xml_amp_xml.expected,
	  data/tv_sort_amp_xml_clump_xml.expected,
	  data/tv_sort_amp_xml_dups_xml.expected,
	  data/tv_sort_amp_xml_empty_xml.expected,
	  data/tv_sort_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_sort_by_channel_all_UTF8.expected,
	  data/tv_sort_by_channel_amp_xml_amp_xml.expected,
	  data/tv_sort_by_channel_amp_xml_clump_xml.expected,
	  data/tv_sort_by_channel_amp_xml_dups_xml.expected,
	  data/tv_sort_by_channel_amp_xml_empty_xml.expected,
	  data/tv_sort_by_channel_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_sort_by_channel_clump_xml_amp_xml.expected,
	  data/tv_sort_by_channel_clump_xml_clump_xml.expected,
	  data/tv_sort_by_channel_clump_xml_dups_xml.expected,
	  data/tv_sort_by_channel_clump_xml_empty_xml.expected,
	  data/tv_sort_by_channel_dups_xml_amp_xml.expected,
	  data/tv_sort_by_channel_dups_xml_clump_xml.expected,
	  data/tv_sort_by_channel_dups_xml_dups_xml.expected,
	  data/tv_sort_by_channel_dups_xml_empty_xml.expected,
	  data/tv_sort_by_channel_empty_xml_amp_xml.expected,
	  data/tv_sort_by_channel_empty_xml_clump_xml.expected,
	  data/tv_sort_by_channel_empty_xml_dups_xml.expected,
	  data/tv_sort_by_channel_empty_xml_empty_xml.expected,
	  data/tv_sort_by_channel_simple_xml_x_whatever_xml.expected,
	  data/tv_sort_clump_xml_amp_xml.expected,
	  data/tv_sort_clump_xml_clump_xml.expected,
	  data/tv_sort_clump_xml_dups_xml.expected,
	  data/tv_sort_clump_xml_empty_xml.expected,
	  data/tv_sort_dups_xml_amp_xml.expected,
	  data/tv_sort_dups_xml_clump_xml.expected,
	  data/tv_sort_dups_xml_dups_xml.expected,
	  data/tv_sort_dups_xml_empty_xml.expected,
	  data/tv_sort_empty_xml_amp_xml.expected,
	  data/tv_sort_empty_xml_clump_xml.expected,
	  data/tv_sort_empty_xml_dups_xml.expected,
	  data/tv_sort_empty_xml_empty_xml.expected,
	  data/tv_sort_simple_xml_x_whatever_xml.expected,
	  data/tv_to_latex_all_UTF8.expected,
	  data/tv_to_latex_amp_xml_amp_xml.expected,
	  data/tv_to_latex_amp_xml_clump_xml.expected,
	  data/tv_to_latex_amp_xml_dups_xml.expected,
	  data/tv_to_latex_amp_xml_empty_xml.expected,
	  data/tv_to_latex_amp_xml_empty_xml_empty_xml_clump_xml.expected,
	  data/tv_to_latex_clump_xml_amp_xml.expected,
	  data/tv_to_latex_clump_xml_clump_xml.expected,
	  data/tv_to_latex_clump_xml_dups_xml.expected,
	  data/tv_to_latex_clump_xml_empty_xml.expected,
	  data/tv_to_latex_dups_xml_amp_xml.expected,
	  data/tv_to_latex_dups_xml_clump_xml.expected,
	  data/tv_to_latex_dups_xml_dups_xml.expected,
	  data/tv_to_latex_dups_xml_empty_xml.expected,
	  data/tv_to_latex_empty_xml_amp_xml.expected,
	  data/tv_to_latex_empty_xml_clump_xml.expected,
	  data/tv_to_latex_empty_xml_dups_xml.expected,
	  data/tv_to_latex_empty_xml_empty_xml.expected,
	  data/tv_to_latex_simple_xml_x_whatever_xml.expected: Now that the
	  filter programmes can take more than one file on the command
	  line, we can write some tests that use this.	There are a few for
	  the sake of testing the multifile functionality, but also we can
	  speed up the test suite because what used to take ten runs of
	  tv_foo can now be done in one run giving ten input files.

	  We don't test all possible lists of files, only a few of the
	  possible pairs, but still it bloats the test suite to
	  unmanageably large numbers of tests (over 1000).  I've remedied
	  that by defining a smaller set of tests, including running each
	  filter program on every input file at once, and making this the
	  default.  If you have a fast computer or time to spare you can
	  get the complete set of tests with the --full option.

	  The files like tv_cat_all_UTF8.expected are for the testing of
	  every input file (actually, every input file with UTF-8 encoding)
	  at once.

2002-09-23 13:49  epaepa

	* filter/tv_sort: Store the original ordering of programmes to
	  guarantee a stable sort when two different programmes are not
	  comparable.  (Which should never happen in sane input, but...)

	  Added prototype declaration for data_eq().

2002-09-23 13:45  epaepa

	* lib/XMLTV.pm.in: Properly fixed the bug with empty files, so it
	  works when you have two empty files in a row on the command line.
	  Cleaned up the whitespace handling: it should be stripped on
	  reading, but not on writing (no need to do both).

2002-09-23 12:53  epaepa

	* t/data/: clump.xml, tv_cat_whitespace_xml.expected,
	  tv_extractinfo_en_whitespace_xml.expected,
	  tv_grep_a_whitespace_xml.expected,
	  tv_grep_category_b_whitespace_xml.expected,
	  tv_grep_category_e_and_title_f_whitespace_xml.expected,
	  tv_grep_category_g_or_title_h_whitespace_xml.expected,
	  tv_grep_channel_id_channel4_com_whitespace_xml.expected,
	  tv_grep_channel_name_d_whitespace_xml.expected,
	  tv_grep_eval_scalar_keys_5_whitespace_xml.expected,
	  tv_grep_i_category_i_title_h_whitespace_xml.expected,
	  tv_grep_i_category_i_title_j_whitespace_xml.expected,
	  tv_grep_i_last_chance_c_whitespace_xml.expected,
	  tv_grep_new_whitespace_xml.expected,
	  tv_grep_on_after_2002_02_05_whitespace_xml.expected,
	  tv_grep_premiere_whitespace_xml.expected,
	  tv_sort_by_channel_whitespace_xml.expected,
	  tv_sort_whitespace_xml.expected,
	  tv_to_latex_whitespace_xml.expected, whitespace.xml: A new test
	  case to catch a bug with whitespace handling: some elements have
	  whitespace stripped on output, so you'd think it would be ignored
	  on input, but at present it's not.

2002-09-22 12:15  epaepa

	* filter/tv_extractinfo_en: Changed to use the callback style -
	  although at present it just gathers all the programmes into a big
	  list as before.

2002-09-22 12:11  epaepa

	* filter/tv_extractinfo_en: Moved the list of programme handlers
	  into munge().

2002-09-22 12:08  epaepa

	* filter/tv_extractinfo_en: Small refactoring: new routine munge()
	  taking a programme and returning a list of programmes.  It's not
	  much use yet because it still needs the whole list of programmes
	  available in case there are others in the same clump.

2002-09-22 09:37  epaepa

	* lib/XMLTV.pm.in: parsefiles_callback(): Now works when one of the
	  input files is empty - previously the 'next file' routine would
	  be called only when a programme was read, and so a file without
	  programmes would not trigger it.

2002-09-21 17:53  epaepa

	* lib/XMLTV.pm.in: Give a clearer indication of what is going on
	  with unspecified encodings.

2002-09-21 16:16  epaepa

	* t/test_filters.t: Generalized to allow more than one input file
	  for each test (although this is not yet used).  Run the commands
	  with 'perl -Iblib/lib ...' rather than the versions installed on
	  the system (I can't believe this wasn't fixed earlier).

2002-09-21 16:13  epaepa

	* lib/XMLTV.pm.in: Taken account of the fact that XML::Twig's
	  encoding() method may return undef and so the encoding is
	  unknown.

2002-09-21 16:07  epaepa

	* filter/tv_grep.in: Cosmetic change.

2002-09-21 16:04  epaepa

	* filter/tv_cat: Added a check that the encoding callback doesn't
	  get called twice.  It should be called just once, before all the
	  others - and this remains true even if parsing several files.

2002-09-21 14:07  rmeden

	* README.tv_check, choose/tv_check/README.tv_check,
	  choose/tv_check/tv_check, choose/tv_check/tv_check_doc.html:
	  Correct my cpan email address.. oops

2002-09-21 12:29  epaepa

	* filter/tv_sort: tv_sort was using Data::Dumper for a deep
	  equality test between two programmes.  It would stringify them
	  both and check the strings were equal.  As the comment said 'we
	  assume that Data::Dumper lists hash keys in a consistent order'.
	  Alas, this is not the case, at least not for all perls.  I've had
	  to write an equality routine to compare different kinds of data
	  structures (since there doesn't seem to be one already, amazingly
	  enough) and call that instead.

	  This fixes a couple of test failures with perl 5.005_03, which I
	  have decided to keep supporting for a while longer.

2002-09-21 11:48  epaepa

	* filter/: tv_extractinfo_en, tv_grep.in: Modified the manual pages
	  a bit to stop older pod2man complaining.

2002-09-21 09:11  epaepa

	* filter/: tv_cat, tv_extractinfo_en, tv_grep.in, tv_sort,
	  tv_to_latex: Changed the filter programs to use parsefiles(), so
	  they can take multiple filenames on the command line.  (Apart
	  from tv_cat, which was already changed to use
	  parsefiles_callback(); I've just updated its documentation.)

2002-09-20 21:58  epaepa

	* MANIFEST, t/data/empty.xml, t/data/tv_cat_empty_xml.expected,
	  t/data/tv_extractinfo_en_empty_xml.expected,
	  t/data/tv_grep_a_empty_xml.expected,
	  t/data/tv_grep_category_b_empty_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_empty_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_empty_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_empty_xml.expected,
	  t/data/tv_grep_channel_name_d_empty_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_empty_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_empty_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_empty_xml.expected,
	  t/data/tv_grep_i_last_chance_c_empty_xml.expected,
	  t/data/tv_grep_new_empty_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_empty_xml.expected,
	  t/data/tv_grep_premiere_empty_xml.expected,
	  t/data/tv_sort_by_channel_empty_xml.expected,
	  t/data/tv_sort_empty_xml.expected,
	  t/data/tv_to_latex_empty_xml.expected: I'm feeling the urge to
	  put some more tests in for tv_cat.  Like checking that
	  concatenating a file with itself and then tv_sorting is the
	  identity, or that concatenating X and the empty file gives X.  So
	  far I have just spotted that there was no test XML file for an
	  empty listing, and added one.  More tests to follow.

2002-09-20 21:54  epaepa

	* filter/tv_cat: Rewritten to use the stream-based interface: this
	  means that tv_cat has gradual output (rather than reading
	  everything first then outputting it all at once) and takes less
	  memory.

2002-09-20 20:18  epaepa

	* lib/XMLTV.pm.in: I had forgotten to honour the $KEEP_ENCODING
	  flag in the callback interface - fixed.

	  Extended the multiple-files stuff to the old-style lump-of-data
	  interface: now instead of parsefile() there is parsefiles().
	  It's implemented as a wrapper around the callback interface.

2002-09-20 19:13  epaepa

	* mkdist, lib/XMLTV.pm.in: Straight after releasing a new
	  stream-based reading interface with 0.5.1, I go and deprecate it.
	   Now there are callbacks for encoding and credits as well as
	  channels and programmes; it just works out simpler that way.	The
	  new routine parsefiles_callback() reads more than one file and
	  concatenates them in an exceedingly cunning way, by having
	  several XML::Twigs on the go at once, so that you can get all the
	  channels and then lazily read programmes from each file in turn.
	  I plan to make tv_cat use this so it won't require so much memory
	  (not that tv_cat gets used much anyway).  Also the other filter
	  programs, when I switch them to the stream-based interface, will
	  get for free the ability to read from multiple input files in the
	  Unix tradition.

	  Noticed another place where I'd forgotten to update the version
	  number, and added it to mkdist.

2002-09-20 11:22  epaepa

	* Makefile.PL: Trying to automate making a Windows binary release.
	  Apart from the executables themselves, because you need some
	  payware tool for that.  But everything else (documentation and
	  share/ files).  This is done with a new target 'windows_dist'
	  which does a normal install and then removes / rearranges files
	  to make them suitable to give to a Windows user.  It's a bit of a
	  kludge but so is everything with MakeMaker.

	  I was held up doing this by a couple of weird bugs in MakeMaker:
	  relative paths as the install target tend to screw up, and the
	  same happens if you do 'perl Makefile.PL PREFIX=...', build, and
	  then try to reconfigure with a different prefix.  (You need to
	  'make distclean' to remove stale files first.)  I've tried to
	  warn the user about both of these in the Makefile.PL.

2002-09-20 08:51  epaepa

	* Makefile.PL: Oops, forgot to update the version number.  This
	  meant the 0.5.1 release installed its documentation in
	  xmltv-0.5/, hopefully that is the only bug it caused.

	  At least mkdist checks for this now, so it can't happen again
	  (cough).

2002-09-20 08:49  epaepa

	* mkdist: Made the version number check do Makefile.PL as well as
	  README.  I've removed the auto-update-and-check-in code because I
	  don't like the idea of checking things in without a human
	  inspecting them first (even if it's unlikely mkdist would really
	  screw up).

2002-09-20 01:32  rmeden

	* README.tv_check, choose/tv_check/README.tv_check: minor
	  documentation changes based on alpha user feedback

2002-09-19 22:15  epaepa

	* README: Oops, got today's date wrong :-P.

2002-09-19 22:12  epaepa

	* grab/de/tv_grab_de: Updated URLs in documentation.

2002-09-19 21:55  epaepa

	* MANIFEST, lib/XMLTV.pm.in, t/data/amp.xml,
	  t/data/tv_cat_amp_xml.expected,
	  t/data/tv_extractinfo_en_amp_xml.expected,
	  t/data/tv_grep_a_amp_xml.expected,
	  t/data/tv_grep_category_b_amp_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_amp_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_amp_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_amp_xml.expected,
	  t/data/tv_grep_channel_name_d_amp_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_amp_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_amp_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_amp_xml.expected,
	  t/data/tv_grep_i_last_chance_c_amp_xml.expected,
	  t/data/tv_grep_new_amp_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_amp_xml.expected,
	  t/data/tv_grep_premiere_amp_xml.expected,
	  t/data/tv_sort_amp_xml.expected,
	  t/data/tv_sort_by_channel_amp_xml.expected,
	  t/data/tv_to_latex_amp_xml.expected: The change to use
	  KeepEncoding broke the handling of entities (XML::Twig takes
	  'keep the encoding' a bit too literally) and there was no test
	  case for entities.  Fixed both these problems.

2002-09-19 21:12  epaepa

	* t/test_filters.t: Avoid uninitialized value warning when the
	  expected output for a test did not exist (and was created).

2002-09-19 20:59  epaepa

	* README: Updated for version 0.5.1.  I think I'm going to release
	  it now, no point waiting any longer.

2002-09-19 19:34  epaepa

	* choose/tv_check/: README.tv_check, tv_check.bat,
	  tv_check_doc.html: Spelling fixes.

2002-09-16 23:10  epaepa

	* filter/tv_extractinfo_en: Removed 'use Tie::RefHash' since that
	  module is no longer used in this script.

2002-09-16 20:56  epaepa

	* lib/XMLTV.pm.in, t/data/tv_cat_test_livre_xml.expected,
	  t/data/tv_extractinfo_en_test_livre_xml.expected,
	  t/data/tv_grep_a_test_livre_xml.expected,
	  t/data/tv_grep_category_b_test_livre_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_livre_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_livre_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_livre_xml.expected,
	  t/data/tv_grep_channel_name_d_test_livre_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_livre_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_test_livre_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_livre_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_livre_xml.expected,
	  t/data/tv_grep_new_test_livre_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_test_livre_xml.expected,
	  t/data/tv_grep_premiere_test_livre_xml.expected,
	  t/data/tv_sort_by_channel_test_livre_xml.expected,
	  t/data/tv_sort_test_livre_xml.expected: Following the large
	  number of bug reports from Debian users whose character encodings
	  got screwed up, I have decided to turn on the newly added
	  $KEEP_ENCODING flag in XMLTV.pm.

	  This means that grabbing a data source in (say) Latin-1, and then
	  processing the data further, will keep the original encoding and
	  not change it to UTF-8.  Not ideal but at least it should work
	  the same on all systems.

2002-09-15 18:18  rmeden

	* choose/tv_check/tv_check.bat: added line to set TZ

2002-09-15 17:18  rmeden

	* choose/tv_check/tv_check: fix bug with AM/PM conversion (how this
	  was working is beyond me) remove error message about no show file
	  if --myreplay will create it.

2002-09-15 17:11  epaepa

	* lib/XMLTV.pm.in: XMLTV.pm.in: added new cat_noprogrammes()
	  function which combines data for encoding, credits, and channels
	  - but not programmes.  This is in line with the general policy of
	  allowing programmes to be processed individually rather than in
	  one big lump.

	  tv_grab_uk.in: changed to use cat_noprogrammes() instead of just
	  cat() in an effort to reduce the working set size, or at least to
	  give it better locality.  Previously tv_grab_uk would rearrange
	  the order of programmes and then output them by channel, which
	  thrashed the disk a lot.  This is not the last change to
	  tv_grab_uk to improve scalability, just an intermediate point to
	  commit a working version.

2002-09-13 23:22  epaepa

	* choose/tv_check/tv_check: Removed warning about episode-nums that
	  weren't understood.  This is temporary until the whole
	  episode-num system gets replaced in some future release.

2002-09-13 14:35  epaepa

	* t/data/: test_empty.xml, tv_cat_test_empty_xml.expected,
	  tv_extractinfo_en_test_empty_xml.expected,
	  tv_grep_a_test_empty_xml.expected,
	  tv_grep_category_g_or_title_h_test_empty_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_empty_xml.expected,
	  tv_grep_on_after_2002_02_05_test_empty_xml.expected,
	  tv_sort_by_channel_test_empty_xml.expected,
	  tv_sort_test_empty_xml.expected,
	  tv_to_latex_test_empty_xml.expected: test_empty.xml was invalid
	  because it didn't have a 'channel' attribute for its lone
	  programme.  Fixed.

2002-09-13 14:34  epaepa

	* lib/: TZ.pm, XMLTV.pm.in: Changed UT to UTC; added a warning in
	  the XMLTV.pm documentation that the returned character encoding
	  may vary (this prepares for a possible change making
	  $KEEP_ENCODING documented).

2002-09-13 14:29  epaepa

	* filter/: tv_extractinfo_en, tv_grep.in, tv_sort, tv_to_latex: I
	  had some misunderstanding about dates - I was writing 'UT' as the
	  timezone thinking this was the same as UTC give or take a few
	  seconds.  But some book I read says that UT is twelve hours out
	  (why?).  So I've changed it to UTC.

	  tv_to_latex: try to cope with both UTF-8 and Latin-1 input files,
	  and do something vaguely sensible with other weird encodings.

2002-09-13 14:24  epaepa

	* choose/tv_pick/tv_pick_cgi: Produce the output HTML in the same
	  character encoding as the programme data, without assuming it
	  will always be UTF-8.

2002-09-13 14:22  epaepa

	* choose/tv_check/tv_check: Don't assume the encoding is UTF-8, try
	  to use whatever encoding the programme data uses.

2002-09-12 05:15  rmeden

	* choose/tv_check/tv_check: bugfix to prevent warnings if certain
	  values are null

2002-09-12 04:14  rmeden

	* choose/tv_check/tv_check: fixed bug where --myreplaytv shows at
	  12pm stored as 2400 not 1200

2002-09-10 14:33  epaepa

	* lib/XMLTV.pm.in: Experimental code trying to work round a bug
	  reported by Joe Drew.  The $KEEP_ENCODING constant, if true,
	  turns on XML::Twig's KeepEncoding() option and tries to make the
	  encoding returned from read_data() and the like match the input
	  file.  This is not as good as forcing everything to UTF-8, but it
	  is better than the reported behaviour of returning Latin-1
	  strings saying they were UTF-8.  (I cannot reproduce that bug
	  despite upgrading XML::Twig and XML::Parser to the same versions;
	  I think it might be a perl 5.8 thing.)

	  This contradicts the documentation, which says the encoding will
	  always be returned as UTF-8.	At present I think that tv_cat is
	  the only filter program which will work with the new behaviour,
	  but that should be sufficient for testing.

2002-09-10 11:25  epaepa

	* filter/tv_extractinfo_en, grab/de/tv_grab_de: Fixed
	  Term::ProgressBar detection.

2002-09-10 11:24  epaepa

	* lib/XMLTV.pm.in: cat(): In an attempt to remove some magic
	  'UTF-8' strings from the source, it now just checks that the
	  encoding is the same for all the files to be concatenated (like
	  already happens for credits).

	  It looks like I'll have to remove the UTF-8 assumptions
	  altogether, this is at least a first step.

2002-09-10 11:18  epaepa

	* Makefile.PL: Since CGI::Carp is responsible for making all
	  warning messages look Martian, and it's included with the CGI
	  module anyway, we can just check for CGI and not bother loading
	  CGI::Carp.

	  Switched from if (defined $@) to just if ($@), which seems to be
	  correct.

2002-09-10 00:12  epaepa

	* Makefile.PL: Loading the CGI::Carp module does strange things to
	  warn(), so use print STDERR instead.

2002-09-09 12:25  epaepa

	* lib/XMLTV.pm.in: parse_callback(), parsefile_callback(): new
	  callback-based interface for incremental reading of XMLTV files.
	  This isn't used by anything yet, and isn't thoroughly tested
	  (though it seems to work); it probably won't be used in the 0.5.1
	  release but I want to start changing the filter programs to it
	  soon afterwards.

2002-09-08 23:45  epaepa

	* MANIFEST: Adding tv_check.bat to the MANIFEST - it is not
	  installed but it is part of the source distribution.

2002-09-08 09:54  epaepa

	* lib/Ask.pm: ask(): changed to be more robust, removing leading
	  and trailing whitespace instead of chopping off the last
	  character.  This might fix Robert E.'s installation problems (I
	  think he is using Windows).

2002-09-07 20:34  epaepa

	* grab/de/tv_grab_de: Added a comment mentioning the backup server
	  for de/at listings.

2002-09-07 20:28  epaepa

	* Makefile.PL: Adding more quotation marks around hash keys, which
	  seem to be required by newer perls.  I thought => was meant to
	  count as quoting its left argument.  Oh well.

2002-09-07 03:47  rmeden

	* choose/tv_check/tv_check.bat: Sample batch file for folks using
	  the windows exe version

2002-09-07 02:59  rmeden

	* choose/tv_check/tv_check_doc.html: Updated docs for
	  --myreplaytv.com option.

2002-09-07 02:57  rmeden

	* README.tv_check, choose/tv_check/README.tv_check: Removed
	  references to excessive CPU and memory usage. Now that we use
	  XML::Twig, it doesn't appear to be a problem

2002-09-06 15:13  rmeden

	* choose/tv_check/tv_check: Misc bug fixes

2002-09-06 04:21  rmeden

	* choose/tv_check/README.tv_check, README.tv_check: README updates.
	  Also sync'd the 2 README.tv_check files.

2002-09-06 04:19  rmeden

	* choose/tv_check/tv_check: misc bug fixes mostly related to new
	  XMLTV.pm

2002-09-05 21:49  epaepa

	* Makefile.PL: Changed the setup questions so that they don't warn
	  'you will need Foo' when Foo is already installed.  If the
	  prerequisites are installed, then the default answer to the
	  installation question is 'yes'.

2002-09-05 19:04  epaepa

	* lib/XMLTV.pm.in: After each <channel> or <programme> element has
	  been read, call flush() to throw away those parts of the XML tree
	  which have been processed.

	  This gives a big reduction in memory usage.  With 0.5 a process
	  reading in a week's UK listings took 41Mbyte.  Switching to
	  XML::Twig cut that to 25Mbyte and now adding flush() takes it to
	  13Mbyte.  But I would still like to do better of course :-).

2002-09-05 03:39  rmeden

	* choose/tv_check/tv_check: added --myreplaytv option to grab info
	  from myreplaytv.com for ReplayTV owners.

2002-09-04 22:00  epaepa

	* Makefile.PL, README: tv_grab_uk.in: use XML::Twig instead of
	  XML::DOM for parsing Ananova's weird 'regions' XML.  This removes
	  the last dependency on XML::DOM.

2002-09-04 20:43  epaepa

	* Makefile.PL, README, filter/tv_to_latex, lib/XMLTV.pm.in:
	  Reimplemented the parsing code in XMLTV.pm using XML::Twig
	  instead of XML::DOM.	Thanks to Leif Van Horn for the idea,
	  although in the end I didn't use his code.  Really all that
	  needed changing were the wrapper routines like get_attrs() around
	  the DOM tree methods.  The new implementations, wrapping
	  XML::Twig, are quite a bit shorter :-).

	  The interface to the XMLTV module is just the same as before,
	  reading all the data in a big lump.  A lazy-reading interface is
	  needed to get the best out of XML::Twig, and I will implement
	  that later.  But already there is an 18% speed improvement (on
	  the test suite) from the old version.

	  I can't quite eliminate XML::DOM because it is still used by
	  tv_grab_uk to parse Ananova's weird 'regions' page.  But that
	  will be next.

	  Also fixed the installation of section 1 manual pages.

2002-09-04 16:54  epaepa

	* lib/XMLTV.pm.in: Changed one more DOM call to use the wrapper
	  routines.  This time it was getTagName(), which turns out to be
	  the same as getNodeName() and hence get_name().

2002-09-04 15:36  epaepa

	* lib/XMLTV.pm.in: Abstracted away another DOM method -
	  $n->getNodeName() becames get_name($n).

2002-09-04 15:16  epaepa

	* lib/XMLTV.pm.in: The file parsing code includes severel wrappers
	  around XML::DOM.  For example dom_attrs() returns a hashref of a
	  node's attributes, after skipping over attributes beginning with
	  'x-'.  I've changed the names of these from dom_whatever() to
	  get_whatever(), so that they can become wrappers around some
	  other library such as XML::Twig.

2002-09-03 12:27  epaepa

	* Makefile.PL, README, choose/tv_pick/tv_pick_cgi,
	  filter/tv_to_latex, grab/de/tv_grab_de: Done some more to cut
	  down on dependencies.  Now tv_pick_cgi and tv_grab_na are
	  optional in Makefile.PL, because they both have unusual
	  dependencies that aren't shared by the other programs.  I've also
	  made Unicode::String and Compress::Zlib kludgealikes, so these
	  two modules have been downgraded to 'recommended'.

	  This all needs testing.

2002-09-01 18:00  epaepa

	* lib/Ask.pm: Answers should be read from standard input and never
	  from command-line arguments...

2002-09-01 17:55  epaepa

	* MANIFEST, Makefile.PL, choose/tv_check/README.tv_check,
	  grab/Ask.pm, lib/Ask.pm: Because tv_check has dependencies on Tk
	  and Tk::TableMatrix, which the other parts of xmltv don't, I have
	  made it optional.  The Makefile.PL now asks whether you want to
	  install tv_check.  I may do the same to other parts of XMLTV if
	  they require non-standard modules.

	  This meant moving Ask.pm out of the grab/ directory (which was a
	  slightly silly place for it anyway) and into lib/, since it is
	  now used by the whole project and not just by the grabbers.  The
	  Makefile.PL loads this library 'by hand' and uses it to prompt
	  about tv_check.

	  I've also changed tv_check's README to standardize on the name
	  tv_check not TVCHECK or tvcheck... I hope it's author doesn't
	  mind too much :-(.

2002-09-01 11:53  epaepa

	* ChangeLog.old, README, xmltv.dtd, analyse_tvprefs/README,
	  analyse_tvprefs/analyse_tvprefs,
	  choose/tv_check/tv_check_doc.html, choose/tv_pick/tv_pick_cgi,
	  filter/tv_cat, filter/tv_extractinfo_en, filter/tv_grep.in,
	  filter/tv_sort, filter/tv_to_latex, grab/de/tv_grab_de,
	  lib/XMLTV.pm.in, t/parallel_test, t/test_filters.t: Updated
	  references to the XMLTV website, and to my email address.  Purged
	  all traces of my old userid.

2002-08-30 22:35  epaepa

	* Makefile.PL: Fixed (I hope) that problem with certain MakeMaker
	  versions.  It happened because to get uninstall, I was physically
	  manipulating the generated Makefile, but some versions of
	  MakeMaker produced text slightly different to what was expected.
	  Now I hope the code is more robust.

2002-08-30 22:23  epaepa

	* Makefile.PL, README: Added Tk and Tk::TableMatrix to the list of
	  dependencies, they were missing before.

2002-08-29 20:56  epaepa

	* Makefile.PL, README, choose/tv_check/tv_check,
	  choose/tv_pick/tv_pick_cgi, filter/tv_cat,
	  filter/tv_extractinfo_en, filter/tv_grep.in, filter/tv_sort,
	  filter/tv_to_latex, grab/Ask.pm, grab/Memoize.pm,
	  grab/de/tv_grab_de, lib/Clumps.pm, lib/XMLTV.pm.in,
	  t/add_time_info, t/parallel_test: Well, up till now I've resisted
	  calls to trim the number of modules required by xmltv.  I said
	  the answer was not to reduce library use but rather to make it
	  easy for users to install those libraries, by providing them as
	  packages.  But after moving to a new system myself I realize that
	  this attitude was too optimistic.  Whatever the merits in
	  principle of packaging the libraries separately, in practice it
	  is a lot of effort to keep track of those dependencies.

	  As a starting point I have reduced the dependencies to packages
	  which come as standard with Linux-Mandrake 8.2.  This meant
	  removing dependencies on obscure modules (many of which I wrote
	  myself).  Some, like Tie::IxHash and Sort::Versions, turned out
	  not be used anywhere, although they were once.  Others like
	  Log::TraceMessages and Memoize can be replaced with stub routines
	  when they are not found, and there are some like
	  Lingua::Preferred where doing this gives a small loss of
	  functionality, but not anything that most users will notice.

	  On the other hand, I noticed that tv_pick.cgi requires the CGI
	  module, which had slipped through the dependency net until now
	  :-(.	At least it is a common module which will probably be
	  packaged (it is in Mandrake).

	  I've changed the Makefile.PL and README accordingly; building
	  will warn about 'recommended' modules which are missing but they
	  don't stop the Makefile being written.

	  I've run many of the altered programs on my own machine but more
	  testing is needed.

	  Also improved the 'please run --configure' message in tv_grab_uk.

2002-06-24 23:08  rmeden

	* choose/tv_check/tv_check: Fix bug with ReplayTV conflict checker.
	  Extra episodes were not correctly being added to the conflict
	  search.

2002-05-29 13:21  epaepa

	* t/parallel_test: Removed fixups that were needed for transition
	  from old to new grabber.  Check that temporary directory exists.

2002-05-27 16:49  epaepa

	* README: Removed duplicate dependency.

2002-05-27 16:48  epaepa

	* README: XML::DOM depends on XML::Parser.

2002-05-23 11:22  epaepa

	* mkdist: Modified mkdist to check out its working copy and build
	  tarballs in a temporary directory, _not_ ./xmltv/.  This is
	  because running mkdist in the working copy could otherwise create
	  great confusion, especially with the build process which
	  recursively looks for Makefile.PLs to execute...

2002-05-23 11:08  epaepa

	* Makefile.PL: Last-minute fix: the toplevel README is the one to
	  be installed, not the now-removed doc/README.

2002-05-23 11:02  epaepa

	* mkdist: Added my personal t/data/do_not_dist/ directory to
	  @toremove.  Hope it works.

2002-05-23 10:59  epaepa

	* MANIFEST: Updated MANIFEST with recently added and removed
	  documentation files.	(BTW, these docs need not be installed -
	  they are there as a guide to the source tree.)

2002-05-23 10:54  epaepa

	* choose/tv_check/README.tv_check: Wrapped lines to 70 columns -
	  hope you don't mind Robert.

2002-05-23 10:50  epaepa

	* analyse_tvprefs/README: Token documentation on the
	  analyse_tvprefs tool.

2002-05-23 10:47  epaepa

	* doc/code/grabber_interface: The grabber_interface file is
	  currently just a placeholder, but at least it now contains a
	  small amount of useful information.

2002-05-23 10:43  epaepa

	* doc/QuickStart: Updated to reflect that binaries will be
	  installed in the PATH and no longer just run from the current
	  directory.

2002-05-23 10:39  epaepa

	* doc/README: Removed the README from version 0.3.1 which was lying
	  around in this directory the whole time :-P.

2002-05-23 10:33  epaepa

	* lib/XMLTV.pm.in: Strip whitespace on output as well as input;
	  made it explicit that this happens.

2002-05-23 10:32  epaepa

	* filter/tv_grep.in: Added a note about the clumpidx fixing which
	  stops tv_grep being fully idempotent.

2002-05-23 10:30  epaepa

	* t/test_filters.t: Keep track of number of tests correctly
	  (including if some idempotence tests are skipped.)

	  It turns out that tv_grep is not 100% idempotent due to clumpidx
	  fixing.

2002-05-23 10:28  epaepa

	* README: Added a warning about that ridiculously slow test suite
	  :-).

2002-05-23 10:27  epaepa

	* README: Updated README for the real 0.5 release.

2002-05-23 09:13  epaepa

	* grab/de/tv_grab_de: Fix an error in the served XML pages (empty
	  <length> element).

2002-05-21 14:32  epaepa

	* t/parallel_test: The test script I was using to compare the new
	  listings feed to the old.  It cannot be used now, but I'm
	  committing it as a record of the sort of differences between the
	  two feeds.  Many of the differences are thought to be caused by
	  the new feed being 24 hours behind; that is, it gives a week's
	  listings as before, but things like sporting events or
	  last-minute schedule alterations will be less current than in the
	  old feed.

2002-05-21 14:13  epaepa

	* t/parallel_test: Adding the new 'radio4' test case.  Not that it
	  will be used for a while, because with the old feed gone it's not
	  possible to run parallel tests comparing new and old output.

2002-05-19 17:29  epaepa

	* t/parallel_test: When Ananova serves a freak page which doesn't
	  have the multiple sets of listings expected, retry up to 3 times.
	  I haven't been able to test this because (typically!) as soon as
	  I put the check in, Ananova started to behave.  But at least I
	  know it doesn't make things any worse.

2002-05-18 20:17  epaepa

	* filter/tv_extractinfo_en: Fix to stop the program choking when
	  the last word of a programme description is a time.  It's still
	  not as robust as I would like, but at least this one thing is
	  fixed.

2002-05-15 15:22  epaepa

	* t/add_time_info: More helpful error message about 'funny size
	  clump' (and take a clumpidx of 0/1, ie a clump of one programme,
	  as the same as no clumpidx at all).

2002-05-15 15:21  epaepa

	* MANIFEST: Added grab/uk/test_configs/radio4 to MANIFEST.

2002-05-15 11:09  epaepa

	* t/add_time_info: Fixed an off-by-one bug - I don't know how it
	  remained undetected for so long.

2002-05-13 17:29  epaepa

	* t/parallel_test: tv_grab_uk: added code to split Radio 4 into LW
	  and FM variants, and a few other stations into MW and FM
	  variants.  After some experiments, it turns out the only sensible
	  way to do this is to specify it in the channel_ids file, since it
	  cannot be detected automatically without grabbing a whole week's
	  listings in advance.

	  So now we have fm.radio-4.bbc.co.uk and lw.radio-4.bbc.co.uk.
	  Unfortunately, individual channel selection still works on
	  Ananova id, and these two channels have the same Ananova id, so
	  it's not possible to download one without the other.	But this is
	  good enough.

	  Also committing the parallel_test script used to verify that this
	  change didn't break anything (I hope).

2002-05-13 12:48  epaepa

	* t/test_filters.t: Added an idempotence check for most filter
	  programs.  This checks that running the same filter twice on some
	  input is equivalent to running it once.  Unfortunately, this did
	  not catch the bug I was hoping to find - but at least the check
	  is in there now.

	  The number of tests is now 350 - this is getting really out of
	  hand.  I need to find some easy way to run just a few tests.
	  Probably by defining separate 'basic' and 'full' sets of commands
	  and example inputs.

2002-05-13 11:48  epaepa

	* lib/Clumps.pm: Downgraded a fatal 'programmes do not sort' error
	  to a warning.  This makes things like tv_grep more tolerant of
	  slightly deviant (syntactically correct but nonsensical in some
	  way) input files.

2002-05-12 14:34  epaepa

	* filter/tv_sort: Fixed bug identified earlier - not eliminating
	  duplicate programmes with no stop time.  Now overlap() returns
	  true for two programmes starting at the same time on the same
	  channel with same clumpidx, regardless of whether they have stop
	  times.  This will break if zero-length programmes come up, but
	  I'm assuming that can't happen.

2002-05-10 15:03  epaepa

	* t/data/: dups.xml, tv_cat_dups_xml.expected,
	  tv_extractinfo_en_dups_xml.expected, tv_grep_a_dups_xml.expected,
	  tv_grep_on_after_2002_02_05_dups_xml.expected,
	  tv_sort_by_channel_dups_xml.expected, tv_sort_dups_xml.expected,
	  tv_to_latex_dups_xml.expected: Noticed a bug in tv_sort where not
	  all duplicate programmes are weeded out.  These updated test
	  cases give the expected behaviour.

2002-05-06 16:53  epaepa

	* t/add_time_info: Don't collapse and die when a channel which
	  occurs in the less-detailed listings does not occur at all in the
	  more-detailed ones.  Instead just warn once and then leave alone
	  all programmes on that channel.

2002-05-06 10:52  epaepa

	* t/add_time_info: Added some more assertions and more detailed
	  error messages.

2002-05-06 04:59  rmeden

	* choose/tv_check/tv_check: Correction to special Replay-TV fuzzy
	  logic.  Don't look for conflicts for a "close" episode when
	  another episode exists at the proper time.

2002-05-02 15:02  epaepa

	* MANIFEST: Updated the MANIFEST for some files I added a while ago
	  (should have done it before).

2002-05-02 14:58  epaepa

	* t/test_filters.t: 'Transparently' gunzip files before running the
	  test, and gzip them back again.  This is a bit pointless at
	  present because gzipping saves only about 0.2Mbyte of space - but
	  hey, I was running out of quota.  If you don't have the files
	  gzipped then things are as before.  The test files in CVS will
	  remain uncompressed.	So you can just ignore this change :-).

2002-05-02 12:12  epaepa

	* t/add_time_info: add_time_info is a small filter to help with
	  diffing one XMLTV file against another.  Sometimes two files
	  describe the same schedule, but one with more detail than the
	  other.  For example A may say '10:00 0/2 News; 10:00 1/2 Weather'
	  while B says '10:00 News, 10:30 Weather'.  This filter reads the
	  more detailed schedule info from B and uses it to output an
	  improved version of A.  You can then diff this output against B
	  to see if there are any differences _other than_ an increase in
	  schedule detail.  (If A's schedule is not a less detailed version
	  of B's, then add_time_info dies with an error.)

	  Not currently used for anything, but will be used for testing the
	  rewritten Ananova grabber against the old one.

2002-05-01 17:47  epaepa

	* t/parallel_test: page_date_diff(): the new name for
	  check_page_date().  It now returns an integer, the number of days
	  by which the found date differs from the expected date - or undef
	  if something is very wrong.  The kludgy manipulation of the
	  expected date is as before.  This new version doesn't behave any
	  differently; next I will add some code to cope with the latest
	  Ananova weirdness.

2002-04-29 04:37  rmeden

	* choose/tv_check/tv_check: Changed "neartime" threshnold to from 3
	  hours to 2.  This prevents a 2300 show syndicated show from
	  matching a 2100.  I doubt anyone uses neartime anyway. :)

2002-04-26 16:02  epaepa

	* filter/tv_extractinfo_en: Expanded the range of programmes which
	  have 'presenter' not 'actor'.

2002-04-25 20:03  epaepa

	* filter/tv_grep.PL: Documentation fix for tv_grep and new
	  'with-lang-or-empty' handler type.  Forgot to commit it earlier.

2002-04-23 15:05  epaepa

	* filter/tv_extractinfo_en: multipart_split_desc(): an exclamation
	  mark does not mark the boundary between title and subtitle as
	  previously thought, but shows the end of the title.  So it is
	  like question mark and full stop, and the behaviour of all three
	  has been made the same.  Except that while full stops are
	  stripped from the end of titles, ? and ! are not.

	  special_teletext_subtitles(): new handler to remove '(T)' from
	  the end of programme descriptions, it signifies teletext
	  subtitling.

	  Avoided outputting empty descriptions, titles etc: after a
	  regular expression has removed some text from one of these, it is
	  removed if blank.  (New subroutine scrub_empty().)

2002-04-23 14:56  epaepa

	* filter/tv_grep.in, lib/XMLTV.pm.in, t/test_filters.t,
	  t/data/test.xml, t/data/tv_cat_test_xml.expected,
	  t/data/tv_extractinfo_en_test_xml.expected,
	  t/data/tv_grep_a_test_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_xml.expected,
	  t/data/tv_grep_premiere_clump_xml.expected,
	  t/data/tv_grep_premiere_dups_xml.expected,
	  t/data/tv_grep_premiere_length_xml.expected,
	  t/data/tv_grep_premiere_overlap_xml.expected,
	  t/data/tv_grep_premiere_simple_xml.expected,
	  t/data/tv_grep_premiere_sort_xml.expected,
	  t/data/tv_grep_premiere_test_empty_xml.expected,
	  t/data/tv_grep_premiere_test_livre_xml.expected,
	  t/data/tv_grep_premiere_test_xml.expected,
	  t/data/tv_grep_premiere_x_whatever_xml.expected,
	  t/data/tv_sort_by_channel_test_xml.expected,
	  t/data/tv_sort_test_xml.expected: Started to distinguish between
	  elements like <title>, which always have to have some
	  human-readable content, and those like <premiere>, which may have
	  an 'explanation' inside but do not require it.  The former have
	  handler 'with-lang', the latter now 'with-lang-or-empty' which
	  can return [] for an empty element.  Trying to write out
	  inappropriate empty content (like <title></title>) will now give
	  a warning.

	  Updated tv_grep to cope with this: it is still necessary to give
	  a regular expression as the argument to predicates like
	  --premiere, but a regexp of '' will match all <premiere>
	  elements, even empty ones.  So the old behaviour is preserved.
	  Added some new test cases for this (not complete coverage though)
	  and an example of <last-chance> to test.xml.

2002-04-20 18:22  epaepa

	* filter/tv_extractinfo_en: multipart_split_desc(): an exclamation
	  mark _always_ indicates the end of the title and start of the
	  description.	Titles ending in ! are not followed by a colon.

2002-04-20 17:27  epaepa

	* filter/tv_extractinfo_en, lib/XMLTV.pm.in: Code tidy to conform
	  with perlstyle(1)'s suggestion: 'uncuddled elses'.

2002-04-20 17:22  epaepa

	* filter/tv_grep.in: Use the XMLTV::Clumps module to make sure that
	  when only some of the programmes sharing a clump are included in
	  the output, the clumpidx information is updated accordingly.

2002-04-20 17:22  epaepa

	* lib/Clumps.pm: Added support for deleting a programme sharing a
	  clump - fix_clumps() should now have complete functionality.

2002-04-20 16:57  epaepa

	* lib/Clumps.pm: Whoops - forgot to load Tie::RefHash.

2002-04-20 16:49  epaepa

	* t/data/: clump.xml, tv_cat_clump_xml.expected,
	  tv_extractinfo_en_clump_xml.expected,
	  tv_grep_a_clump_xml.expected,
	  tv_grep_category_b_clump_xml.expected,
	  tv_grep_category_e_and_title_f_clump_xml.expected,
	  tv_grep_category_g_or_title_h_clump_xml.expected,
	  tv_grep_channel_id_channel4_com_clump_xml.expected,
	  tv_grep_channel_name_d_clump_xml.expected,
	  tv_grep_eval_scalar_keys_5_clump_xml.expected,
	  tv_grep_i_category_i_title_h_clump_xml.expected,
	  tv_grep_i_category_i_title_j_clump_xml.expected,
	  tv_grep_i_last_chance_c_clump_xml.expected,
	  tv_grep_new_clump_xml.expected,
	  tv_grep_on_after_2002_02_05_clump_xml.expected,
	  tv_sort_by_channel_clump_xml.expected,
	  tv_sort_clump_xml.expected, tv_to_latex_clump_xml.expected:
	  tv_grep ought to update clumpidxes when removing programmes from
	  a clump.  These new test cases expect that behaviour.

2002-04-20 16:25  epaepa

	* MANIFEST, Makefile.PL, filter/tv_extractinfo_en, lib/Clumps.pm:
	  Refactored the fix_clumps() routine and its support routines into
	  a new module XMLTV::Clumps.  This doesn't diminish the ugliness
	  but it does at least get it out of the way.  I want to call
	  fix_clumps() from other tools than tv_extractinfo_en - it's what
	  you have to do whenever you delete / split / update a programme
	  which shares a timeslot with others.

	  All this underlines the need to get rid of clumpidx and replace
	  it with something cleaner, but that will wait until after 0.5.

2002-04-20 16:22  epaepa

	* lib/TZ.pm: Just noticed no '1;' true-returning statement at the
	  end of this module.  It seems to have managed okay withoutit so
	  far, but it's good style to add one.

2002-04-20 15:26  epaepa

	* filter/tv_extractinfo_en: fix_clumps(): Work when a programme has
	  been 'split' into one different programme.  Previously this case
	  was not handled, but I see no reason why the existing code for 2
	  or more shouldn't work with 1.  Also try to preserve the original
	  timezone when setting date strings.

2002-04-20 14:46  epaepa

	* filter/tv_extractinfo_en: Added an undocumented option
	  --no-create-sub-titles which affects the behaviour of
	  special_multipart(), making it create titles with colons in
	  rather than splitting into title and sub-title.

	  Recognize 'sports' as well as 'sport' as a category keyword.

2002-04-20 13:53  epaepa

	* filter/tv_extractinfo_en: special_multipart(): normally, the
	  heuristic is that a programme must have at least three valid
	  'times' included in its description to be considered a multipart.
	  But if the first word of the description is a time, waive that
	  requirement.

2002-04-20 13:37  epaepa

	* filter/tv_extractinfo_en: special_multipart: match categories
	  containing 'childrens' as well as 'children'.

2002-04-20 13:25  epaepa

	* filter/tv_extractinfo_en: special_multipart(): modified the
	  category checking to look for words as substrings rather than
	  simple string equality.  This is needed for the new Ananova
	  listings which have categories like 'Children's Programmes'
	  instead of 'children', for example.

2002-04-20 12:16  epaepa

	* lib/XMLTV.pm.in, t/data/test_empty.xml,
	  t/data/tv_cat_test_empty_xml.expected,
	  t/data/tv_extractinfo_en_test_empty_xml.expected,
	  t/data/tv_grep_a_test_empty_xml.expected,
	  t/data/tv_grep_category_b_test_empty_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_empty_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_empty_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_empty_xml.expected,
	  t/data/tv_grep_channel_name_d_test_empty_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_empty_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_test_empty_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_empty_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_empty_xml.expected,
	  t/data/tv_grep_new_test_empty_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_test_empty_xml.expected,
	  t/data/tv_sort_by_channel_test_empty_xml.expected,
	  t/data/tv_sort_test_empty_xml.expected,
	  t/data/tv_to_latex_test_empty_xml.expected: Some sub-elements of
	  <programme> are just convenient syntactic containers for other
	  stuff, they don't mean anything in themselves.  These are
	  <credits>, <video> and <audio>.  If these keys exist in the
	  programme hash but don't contain anything, then do not write
	  them.

	  This makes things look nice if (for example) you delete all the
	  actors from the 'credits' subhash.  When writing out, there will
	  not be a useless empty <credits /> element.

2002-04-20 11:30  epaepa

	* filter/tv_extractinfo_en: special_multipart(): the 'base day'
	  from which the times of subprogrammes are calculated should take
	  into account timezone.

2002-04-20 10:59  epaepa

	* filter/tv_extractinfo_en: Remove trailing full stop when
	  'Introduced by...' is a sentence.

2002-04-20 10:48  epaepa

	* filter/tv_extractinfo_en: Made the multipart programme splitting
	  code take account of timezones.

2002-04-19 20:43  epaepa

	* filter/tv_extractinfo_en,
	  t/data/tv_extractinfo_en_sort_xml.expected: Added a handler for
	  the words like 'Thriller' or 'Drama' that appear at the end of
	  programme descriptions.  These are converted into categories.
	  Also made the 'news' detector add to the list of existing
	  categories, rather than doing nothing if categories already
	  exist.

2002-04-19 17:39  epaepa

	* filter/tv_extractinfo_en: Added a handler for the 'TVM' that
	  appears at the front of descriptions in old-style Ananova
	  listings, I think it stands for 'TV movie'.

2002-04-19 15:25  epaepa

	* filter/tv_extractinfo_en: Added a handler to parse out a year at
	  the start of the description and put it in <date>.

2002-04-18 18:37  epaepa

	* filter/tv_extractinfo_en: Bug fix for newly added
	  special_new_series().

2002-04-18 18:00  epaepa

	* filter/tv_extractinfo_en: Added a handler for 'New series' text
	  in programme descriptions.

2002-04-18 17:06  epaepa

	* xmltv.dtd: Clarified the meaning of the 'new' element.  The old
	  UK grabber was getting it wrong.

2002-04-18 10:31  epaepa

	* lib/XMLTV.pm.in: Fix for aspect-ratio writing bug.

2002-04-18 10:29  epaepa

	* t/data/: tv_cat_test_xml.expected,
	  tv_extractinfo_en_test_xml.expected, tv_grep_a_test_xml.expected,
	  tv_grep_category_g_or_title_h_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_xml.expected,
	  tv_sort_by_channel_test_xml.expected, tv_sort_test_xml.expected:
	  Noticed a longstanding bug in file writing.  Aspect ratio is not
	  a Boolean!

2002-03-31 23:42  epaepa

	* lib/XMLTV.pm.in: Added some trace and debugging code; made the
	  'exactly one' multiplicity specifier for parsing match what the
	  documentation says; in parse(), sanity-check for something that
	  looks like XMLTV before firing up the DOM.

2002-03-31 23:40  epaepa

	* choose/tv_pick/tv_pick_cgi: The 'date' element of a programme
	  hash is a single value if present, it's not multivalued.  Hard to
	  believe that this bug went unnoticed until now - obviously the
	  listings I use just don't have dates.

2002-03-30 15:56  epaepa

	* lib/: XMLTV.pm.PL, XMLTV.pm.in: Fixes to the POD documentation so
	  it formats correctly.  There are still some problems with the
	  formatting of the lists of handlers, which mystify me at the
	  moment.  Never mind, I don't expect many people to actually read
	  this documentation as it stands.

2002-03-30 15:38  epaepa

	* lib/XMLTV.pm.in: Made %Handlers into a global variable so that
	  it's possible (when absolutely necessary) for users to mess
	  around with the tables of parsing and writing routines, so they
	  can add their own extensions to the file format.

2002-03-30 15:29  epaepa

	* lib/XMLTV.pm.in: Make sure Emacs knows this is a Perl file.

2002-03-30 13:38  epaepa

	* grab/de/tv_grab_de: The listings have moved to a new site and
	  most of the problems have been fixed.  This grabber is looking
	  very slim :-).

2002-03-25 15:55  epaepa

	* MANIFEST, lib/XMLTV.pm.in, t/data/tv_cat_x_whatever_xml.expected,
	  t/data/tv_extractinfo_en_x_whatever_xml.expected,
	  t/data/tv_grep_a_x_whatever_xml.expected,
	  t/data/tv_grep_category_b_x_whatever_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_x_whatever_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_x_whatever_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_x_whatever_xml.expected,
	  t/data/tv_grep_channel_name_d_x_whatever_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_x_whatever_xml.expected,
	  t/data/tv_grep_i_category_i_title_h_x_whatever_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_x_whatever_xml.expected,
	  t/data/tv_grep_i_last_chance_c_x_whatever_xml.expected,
	  t/data/tv_grep_new_x_whatever_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_x_whatever_xml.expected,
	  t/data/tv_sort_by_channel_x_whatever_xml.expected,
	  t/data/tv_sort_x_whatever_xml.expected,
	  t/data/tv_to_latex_x_whatever_xml.expected,
	  t/data/x-whatever.xml: Documented the feature that hash keys
	  beginning with an underscore are skipped on output.  And now keys
	  beginning 'debug_' are written as comments, this replaces the old
	  special handling for 'source'.  Hmm, I ought to test this
	  feature.

	  Added an analogous feature for input: any attributes or elements
	  whose names begin 'x-' are ignored.  This means that 'x-' names
	  are for extensions to the file format not yet supported by the
	  DTD or by XMLTV.pm.

2002-03-22 05:20  rmeden

	* choose/tv_check/tv_check: Configure: always start sorted by title
	  Scan: minor bug fixes

2002-03-22 04:26  rmeden

	* Makefile.PL: Fix to allow uninstall to work on windows.

2002-03-19 06:41  rmeden

	* t/test_filters.t: fix bugs preventing tests from passing on
	  windows.

	  If windows swap / for \ to find (and execute) batch file version
	  of script

	  close OUT and EXPECTED ( windows can't delete an open file )

2002-03-16 19:41  epaepa

	* MANIFEST, Makefile.PL, filter/tv_grep.PL, filter/tv_grep.in,
	  lib/XMLTV.pm, lib/XMLTV.pm.PL, lib/XMLTV.pm.in: Added pod
	  documentation to XMLTV.pm.  As with tv_grep, part of it is
	  automatically generated from the list of 'handlers' for
	  subelements of <programme> and <channel>.  This necessitated
	  moving XMLTV.pm to XMLTV.pm.in and writing a short script
	  XMLTV.pm.PL to generate the end file.

	  Also I needed to change the way the list of handlers is stored -
	  now they're looked up by a string rather than being subroutine
	  references.  This is so we can also use the strings in the pod
	  documentation :-).  The function list_programme_keys() has been
	  changed to just return the list of handlers (more or less), which
	  has meant changing tv_grep.  Found and fixed a bug in tv_grep in
	  the meantime, and made a small change to XMLTV.pm's handling of
	  subtitles.  Apart from those fixes and any new bugs introduced,
	  the behaviour should be the same - just we now have some rather
	  pedantic half-auto-generated documentation as well.

2002-03-16 19:24  epaepa

	* t/data/: test.xml, tv_cat_test_xml.expected,
	  tv_extractinfo_en_test_xml.expected, tv_grep_a_test_xml.expected,
	  tv_grep_category_g_or_title_h_test_xml.expected,
	  tv_grep_eval_scalar_keys_5_test_xml.expected,
	  tv_sort_by_channel_test_xml.expected, tv_sort_test_xml.expected:
	  Noticed that test.xml didn't have anything for subtitles, added
	  it and modified the expected outputs accordingly.  (This doesn't
	  quite match the current version of XMLTV.pm, but it matches the
	  one I'm about to commit.)

2002-03-16 18:57  epaepa

	* t/: test_filters.t,
	  data/tv_grep_i_category_i_title_h_dups_xml.expected,
	  data/tv_grep_i_category_i_title_h_length_xml.expected,
	  data/tv_grep_i_category_i_title_h_overlap_xml.expected,
	  data/tv_grep_i_category_i_title_h_simple_xml.expected,
	  data/tv_grep_i_category_i_title_h_sort_xml.expected,
	  data/tv_grep_i_category_i_title_h_test_livre_xml.expected,
	  data/tv_grep_i_category_i_title_h_test_xml.expected,
	  data/tv_grep_i_category_i_title_j_simple_xml.expected: Found a
	  bug in tv_grep (while making the changes I'm about to commit
	  next), it wasn't caught by the test suite because the test suite
	  itself was wrong (I didn't check the expected results thoroughly
	  enough).  Fixed that, and added another test.

2002-03-16 18:39  epaepa

	* t/test_filters.t: When a test fails to create its output file, it
	  'fails' but the test suite continues.

2002-03-15 18:51  epaepa

	* MANIFEST: Forgot to add the new test files for tv_sort
	  --by-channel to the MANIFEST.

2002-03-15 18:50  epaepa

	* t/parallel_test: The fixup commands can now be applied to both
	  the old output and the new output independently, and can be a
	  list of commands rather than just one or zero.  Added new flags
	  -a (reuse output from old version) and -b (reuse output from new
	  version), together these replace the -q (quick) flag.

2002-03-15 18:47  epaepa

	* grab/Memoize.pm: Behave correctly when --cache is last argument.

2002-03-15 18:47  epaepa

	* xmltv.dtd: Formatting change for the sake of dtd2latex.

2002-03-15 16:12  epaepa

	* filter/tv_sort, t/test_filters.t,
	  t/data/tv_sort_by_channel_dups_xml.expected,
	  t/data/tv_sort_by_channel_length_xml.expected,
	  t/data/tv_sort_by_channel_overlap_xml.expected,
	  t/data/tv_sort_by_channel_simple_xml.expected,
	  t/data/tv_sort_by_channel_sort_xml.expected,
	  t/data/tv_sort_by_channel_test_livre_xml.expected,
	  t/data/tv_sort_by_channel_test_xml.expected: Added a new option
	  --by-channel to tv_sort to sort by channels first, then times.

2002-03-10 11:28  epaepa

	* t/test_filters.t: The 'make test' code no longer uses diff(1), it
	  compares the contents of two files purely in Perl.

2002-03-10 11:16  epaepa

	* Makefile.PL: Don't run 'fixin' on documentation and share files -
	  it's intended for Perl scripts only, to run things like pl2bat!

2002-03-09 18:51  epaepa

	* Makefile.PL: Kinder, gentler error messages for missing
	  dependencies.  I will make a feature-request or patch against
	  MakeMaker to do the same thing, but for the time being the code
	  needs to be in Makefile.PL.

2002-03-07 13:57  epaepa

	* Makefile.PL, choose/tv_check/tv_check, filter/tv_cat,
	  filter/tv_extractinfo_en, filter/tv_grep.in, filter/tv_sort,
	  filter/tv_to_latex, grab/de/tv_grab_de, t/test_filters.t: Got rid
	  of most of the usage() subroutines in favour of XMLTV::Usage.  It
	  seems to work okay, unless I made a typing error.  Also realized
	  I had forgotten to include tv_check in the list of binaries.

2002-03-07 13:38  epaepa

	* MANIFEST, Makefile.PL, lib/Usage.pm: Added a new library
	  XMLTV::Usage to save on ten identical usage() subroutines.  The
	  next change will start using it.

2002-03-07 13:17  epaepa

	* filter/tv_cat, filter/tv_extractinfo_en, filter/tv_sort,
	  filter/tv_to_latex, grab/de/tv_grab_de, t/test_filters.t: Made
	  sure that failure of GetOptions() is caught and triggers a usage
	  message (and unsuccessful exit).  I had omitted to do this before
	  now.

2002-03-07 12:57  epaepa

	* README: Updated README for 0.5pre2.

2002-03-07 12:48  epaepa

	* filter/tv_extractinfo_en, t/parallel_test, t/data/simple.xml,
	  t/data/sort.xml, t/data/tv_cat_simple_xml.expected,
	  t/data/tv_cat_sort_xml.expected,
	  t/data/tv_extractinfo_en_simple_xml.expected,
	  t/data/tv_extractinfo_en_sort_xml.expected,
	  t/data/tv_grep_a_simple_xml.expected,
	  t/data/tv_grep_a_sort_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_simple_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_sort_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_simple_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_simple_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_sort_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_simple_xml.expected,
	  t/data/tv_sort_simple_xml.expected,
	  t/data/tv_sort_sort_xml.expected: Fixed longstanding bug of
	  output times in XML containing colons.  The DTD says they should
	  not.	It doesn't look as pretty now :-(.

2002-03-07 12:16  epaepa

	* doc/QuickStart: Unified the grabber QuickStart instructions, they
	  are quite similar now.

2002-03-07 11:53  epaepa

	* MANIFEST, Makefile.PL, Uninstall.pm: Hacked together an
	  'uninstall' target.  It removes files created by 'make install'.
	  However it does not remove empty directories, and leaves the
	  packlist and perllocal.pod files alone.  (These files are
	  _modified_ in strange ways on installation, it's hard to unmodify
	  them.)

2002-03-07 11:39  epaepa

	* filter/tv_extractinfo_en: Reinstated the timezone preservation in
	  time12to24(), I think I removed it by accident.  Doesn't seem to
	  make any difference :-).

2002-03-06 17:20  epaepa

	* filter/tv_extractinfo_en, filter/tv_grep.in, filter/tv_sort,
	  filter/tv_to_latex, lib/TZ.pm: The DTD says quite clearly 'if no
	  explicit timezone is given, UT is assumed'.  But until now that's
	  not what the various tools were doing: they were interpreting
	  plain dates according to the local timezone.	Jerry spotted this
	  by running 'make test'; the tv_to_latex output was wrong.

	  I've fixed most of the programs to have Date_Init('TZ=UT').  The
	  external timezone should not affect the output of filter programs
	  (it should depend only on the input) so this is the right thing
	  for those.  For tv_grab_de TZ=CET is assumed.  But I haven't
	  changed tv_grab_na or tv_choose because I didn't want to risk
	  breaking them.  They do need checking though.

	  One nice side-effect of calling Date_Init() in every program is
	  that the Windows timezone error will go away.

2002-03-06 17:12  epaepa

	* MANIFEST.SKIP: Whoops, regexp confusion.

2002-03-06 17:11  epaepa

	* MANIFEST.SKIP: Skip warning about the '*.orig' backup files
	  generated by patch(1).

2002-03-06 16:11  epaepa

	* MANIFEST, Makefile.PL, XMLTV.pm, lib/XMLTV.pm: Moved XMLTV.pm
	  into the lib/ directory along with TZ.pm.  So now lib/ is the
	  place for modules needed by the rest of the project (as distinct
	  from modules needed only for a particular program, which can live
	  in that program's own directory).  This is ad hoc, but tidier
	  than before.

2002-03-06 16:01  epaepa

	* MANIFEST, Makefile.PL, XMLTV.pm, filter/tv_to_latex, lib/TZ.pm:
	  Created a new XMLTV::TZ module for the two timezone-handling
	  routines gettz() and ParseDate_PreservingTZ().  So now the
	  general timezone stuff is in XMLTV::TZ and the UK-specific summer
	  time stuff is in XMLTV::UK_TZ.

2002-03-06 15:36  epaepa

	* t/test_filters.t: Formatting change.

2002-03-06 15:36  epaepa

	* t/test_filters.t: Redirect stderr to a file which is removed if
	  the test passes.

2002-03-06 13:03  epaepa

	* grab/Ask.pm: Fixed the regexp match of $res by quoting with
	  \Q...\E.  Otherwise strange characters in the user response cause
	  the regexp to do strange things.

2002-03-04 18:35  epaepa

	* MANIFEST, t/parallel_test: Using tv_grab_uk is now more like
	  tv_grab_na: there's a separate --configure stage where you choose
	  what channels to download.  This is slightly less flexible than
	  the old command line arguments, and I still have to work out a
	  decent system for prompting the user about new channels that have
	  appeared on the site.  But it should make things more
	  user-friendly and consistent.

	  For the benefit of testing (parallel_test) there's a
	  --config-file argument and a set of sample configs.

2002-03-04 16:28  epaepa

	* grab/Ask.pm: Finished writing the --configure routine for
	  tv_grab_uk.  All I have to do now is actually read the
	  configuration file when it runs :-).	To handle long runs of
	  yes/no with optional 'yes to all' I added
	  XMLTV::Ask::askManyBooleanQuestions().  I have not yet modified
	  tv_grab_na to use this routine although it would probably be a
	  good idea for tidyness.

	  Also added some (mostly futile) error checking and recovery to
	  tv_grab_uk.  This happened when I was tracking down a date error:
	  it turns out that Ananova rotate their pages at some unspecified
	  time after midnight, so tv_grab_uk needs to compensate.  This
	  isn't yet done.

2002-03-04 16:17  epaepa

	* MANIFEST.SKIP: Skip warning about XMLTV::Memoize's *.cache files.

2002-03-04 14:54  epaepa

	* grab/Ask.pm: Removed the unvalidated questions from XMLTV::Ask,
	  now the response must always be in the list of options (as must
	  the default).  The provider selection in tv_grab_na now uses
	  askQuestion() rather than printing out options by itself.

2002-03-04 10:15  epaepa

	* grab/Memoize.pm: Fixed argument parsing so eg --cache --configure
	  is treated as two separate options.

2002-03-01 21:07  jveldhuis

	* grab/Ask.pm: fixed it because it was obviously not tested

2002-02-28 18:03  epaepa

	* grab/Ask.pm, t/parallel_test: *Started* to implement --configure
	  for tv_grab_uk.  This means moving the existing 'main program'
	  into a grab() subroutine and then calling either grab() or
	  configure() depending on the command line.  The --configure
	  option doesn't work yet, but tv_grab_uk is no worse than it was
	  before and passes the test suite (parallel_test), so now is a
	  good interim time to commit before I mess it up further.

	  Made the askMyQuestion() routine in XMLTV::Ask notice when there
	  are a long-winded set of options and present them as multiple
	  choice with numbers.	So you can use this single routine for both
	  short and long questions.

2002-02-28 13:50  epaepa

	* MANIFEST.SKIP: 'make distcheck' doesn't warn about Emacs autosave
	  files.

2002-02-28 13:48  epaepa

	* MANIFEST, Makefile.PL, grab/Ask.pm: Moved the question-asking
	  routines from the --configure stage of tv_grab_na to a new
	  support module XMLTV::Ask.

2002-02-28 12:19  epaepa

	* grab/Memoize.pm: Fixed the choice of cache filename when --cache
	  is given to a program that calls XMLTV::Memoize::check_argv().
	  It should be in the current directory, not the same directory as
	  the binary!

2002-02-28 12:15  epaepa

	* MANIFEST, MANIFEST.SKIP, Makefile.PL, mkdist: Moved out the rest
	  of tv_grab_uk's channel data into files installed in share/.
	  This isn't ideal, there should be a way for users to override
	  them or create new channel packages with files in their home
	  directory, but that will come later.

	  Made sure that 'make distclean' works properly.  It doesn't
	  remove the files removed by mkdist, but apart from that should
	  check that the working copy is prepared for distribution.  (Also
	  do 'cvs -q update -Pd' to check there are no files left to check
	  in.)

2002-02-28 12:12  epaepa

	* mkdist: Modified the list of files and directories to remove.  A
	  single list is sufficient, and now if the files are missing
	  anyway they're just ignored.	This will be handy when testing new
	  additions to the distribution.

2002-02-28 12:02  epaepa

	* README: updated version to XMLTV test

2002-02-27 18:10  epaepa

	* Makefile.PL, t/parallel_test: Begun the process of moving the
	  hardcoded channel data out of tv_grab_uk and into text files.  To
	  start with I have put the big list mapping Ananova ids to XMLTV
	  ids into its own file, which lives in the share/ directory (eg
	  /usr/local/share/).  This meant altering Makefile.PL to support
	  'share' files in the same way it was already altered for 'docs',
	  and processing tv_grab_uk on installation to set the path to the
	  data file.

	  One side effect of the new way of loading the data is that the
	  channel 'BBC1' now maps to generic BBC1 rather than the BBC1 West
	  it was before (for some reason).  This is probably because I
	  reordered the Ananova ids in the channel_ids file.  But that
	  looks like a good side effect.

2002-02-27 17:50  epaepa

	* mkdist: Commented out version number number check to allow
	  numbers like '0.5pre1'.

2002-02-25 17:27  epaepa

	* README: Updated README for 0.5pre1, a testing release I'm about
	  to make.

2002-02-25 16:55  epaepa

	* t/data/: length.xml, tv_cat_length_xml.expected,
	  tv_extractinfo_en_length_xml.expected,
	  tv_grep_a_length_xml.expected,
	  tv_grep_category_b_length_xml.expected,
	  tv_grep_category_e_and_title_f_length_xml.expected,
	  tv_grep_category_g_or_title_h_length_xml.expected,
	  tv_grep_channel_id_channel4_com_length_xml.expected,
	  tv_grep_channel_name_d_length_xml.expected,
	  tv_grep_eval_scalar_keys_5_length_xml.expected,
	  tv_grep_i_category_i_title_j_length_xml.expected,
	  tv_grep_i_last_chance_c_length_xml.expected,
	  tv_grep_new_length_xml.expected,
	  tv_grep_on_after_2002_02_05_length_xml.expected,
	  tv_sort_length_xml.expected, tv_to_latex_length_xml.expected: New
	  test case for suspected bug with <length>.  Turned out that
	  wasn't the bug, but building up the test suite is a good thing
	  anyway.

	  (I plan to slim down 'make test' a bit so it doesn't grow
	  linearly with both the number of filters and number of test
	  cases.)

2002-02-25 16:53  epaepa

	* Makefile.PL: Added a dependency on Compress::Zlib, needed by
	  tv_grab_de.  I plan to split up the dependencies a bit soon.

2002-02-25 16:49  epaepa

	* doc/QuickStart: Added mention of tv_grab_de, although I still
	  don't know exactly what country(s) it corresponds to.

2002-02-24 19:54  epaepa

	* MANIFEST, Makefile.PL, grab/de/tv_grab_de: Yay, another grabber!
	  This time for Germany and Austria.

	  Actually I tell a lie - this is just fetching the XML files which
	  Goofy makes available from his database.  The service resumed
	  recently.  But now we have a standard way to get listings rather
	  than telling users 'go and download these files by hand'.

2002-02-24 19:52  epaepa

	* XMLTV.pm, choose/tv_check/tv_check, choose/tv_pick/tv_pick_cgi,
	  filter/tv_cat, filter/tv_extractinfo_en, filter/tv_grep.in,
	  filter/tv_sort, filter/tv_to_latex: Replaced XMLTV::read_data()
	  with XMLTV::parsefile(), which reads from a filename or URL, and
	  XMLTV::parse(), which reads XML straight from a string.  This is
	  the same interface as XML::DOM.  write_data() has not changed
	  because I couldn't think of a better name.

2002-02-24 18:34  epaepa

	* MANIFEST, Makefile.PL, grab/Memoize.pm: Moved the code for the
	  undocumented --cache option from tv_grab_uk into a new module
	  XMLTV::Memoize.  Then caching should be fairly easy to add to new
	  grabbers.

2002-02-24 18:33  epaepa

	* t/parallel_test: Modified to work with the blib/ setup.  It is
	  still specific to my directory structure but should be easy to
	  change for yours.

2002-02-24 17:22  epaepa

	* XMLTV.pm, filter/tv_cat: Made tv_cat into a library function,
	  XMLTV::cat().  This is because the forthcoming tv_grab_de will
	  use it too.  I was thinking of making tv_grab_de as a shell
	  script running wget and tv_cat, which would be cool, but I like
	  Perl too much.

2002-02-24 17:20  epaepa

	* t/test_filters.t: Fixed test_filters so it doesn't chdir().  It
	  can't do that because the @INC path is set relative to the
	  current directory ('blib/lib' and others).  Previously it was
	  working by accident, picking up XMLTV.pm and stuff installed
	  elsewhere.

2002-02-24 17:18  epaepa

	* t/data/: simple.xml, tv_cat_simple_xml.expected,
	  tv_extractinfo_en_simple_xml.expected,
	  tv_grep_a_simple_xml.expected,
	  tv_grep_category_b_simple_xml.expected,
	  tv_grep_category_e_and_title_f_simple_xml.expected,
	  tv_grep_category_g_or_title_h_simple_xml.expected,
	  tv_grep_channel_id_channel4_com_simple_xml.expected,
	  tv_grep_channel_name_d_simple_xml.expected,
	  tv_grep_eval_scalar_keys_5_simple_xml.expected,
	  tv_grep_i_category_i_title_j_simple_xml.expected,
	  tv_grep_i_last_chance_c_simple_xml.expected,
	  tv_grep_new_simple_xml.expected,
	  tv_grep_on_after_2002_02_05_simple_xml.expected,
	  tv_sort_simple_xml.expected, tv_to_latex_simple_xml.expected: I
	  wrote an example XMLTV file to add to the web page, and thought
	  it might as well go into the test suite too.	It would be rather
	  embarassing if the software stopped handling the example on the
	  web page...

2002-02-24 14:18  epaepa

	* filter/: tv_cat, tv_extractinfo_en, tv_grep.in, tv_sort,
	  tv_to_latex: Finished writing the manual pages for the filters.
	  Not bothering to document the --help option, it should be obvious
	  and GNU grep's manpage doesn't.

2002-02-23 18:41  epaepa

	* MANIFEST, Makefile.PL, filter/tv_extractinfo_en, filter/tv_grep,
	  filter/tv_grep.PL, filter/tv_grep.in: Added two more manual
	  pages: for tv_grep and tv_extractinfo_en.  The one for tv_grep
	  was tricky because many of that command's options are
	  automatically generated from the file format description in
	  XMLTV.pm.  From now on tv_grep.in is the file to edit, and
	  tv_grep.PL processes it into the final version.  Since tv_grep.in
	  behaves just like tv_grep this should not be any great hardship.

2002-02-23 16:34  epaepa

	* Makefile.PL, t/test_filters.t: The special test case handling is
	  no longer needed, we just need to tell test_filters.t where the
	  programs and data files can be found and then we can use
	  Test::Harness as normal.

2002-02-22 18:27  epaepa

	* Makefile.PL, filter/tv_cat: Our first manual page - for tv_cat.
	  Will add manpages for all the other command-line tools soon.

2002-02-22 18:09  epaepa

	* Makefile.PL: Fixed version number in directory
	  .../share/doc/xmltv-$VERSION.

2002-02-22 18:06  epaepa

	* MANIFEST, Makefile.PL, tv_cat, tv_check, tv_extractinfo_en,
	  tv_grab_na, tv_grab_uk, tv_grep, tv_pick_cgi, tv_sort,
	  tv_to_latex, choose/tv_check/README.tv_check,
	  choose/tv_check/tv_check, choose/tv_check/tv_check_doc.html,
	  choose/tv_check/tv_check_doc.jpg, choose/tv_pick/tv_pick_cgi,
	  doc/COPYING, doc/README, doc/coding_standards,
	  doc/grabber_interface, doc/tv_check_doc.html,
	  doc/tv_check_doc.jpg, doc/code/coding_standards,
	  doc/code/grabber_interface, filter/tv_cat,
	  filter/tv_extractinfo_en, filter/tv_grep, filter/tv_sort,
	  filter/tv_to_latex, t/README, t/parallel_test, t/test_filters.t,
	  t/data/dups.xml, t/data/overlap.xml, t/data/sort.xml,
	  t/data/test.xml, t/data/test_livre.xml,
	  t/data/tv_cat_dups_xml.expected,
	  t/data/tv_cat_overlap_xml.expected,
	  t/data/tv_cat_sort_xml.expected,
	  t/data/tv_cat_test_livre_xml.expected,
	  t/data/tv_cat_test_xml.expected,
	  t/data/tv_extractinfo_en_dups_xml.expected,
	  t/data/tv_extractinfo_en_overlap_xml.expected,
	  t/data/tv_extractinfo_en_sort_xml.expected,
	  t/data/tv_extractinfo_en_test_livre_xml.expected,
	  t/data/tv_extractinfo_en_test_xml.expected,
	  t/data/tv_grep_a_dups_xml.expected,
	  t/data/tv_grep_a_overlap_xml.expected,
	  t/data/tv_grep_a_sort_xml.expected,
	  t/data/tv_grep_a_test_livre_xml.expected,
	  t/data/tv_grep_a_test_xml.expected,
	  t/data/tv_grep_category_b_dups_xml.expected,
	  t/data/tv_grep_category_b_overlap_xml.expected,
	  t/data/tv_grep_category_b_sort_xml.expected,
	  t/data/tv_grep_category_b_test_livre_xml.expected,
	  t/data/tv_grep_category_b_test_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_dups_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_overlap_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_sort_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_livre_xml.expected,
	  t/data/tv_grep_category_e_and_title_f_test_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_dups_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_overlap_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_sort_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_livre_xml.expected,
	  t/data/tv_grep_category_g_or_title_h_test_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_dups_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_overlap_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_sort_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_livre_xml.expected,
	  t/data/tv_grep_channel_id_channel4_com_test_xml.expected,
	  t/data/tv_grep_channel_name_d_dups_xml.expected,
	  t/data/tv_grep_channel_name_d_overlap_xml.expected,
	  t/data/tv_grep_channel_name_d_sort_xml.expected,
	  t/data/tv_grep_channel_name_d_test_livre_xml.expected,
	  t/data/tv_grep_channel_name_d_test_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_dups_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_overlap_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_sort_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_livre_xml.expected,
	  t/data/tv_grep_eval_scalar_keys_5_test_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_dups_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_overlap_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_sort_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_livre_xml.expected,
	  t/data/tv_grep_i_category_i_title_j_test_xml.expected,
	  t/data/tv_grep_i_last_chance_c_dups_xml.expected,
	  t/data/tv_grep_i_last_chance_c_overlap_xml.expected,
	  t/data/tv_grep_i_last_chance_c_sort_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_livre_xml.expected,
	  t/data/tv_grep_i_last_chance_c_test_xml.expected,
	  t/data/tv_grep_new_dups_xml.expected,
	  t/data/tv_grep_new_overlap_xml.expected,
	  t/data/tv_grep_new_sort_xml.expected,
	  t/data/tv_grep_new_test_livre_xml.expected,
	  t/data/tv_grep_new_test_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_dups_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_overlap_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_sort_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_test_livre_xml.expected,
	  t/data/tv_grep_on_after_2002_02_05_test_xml.expected,
	  t/data/tv_sort_dups_xml.expected,
	  t/data/tv_sort_overlap_xml.expected,
	  t/data/tv_sort_sort_xml.expected,
	  t/data/tv_sort_test_livre_xml.expected,
	  t/data/tv_sort_test_xml.expected,
	  t/data/tv_to_latex_dups_xml.expected,
	  t/data/tv_to_latex_overlap_xml.expected,
	  t/data/tv_to_latex_sort_xml.expected,
	  t/data/tv_to_latex_test_livre_xml.expected,
	  t/data/tv_to_latex_test_xml.expected: Packaged using a
	  Makefile.PL, loosely based on Justin H.'s work.  To install:

	  % perl Makefile.PL % make % make test % make install

	  This allows us to arrange the source tree more tidily, since it
	  no longer has to correspond 1-1 with what is installed.

2002-02-22 17:42  epaepa

	* tv_grab_na: Changed long options to use hyphens instead of
	  underscores.

2002-02-20 06:45  jveldhuis

	* tv_grab_na: fixed usage

2002-02-20 06:42  jveldhuis

	* tv_grab_na: added options to --configure to auto answer
	  interactive questions and do things like fail with exit 1 if
	  provider changed. This is to factilitate the automatic addition
	  and removal of channels without user intervention.

2002-02-18 04:28  rmeden

	* tv_check: add device name to episode output.	change scan order
	  for conflict resolution

2002-02-14 16:41  epaepa

	* XMLTV.pm: Better warning message when you pass in a hash with
	  undef values.

2002-02-14 14:53  epaepa

	* tv_grep: Perl's autovivification was tending to create undef hash
	  elements when tv_grep looked for things.  Rewrote the tests to be
	  more cautious and always check 'if exists $_->{whatever}' before
	  going on to perform operations on that key.  Seems to have cured
	  the problem.

2002-02-14 14:03  epaepa

	* tv_to_latex: Gave up on messing around trying to find a way to
	  convert UTF-8 to Latin-1.  We now just insist that
	  Unicode::String be available.  It was a bit pointless trying to
	  work around that one missing module when the XMLTV package
	  depends on a dozen others.  Motivated by wanting the same output
	  from tv_to_latex on every system, to pass test suite.

2002-02-14 12:13  epaepa

	* tv_to_latex: Added --output option, required by new test suite.

2002-02-14 12:12  epaepa

	* tv_grep: Fixed argument matching and exit status.

	  (Errors revealed by test suite, which I'm about to commit.)

2002-02-13 20:08  epaepa

	* tv_grab_uk: To reduce on server load I've agreed with Ananova a
	  system to fetch multiple pages at once.  This should also make
	  tv_grab_uk a lot faster for many users.

2002-02-13 17:49  epaepa

	* tv_grab_uk: Fixed the selection of individual channels.  Also
	  noticed a design bug which makes it impossible to choose
	  individual channels if they don't have explicit XMLTV ids added.
	  Uurgh, the whole thing is so horrible...

2002-02-13 17:02  epaepa

	* tv_cat: Adding tv_cat, another filter inspired by Unix tools.
	  This one concatenates listing files.	I just wrote it as a
	  replacement for test_xmltv_module, a program which reads data
	  with XMLTV.pm and then writes it again.  This will be useful for
	  testing.

2002-02-11 17:31  epaepa

	* README: Added a list of (Perl module) dependencies.  Now README
	  and doc/QuickStart can completely replace the 'installation and
	  usage' sections of the website, which is probably a good thing
	  (info on usage belongs together with the programs themselves, and
	  should not be duplicated).

2002-02-11 16:57  epaepa

	* parallel_test, test_xmltv_module: Tidied up the package root
	  directory a little by moving a couple of files to test_scripts/.

2002-02-11 16:53  epaepa

	* UK_TZ.pm, ZapListings.pm: Removing old versions of Perl modules
	  that have moved to the XMLTV/ directory.

2002-02-11 16:52  epaepa

	* README, doc/QuickStart, doc/coding_standards: Rewrote
	  doc/QuickStart as summary documentation for each tool.

2002-02-11 16:37  rmeden

	* README.tv_check: added html option to quick instructions

2002-02-11 15:24  epaepa

	* Ananova_Channel.pm: Removing leftover Ananova_Channel.pm, it has
	  moved to the XMLTV/ subdirectory.

2002-02-10 18:25  rmeden

	* README.tv_check: doc update for conflict checking.  also a
	  simpler quick-start guide

2002-02-10 18:01  rmeden

	* tv_check: changed hardcoded show column numbers to use names.
	  added column for recording device added conflict detection

2002-02-08 04:40  rmeden

	* tv_check: fix bug on update not updating the correct row

2002-02-07 17:31  epaepa

	* XMLTV.pm, parallel_test, test_xmltv_module, tv_grab_na,
	  tv_grab_uk, tv_sort, tv_to_latex: Moved the three miscellaneous
	  Perl modules (ie, anything except XMLTV.pm) into the XMLTV::
	  namespace and their own directory.  This is not the final file
	  reorganization, I'm just changing the code to make it easier to
	  package.

2002-02-07 11:44  epaepa

	* tv_extractinfo_en: Dealt with some false positives for children's
	  shows.

2002-02-06 05:28  rmeden

	* tv_check: Misc cleanup, improved scoping, added "use strict"

	  fixed bug/feature with length.  Blank show length now means
	  ignore length

	  added and centralized validation of fields for add/update

2002-02-05 20:49  jveldhuis

	* tv_grab_na: fixed default choice when choosing new provider
	  during --configure

2002-02-05 17:53  epaepa

	* tv_check: Okay, the Revision: line works, just making it fontify
	  correctly.

2002-02-05 17:49  epaepa

	* tv_check: Trying to fix the Revision: autoexpansion, let's see if
	  it works.

2002-02-05 17:40  jveldhuis

	* tv_grab_na: fixed missing semicolon

2002-02-05 17:00  epaepa

	* README, README.tv_check, README.tvcheck, ZapListings.pm,
	  getlistings_na, getlistings_uk_ananova, listings_to_latex,
	  parallel_test, pick_cgi, sort_listings, tv_check,
	  tv_extractinfo_en, tv_grab_na, tv_grab_uk, tv_grep, tv_pick_cgi,
	  tv_sort, tv_to_latex, tvcheck, doc/QuickStart,
	  doc/tv_check_doc.html, doc/tv_check_doc.jpg,
	  doc/tvcheck_doc.html, doc/tvcheck_doc.jpg: *** Great Renaming ***

	  This is it.  All the executables should now have reasonably
	  sensible names beginning with tv_.  Grabbers begin tv_grab, tools
	  like tv_sort and tv_grep should have at least some small
	  resemblance to their Unix counterparts, and even miscellaneous
	  stuff like tv_parsedesc_en begins with the tv_ prefix so you can
	  use tab-completion easily.

	  Note, I have gone through and semi-intelligently replaced
	  occurrences of the old names.  I do not believe I have broken
	  anything.  However, I didn't test the renamed versions, because I
	  want to get this committed to CVS ASAP to avoid conflicts.  (Not
	  pretty when renamed files conflict...)

	  Please 'cvs update' and switch to the new names, I will test the
	  renamed versions and then commit any further changes needed to
	  get things working again.  If there are breakages, they will be
	  trivial and quick to mend.

	  This renaming is a precursor to making a nice tidy installer and
	  perhaps some more shuffling around of directories: but I think
	  that the renamed version as it stands now should be releasable.
	  After checking it all works, I will probably tag the tree as
	  0.4.4pre so we have something to fall back on in case we need to
	  release a new version urgently.

2002-02-04 18:21  epaepa

	* getlistings_uk_ananova, sort_listings, tv_extractinfo_en,
	  tv_grep: Added --output option requested by Andy B. to all
	  programs that generate XML listings.	Also a usage message where
	  one was missing.

2002-02-04 17:39  jveldhuis

	* doc/coding_standards: fixed Id entry

2002-02-04 17:38  jveldhuis

	* ZapListings.pm: now identifies Comedia categories in french
	  listings

2002-02-04 17:37  epaepa

	* XMLTV.pm: Corrected wrong usage example for write_data().  In
	  fact the usage of write_data() depends on the arguments to
	  construct an XMLTV::Writer, which depends on how you construct an
	  XML::Writer... but IMHO this is the least silly way to do it.

2002-02-04 17:30  epaepa

	* filter_shown: Removing filter_shown in favour of tv_grep, which
	  does the same job and more (tv_grep --on-after X == filter_shown
	  -d X).  tv_grep is 25% slower due to using XMLTV.pm rather than
	  manipulating the DOM directly, but that's not worth worrying
	  about.

2002-02-04 17:20  epaepa

	* ZapListings.pm: Turn on env_proxy flag for HTTP::Request::Common,
	  so if you have http_proxy set in your environment that proxy
	  server will be used.

	  This may cause problems for some users with dodgy proxy servers:
	  if so just unset http_proxy before running.  I thought it was not
	  working for me, but it seems to be okay now.

2002-02-04 17:05  epaepa

	* tv_extractinfo_en: Fine-tuned 'presenter' matching so that
	  'former Eurotrash presenter Jean-Paul Gaultier' is not treated as
	  the presenter of the current programme.  (The word before
	  'presenter', if any, must begin with a capital letter.)

2002-02-04 16:19  epaepa

	* tv_grep: Oops, tv_grep was stripping out channel information
	  unless some channel predicates were given to specifically include
	  it.  Changed the default to be keeping all channels unchanged if
	  no channel predicates are specified.

2002-02-02 17:05  epaepa

	* tv_grep: Implemented some suggestions from Jerry about improving
	  the usage message.

2002-02-02 16:16  epaepa

	* tv_grep: Implemented filtering on channels: two new predicates
	  --channel-name and --channel-id.  These will filter out
	  programmes like the others but also remove <channel> elements
	  from the output.

	  I believe that tv_grep now has all the functionality of Simon
	  K.'s filter, although not quite the same syntax.

2002-02-02 15:40  epaepa

	* tv_grep: Better usage message including the autogenerated
	  predicates.

2002-02-02 15:31  epaepa

	* tv_grep: Automatically generaete a long option for every key a
	  programme hash can have.  Not all these long options are usable,
	  for example there is currently no way to search on audio
	  characteristics (so using --audio will give an error message).
	  But there are searches defined for simple text, text with
	  language, and booleans, so you can say things like:

	  % tv_grep -i --category drama % tv_grep --title Countdown
	  --on-after today % tv_grep -i --new --category comedy

	  If more keys are added in the DTD and XMLTV.pm, the set of long
	  options should expand automatically.

2002-02-02 15:00  epaepa

	* tv_grep: Better argument parsing using a new OptionAbbrev class
	  which allows non-ambiguous initial substrings to be used as
	  abbreviations for long options.  So for example --o is not an
	  acceptable abbreviation, it could be short for --or or
	  --on-after.

2002-02-02 13:46  epaepa

	* XMLTV.pm: Added list_programme_keys() which allows some limited
	  querying about the data structure: what keys can be in a
	  programme, and what format their values take.  This could be
	  useful for tools which need to automatically generate code for
	  each key in turn.  I wrote it for tv_grep, so that command line
	  options like --title X or --category -X can be created
	  mechanically (and when the DTD changes, hopefully only XMLTV.pm
	  needs to be updated).

2002-02-02 13:19  epaepa

	* tv_grep: Added --or (-o) option like find(1).

2002-02-01 19:53  epaepa

	* tv_grep: Another rewrite for tv_grep.  I am trying to make it do
	  everything that Simon Kittle's 'filter' program provides.  The
	  new version of tv_grep allows boolean expressions composed with
	  'and' and 'or' in the manner of find(1) - or it will when the
	  argument parser is finished.	Currently plain regexp search,
	  --on-after, and --eval (arbitrary Perl code) are implemented.
	  Just committing what I have so far.

2002-02-01 14:40  epaepa

	* getlistings_uk_ananova, parallel_test: When I converted
	  getlistings_uk_ananova to use XMLTV.pm for output I lost the
	  timezones in the output.  This is because I forgot that the
	  XMLTV.pm data structure should contain the output form of dates
	  and times, not the Date::Manip internal form.  We need to convert
	  dates for output with date_to_uk() before storing them in the
	  programme hash, and call ParseDate() when we read from the
	  programme hash.

	  The UK listings now include timezones once more - currently 'UT'
	  for every programme, I hope it won't break when BST comes around.
	   Also committing the parallel_test setup I used to check this
	  release.

2002-01-31 19:07  epaepa

	* tv_grep: Added -e option to specify arbitrary Perl code to
	  execute on each programme (truth value returned determines
	  whether the programme is included in the output).  This is really
	  just for the infrastructure, I will later add ready-made code
	  fragments for filtering on category, date and so on.

2002-01-31 18:25  epaepa

	* tv_grep: Added --ignore-case or -i option.

2002-01-31 16:57  epaepa

	* getlistings_uk_ananova: New versions of the Memoize module
	  deprecate TIE and want HASH instead.

2002-01-31 16:56  epaepa

	* XMLTV.pm: Bugfix for writing icons.

2002-01-31 15:51  epaepa

	* parallel_test: Test rig I use for checking changes to
	  getlistings_uk_ananova: it runs the old version and the new
	  version with various arguments and checks the results are
	  identical.  Needs a bit of polish, but could be used for testing
	  most programs in the XMLTV distribution.

2002-01-31 15:39  epaepa

	* tv_extractinfo_en: Added tv_extractinfo_en, which reads
	  English-language programme descriptions and attempts to sniff out
	  information which could better be stored in machine-readable
	  form.  This is mostly code which used to live in the old
	  scrapped_getlistings_uk_ananova in the attic/ directory, I've
	  just ported it to the new data structures and tidied it up.

	  This sort of regular expression matching works well on the long
	  detailed descriptions Ananova provides.  It's not so good on the
	  North American listings because they have shorter descriptions.
	  But it did manage to extract the names of quiz show hosts.

2002-01-30 16:31  epaepa

	* tv_grep: First version of tv_grep, which filters particular
	  programmes from listings.  This version works by stringifying the
	  programme hash and regexp matching against that, which is kludgy
	  but effective.  Written to fill a need during debugging: more
	  fully-featured version to come later.

2002-01-30 07:09  rmeden

	* README.tvcheck, doc/tvcheck_doc.html: document the new color HTML
	  output format for a --scan

2002-01-30 06:59  rmeden

	* tvcheck: add HTML output option for color printing

2002-01-29 17:21  epaepa

	* getlistings_na: Changed quoting on Id line so it doesn't end with
	  $', which confuses XEmacs.  I apologize for having such a lame
	  editor :-(.

2002-01-29 17:18  epaepa

	* Ananova_Channel.pm, XMLTV.pm, listings_to_latex, tvcheck: Added
	  support for channel icons and URLs to XMLTV.pm.  The channels
	  data structure it returns is different (a hash mapping channel id
	  to channel hashes, rather than just lists of display-names) and
	  the interface to write_channel() has changed.  I hope I've
	  modified every program which depends on this.

2002-01-29 15:47  jveldhuis

	* ZapListings.pm: added a couple more languages I've seen.  no
	  longer print	   possible candidate for program detail we didn't
	  identify (``movie-title'') for program details that start with ``
	  and end in ''.  These seem to be related movie titles actors have
	  appeared in before.  I didn't remove them from the output before
	  this because i wanted to get a good sense of what they were
	  instead of assuming they're something we don't care about.

	  Changed all POST() calls that have empty param lists [] to GET()
	  calls instead. -- suggested by Paul Haggart <xmltv@bsfh.org>
	  (this seem to fix some proxy/firewall issues he was having, not
	  sure, but a good suggestion either way)

2002-01-29 15:39  jveldhuis

	* getlistings_na: fixed providers question so default choice works
	  if return is hit instead of re-asking the question

2002-01-29 13:30  epaepa

	* XMLTV.pm: Factored out going through @Handlers when reading a
	  <programme> element into its own subroutine call_handlers_read().
	  This is because I plan to use the same method for reading
	  channels.

2002-01-28 16:11  epaepa

	* getlistings_uk_ananova: Output categories better.  Ananova's
	  categories are 99% in English, they just need some tweaking to
	  get the coveted lang="en" certification :-).

2002-01-28 12:42  epaepa

	* XMLTV.pm: Improve checking for bad keys in hashes (to catch
	  errors when you misspell '$p{desc}' as '$p{decs}', rather than
	  silently skipping over the 'decs' key).  Keys beginning with an
	  underscore are now considered to be random junk which shouldn't
	  be written (so you can annotate programmes with whatever extra
	  information you want).

2002-01-21 16:47  epaepa

	* XMLTV.pm: The [text, language] pair returned from best_name() is
	  now one of those originally passed in (remember that these
	  anonymous pairs are passed by reference).  This means that you
	  can call best_name() on for example the descriptions of a
	  programme, find the pair you want, and modify it in-place.

2002-01-21 15:28  epaepa

	* XMLTV.pm, listings_to_latex, pick_cgi: Whoops.  A mistake in the
	  comment above best_name() caused me to implement the new return
	  value wrongly.  All human-readable text in XMLTV.pm is returned
	  as [ text, language ] pairs or maybe just [ text ].  I've
	  corrected best_name() to follow this convention.

2002-01-21 15:11  epaepa

	* XMLTV.pm, listings_to_latex, pick_cgi: Changed the behaviour of
	  best_name(), which picks the best choice for your current
	  language from a list of [language, text] pairs.  The new version
	  returns a pair [language, text], so you know what language was
	  picked.  The optional comparison function you pass in to compare
	  text strings is unchanged.

2002-01-21 06:29  rmeden

	* doc/: tvcheck_doc.html, tvcheck_doc.jpg: initial load

2002-01-20 14:55  epaepa

	* README, getlistings_uk_ananova: Updated version number to 0.4.3.

2002-01-20 04:52  rmeden

	* tvcheck: fixed bug in title chooser

2002-01-19 23:58  jveldhuis

	* getlistings_na: added --offset as per request/suggestion from
	  mielikki@users.sourceforge.net

2002-01-19 23:01  jveldhuis

	* getlistings_na: fixed carp() call when running with
	  --debuglistings enabled and a program description contains '--',
	  which is illegal in XML::Writer.

2002-01-19 22:26  jveldhuis

	* getlistings_na: usage messages now come to stdout when --help is
	  used and stderr if usage is incorrect. Also minor version number
	  is calculated from rcs id. This is minor since the version
	  information is mainly for the output 'tv' element and controling
	  the versions of xmltv_na configuration files.

2002-01-19 20:09  rmeden

	* tvcheck: Minor bug-fixes, mostly cleaning up GUI.  Added --output
	  option

2002-01-19 19:49  epaepa

	* getlistings_na: Made all grabbing error messages go to stderr
	  rather than stdout, so they don't get mixed in with the XML
	  listings.  This includes the usage message.  For consistency
	  changed the --configure usage message to stderr too.

2002-01-19 18:40  jveldhuis

	* getlistings_na: verifies provider information during configure
	  and during grab.

2002-01-19 18:32  epaepa

	* getlistings_uk_ananova: Fixed selection of regions by name.
	  Dealt with FIXME for multiple descriptions - now all the
	  descriptions from Ananova are included in the output XML, with
	  the main description coming first.

2002-01-19 18:07  epaepa

	* tvcheck: Parse episode-num better.  Still not perfect, but should
	  work with files currently generated.

2002-01-19 18:05  epaepa

	* XMLTV.pm: Moved the channel writing code into a subroutine
	  write_channel() which can be called externally.  This is needed
	  for the new getlistings_uk_ananova.

2002-01-18 20:44  epaepa

	* Ananova_Channel.pm, getlistings_uk_ananova: Refactored
	  getlistings_uk_ananova's channel management into
	  Ananova_Channel.pm.  Previously there were too many hashes
	  mapping between XMLTV channel id, Ananova channel id, Ananova
	  display name (which comes in two forms), additional display name,
	  broadcast method or region, channel packages, and what the user
	  wishes to download.  It's a little bit saner now but still rather
	  ugly.

	  The Ananova_Channel package is not in any way a general or
	  reusable set of channel management routines.	It's very specific
	  to the peculiarities of this data source.  The name sucks, but
	  we're going to rename everything soon anyway.

	  Also a few bug fixes including that the episode-num is now
	  written out properly (at least until that bit of DTD gets
	  replaced with something saner), updates to channel definitions
	  and packages, and general tidying.

	  The old option ALL to get every one of Ananova's pages will
	  probably become undocumented in the next release.  It doesn't
	  work that well because often two different pages on Ananova are
	  mapped to the same XMLTV channel.  It ends up grabbing both.
	  This is however useful for checking the output, running it
	  through sort_listings to check that the two Ananova channels are
	  indeed identical, so I won't remove this ability completely.

2002-01-17 07:18  rmeden

	* README.tvcheck, tvcheck: Moved Exit button to under file menu.
	  added OnDestroy method on main app close added keyboard shortcuts
	  to menus

	  SHOW TABLE	code for minimum number of rows now works    you
	  can no longer select blank rows

	  Selection List    changed ENTRY widgets to use a --textvariable,
	  simpler code.

2002-01-16 05:50  rmeden

	* tvcheck: replace --guide paramter with --listings to match
	  getlistings_na avoid warning when no prefered language is given

2002-01-14 14:16  jveldhuis

	* getlistings_na: changed prompts for add/drop channels to have
	  'all' option.

2002-01-11 14:59  epaepa

	* README: Updated for 0.4.2.

2002-01-11 07:05  rmeden

	* tvcheck: remove debug message... oops

2002-01-11 05:37  rmeden

	* README.tvcheck: update readme to match current tvcheck version

2002-01-11 05:36  rmeden

	* tvcheck: fix the revision number in the options list

2002-01-11 05:20  rmeden

	* tvcheck:
	  changed command line options to use getopt::long, like the other
	  modules removed allchan option, now all options remove things
	  added   chanonly option to replace allchan added   neartime
	  option to include only shows within about 3 hours.  bumped
	  version number to 2.0... why.. because I deserve it!

	  and the biggie.  added --configure switch that uses TK to allow
	  you to create the shows.xml file!

2002-01-08 13:40  epaepa

	* mkdist: Added --step by step confirmation for cowardly people
	  like me.

2002-01-08 13:30  epaepa

	* pick_cgi: Finished rewriting to use XMLTV.pm.  The version
	  released with 0.4.1 didn't work at all because I forgot to copy
	  it into my CGI directory before testing.  Now writes an XML file
	  to the current directory which the user downloads normally.

2002-01-08 13:28  epaepa

	* XMLTV.pm: write_data() now takes extra arguments passed to
	  XMLTV::Writer's constructor.	This allows you to easily write
	  programmes to a different filehandle, for example.

2002-01-07 17:54  epaepa

	* getlistings_uk_ananova: Removed code which maintains a 'relation'
	  among programmes sharing a clump.  With the old grabber this was
	  necessary because special fixups to a programme might require
	  others in its clump to be updated.  But the special handlers are
	  no longer used (though I plan to move them into a tool of their
	  own) so there's no need to keep track of clumps beyond just
	  adding the clumpidx to each programme hash.  This is just cutting
	  out dead code.

2002-01-07 15:33  epaepa

	* analyse_tvprefs/analyse_tvprefs: Tidied by removing trailing
	  whitespace on comments; removed CVS logs.

2002-01-07 15:30  epaepa

	* ZapListings.pm: Tidied file by getting rid of spaces on lines
	  that were all spaces.

2002-01-07 15:27  epaepa

	* UK_TZ.pm: Tidied up file by removing trailing whitespace.

2002-01-03 04:55  rmeden

	* tvcheck: Display part x/y info stored in the "episode-num" field

2002-01-02 22:10  jveldhuis

	* getlistings_na: added --debuglistings that puts html source in
	  output listings as comments

2002-01-02 22:10  jveldhuis

	* ZapListings.pm: fixed occational problem where listings have bad
	  end-times

2002-01-02 20:47  jveldhuis

	* ZapListings.pm: added Swedish

2002-01-01 21:14  jveldhuis

	* ZapListings.pm, getlistings_na: - program titles that end in
	  'Part \d of \d' get moved   into episode-num section of programme

2002-01-01 20:22  jveldhuis

	* mkdist: better description of whats left after mkdist is run

2002-01-01 19:57  jveldhuis

	* mkdist: added comment about script should be run in an empty
	  directory

2002-01-01 19:56  jveldhuis

	* mkdist: checks and fails run if ./xmltv exists

2002-01-01 19:53  jveldhuis

	* mkdist: now warns about README contents should be updated prior
	  to mkdist now gets --sfuser from ~/.cvspass if it can instead of
	  from the command line.

2002-01-01 19:49  jveldhuis

	* README: updated README contents

2002-01-01 18:11  jveldhuis

	* mkdist: better usage

2001-12-31 23:59  epaepa

	* getlistings_uk_ananova: Updated list of 'gratis' channels based
	  on empirical evidence from Sky Digibox.  Unfortunately there are
	  still many channels which are viewable but not carried by Ananova
	  at all.  Added some error checking for the channel packages to
	  catch entry of nonexistent channels.

2001-12-31 18:25  jveldhuis

	* mkdist: new perl script version that does almost everything
	  needed to cut a release.

2001-12-31 17:39  rmeden

	* tvcheck: Pretty much a complete rewrite.  Logic reversed. Instead
	  of comparing "day" of episode data, now I convert show data to a
	  date and use that for the episode check.

	  If another episode is in a shows timeslot, details for that show
	  prints.

	  Output format now includes some episode details.

2001-12-31 16:47  jveldhuis

	* README: updated version info

2001-12-29 21:30  jveldhuis

	* ZapListings.pm: - only print 'identified possible candidate for
	  new language X in (Y-Z) if   one of Y or Z are language matches

2001-12-29 21:27  jveldhuis

	* ZapListings.pm, getlistings_na: - now when it provides a list of
	  providers the list is in the same   order as they appeared in the
	  www page. They provide the list is   a more logical order than
	  ordered by provider id.

2001-12-29 21:11  jveldhuis

	* ZapListings.pm: - added Aboriginal language - now support
	  identification of language declarations   'Hindi/Punjabi/Urdu',
	  but I'm not sure what it means

2001-12-29 20:48  jveldhuis

	* ZapListings.pm, getlistings_na: - configuration now uses channel
	  descriptions (usually   channel # and station letters) instead of
	  zap2it channel   id's.

	  - handles cable companies who have same channel id for different
	   channels in listings (have same schedule). Looks like they
	  broadcast the same channel, once in analog for peasants and
	  once in digital on two separate channels.

	  - handles cases where there seems to be two channel listings	 on
	  the same channel #. For instance in edmonton, my listings
	  currently have two channel 15s. I only get one :)

	  - this means output comes in channel description sorted order
	  instead of channel id order.

	  - automatically deals with version 1 config files with warning
	  to STDERR to re-run --configure.

	  - added ignored program details (10-1) which show up in sports
	  event   descriptions for win/loss stats.

	  - added ignored program detail (Cont'd) which seem to correlate
	  to   the music only channels where they want the listings to
	  appear every	 hour in the schedule even though the content is
	  continuous.

	  - added Oji-Cree to understood languages

2001-12-29 17:50  jveldhuis

	* getlistings_na, ZapListings.pm: - fixed some split calls where
	  the first arg was qw// instead of just   //. (thanks to Seamus
	  Venasse) - explicit about mkdir masks (using 0775 instead of
	  default 0777)

	  - fixed scraping problem where programs starting between 12pm and
	  1pm	with end times within that 12th hour we're getting adjusted
	  by 24 hour   instead of 0. - thanks Ed for this bug report.

2001-12-28 18:59  epaepa

	* README: Mentioned known bug in getlistings_na.

2001-12-28 18:33  epaepa

	* README.channels: Removed README.channels - it is obsolete now we
	  no longer have a separate channels file.  Sadly Goofy's channels
	  Perl module never got used, although XMLTV.pm provides something
	  similar.

2001-12-28 18:32  epaepa

	* getlistings_uk_ananova: Bumped version to XMLTV/0.4.

2001-12-28 18:31  epaepa

	* README: Updated README for version 0.4.

2001-12-28 17:57  epaepa

	* doc/QuickStart: Added an example of using getlistings_uk_ananova
	  to download individual channels and packages.

2001-12-28 17:56  epaepa

	* getlistings_uk_ananova: Added more fine-grained choosing of what
	  channels to download.  As well as regions you can now specify
	  channel names on the command line, or one of several hardcoded
	  channel packages.  We agreed on the mailing list that these
	  should be stored in separate files, but there isn't time to do
	  this for the 0.4 release.  (The whole directory structure needs
	  to be reorganized I think.)

2001-12-28 16:31  jveldhuis

	* getlistings_na: changed name of config file from .config_na to
	  .xmltv_na

2001-12-28 14:48  epaepa

	* getlistings_uk_ananova: Modified not to write duplicate display
	  names for channels that appear under two different Ananova ids.

2001-12-28 14:36  epaepa

	* channels.dtd: Removing channels.dtd, it was merged into
	  xmltv.dtd.

2001-12-28 14:34  epaepa

	* getlistings_uk_ananova: The --cache option now takes an argument
	  giving the cache filename.  Worked around an error in Ananova's
	  data.  Changed the internal names on a couple of channels to make
	  the digital and analogue versions distinct, since they differ a
	  tiny bit.

2001-12-28 14:32  epaepa

	* XMLTV.pm: Extra checking of attributes for the <programme>
	  element; added after I found I was writing 'end' instead of
	  'stop' in test cases!

2001-12-28 14:30  epaepa

	* sort_listings: Added code to remove duplicates.  This is useful
	  for Ananova's listings which give the same channel in several
	  files.  We also check to see if there are overlapping programmes
	  on the same channel (which must be wrong).

2001-12-28 11:29  epaepa

	* getlistings_uk_ananova: Bugfix: terrestrial channel codes end in
	  a digit, not begin.

2001-12-28 11:28  epaepa

	* tvcheck: Clarified usage message in comment (I hope).

2001-12-27 18:23  jveldhuis

	* ZapListings.pm: minor spelling fixes :)

2001-12-27 00:29  rmeden

	* README.tvcheck: updates to match tvhceck v1.4

2001-12-27 00:19  rmeden

	* tvcheck:
	  added anychan attribute added "sub-title" and "previously-shown"
	  to report.  added support for multiple languages changed to use
	  XMLTV.pm to read combined guide + channels.

2001-12-23 18:04  jveldhuis

	* getlistings_na: minor adjustment so we don't increment year more
	  than once on endofyear fixed

2001-12-23 18:01  jveldhuis

	* getlistings_na: now deals with cross-year listings properly.
	  Thanks to Brian J. Murrell who sent me the bug report. :)

2001-12-23 17:59  jveldhuis

	* ZapListings.pm: added Iranian to list of language identified add
	  dramma (french for drama) to items to look for.  idenfies
	  'lang-lang' program details just like (lang,lang)

2001-12-21 17:45  jveldhuis

	* getlistings_na: - default location of config file is
	  $HOME/.config_na.  - if HOME env variable not set, then
	  ./.config_na is used.  - updated usages message to reflect.

2001-12-21 14:10  epaepa

	* getlistings_uk_ananova: Moved setting $p{channel} for each
	  programme $p into get_file() where it belongs (dealt with FIXME).

2001-12-21 13:59  epaepa

	* getlistings_uk_ananova: Tidied away the ch_to_output hash so that
	  the ch_output() function is the only interface to it.

2001-12-21 13:46  epaepa

	* getlistings_uk_ananova: Just changed some comments.

2001-12-21 13:37  epaepa

	* getlistings_uk_ananova: Redid <video> and <audio> handling; now
	  if a programme is on a radio station we know that it has no
	  picture and does have sound (this deals with one FIXME).  Also if
	  a TV programme is stereo we know it has sound; if it's
	  black-and-white we know it has a picture.  Unfortunately we don't
	  get enough information to say for sure whether these things are
	  part of all programmes.  Fortunately the file format allows
	  'yes', 'no' - or missing for 'don't know'.

	  Cut down on bad date warnings when you're using the cache.

2001-12-21 06:14  rmeden

	* README.tvcheck: changed TVCHECK to "tvcheck" for correctness

2001-12-19 17:19  epaepa

	* xmltv.dtd: Bumped version number reflecting the inclusion of
	  channels; allowed channels to have icons.

2001-12-19 16:47  epaepa

	* getlistings_uk_ananova: Explicitly set Date::Manip's timezone so
	  it should work on Windows.

2001-12-19 16:06  epaepa

	* listings_to_latex: Removed confusing reference to
	  Lingua::Preferred (it's no longer called directly); added comment
	  warning about tmpnam() insecurity (but didn't bother to actually
	  fix the problem).

2001-12-19 16:05  epaepa

	* getlistings_uk_ananova: Fixed yet another [ text, lang ] bug;
	  reinstated memoization of date routines to get a small speedup;
	  added special-case code to avoid warning about a known
	  inconsistency ('Nickelodeon') in Ananova's data.

2001-12-19 15:10  epaepa

	* getlistings_uk_ananova: Removed the 'FIXME temporary speedup' and
	  replaced it with a --cache option to help debugging.	Adjusted
	  the (rather pointless) daytime/evening/latenight check to cope
	  with a 23:59 programme which Ananova classes as 'latenight'.

2001-12-19 12:27  epaepa

	* XMLTV.pm, listings_to_latex, pick_cgi: Both listings_to_latex and
	  pick_cgi had code to select one title (or description, etc) from
	  a list of several according to language and other factors.  I've
	  commonized this code into a routine best_name() in XMLTV.pm,
	  which chooses the best piece of text by first finding those that
	  are preferred because of their language, and if there is more
	  than one in this list, choosing between them based on which
	  appears first in the XMLTV file or based on a user-supplied
	  comparator.  listings_to_latex passes in a function which chooses
	  the shorter of two titles.  This might not work when none of the
	  available languages matches what's accepted by the user, should
	  test that.

	  Also modified pick_cgi to use XMLTV.pm instead of XML::Simple.

2001-12-19 12:21  epaepa

	* getlistings_uk_ananova: Fixed language-undefined bug where the [
	  text, lang ] pair was the wrong way round.  Hopefully I've now
	  eliminated all of these and standardized on putting text first
	  and (optionally) language second.

2001-12-17 05:08  rmeden

	* README.tvcheck: Initial load of README file for tvcheck

2001-12-17 02:51  rmeden

	* tvcheck: another attempt at the ID line.. maybe I should read the
	  manual

2001-12-17 02:47  rmeden

	* tvcheck: attempt to add version line

2001-12-14 00:05  jveldhuis

	* ZapListings.pm: - added a couple more languages

	  - now properly identifies subtitle declarations like:   "X and Y
	  subtitles"   "X with Y subtitles"   "X; Y subtitles"	 "X, Y
	  subtitles"   "X/Y subtitles"

	  - identifies dubbed declarations like   "X/Y"   "X,Y"   "X and Y"
	    "X with Y"

2001-12-14 00:05  jveldhuis

	* getlistings_na:
	  - added --output synonym for --listings to command line options

	  - --listings argument can also contain '%postalcode' or
	  '%zipcode'   which gets substituted based on configuration. This
	  allows   you to defined output files such as
	  %postalcode-%d%m%Y.xml   for instance.

	  - makes all missing directories to --listings output file.
	  This allows for --listings %d%m%Y/listings.xml

	  - now dubbed programmes include both 'orig-language' and
	  'language'   elements

2001-12-13 00:02  jveldhuis

	* getlistings_na: updated minor version #

2001-12-13 00:01  jveldhuis

	* getlistings_na: now attempts to deal with channels in channel #
	  order

2001-12-12 22:06  jveldhuis

	* getlistings_na: - should now conforms to new xmltv.dtd
	  (although I havn't run any output through a DOM parser)

	  - deprecated --programs and --channels as command line options
	  and added --listings

2001-12-12 21:28  jveldhuis

	* getlistings_na, ZapListings.pm: - added requirement for LWP 5.62
	  or later.  - added some new languages I found during overnight
	  use - fixed incorrect warnings about possibly missing program
	  details that appear in () but in the middle of the   program
	  descriptions.  - added check for some categories like (fiction)
	  (drama) that	 appear at the end of the program description
	  instead of   where the rest of the categories appear at the
	  beginning   of the program description.  - removed 'use
	  diagnositics' - --configure is interactive so I added a splash
	  screen with	a welcome message and version information that
	  might be   helpful down the road when doing problem diagnosis.

2001-12-11 18:18  epaepa

	* XMLTV.pm, ZapListings.pm, filter_shown, getlistings_na,
	  getlistings_uk_ananova, listings_to_latex, pick_cgi,
	  sort_listings, test_xmltv_module, xmltv.dtd,
	  doc/grabber_interface: Merged together the channels.dtd and
	  xmltv.dtd file formats, so a single XML file gives both
	  programmes and channels (with channels listed first).  This has
	  meant changing most programs which read or write these formats
	  (although the old tv.xml files will continue to work).  I took
	  the opportunity to rewrite XMLTV.pm so it inputs and outputs all
	  the different parts of the file format, although I'll probably
	  need to rewrite it again for speed.

	  XMLTV.pm now provides read_data() and write_data() routines which
	  deal with credits, channels and programmes in one go.  For lazy
	  writing of programmes you can use the XMLTV::Writer interface.

	  Getlistings_uk_ananova needed changing to handle the fact that
	  channels are written in the same file and _before_ any programe
	  details.  Also for the new cleaned-up XMLTV.pm interface which
	  insists on multivalued [ text, language ] pairs.  Added some new
	  channels which have appeared in the UK since the last update.

	  Listings_to_latex and sort_listings were rewritten to use
	  XMLTV.pm instead of XML::DOM.

	  Pick_cgi is probably *BROKEN* although I have made some fixes for
	  multivalued text-with-language.  I will fix it ASAP, I just
	  didn't want to wait any longer to get code out there.

	  Fixes to getlistings_na to comply with the old file format - but
	  _not_ yet to write channels and programmes in the same file.
	  That is still todo.

	  Small fixes to ZapListings.pm - not related to the xmltv.dtd
	  reorganization.

	  Added some test files and a test_xmltv_module program (which
	  should behave like cat(1) if the code is correct), but a proper
	  automated test suite remains to be done.

2001-12-05 01:29  jveldhuis

	* getlistings_na, ZapListings.pm: properly identifies:	 -
	  programme star ratings   - programme subtitles (include language
	  of subtitles as well)   - programme languages   - programme
	  ratings (MPAA, ESRB and VCHIP)   - fixed bug where dataElement
	  was called with one argument	 - better identification of valid
	  programme details   - better identification of possible updates
	  to identifiable     details list (ie new languages found)

	  properly identifies channels commented out of config file.

	  identifies and skips channels that are no longer available, but
	  appear in config file.

2001-11-29 06:15  rmeden

	* tvcheck: Initial load of tvcheck

2001-11-27 21:22  jveldhuis

	* getlistings_na: fixed check for getChannelList failing and
	  returning array with one undef element

2001-11-24 22:29  jveldhuis

	* mkdist: no longer ship Changelog.old

2001-11-24 22:27  jveldhuis

	* mkdist: no longer removes CVS dirs to tag can be done before tar
	  ball released

2001-11-24 22:25  jveldhuis

	* README, mkdist: prep work for 0.3.1, mkdist now removes CVS,leon
	  and todo dirs

2001-11-24 19:16  epaepa

	* doc/QuickStart: Added QuickStart doc from 0.3 release.

2001-11-24 00:12  jveldhuis

	* ZapListings.pm: 1. Fixed problems with cookies not getting set on
	  redirects.	 We now set the cookie_jar with the UserAgent and
	  the cookies	  get set automatically prior to requests.

	  2. dumpPage now increments counter so filenames actually change
	  :)

2001-11-22 18:24  epaepa

	* doc/coding_standards: Briefly explained the criteria I use for
	  adding features to the file format.

2001-11-21 20:42  jveldhuis

	* ZapListings.pm: increase in speed (my tests say 2 fold) with
	  cookie magic

2001-11-21 05:48  jveldhuis

	* ZapListings.pm, getlistings_na:
	  configure - now should work if you provide postal/zip code and
	  provider id		  on command line, cookie problems
	  prevented this from working.

	  grab - every grab starts off with warnings about new or missing
	  channels	  icons are grabbed from grid page to fill in
	  'icon' entries compliant	  with channels.dtd

2001-11-20 22:37  jveldhuis

	* xmltv.dtd: fixed id keyword

2001-11-20 15:25  jveldhuis

	* xmltv.dtd: added icon elements to programmes, ratings and
	  star-ratings

2001-11-20 15:24  jveldhuis

	* channels.dtd: added icon elements to channels

2001-11-20 15:13  epaepa

	* getlistings_uk_ananova: Moved the code to generate the hash of
	  channels into its own subroutine, channels_output().	The whole
	  thing is still a bit of a mess though.

2001-11-20 14:40  epaepa

	* getlistings_uk_ananova: Tidied up trailing spaces on comment
	  lines.  XEmacs flags them and they are kinda pointless, I've
	  decided.

2001-11-15 17:50  epaepa

	* ZapListings.pm: Removed _getChannelsList(), a subroutine which is
	  never called.  Probably it was some older version of the code.
	  Now we have CVS there's less need for that.

	  Created dumpPage(), a routine which makes a 'core dump' of an
	  HTML page for debugging.  This could probably replace existing
	  code to write out page content, if Jerry agrees.

	  Fixed channel-selection bug with some providers by making the
	  regexp more liberal.

2001-11-15 00:02  jveldhuis

	* ZapListings.pm, getlistings_na: fixed bug - looks like prototypes
	  don't  always work

2001-11-14 17:33  jveldhuis

	* getlistings_na: default --days is now 7 instead of 1

2001-11-14 17:13  jveldhuis

	* ZapListings.pm, getlistings_na: removed support for --startHour
	  and --endHour

2001-11-14 16:32  epaepa

	* README, ZapListings.pm, getlistings_na: New README / release
	  notes for 0.3 release.  Removed Beer-ware, we are now pure GPL
	  (but of course contributors are free to license their code under
	  other terms as well).

2001-11-14 16:31  epaepa

	* mkdist: Updated for move from RCS to CVS: you have to update the
	  ChangeLog manually (probably by running cvs2cl) before running
	  mkdist.

2001-11-14 16:15  epaepa

	* README, getlistings_uk_ananova: Bumped version number to 0.3,
	  reflecting new _na grabber.

2001-11-14 15:59  epaepa

	* getlistings_uk_ananova: Give a friendly(ish) usage message for
	  the --help option.

2001-11-14 13:47  epaepa

	* doc/coding_standards: Added guidelines for commenting
	  subroutines.

2001-11-13 20:46  jveldhuis

	* getlistings_na: removes white space from postal code

2001-11-13 14:53  epaepa

	* ZapListings.pm: Fixed date format (YYYY-MM-DD).

2001-11-13 13:53  epaepa

	* listings_to_latex: Quote characters better for LaTeX output - in
	  particular that broken-vertical-bar character appearing
	  mysteriously in some Spanish listings.

2001-11-12 22:46  jveldhuis

	* README, UK_TZ.pm, XMLTV.pm, ZapListings.pm, channels.dtd,
	  getlistings_na, getlistings_uk_ananova, listings_to_latex,
	  mkdist, pick_cgi, sort_listings, xmltv.dtd, README.channels,
	  filter_shown: removed \$Log entries as per xmltv-devel mailing
	  list discussion

2001-11-12 17:25  jveldhuis

	* getlistings_na: removed unneeded '&Date::Manip::' prefixes to
	  those subroutine calls.  with exception to unexported Date_Split
	  call.

	  fixed when new programs file is initialized.	not supports
	  emitting program 'previously-shown' attr.

2001-11-12 17:23  jveldhuis

	* ZapListings.pm: 'Repeat' in details now comes out as
	  'previously-shown' attr of program fixed some STDERR status
	  messages

2001-11-11 22:30  jveldhuis

	* ChangeLog.old, README, README.channels, UK_TZ.pm, XMLTV.pm,
	  channels.dtd, filter_shown, getlistings_uk_ananova,
	  listings_to_latex, mkdist, pick_cgi, sort_listings, xmltv.dtd,
	  doc/coding_standards: added \$Id \$ as approprate

2001-11-11 22:29  jveldhuis

	* ZapListings.pm: messages go to stderr, both status and debugging.
	   error messages or warnings try and include html that caused
	  failure.

	  acknowledges program detail 'AO' although I don't know what it
	  means exactly. Maybe adults only, but not part of any standard,
	  so we scrape and ignore.

	  how print STDERR message for each station page scraped to get
	  more feed back to user something is happening.

2001-11-11 22:26  jveldhuis

	* getlistings_na: now only writes channels file when approprate so
	  only writes is out every day if you've specified a filename that
	  contains imbedded date information, same as with programs
	  filenames.

	  prints summary statistics about how much and how fast the grabber
	  was

2001-11-11 22:18  jveldhuis

	* getlistings_ca, ClickListings.pm: no longer supported, use _na
	  for ca listings

2001-11-11 18:04  epaepa

	* doc/coding_standards: Added coding standards document, prompted
	  by my edict on the mailing list about the format of CVS log
	  messages.  Of course I will now look really silly if I fail to
	  follow the guidelines I wrote :-).

2001-11-11 17:49  epaepa

	* ZapListings.pm: Fixed a couple of syntax errors (don't know
	  whether I caused them last time).

2001-11-11 17:04  epaepa

	* ClickListings.pm: Changed a lot of 'print STDERR' to 'warn', it
	  makes it clearer what the purpose is.  Debug statements didn't
	  change since they're not actually warnings.

2001-11-11 16:44  epaepa

	* ClickListings.pm, README, README.channels, UK_TZ.pm, XMLTV.pm,
	  ZapListings.pm, channels.dtd, filter_shown, getlistings_ca,
	  getlistings_na, getlistings_uk_ananova, listings_to_latex,
	  mkdist, pick_cgi, sort_listings, xmltv.dtd,
	  analyse_tvprefs/analyse_tvprefs: Whoops, just realized that the
	  last changelog message would itself get keyword-expanded, causing
	  no end of confusion.	I had to perform some emergency censorship
	  of funny dollar signs.

2001-11-11 16:41  epaepa

	* ClickListings.pm, README, README.channels, UK_TZ.pm, XMLTV.pm,
	  ZapListings.pm, channels.dtd, filter_shown, getlistings_ca,
	  getlistings_na, getlistings_uk_ananova, listings_to_latex,
	  mkdist, pick_cgi, sort_listings, xmltv.dtd,
	  analyse_tvprefs/analyse_tvprefs: Rearranged (or added) comments
	  at the start of each file, so the description is near the top and
	  the changelog near the bottom.  Added $Log: $ lines to get an
	  automatically updated changelog from now on; I hope it works.

2001-11-11 15:57  epaepa

	* ChangeLog.old: Added the RCS version history (from rcs2log) to
	  ChangeLog.old.  From now on we will not edit a ChangeLog file,
	  all changes will be logged with CVS commit messages.

	  Still, I said the same thing when I moved to RCS - so perhaps we
	  will be doing this again in a year or so when we abandon CVS for
	  something else :-).

2001-11-11 15:37  epaepa

	* mkdist: Adding one remaining file from the old working/
	  directory: mkdist.  This is a quick and dirty shell script to
	  make a tarball of the current version.  I haven't tested that it
	  works with CVS working copies, that'll come when I make the next
	  release later today (I hope).

2001-11-11 15:35  epaepa

	* listings_to_latex: Moved prototypes higher up the file, so they
	  are seen by perl before any of the functions are called.  This
	  stops the annoying warnings under newer perls.

2001-11-11 15:34  epaepa

	* getlistings_uk_ananova: Added more prototype declarations to
	  avoid warnings under perl 5.6 (and to make the prototype checking
	  actually work, in fact).

	  Don't warn more than once for channel ids without a valid region
	  (caused by occasional strangeness at Ananova's end).

2001-11-11 15:21  epaepa

	* ChangeLog: Removing ChangeLog file; it was generated
	  automatically from RCS and will not be kept up to date with CVS
	  commits.  I plan to make a ChangeLog.old with announcements from
	  the RCS days and before; then whenever we make a release tarball
	  the ChangeLog file can be generated from the CVS logs.  It is not
	  itself kept in CVS.

2001-11-11 15:18  epaepa

	* towatch.dvi: Removing towatch.dvi, another old personal file from
	  working/.

2001-11-09 06:48  jveldhuis

	* ZapListings.pm, getlistings_na: minor adjustments

2001-11-09 06:25  jveldhuis

	* ZapListings.pm, getlistings_na:
	  Heres the beta version of the grabber for zap2it.com I went with
	  a slightly different approach to how to set things up.

	  There is a '--configure' command line arg that walks you through
	  the required sets for setting it up.

	  It will prompt you for a postal/zip code, let you choose from the
	  list of service providers in your area, then let you choose what
	  channels you want.  All of of the info collected during
	  --configure is saved in a config file (./.config_na by default)
	  and is used to when grabbing listings. All of this gets us around
	  the registration normally required by the site. The integration
	  is probably easily broken, so keep me posted on what you get for
	  errors.

	  You should read the 'known bugs' list in the top of the
	  getlistings_na file.

	  Please, please criticize to developers mailings list.

	  Otherwise, happy hunting.

2001-11-09 06:18  jveldhuis

	* ClickListings.pm: hacked to work with tvguide.ca instead of
	  clicktv.com

2001-11-09 06:18  jveldhuis

	* getlistings_ca: updated to work with tvguide.ca

2001-11-02 18:35  jveldhuis

	* TVChannels.pm, channels_nl.xml, channels_uk.xml, channeltest.pl,
	  doc.html, getlistings_nl, getlistings_pa, pick_process,
	  scrapped_getlistings_uk_ananova, test_memoize, test_xmltv_module,
	  tvprefs, tz.pl, uk_tz.pl: no longer included sometime previous to
	  0.2.10

2001-11-02 18:28  jveldhuis

	* ChangeLog, ClickListings.pm, README, XMLTV.pm, channels.dtd,
	  getlistings_na, getlistings_uk_ananova, sort_listings,
	  towatch.dvi, xmltv.dtd, analyse_tvprefs/bnc_freq.txt:
	  xmltv-0.2.10

2001-11-02 18:25  jveldhuis

	* ChangeLog, ClickListings.pm, README, README.channels, XMLTV.pm,
	  channels.dtd, getlistings_na, getlistings_uk_ananova,
	  listings_to_latex, xmltv.dtd, analyse_tvprefs/analyse_tvprefs:
	  xmltv-0.2.9

2001-11-02 18:24  jveldhuis

	* ChangeLog, ClickListings.pm, README, UK_TZ.pm, XMLTV.pm,
	  getlistings_na, getlistings_uk_ananova, listings_to_latex,
	  pick_cgi, scrapped_getlistings_uk_ananova, test_memoize,
	  test_xmltv_module, xmltv.dtd: xmltv-0.2.8

2001-11-02 18:22  jveldhuis

	* ChangeLog, README, getlistings_uk_ananova, pick_cgi: xmltv-0.2.7

2001-11-02 18:21  jveldhuis

	* ChangeLog, README, listings_to_latex, uk_tz.pl: xmltv-0.2.6

2001-11-02 18:20  jveldhuis

	* ChangeLog, README, README.channels, TVChannels.pm, channels.dtd,
	  channels_nl.xml, channels_uk.xml, channeltest.pl, getlistings_nl,
	  getlistings_uk_ananova, listings_to_latex, pick_cgi, tvprefs,
	  uk_tz.pl: xmltv-0.2.5

2001-11-02 18:15  jveldhuis

	* ChangeLog, README, doc.html, getlistings_ca, getlistings_nl,
	  getlistings_uk_ananova, listings_to_latex, pick_cgi,
	  sort_listings, uk_tz.pl: xmltv-0.2.4

2001-11-02 18:14  jveldhuis

	* ChangeLog, README, doc.html, pick_cgi: xmltv-0.2.3

2001-11-02 18:14  jveldhuis

	* ChangeLog, README, doc.html, getlistings_uk_ananova, uk_tz.pl:
	  xmltv-0.2.2

2001-11-02 18:13  jveldhuis

	* ChangeLog, ChangeLog.old, README, doc.html, filter_shown,
	  getlistings_ca, getlistings_nl, getlistings_uk_ananova,
	  listings_to_latex, pick_cgi, sort_listings, xmltv.dtd:
	  xmltv-0.2.1

2001-11-02 18:09  jveldhuis

	* ChangeLog, README, doc.html, filter_shown, getlistings_ca,
	  getlistings_nl, getlistings_uk_ananova, listings_to_latex,
	  pick_cgi, sort_listings, uk_tz.pl, xmltv.dtd: xmltv-0.2.0

2001-11-02 18:07  jveldhuis

	* ChangeLog, README, filter_shown, getlistings_pa,
	  listings_to_latex, pick_cgi, tz.pl, xmltv.dtd: xmltv-0.1.1

2001-11-02 17:58  jveldhuis

	* COPYING, ChangeLog, README, filter_shown, getlistings_pa,
	  listings_to_latex, pick_cgi, pick_process, xmltv.dtd: initial
	  revision