From 3e7897371a9385a75b79daa34f108d73acbf4a5a Mon Sep 17 00:00:00 2001
From: dhoerl <dhoerl@81a1dc3b-b13d-400b-aceb-764788c761c2>
Date: Sun, 29 Nov 2009 20:19:15 +0000
Subject: [PATCH] * fileio.c: ihex2bin did not properly handle files > 64K
 bytes * usb_libusb.c: re-enabled usb_reset for Macs (no reset causes lots of
 failures) * avrdude.1: spacing issue for ucr2 fixed.

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@880 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 ChangeLog    | 6 ++++++
 avrdude.1    | 2 +-
 fileio.c     | 6 +++---
 usb_libusb.c | 2 +-
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9a422c73..1f993cbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-11-09  David Hoerl <dhoerl@mac.com>
+
+	* fileio.c: ihex2bin did not properly handle files > 64K bytes
+	* usb_libusb.c: re-enabled usb_reset for Macs (no reset causes lots of failures)
+	* avrdude.1: spacing issue for avr32 fixed.
+
 2009-11-09  Michal Ludvig  <mludvig@logix.net.nz>
 
 	* buspirate.c: Implemented reset= and speed= extended parameters.
diff --git a/avrdude.1 b/avrdude.1
index f03f1c49..c3065111 100644
--- a/avrdude.1
+++ b/avrdude.1
@@ -244,7 +244,7 @@ t25	ATtiny25
 t26	ATtiny26
 t45	ATtiny45
 t85	ATtiny85
-ucr2    AT32uca0512
+ucr2	AT32uca0512
 x128a1	ATxmega128A1
 x128a1d	ATxmega128A1revD
 .TE
diff --git a/fileio.c b/fileio.c
index 08d3340f..421de457 100644
--- a/fileio.c
+++ b/fileio.c
@@ -261,7 +261,6 @@ static int ihex_readrec(struct ihexrec * ihex, char * rec)
  * If an error occurs, return -1.
  *
  * */
-
 static int ihex2b(char * infile, FILE * inf,
              unsigned char * outbuf, int bufsize)
 {
@@ -279,6 +278,7 @@ static int ihex2b(char * infile, FILE * inf,
   baseaddr    = 0;
   maxaddr     = 0;
   offsetaddr  = 0;
+  nextaddr    = 0;
 
   while (fgets((char *)buffer,MAX_LINE_LEN,inf)!=NULL) {
     lineno++;
@@ -332,7 +332,7 @@ static int ihex2b(char * infile, FILE * inf,
 
       case 4: /* extended linear address record */
         baseaddr = (ihex.data[0] << 24 | ihex.data[1]) << 16;
-        if(offsetaddr == 0) offsetaddr = baseaddr;
+        if(nextaddr == 0) offsetaddr = baseaddr;	// if provided before any data, then remember it
         break;
 
       case 5: /* start linear address record */
@@ -358,7 +358,6 @@ static int ihex2b(char * infile, FILE * inf,
   return maxaddr-offsetaddr;
 }
 
-
 static int b2srec(unsigned char * inbuf, int bufsize, 
            int recsize, int startaddr,
            char * outfile, FILE * outf)
@@ -1155,6 +1154,7 @@ int fileio(int op, char * filename, FILEFMT format,
   if (format != FMT_IMM && !using_stdio) {
     fclose(f);
   }
+
   return rc;
 }
 
diff --git a/usb_libusb.c b/usb_libusb.c
index a051e89c..679f2eff 100644
--- a/usb_libusb.c
+++ b/usb_libusb.c
@@ -239,7 +239,7 @@ static void usbdev_close(union filedescriptor *fd)
 
   (void)usb_release_interface(udev, usb_interface);
 
-#if !( defined(__FreeBSD__) || ( defined(__APPLE__) && defined(__MACH__) ) )
+#if !( defined(__FreeBSD__) ) // || ( defined(__APPLE__) && defined(__MACH__) ) )
   /*
    * Without this reset, the AVRISP mkII seems to stall the second
    * time we try to connect to it.  This is not necessary on