Exchange of fprintf(stderr, ...) with avrdude_message(...).

This change was made for the shared library, since library functions
should not write to std-streams directly. Instead avrdude_message()
has to be implemented by the library user. For the avrdude application
this function is implemented in main.c.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1305 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
Axel Wachtler
2014-05-18 08:41:46 +00:00
parent 52dd5cc7ac
commit eb5fcb581f
45 changed files with 2380 additions and 2896 deletions

88
dfu.c
View File

@@ -37,7 +37,7 @@
#ifndef HAVE_LIBUSB
struct dfu_dev *dfu_open(char *port_name) {
fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
avrdude_message("%s: Error: No USB support in this compile of avrdude\n",
progname);
return NULL;
}
@@ -110,7 +110,7 @@ struct dfu_dev * dfu_open(char *port_spec)
*/
if (strncmp(port_spec, "usb", 3) != 0) {
fprintf(stderr, "%s: Error: "
avrdude_message("%s: Error: "
"Invalid port specification \"%s\" for USB device\n",
progname, port_spec);
return NULL;
@@ -119,7 +119,7 @@ struct dfu_dev * dfu_open(char *port_spec)
if(':' == port_spec[3]) {
bus_name = strdup(port_spec + 3 + 1);
if (bus_name == NULL) {
fprintf(stderr, "%s: Out of memory in strdup\n", progname);
avrdude_message("%s: Out of memory in strdup\n", progname);
return NULL;
}
@@ -136,7 +136,7 @@ struct dfu_dev * dfu_open(char *port_spec)
if (dfu == NULL)
{
fprintf(stderr, "%s: out of memory\n", progname);
avrdude_message("%s: out of memory\n", progname);
return 0;
}
@@ -169,7 +169,7 @@ int dfu_init(struct dfu_dev *dfu, unsigned short vid, unsigned short pid)
*/
if (pid == 0 && dfu->dev_name == NULL) {
fprintf(stderr, "%s: Error: No DFU support for part; "
avrdude_message("%s: Error: No DFU support for part; "
"specify PID in config or USB address (via -P) to override.\n",
progname);
return -1;
@@ -206,20 +206,19 @@ int dfu_init(struct dfu_dev *dfu, unsigned short vid, unsigned short pid)
* why the match failed, and if we came across another DFU-capable part.
*/
fprintf(stderr, "%s: Error: No matching USB device found\n", progname);
avrdude_message("%s: Error: No matching USB device found\n", progname);
return -1;
}
if(verbose)
fprintf(stderr,
"%s: Found VID=0x%04x PID=0x%04x at %s:%s\n",
progname, found->descriptor.idVendor, found->descriptor.idProduct,
found->bus->dirname, found->filename);
avrdude_message("%s: Found VID=0x%04x PID=0x%04x at %s:%s\n",
progname, found->descriptor.idVendor, found->descriptor.idProduct,
found->bus->dirname, found->filename);
dfu->dev_handle = usb_open(found);
if (dfu->dev_handle == NULL) {
fprintf(stderr, "%s: Error: USB device at %s:%s: %s\n",
avrdude_message("%s: Error: USB device at %s:%s: %s\n",
progname, found->bus->dirname, found->filename, usb_strerror());
return -1;
}
@@ -271,7 +270,7 @@ int dfu_getstatus(struct dfu_dev *dfu, struct dfu_status *status)
int result;
if (verbose > 3)
fprintf(stderr, "%s: dfu_getstatus(): issuing control IN message\n",
avrdude_message("%s: dfu_getstatus(): issuing control IN message\n",
progname);
result = usb_control_msg(dfu->dev_handle,
@@ -279,31 +278,30 @@ int dfu_getstatus(struct dfu_dev *dfu, struct dfu_status *status)
(char*) status, sizeof(struct dfu_status), dfu->timeout);
if (result < 0) {
fprintf(stderr, "%s: Error: Failed to get DFU status: %s\n",
avrdude_message("%s: Error: Failed to get DFU status: %s\n",
progname, usb_strerror());
return -1;
}
if (result < sizeof(struct dfu_status)) {
fprintf(stderr, "%s: Error: Failed to get DFU status: %s\n",
avrdude_message("%s: Error: Failed to get DFU status: %s\n",
progname, "short read");
return -1;
}
if (result > sizeof(struct dfu_status)) {
fprintf(stderr, "%s: Error: Oversize read (should not happen); "
avrdude_message("%s: Error: Oversize read (should not happen); "
"exiting\n", progname);
exit(1);
}
if (verbose > 3)
fprintf(stderr,
"%s: dfu_getstatus(): bStatus 0x%02x, bwPollTimeout %d, bState 0x%02x, iString %d\n",
progname,
status->bStatus,
status->bwPollTimeout[0] | (status->bwPollTimeout[1] << 8) | (status->bwPollTimeout[2] << 16),
status->bState,
status->iString);
avrdude_message("%s: dfu_getstatus(): bStatus 0x%02x, bwPollTimeout %d, bState 0x%02x, iString %d\n",
progname,
status->bStatus,
status->bwPollTimeout[0] | (status->bwPollTimeout[1] << 8) | (status->bwPollTimeout[2] << 16),
status->bState,
status->iString);
return 0;
}
@@ -313,7 +311,7 @@ int dfu_clrstatus(struct dfu_dev *dfu)
int result;
if (verbose > 3)
fprintf(stderr, "%s: dfu_clrstatus(): issuing control OUT message\n",
avrdude_message("%s: dfu_clrstatus(): issuing control OUT message\n",
progname);
result = usb_control_msg(dfu->dev_handle,
@@ -321,7 +319,7 @@ int dfu_clrstatus(struct dfu_dev *dfu)
NULL, 0, dfu->timeout);
if (result < 0) {
fprintf(stderr, "%s: Error: Failed to clear DFU status: %s\n",
avrdude_message("%s: Error: Failed to clear DFU status: %s\n",
progname, usb_strerror());
return -1;
}
@@ -334,7 +332,7 @@ int dfu_abort(struct dfu_dev *dfu)
int result;
if (verbose > 3)
fprintf(stderr, "%s: dfu_abort(): issuing control OUT message\n",
avrdude_message("%s: dfu_abort(): issuing control OUT message\n",
progname);
result = usb_control_msg(dfu->dev_handle,
@@ -342,7 +340,7 @@ int dfu_abort(struct dfu_dev *dfu)
NULL, 0, dfu->timeout);
if (result < 0) {
fprintf(stderr, "%s: Error: Failed to reset DFU state: %s\n",
avrdude_message("%s: Error: Failed to reset DFU state: %s\n",
progname, usb_strerror());
return -1;
}
@@ -356,28 +354,27 @@ int dfu_dnload(struct dfu_dev *dfu, void *ptr, int size)
int result;
if (verbose > 3)
fprintf(stderr,
"%s: dfu_dnload(): issuing control OUT message, wIndex = %d, ptr = %p, size = %d\n",
progname, wIndex, ptr, size);
avrdude_message("%s: dfu_dnload(): issuing control OUT message, wIndex = %d, ptr = %p, size = %d\n",
progname, wIndex, ptr, size);
result = usb_control_msg(dfu->dev_handle,
USB_TYPE_CLASS | USB_RECIP_INTERFACE, DFU_DNLOAD, wIndex++, 0,
ptr, size, dfu->timeout);
if (result < 0) {
fprintf(stderr, "%s: Error: DFU_DNLOAD failed: %s\n",
avrdude_message("%s: Error: DFU_DNLOAD failed: %s\n",
progname, usb_strerror());
return -1;
}
if (result < size) {
fprintf(stderr, "%s: Error: DFU_DNLOAD failed: %s\n",
avrdude_message("%s: Error: DFU_DNLOAD failed: %s\n",
progname, "short write");
return -1;
}
if (result > size) {
fprintf(stderr, "%s: Error: Oversize write (should not happen); " \
avrdude_message("%s: Error: Oversize write (should not happen); " \
"exiting\n", progname);
exit(1);
}
@@ -390,28 +387,27 @@ int dfu_upload(struct dfu_dev *dfu, void *ptr, int size)
int result;
if (verbose > 3)
fprintf(stderr,
"%s: dfu_upload(): issuing control IN message, wIndex = %d, ptr = %p, size = %d\n",
progname, wIndex, ptr, size);
avrdude_message("%s: dfu_upload(): issuing control IN message, wIndex = %d, ptr = %p, size = %d\n",
progname, wIndex, ptr, size);
result = usb_control_msg(dfu->dev_handle,
0x80 | USB_TYPE_CLASS | USB_RECIP_INTERFACE, DFU_UPLOAD, wIndex++, 0,
ptr, size, dfu->timeout);
if (result < 0) {
fprintf(stderr, "%s: Error: DFU_UPLOAD failed: %s\n",
avrdude_message("%s: Error: DFU_UPLOAD failed: %s\n",
progname, usb_strerror());
return -1;
}
if (result < size) {
fprintf(stderr, "%s: Error: DFU_UPLOAD failed: %s\n",
avrdude_message("%s: Error: DFU_UPLOAD failed: %s\n",
progname, "short read");
return -1;
}
if (result > size) {
fprintf(stderr, "%s: Error: Oversize read (should not happen); "
avrdude_message("%s: Error: Oversize read (should not happen); "
"exiting\n", progname);
exit(1);
}
@@ -422,26 +418,26 @@ int dfu_upload(struct dfu_dev *dfu, void *ptr, int size)
void dfu_show_info(struct dfu_dev *dfu)
{
if (dfu->manf_str != NULL)
fprintf(stderr, " USB Vendor : %s (0x%04hX)\n",
avrdude_message(" USB Vendor : %s (0x%04hX)\n",
dfu->manf_str, (unsigned short) dfu->dev_desc.idVendor);
else
fprintf(stderr, " USB Vendor : 0x%04hX\n",
avrdude_message(" USB Vendor : 0x%04hX\n",
(unsigned short) dfu->dev_desc.idVendor);
if (dfu->prod_str != NULL)
fprintf(stderr, " USB Product : %s (0x%04hX)\n",
avrdude_message(" USB Product : %s (0x%04hX)\n",
dfu->prod_str, (unsigned short) dfu->dev_desc.idProduct);
else
fprintf(stderr, " USB Product : 0x%04hX\n",
avrdude_message(" USB Product : 0x%04hX\n",
(unsigned short) dfu->dev_desc.idProduct);
fprintf(stderr, " USB Release : %hu.%hu.%hu\n",
avrdude_message(" USB Release : %hu.%hu.%hu\n",
((unsigned short) dfu->dev_desc.bcdDevice >> 8) & 0xFF,
((unsigned short) dfu->dev_desc.bcdDevice >> 4) & 0xF,
((unsigned short) dfu->dev_desc.bcdDevice >> 0) & 0xF);
if (dfu->serno_str != NULL)
fprintf(stderr, " USB Serial No : %s\n", dfu->serno_str);
avrdude_message(" USB Serial No : %s\n", dfu->serno_str);
}
/* INTERNAL FUNCTION DEFINITIONS
@@ -458,7 +454,7 @@ char * get_usb_string(usb_dev_handle * dev_handle, int index) {
result = usb_get_string_simple(dev_handle, index, buffer, sizeof(buffer)-1);
if (result < 0) {
fprintf( stderr, "%s: Warning: Failed to read USB device string %d: %s\n",
avrdude_message("%s: Warning: Failed to read USB device string %d: %s\n",
progname, index, usb_strerror());
return NULL;
}
@@ -466,7 +462,7 @@ char * get_usb_string(usb_dev_handle * dev_handle, int index) {
str = malloc(result+1);
if (str == NULL) {
fprintf(stderr, "%s: Out of memory allocating a string\n", progname);
avrdude_message("%s: Out of memory allocating a string\n", progname);
return 0;
}