Fix jlink usb_bulk_with_retries to return actual error codes.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1564 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
zwelch 2009-04-29 06:30:44 +00:00
parent 5ee99a7e80
commit ae719b2706
1 changed files with 10 additions and 13 deletions

View File

@ -31,6 +31,7 @@
#include <usb.h> #include <usb.h>
#include <string.h> #include <string.h>
#include <errno.h>
#include "log.h" #include "log.h"
@ -867,21 +868,17 @@ static int usb_bulk_with_retries(
usb_dev_handle *dev, int ep, usb_dev_handle *dev, int ep,
char *bytes, int size, int timeout) char *bytes, int size, int timeout)
{ {
int rc = 0, tries = 3, this_size; int tries = 3, count = 0;
while (tries && size) { while (tries && (count < size))
{
this_size = f(dev, ep, bytes, size, timeout); int result = f(dev, ep, bytes + count, size - count, timeout);
if (this_size > 0) { if (result > 0)
count += result;
size -= this_size; else if ((-ETIMEDOUT != result) || !--tries)
rc += this_size; return result;
bytes += this_size;
} else
tries --;
} }
return rc; return count;
} }
static int wrap_usb_bulk_write(usb_dev_handle *dev, int ep, static int wrap_usb_bulk_write(usb_dev_handle *dev, int ep,