2015-04-28  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * configure.ac, Changelog, NEWS: update to version 2.1.1

2015-02-15  Aaro Koskinen <aaro.koskinen@iki.fi>

  * Align fw_handle buffer for 64-bit access

2014-06-10  Jonathan Woithe <jwoithe@just42.net>

  * Prevent requests for previously provided iso tx packets

2013-09-08  Lee Cewd <chasewind_5@hotmail.com>

  * Fix memory leak in response handler

2013-08-24  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Save and restore errno in raw1394_new_handle{,_on_port} for legacy applications

  * tools: Fix startup of dumpiso and sendiso on juju

2012-07-31  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Documentation improvement: return code of raw1394_read_cycle_timer{,_and_clock}

2012-07-29  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Changelog, NEWS: update to version 2.1.0

2012-06-30  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Add raw1394_get_speed() API

  * Trivial whitespace normalization in ieee1394.h and raw1394.h

  * Add 1394b speed codes to <libraw1394/{ieee,raw}1394.h>

  * Fix documentation of raw1394_iso_multichannel_recv_init()

2012-06-24  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Remove now unused code

2012-06-22  Igor Kuzmin <parafin@ximea.com>

  * Disable power-of-2 alignment of isochronous I/O buffers

  * Enable write access to isochronous reception buffer

2012-06-18  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Increase libtool version to 2.1.0

  * Add raw1394_read_cycle_timer_and_clock() API

  * Tweak raw1394_add_config_rom_descriptor() API, add documentation and test case

2011-03-24  B.J. Buchalter <bj@mhlabs.com>

  * Add raw1394_add_config_rom_descriptor() and raw1394_remove_config_rom_descriptor() API

2012-06-02  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * configure.ac, Changelog, NEWS etc.: update to version 2.0.9

2012-05-25  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Remove unused code

  * Include local firewire-*.h instead of system-wide <linux/firewire-*.h>

  * Add firewire-{cdev,constants}.h from Linux v3.4

2012-03-19  Clemens Ladisch <clemens@ladisch.de>

  * Implement raw1394_iso_recv_flush() on Juju

2012-02-19  Guus Sliepen <guus@sliepen.eu.org>

  * Fix incorrect use of == instead of =.

  * Remove UTF-8 whitespace.

2012-02-19  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * configure.ac, Changelog, NEWS etc.: update to version 2.0.8

2011-12-18  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Make a symbol static

2012-02-05  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Continue inotify event handling even after failure in one event

2010-10-27  Peter Hurley <phurley@charter.net>

  * Process multiple inotify events

  * Reset device fd upon error condition in handle_inotify()

2011-08-13  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * retry raw1394_read/write/lock/lock64 with delays after ack-busy

  * redirect Config ROM reads into the kernel's ROM cache

2011-03-08  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * configure.ac, Changelog, NEWS: update to version 2.0.7

2011-02-25  Clemens Ladisch <clemens@ladisch.de>

  * do not delay iso packet queueing

2011-02-24  Clemens Ladisch <clemens@ladisch.de>

  * fix start_on_cycle on firewire-core

2010-11-01  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * configure.ac, Changelog, NEWS etc.: update to version 2.0.6

2010-10-15  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * arm on firewire-core: Remove leftover debug printfs

2010-09-05  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Be more careful when copying response payloads on firewire-core

2010-08-05  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Fix FCP and ARM source node ID on firewire-core

  * Fix raw1394_iso_stop on firewire-core

2010-07-14  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Implement raw1394_(start_)phy_packet_write() on firewire-core

2010-06-20  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Filter incoming requests per card

  * Rename a few kernel ABI testing helpers

  * Do not use a random FW_CDEV_VERSION as our implemented ABI version

2010-06-05  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * tools/dumpiso: Add write() return code checks, fix harmless format string bug

  * tools/testlibraw: Fix a harmless format string bug

  * Always imply iso shutdown in fw_destroy_handle

  * Treat the kernel's iso context handle as opaque item

  * Add missing malloc failure checks

2010-04-16  Peter Hurley <phurley@charter.net>

  * Fix for overlooked device HUP with 'firewire' stack

2010-01-31  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Fix documentation of return values of raw1394_start_ family of functions

  * doc: let "make clean" remove generated HTML files

  * Document contact address (linux1394-devel) more clearly

2010-01-28  Sebastian Schueppel <sebastian.schueppel@etit.tu-chemnitz.de>

  * update README: replace outdated link to wiki

2010-01-09  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * Fix "make doc".

2009-12-26  Dan Dennedy <dan@dennedy.org>

  * NEWS, configure.ac: Set to version 2.0.5. 

  * ChangeLog: Update ChangeLog for release. 

  * NEWS: Update release notes. 

2009-11-23  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw-iso.c: Addendum to 'Calculate iso receive cycles on firewire-core' 
  The number of packets is a 4th of the number of header bytes (in case of ABI
  version 1).  Also, wrap after an increment over 8000. 

2009-11-19  Jay Fenlason <fenlason@redhat.com>

  * src/fw-iso.c, src/fw.c: Initialize unused fields in ioctl arguments  This
  change is essentially cosmetic:  Set fields of structs passed to the kernel
  via ioctl so that valgrind will not complain about them. 

  * src/fw-iso.c: Calculate iso receive cycles on firewire-core at ABI version
  1  More accurately report the cycle on which isochronous packets were
  received.  Only affects libraw1394 when used with kernel 2.6.29 or older. 

2009-11-04  Jay Fenlason <fenlason@redhat.com>

  * src/fw-iso.c: Fix default isochronous IRQ interval on firewire-core 
  libraw1394 takes a negative IRQ interval to mean "every 256 packets" with the
  juju backend, which doesn't work well if you don't queue that many.  Use
  buf_packets / 4 like the ieee1394 version. 

2009-08-30  Dan Dennedy <dan@dennedy.org>

  * doc/libraw1394.sgml: Update reference docs using kernel-doc. 

2009-06-30  Dan Dennedy <dan@dennedy.org>

  * ChangeLog, Makefile.am, NEWS, configure.ac: Fix build due to incomplete
  tarball. 

2009-06-29  Dan Dennedy <dan@dennedy.org>

  * ChangeLog: Update ChangeLog from git log. 

  * NEWS, configure.ac: Bump to v2.0.3 and update release notes. 

2009-06-18  Dan Dennedy <dan@dennedy.org>

  * configure.ac, src/Makefile.am: Fix build always expecting FW_DIR.  Date:
  Sun, 14 Jun 2009 11:51:33 +0100 From: Mike Auty <mike.auty@gmail.com>
  Subject: [patch libraw1394-2] src/makefile.am expects FW_DIR to be set, but
  configure only sets it if given --with-fw-dir  Here's a very small patch for
  the configure system of libraw1394-2.0.{0,1,2}.  At the moment, if configure
  is called without --with-fw-dir, then FW_DIR doesn't get specified.  The
  Makefile includes the line INCLUDES=-I$(FW_DIR) and so in the compilation we
  get a -I not followed by anything sensible.  That can cause compilation
  issues in certain circumstances (see Gentoo bug 272540), so this patch
  ensures that INCLUDES is only set if --with-fw-dir was specified.  Please let
  me know if there's any problems with the patch or if I've submitted it to the
  wrong place or in the wrong way.  Thanks...  Mike  5:)  [1]
  http://bugs.gentoo.org/272540 

2009-05-31  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw.c: Match only /dev/fw[0-9]* as firewire-core device files 
  Previously, /dev/fw* and hence files like /dev/fwmonitor were probed which
  may have bad effects if the client runs with access privileges. 

2009-05-30  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw.h: Remove an unused struct member 

  * src/fw.c: Fix memory leaks with async requests on firewire-core  Each
  request allocated a struct request_closure which was never freed. 

  * src/dispatch.c, src/fw.c, src/fw.h: Use new async stream ioctl  This
  implements asynchronous streams on juju, i.e. enables raw1394_async_stream()
  and raw1394_start_async_stream() to work with the new firewire kernel stack. 

2009-01-11  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw-iso.c: Iso reception: Use packet timestamps in juju ABI v2  In the
  firewire-cdev ABI v1, the kernel exported only the timestamp of interrupt
  packets.  libraw1394 estimated the cycle of all packets between interrupt
  packets by continuously incrementing the cycle.  In v2 of the ABI, we can
  obtain an accurate timestamp of each packet as provided by the OHCI
  controller.  AFAIU, this is also what you got from raw1394/ ohci1394. 

  * src/dispatch.c, src/fw.c, src/fw.h: Use new iso resource allocation ioctls 
  This allows raw1394_bandwidth_modify() and raw1394_channel_modify() to work
  on juju without write access to the IRM's character device file.  If either
  the build-time requirement of firewire-cdev header ABI >= v.2 or the runtime
  requirement of firewire-core ABI >= v.2 is not satisfied, the code falls back
  to transactions to the IRM as before. 

  * src/fw.c: Use new broadcast request ioctl  This implements broadcast
  transactions on juju. (Broadcast transactions are write transactions to PHY
  ID 63, not to be confused with isochronous or asynchronous streams.) 

2009-05-16  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * tools/testlibraw.c: testlibraw: fix printing of local config ROM  Since
  "testlibraw: test all cards instead of only the first", the actual ROM
  content wasn't printed anymore due to a mistake in a printf format string. 

2009-02-03  Dan Dennedy <dan@dennedy.org>

  * NEWS, configure.ac: bump version to 2.0.2 and add release notes 

  * src/fw-iso.c, src/fw.c, src/fw.h: Change the license of the "juju" fw*.[hc]
  files to LGPL v2.1 as approved by Kristian Hogsberg in an e-mail to the
  linux1394-devel mailing list on Feb 3, 2009. 

2009-01-14  Dan Dennedy <dan@dennedy.org>

  * NEWS, configure.ac: bump version and add release notes 

2009-01-11  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw.c: Set errno = ENOSYS in unimplemented functions  Most of them do
  this already, only a few missed it. 

2009-01-10  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw-iso.c, src/fw.c, src/fw.h: Work without permission to access local
  node's /dev/fw*  On 10 Jan, David Moore wrote: > On Sat, 2009-01-10 at 19:28
  +0100, Stefan Richter wrote: >> @@ -161,14 +160,16 @@
  scan_devices(fw_handle_t handle) ... >> +		for (j = 0; j < i; j++) >> +			if
  (ports[j].card == get_info.card) >> +				continue; >> + > > That continue
  statement doesn't do what you intended I think.  From: Stefan Richter
  <stefanr@s5r6.in-berlin.de> Subject: [PATCH] Work without permission to
  access local node's /dev/fw*  Fix for juju backend:  libraw1394 required
  write permission to the character device file of the local node(s) in order
  to enumerate cards and for a number of other operations.  This forced users
  to either run applications like dvgrab and kino with elevated privileges, or
  to configure write permission for all /dev/fw* or at least for local nodes'
  /dev/fw*.  We now use the first accessible file which was found for each card
  for as many tasks as possible, instead of the local node's file.  This allows
  distributors or admins to implement stricter access rights (default off, e.g.
  only on for AV/C and IIDC devices) without sacrificing functionality of said
  class of applications. Access to the local node is now only required by
  low-level tools like gscanbus. 

2008-12-20  David Moore <dcm@acm.org>

  * src/fw.c: Fix stack corruption during juju lock transactions  When
  performing a lock transaction (such as with fw_lock) under Juju, 4 bytes of
  the stack gets corrupted.  This is because the lock transaction has 8 bytes
  of data sent and 4 bytes received.  Since the transaction "length" is
  specified as 8, handle_device_event() copies 8 bytes into the destination
  variable instead of the desired 4, and overflows into the stack by 4 bytes. 
  This patch fixes the corruption by adding an extra "out_length" argument to
  the send_request() function so that both in_length and out_length can be
  specified separately. 

2008-12-09  Jarod Wilson <jarod@redhat.com>

  * src/fw-iso.c, src/fw.h: Fix iso_shutdown with juju firewire stack  Make iso
  start/stop/start sequences on the same handle, such as those used by apps
  such as MythTV behave as expected. I can finally watch video off my cable box
  over FireWire using MythTV w/the juju stack now. :)  Initially, seemed a
  one-liner might be the ticket (setting handle->iso.fd = -1 at the end of
  fw_iso_shutdown()), but that led to memory corruption and a locked up system.
  What ultimately worked was essentially mimicking what the old stack did to
  track iso state, and call fw_iso_stop() from fw_iso_shutdown() as needed. 
  Nb: Only lightly tested with iso receive via MythTV, but its all fairly
  straight-forward, I think. 

2008-12-07  Dan Dennedy <dan@dennedy.org>

  * Makefile.am: Checking /dev/raw1394 and recommendation for creating it for
  the install make target is no longer relevant because opf firewire and udev. 

2008-12-07  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * tools/testlibraw.c: testlibraw: test raw1394_read_cycle_timer() 

  * tools/testlibraw.c: testlibraw: test all cards instead of only the first 

2008-12-07  Dan Dennedy <dan@dennedy.org>

  * src/fw-iso.c: Let fw_read_cycle_timer() use the local fd instead of
  requiring iso to be initialized 

2008-12-02  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/dispatch.c, src/fw.c, src/fw.h: [libraw1394 patch] Unify
  {ieee1394,fw}_bandwidth_modify()  because they do the same.  We only may want
  a separate fw_bandwidth_modify() in the future when firewire-core gains a
  special ioctl() for that.  (Not runtime-tested, but it looks good to me.) 

  * src/dispatch.c, src/fw.c, src/fw.h, src/raw1394.h: [libraw1394 patch] Fix
  raw1394_channel_modify() on firewire-core (juju)  Reported by Adrian Knoth: 
  fw_channel_modify() was unable to allocate some channels which were actually
  free. http://marc.info/?l=linux1394-devel&t=122818128900002  This can be
  easily fixed by replacing fw_channel_modify() by ieee1394_channel_modify()
  because this is highlevel enough to work with Juju as well.  We only may want
  a separate fw_channel_modify() in the future when firewire-core gains a
  special ioctl() for that.  Also fix a documentation typo: 
  raw1394_channel_modify() did not show up in extracted API documentation due
  to a cut'n'paste typo in raw1394.h. 

2008-10-18  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/fw.c: Fix segfault in juju's handle_arm_request  The buffer pointers
  were uninitialized, leading to segfault in memcpy. Bug report and initial
  version of the fix by Adrian Knoth. 

  * src/dispatch.c: Reduce nesting depth in new_handle dispatchers 

  * src/arm.c, src/dispatch.c, src/eventloop.c, src/fw-iso.c, src/main.c:
  Address some compiler warnings  7x unused variable, 1x assignment used as
  truth value, 1x pointer signedness 

2008-09-30  Erik Hovland <erik@hovland.org>

  * src/fw.c: Makes extra sure strings are not overrun.  When using strncpy
  with the exact size of the destination string the string may end up lacking
  null termination because the source string is bigger then the destination. 

  * tools/testlibraw.c: Makes sure to check any return values  The return value
  of any function should be checked if that function uses the return value to
  provide some sort of status information. 

  * src/fw-iso.c: Makes sure a value is returned by the function.  A function
  can compile without returning something always. 

  * src/fw-iso.c, src/fw.c: Make sure that we have the right types.  When an
  unsigned type is assigned a signed value, the negatived value is never seen. 

  * src/fw.c: Compare unsigned values instead of subtracting them.  Unsigned
  values do not return signed values when subtracted and the right operand is
  larger then the left operand. 

  * src/dispatch.c, src/fw.c: Protect against resource leaks. 

  * src/fw-iso.c: Make sure variables are initialized before used. 

2008-07-21  Dan Dennedy <dan@dennedy.org>

  * src/dispatch.c: dispatch.c: fix a memory leak on not deleting the raw1394
  wrapper handle.

2008-07-18  Dan Dennedy <dan@dennedy.org>

  * Makefile.am, configure.ac: configure.ac, Makefile.am: drop debian from
  build and restore doc and tools to dist make target.

  * Makefile.am, NEWS: NEWS: added release notes Makefile.am: use git-log to
  generate ChangeLog on make dist.

  * INSTALL, configure.ac: Reset the libtool age.

2008-07-06  Dan Dennedy <dan@dennedy.org>

  * src/dispatch.c, src/errors.c, src/eventloop.c, src/main.c, src/raw1394.h:
  Change handle validation to prevent segfault and be more informative.

2008-06-21  Stefan Richter <stefanr@s5r6.in-berlin.de>

  * src/dispatch.c, src/fw-iso.c, src/fw.h, src/raw1394.h: Fix
  raw1394_read_cycle_timer after juju integration  The ieee1394 version of
  raw1394_read_cycle_timer() fell over the cliff in "First cut at integrating
  juju".  This brings it back and adds a juju version of it.  Also correct a
  typo in the inline documentation: s/get/read/

2008-06-16  Philippe Troin <phil@fifi.org>

  * src/fw-iso.c, src/fw.c, tools/testlibraw.c: Plug dir leak and initialize
  data structs  While trying to track down some crashes in kino, I found the
  following problems with libraw1394:  * There is a DIR* leak in
  raw1394_set_port(). * Lots of data structures are not fully initialized when
  calling IEEE1394 ioctl()s.  These cause valgrind errors (benign, as valgrind
  does not know how to interpret all ioctls.  However these also cause kino to
  crash in libraw1394.  I've added a bunch of memset()s to prevent this problem
  from happening.  Forward-ported to libraw1394 git tree by Jarod Wilson.

2008-04-30  Dan Dennedy <ddennedy@ddennedy.localdomain>

  * Makefile.am, configure.ac, juju/Makefile.am, juju/juju.h,
  juju/raw1394-iso.c, juju/raw1394.c, src/Makefile.am, src/dispatch.c,
  src/fw-iso.c, src/fw.c, src/fw.h, src/raw1394_private.h: Move the source code
  files in the juju directory into the src directory and give them 'fw' names
  instead of 'juju.'

2008-04-29  Dan Dennedy <ddennedy@kino.dennedy.org>

  * INSTALL, doc/libraw1394.sgml, src/raw1394.h: libraw1394.sgml, raw1394.h:
  remove information about deprecated isochronous API that has been removed.

2008-04-29  Dan Dennedy <ddennedy@ddennedy.localdomain>

  * juju/raw1394-iso.c: juju/raw1394-iso.c: bugfix size of mmap'ed isochronous
  buffer to prevent segfault in applications.

2008-04-23  Dan Dennedy <ddennedy@ddennedy.localdomain>

  * Makefile.am, configure.ac, juju/Makefile.am, juju/juju.h,
  juju/raw1394-iso.c, juju/raw1394.c, src/Makefile.am, src/arm.c,
  src/dispatch.c, src/errors.c, src/eventloop.c, src/fcp.c, src/iso.c,
  src/main.c, src/raw1394.h, src/raw1394_private.h, src/readwrite.c,
  tools/Makefile.am: First cut at integrating juju This is currently working
  with legacy ieee1394 and tools/testlibraw.

2008-04-22  Dan Dennedy <ddennedy@ddennedy.localdomain>

  * configure.ac: Fix configure.ac missing fi after initial merge.

2008-03-27  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/eventloop.c: src/eventloop.c: redo the undo (git-svn virgin at the
  controls)  

  * src/eventloop.c: eventloop.c: apply patch from Jonas Bonn to retrty read
  when failed with EINTR. This can occur when libraw1394 callera receives a
  signal while in the read and the caller is not using a signal handler set
  with signal().  

  * src/eventloop.c: eventloop.c: apply patch from Jonas Bonn to retry read
  when failed with EINTR. This can occur when libraw1394 caller receives a
  signal while in this read and the caller is not using a signal handler set
  with signal().  

2008-03-27  Dan Dennedy <ddennedy@ddennedy.localdomain>

  * src/eventloop.c: eventloop.c: apply patch from Jonas Bonn to retry read
  when failed with EINTR. This can occur when libraw1394 caller receives a
  signal while in this read and the caller is not using a signal handler set
  with signal().

2007-10-24  Jarod Wilson <jwilson@redhat.com>

  * juju/raw1394-iso.c: Set handle->iso.packets to NULL after freeing to avoid
  double-frees.

2007-10-14  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: fix documentation on raw1394_update_config_rom 

  * AUTHORS: add Pieter Palmers to AUTHORS as contributor 

  * NEWS: update release notes 

2007-06-13  Kristian Høgsberg <krh@redhat.com>

  * juju/juju.h, juju/raw1394-iso.c: Update the juju implementation to follow
  the recent bitfield changes.

2007-05-30  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.ac, src/readwrite.c: Apply patch from Jon Schewe
  <jon.schewe@honeywell.com> to make valgrind happy. Adds --with-valgrind
  configure option. 

2007-04-17  Kristian Høgsberg <krh@redhat.com>

  * juju/juju.h, juju/raw1394-iso.c: Follow ioctl changes and header file move.

2007-04-12  Jay Fenlason <fenlason@redhat.com>

  * juju/raw1394.c: Use correct payload size for two-operand lock transactions.

2007-04-12  Kristian Høgsberg <krh@redhat.com>

  * juju/raw1394-iso.c: Use power-of-two max packet sizes.

  * juju/raw1394-iso.c: Wrap receive tail pointer correctly.

2007-04-11  Kristian Høgsberg <krh@redhat.com>

  * juju/juju.h, juju/raw1394-iso.c: Refactor packet queueing and use for both
  xmit and recv.

2007-04-03  Kristian Høgsberg <krh@redhat.com>

  * juju/raw1394-iso.c, juju/raw1394.c: Fix warnings.

  * juju/raw1394-iso.c: Implement raw1394_iso_xmit_sync(), remove debug code.

  * juju/raw1394-iso.c: Handle rawiso dispositions.

  * juju/juju.h, juju/raw1394-iso.c: Fix xmit payload packing, use pointers for
  circular buffer indices.

  * juju/juju.h, juju/raw1394-iso.c: Make raw1394_iso_xmit_write work.

2007-04-02  Kristian Høgsberg <krh@redhat.com>

  * juju/juju.h, juju/raw1394-iso.c: More work on iso receive; handle payload
  wrapping.

2007-03-31  Kristian Høgsberg <krh@redhat.com>

  * juju/raw1394-iso.c: Decode iso headers properly.

2007-03-28  Kristian Høgsberg <krh@redhat.com>

  * juju/juju.h, juju/raw1394-iso.c, juju/raw1394.c: Get rawiso receive a
  little closer to working.

2007-03-26  Kristian Høgsberg <krh@redhat.com>

  * Makefile.am, configure.ac, juju/Makefile.am, juju/juju.h,
  juju/raw1394-iso.c, juju/raw1394.c, tools/Makefile.am, tools/testlibraw.c:
  Add the juju support work so far.

2007-02-17  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: add documentation about existence of RAW1394DEV 

  * src/main.c: add support for RAW1394DEV environment variable to override
  default /dev/raw1394, but also attempt to failover to default. 

2007-02-14  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.ac, src/ieee1394-ioctl.h, src/iso.c, src/kernel-raw1394.h,
  src/main.c, src/raw1394.h: added raw1394_read_cycle_timer, contributed by
  Pieter Palmers 

2006-10-17  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c: bugfix segfault in raw1394_iso_shutdown on no iso activity due
  to not initializing raw1394_handle.iso_packet_infos to NULL in
  raw1394_new_handle 

2006-05-09  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c: apply optimization patch from Pieter Palmers that removes modulo
  operator from high frequency isochronous code 

2006-04-09  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * INSTALL, src/eventloop.c, tools/sendiso.c: cleanup some compiler warnings 

  * NEWS: add release notes 

  * src/iso.c: lock allocated isochronous packet tracking memory 

  * src/iso.c, src/raw1394_private.h: remove memory allocations for isochronous
  operations from the libraw1394 event loop to make them more respectful of
  realtime applications 

2006-03-04  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c, src/raw1394.h: Added a new callback response for iso_xmit
  handlers: RAW1394_ISO_AGAIN. This would be returned when the callback doesn't
  have enough data to create a complete packet. This can occur when the xmit
  buffers are bigger than the buffers supplying the data. It is not
  nescessarily an error, because there are enough packets in the xmit buffer.
  This response could give the data supplyer more time to fill the intermediate
  buffer without losing any packets.   

2005-07-04  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c: Fix raw1394_iso_xmit_write() to work with recent kernel change
  to raw1394 to fix bug with stalling on buffer underrun.  

  * src/iso.c, src/raw1394.h: add sanity check to queuing of packets in rawiso
  xmit 

2005-07-01  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Add a comment that libraw does not allocate channels and
  bandwidth. This is already mentioned in doc/libraw1394.sgml but an existing
  comment about raw1394_iso_xmit_init may be misleading.   

2005-06-23  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.ac, src/iso.c: bugfix stalling on iso transmission underflow 

2005-06-02  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/libraw1394.sgml, src/raw1394.h: documentation and header comment
  corrections from Stefan Richter 

2005-02-16  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, configure.ac, doc/libraw1394.sgml, src/main.c, src/raw1394.h,
  src/raw1394_private.h: add functions for allocating and releasing bandwidth
  and channels 

2004-11-26  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c: add comment about assumptions made in raw1394_get_port_info 

2004-11-25  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c: apply patch from Matthias Hanel to fix uninitialized buffer and
  remove unncessary (and logically impossible) copy in get_port_info 

  * doc/libraw1394.sgml, src/raw1394.h: improve reference documentation 

2004-11-20  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * libraw1394.pc.in: pkgconfig include path should not contain libraw1394 

2004-11-19  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * tools/dumpiso.c, tools/sendiso.c: bump version of isodump file 

2004-11-18  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/raw1394.h, tools/dumpiso.c, tools/sendiso.c: port iso examples to
  rawiso API 

2004-11-11  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/libraw1394.sgml: fix version and copyright in docs 

  * configure.ac, libraw1394.m4: remove m4, remove -O2 from CFLAGS 

  * AUTHORS, INSTALL, NEWS, README, doc/libraw1394.sgml, src/arm.c,
  src/errors.c, src/eventloop.c, src/fcp.c, src/iso.c, src/main.c,
  src/raw1394.h, src/readwrite.c, src/version.c: reorganize and update
  documentation; fix compiler warning 

2004-10-31  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/kernel-raw1394.h: revert kernel protocol version 

  * debian/Makefile.am, doc/Makefile.am: fix make dist without doc 

2004-10-30  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/libraw1394.sgml: nother doc update 

  * ChangeLog, Makefile.am, NEWS, README, configure.ac, doc/Makefile.am,
  doc/libraw1394.sgml, libraw1394.spec.in, src/Makefile.am,
  src/kernel-raw1394.h, src/version.c, tools/Makefile.am: bump versions, build
  fixes, and doc updates 

2003-12-09  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Patch from Jim Radford. Other half of packet_per_buffer ABI
  cleanup.  

2003-11-20  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c, src/kernel-raw1394.h, src/raw1394.h: Patch from Alexander
  Neundorf to support differing ISO rx modes. Currently supported only by OHCI.
   

2003-11-09  weihs <weihs@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/arm.c, src/kernel-raw1394.h, src/raw1394.h: sync with driver (addition
  of functions raw1394_arm_get_buf raw1394_arm_set_buf to get and set buffers
  of mapped address ranges) 

  * src/ieee1394-ioctl.h: sync with driver version of this file 

2003-10-07  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Patch from Alexander Neundorf to add proto for
  raw1394_iso_recv_flush()  

2003-09-26  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/changelog, debian/copyright: Update for new version, 0.10.1.  

  * src/readwrite.c: Fixup async_stream to use same local req variable for
  reentrancy.  

  * debian/changelog, debian/libraw1394.postinst.in: Fix postinst so device
  node gets created.  

2003-09-11  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/kernel-raw1394.h, src/raw1394.h, src/readwrite.c: Async stream support
  from Jim Radford.  

2003-07-22  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.ac: Increase so maj/age so account for new recv-flush call.  

  * src/arm.c, src/eventloop.c, src/fcp.c, src/iso.c, src/main.c,
  src/raw1394_private.h, src/readwrite.c: Patch from Stephen Tiedemann to allow
  reentrancy in raw1394's usage of raw1394_request's.  

2003-07-17  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/ieee1394-ioctl.h, src/iso.c: Patch from Dan Maas to add
  raw1394_iso_recv_flush() call to API, using the RAW1394_IOC_ISO_RECV_FLUSH
  ioctl. Updated the ieee1394-ioctl.h file aswell.  

  * Makefile.am, configure.ac, libraw1394.pc.in: pkg-config support from
  Kristian Hogsberg.  

  * src/Makefile.am: Remove trailing whitespace, which automake chokes on. 
  Patch from Manish Singh.  

2003-07-13  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/control: Fixed section for -dev package.  

  * debian/rules: Re-add the pdf build 

  * debian/compat, debian/libraw1394.config.in, debian/libraw1394.templates.in,
  debian/rules: Update Debian files.  

  * debian/libraw1394.postinst.in: Ok, the Debian package was way out of sync
  with upstream 

  * autogen.sh, debian/control: Ooops...libtool works a bit different than I
  thought, but atleast it works like it is supposed to.  

  * debian/control, debian/libraw1394-dev.docs, debian/rules: Generate and
  install the pdf in the Debian package.  

  * autogen.sh: Don't run configure at the end of autogen.sh. Also, remove
  autom4te.cache.  

  * debian/control: Update Debian maintainer 

  * debian/changelog: Update Debian changelog.  

  * ChangeLog: File doesn't really seem needed. The NEWS file gives a good
  overview, and the svn log is more than verbose enough for info seekers.  

  * src/fcp.c, src/iso.c, tools/sendiso.c, tools/testlibraw.c: Fix compiler
  warnings.  

  * AUTHORS, NEWS, debian/control, debian/copyright: Updates from 0.10.0
  release.  

2003-04-23  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * autogen.sh: add libtoolize to bootstrap 

2003-04-21  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/libraw1394.sgml: added Dan Maas' rawiso docs 

2003-04-07  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c: new_handle_on_port() error path fix from Jim Radford 

2003-03-26  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c, src/raw1394.h: add raw1394_new_handle_on_port() convenience
  function 

2003-02-22  bencollins <bencollins@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/ieee1394-ioctl.h, src/iso.c, src/kernel-raw1394.h: Updates for new
  rawiso ioctl interface.  

2003-01-15  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c, src/kernel-raw1394.h, src/main.c, src/raw1394.h,
  src/raw1394_private.h: add iso_xmit_sync() and iso_xmit_write(); clean up iso
  handling a bit 

  * src/iso.c, src/kernel-raw1394.h, src/raw1394.h: implement tag matching for
  rawiso reception 

2003-01-05  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/Makefile.am, src/eventloop.c, src/iso-legacy.c, src/iso.c, src/main.c,
  src/raw1394_private.h, src/readwrite.c: emulate legacy ISO reception API on
  top of new rawiso API 

2002-12-24  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c, src/kernel-raw1394.h, src/raw1394.h, src/raw1394_private.h:
  update iso API for multi-channel reception and new packet buffer layout   

2002-12-20  anonymous <anonymous@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/kernel-raw1394.h: oops, irq_interval needs to be signed 

  * src/kernel-raw1394.h, src/main.c, src/raw1394.h: dmaas - renamed exported
  arm definitions into the raw1394_ namespace; brought kernel-raw1394.h back in
  sync with the kernel version 

2002-12-16  dmaas <dmaas@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/iso.c, src/kernel-raw1394.h, src/raw1394.h: rawiso updates: - changed
  return type of rawiso xmit/recv handlers from int to enum
  raw1394_iso_disposition  - added an ioctl (RAW1394_ISO_QUEUE_ACTIVITY) to
  force an ISO_ACTIVITY event into the queue. This is needed for handling
  RAW1394_ISO_DEFER, to kick us out of the next read() instead of sleeping
  forever.  - removed references to "8-byte" isochronous header - this is an
  OHCI-specific implementation detail  

2002-11-18  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: fix cplusplus extern C block 

  * src/Makefile.am, src/eventloop.c, src/iso.c, src/kernel-raw1394.h,
  src/main.c, src/raw1394.h, src/raw1394_private.h: merged rawiso branch 

2002-10-23  ddennedy <ddennedy@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/arm.c: added missing arm.c from weihs branch 

  * AUTHORS, ChangeLog, NEWS, configure.ac, src/Makefile.am, src/eventloop.c,
  src/kernel-raw1394.h, src/main.c, src/raw1394.h, src/raw1394_private.h,
  src/readwrite.c, tools/testlibraw.c: merged weihs branch 

2002-10-13  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.ac, configure.in: configure.ac: - Move configure.in to
  configure.ac (for autoconf 2.50+). - Set CFLAGS to "-Wall -O2" only if not in
  environment already. - Set package version to 1.0.0 already.  

  * src/errors.c, src/eventloop.c, src/fcp.c, src/iso.c, src/main.c,
  src/raw1394.h, src/readwrite.c, src/version.c: Add kernel-doc style
  documentation headers for most exported functions.  

2002-10-08  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * : Set the executable flags for autogen.sh and debian/rules that were lost
  in the CVS to SVN conversion.  

2001-08-01  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/changelog, debian/control, debian/libraw1394-potato.postinst.in,
  debian/libraw1394.postinst.in, debian/rules, doc/libraw1394.sgml: Add
  raw1394_get_local_id, _irm_id, _nodecount refentry.  

2001-07-09  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/libraw1394.sgml: Reworked some paragraphs. Added chapters on generation
  numbers and error codes. Added some function reference entries.  

2001-06-27  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/copyright: Modify info in Debian package copyright file a bit.  

  * NEWS, src/errors.c: Fix wrong error mapping in raw1394_error_to_errno() on
  local transactions.  

2001-06-17  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, debian/changelog, debian/libraw1394-potato.postinst.in,
  debian/libraw1394.postinst.in, doc/Makefile.am: debian: Let postinst continue
  even if input is /dev/null. debian: 0.9.0-2 release for the above. Fix mixed
  up sections for isodump man file in doc/Makefile.am and configure.in.  

2001-06-11  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, doc/Makefile.am, doc/dumpiso.1.in, doc/isodump.5.in,
  doc/sendiso.1.in: Added man page describing format of the iso dump file.  

2001-06-08  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * doc/dumpiso.1.in, doc/sendiso.1.in: Forgot to add dumpiso and sendiso man
  pages to repository, fixed.  

  * Makefile.am, NEWS, configure.in, doc/Makefile.am, src/Makefile.am,
  src/testlibraw.c, tools/Makefile.am, tools/dumpiso.c, tools/sendiso.c,
  tools/testlibraw.c: Moved testlibraw.c from src to tools directory. Added
  sendiso and dumpiso programs in tools directory. Added man pages for sendiso
  and dumpiso in doc directory.  

2001-05-30  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/rules: debian: Remove a now useless substvar.  

2001-05-28  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/rules: debian: Make shlibs file versioned. debian: Remove local
  shlib dependency kludge and replace with -l option for dh_shlibdeps.  

2001-05-25  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/changelog, debian/libraw1394-dev.docs: Revert move of HTML directory
  from libraw1394 to libraw1394.html  

  * doc/Makefile.am: Revert move of HTML directory from libraw1394 to
  libraw1394.html  

2001-05-24  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/Makefile.am, debian/changelog, debian/control,
  debian/libraw1394-dev.docs, debian/rules, doc/Makefile.am: Move HTML
  formatted documentation subdir from libraw1394 to libraw1394.html. Update
  Debian control files to generate version 0.9.0-1 package.  

2001-05-14  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * Makefile.am, NEWS, README, configure.in, doc/Makefile.am,
  doc/libraw1394.sgml, src/eventloop.c, src/main.c, src/raw1394.h,
  src/version.c: Handle generation number is not automatically advanced with
  bus reset. Function raw1394_update_generation() added for manual update. Bus
  reset handler get current generation number as argument. Default bus reset
  handler calls raw1394_update_generation().  

  * libraw1394.m4: Fix macros so that they actually work.  

2001-05-07  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * Makefile.am, NEWS, debian/control, debian/rules: Fix Makefile.am to include
  libraw1394.m4 in distribution. Update NEWS. Some Debian packaging updates.  

2001-03-21  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c: Store returned generation count after setting of port.  

2001-02-28  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * Makefile.am: Install libraw1394.am. Fix wording in message when
  /dev/raw1394 not found.  

  * Makefile.am, configure.in, doc/Makefile.am, doc/testlibraw.1.in,
  src/Makefile.am: testlibraw gets installed now. Added man page for
  testlibraw.  

2001-02-27  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/eventloop.c: Let received iso header be big endian, to be consistent.  

2001-02-05  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, libraw1394.m4, src/Makefile.am, src/raw1394.h, src/version.c:
  Add libraw1394 autoconf macro (not yet complete). Add functions and symbols
  to let macro determine version.  

2001-01-31  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Put 'extern "C"' for C++ back in.  

2001-01-27  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/testlibraw.c: Adapted testlibraw to new style error handling.  

2001-01-19  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/Makefile.am, src/errors.c: Fix building errors.c.  

  * configure.in, src/errors.c, src/eventloop.c, src/main.c, src/raw1394.h,
  src/raw1394_private.h, src/readwrite.c: First implementation of new error
  reporting API.  

2001-01-04  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, debian/changelog, debian/libraw1394.postinst.in: Fix
  misplaced device file in Debian installation.  

2000-12-12  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, debian/Makefile.am, debian/changelog, debian/control,
  debian/libraw1394-potato.postinst.in, debian/libraw1394.postinst.in,
  debian/rules: Debian scripts use makedev (>=2.3.1-49) in postinst by default
  now. Postinst script using mknod added as alternative. Revision bumped up to
  0.8.1.  

2000-11-25  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/libraw1394.postinst.in, debian/rules: Fix postinst ldconfig. Fix
  device file creation. Install NEWS and README as documentation in the dev
  package.  

  * README: Add some information about return values.  

2000-11-24  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, debian/changelog: Bump up version numbers for release.  

  * debian/Makefile.am, debian/libraw1394.postinst.in, debian/rules: Added
  libraw1394.postinst.in to list of distributed files.  

2000-11-23  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * debian/libraw1394.postinst.in, debian/rules: Add ldconfig in deb postinst
  for Debian policy conformance.  

  * acconfig.h: Removed acconfig.h, which wasn't needed for some time.  

2000-11-22  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/Makefile.am, src/ieee1394.h: Added ieee1394.h header.  

2000-09-13  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/readwrite.c: Fix raw1394_start_iso_write() which uses wrong variable.  

2000-09-10  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, src/fcp.c, src/iso.c, src/main.c, src/raw1394_private.h,
  src/readwrite.c: Work around compiler warnings for int/ptr casts.  

  * debian/Makefile.am, debian/README, debian/changelog, debian/control,
  debian/copyright, debian/rules: Added control files for Debian packages.  

2000-09-01  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Added missing prototypes for iso send functions.  

2000-08-08  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/eventloop.c, src/kernel-raw1394.h, src/main.c, src/raw1394.h,
  src/raw1394_private.h, src/testlibraw.c: Added raw1394_get_irm_id().  

2000-08-06  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/kernel-raw1394.h, src/readwrite.c: Added support for isochronous
  sending.  

2000-07-05  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/kernel-raw1394.h, src/main.c, src/raw1394.h: Added
  raw1394_reset_bus() call.  

2000-06-22  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, src/Makefile.am, src/main.c, src/testlibraw.c: - Set library
  version info in configure.in, use in src/Makefile.am. - Enable compiler
  warnings.  

2000-06-15  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, src/Makefile.am: Update libtool version number.  

2000-06-14  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/eventloop.c, src/fcp.c, src/iso.c, src/main.c, src/readwrite.c,
  src/testlibraw.c: Added copyright headers.  

2000-06-11  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in: Added explicit AC_PROG_INSTALL call.  

2000-06-09  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/kernel-raw1394.h: Fix size of error field.  

2000-06-02  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, configure.in, src/fcp.c, src/iso.c, src/kernel-raw1394.h, src/main.c,
  src/readwrite.c: Modified support for 32/64 bit environments, control struct
  fields have fixed size now.  

2000-05-28  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * acconfig.h, configure.in, src/eventloop.c, src/fcp.c, src/iso.c,
  src/kernel-raw1394.h, src/main.c, src/readwrite.c: Added support for
  environments with 64 bit kernel and 32 bit userland.  

2000-04-27  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/readwrite.c: Fixed missing setting of ext code in raw1394_start_lock() 

2000-04-15  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, src/raw1394.h, src/readwrite.c: Fixed lock transaction to actually
  return response value.  

2000-04-12  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS: Add userdata functions as news.  

2000-04-05  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/main.c, src/raw1394.h, src/raw1394_private.h: Add userdata functions.  

2000-03-18  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * Makefile.am, configure.in, debian/Makefile.am: Bump version number to 0.6. 

  * NEWS: Mention byte order change.  

  * README: Mention SourceForge home.  

  * autogen.sh: Add script to generate Makefiles from bare CVS checkout.  

2000-03-17  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/Makefile.am: Version++ and age++ for libtool version info.  

2000-03-16  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS: - Added FCP monitoring entry - Added old 0.5 news  

  * src/fcp.c, src/testlibraw.c: Added FCP monitoring test.  

  * src/testlibraw.c: Use correct typedef in my_tag_handler().  

  * src/raw1394.h: Fix spelign of raw1394_set_fcp_handler().  

  * src/Makefile.am, src/eventloop.c, src/fcp.c, src/kernel-raw1394.h,
  src/raw1394.h, src/raw1394_private.h: Added FCP listen functionality.  

  * configure.in: Removed obsolete AC_PROG_RANLIB.  

2000-03-12  aeb <aeb@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * COPYING.LIB: Ensure this ends up in distributions.  

  * src/raw1394.h: Renamed 'new' args to 'new_h' for C++ compatibility.  

2000-02-06  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in: Version changed to 0.5  

  * src/raw1394.h, src/readwrite.c: Added lock transaction.  

2000-02-04  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * configure.in, src/Makefile.am, src/eventloop.c, src/main.c, src/raw1394.h,
  src/raw1394_private.h: Changed iso rcv handling to separate handlers per
  channel.  

2000-01-02  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * Makefile.am: Added dev target to Makefile  

1999-12-29  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * NEWS, configure.in, src/Makefile.am, src/iso.c, src/kernel-raw1394.h,
  src/main.c, src/raw1394.h, src/raw1394_private.h, src/readwrite.c: Added
  isochronous I/O support  

1999-12-18  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/csr.h: - Added FCP register addresses - Added #ifdef for multiple
  inclusion  

1999-12-15  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * src/raw1394.h: Added prototypes for async write functions  

1999-12-02  abombe <abombe@53a565d1-3bb7-0310-b661-cf11e63c67ab>

  * AUTHORS, INSTALL, Makefile.am, README, configure.in, debian/README,
  src/Makefile.am, src/csr.h, src/eventloop.c, src/kernel-raw1394.h,
  src/main.c, src/raw1394.h, src/raw1394_private.h, src/readwrite.c,
  src/testlibraw.c: Initial revision  
