* serial_open() calls will now return -1 on error (no call to exit())

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@948 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
Nils Springob 2010-10-22 14:29:56 +00:00
parent f1bf228061
commit 0c603e4791
13 changed files with 82 additions and 26 deletions

View File

@ -1,3 +1,18 @@
2010-10-22 Nils Springob <nils@nicai-systems.de>
* serial.h: serial_open() calls will now return -1 on error (no call to exit())
* buspirate.c: (Dito.)
* jtagmkII.c: (Dito.)
* butterfly.c: (Dito.)
* jtagmkI.c: (Dito.)
* arduino.c: (Dito.)
* avr910.c: (Dito.)
* stk500.c: (Dito.)
* ser_avrdoper.c: (Dito.)
* stk500v2.c: (Dito.)
* ser_posix.c: (Dito.)
* usb_libusb.c: (Dito.)
2010-07-27 Joerg Wunsch <j.gnu@uriah.heep.sax.de> 2010-07-27 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
bug #30566: MinGW + Ubuntu 9.04 bug #30566: MinGW + Ubuntu 9.04

View File

@ -86,7 +86,9 @@ static int arduino_read_sig_bytes(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m)
static int arduino_open(PROGRAMMER * pgm, char * port) static int arduino_open(PROGRAMMER * pgm, char * port)
{ {
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, pgm->baudrate? pgm->baudrate: 115200, &pgm->fd); if (serial_open(port, pgm->baudrate? pgm->baudrate: 115200, &pgm->fd)==-1) {
return -1;
}
/* Clear DTR and RTS to unload the RESET capacitor /* Clear DTR and RTS to unload the RESET capacitor
* (for example in Arduino) */ * (for example in Arduino) */

View File

@ -383,7 +383,9 @@ static int avr910_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, pgm->baudrate, &pgm->fd); if (serial_open(port, pgm->baudrate, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -374,7 +374,9 @@ static int buspirate_open(struct programmer_t *pgm, char * port)
pgm->baudrate = 115200; pgm->baudrate = 115200;
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, pgm->baudrate, &pgm->fd); if (serial_open(port, pgm->baudrate, &pgm->fd)==-1) {
return -1;
}
/* drain any extraneous input */ /* drain any extraneous input */
serial_drain(&pgm->fd, 0); serial_drain(&pgm->fd, 0);

View File

@ -356,7 +356,9 @@ static int butterfly_open(PROGRAMMER * pgm, char * port)
if(pgm->baudrate == 0) { if(pgm->baudrate == 0) {
pgm->baudrate = 19200; pgm->baudrate = 19200;
} }
serial_open(port, pgm->baudrate, &pgm->fd); if (serial_open(port, pgm->baudrate, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -673,7 +673,9 @@ static int jtagmkI_open(PROGRAMMER * pgm, char * port)
fprintf(stderr, fprintf(stderr,
"%s: jtagmkI_open(): trying to sync at baud rate %ld:\n", "%s: jtagmkI_open(): trying to sync at baud rate %ld:\n",
progname, baudtab[i].baud); progname, baudtab[i].baud);
serial_open(port, baudtab[i].baud, &pgm->fd); if (serial_open(port, baudtab[i].baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -1420,7 +1420,9 @@ static int jtagmkII_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1465,7 +1467,9 @@ static int jtagmkII_open_dw(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1510,7 +1514,9 @@ static int jtagmkII_open_pdi(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1556,7 +1562,9 @@ static int jtagmkII_dragon_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1602,7 +1610,9 @@ static int jtagmkII_dragon_open_dw(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1648,7 +1658,9 @@ static int jtagmkII_dragon_open_pdi(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -3118,7 +3130,9 @@ static int jtagmkII_open32(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -504,7 +504,7 @@ static char *usbErrorText(int usbErrno)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
static void avrdoper_open(char *port, long baud, union filedescriptor *fdp) static int avrdoper_open(char *port, long baud, union filedescriptor *fdp)
{ {
int rval; int rval;
char *vname = "obdev.at"; char *vname = "obdev.at";
@ -514,7 +514,9 @@ static void avrdoper_open(char *port, long baud, union filedescriptor *fdp)
if(rval != 0){ if(rval != 0){
fprintf(stderr, "%s: avrdoper_open(): %s\n", progname, usbErrorText(rval)); fprintf(stderr, "%s: avrdoper_open(): %s\n", progname, usbErrorText(rval));
exit(1); exit(1);
//return -1;
} }
return 0;
} }
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */

View File

@ -247,7 +247,7 @@ static int ser_set_dtr_rts(union filedescriptor *fdp, int is_on)
return 0; return 0;
} }
static void ser_open(char * port, long baud, union filedescriptor *fdp) static int ser_open(char * port, long baud, union filedescriptor *fdp)
{ {
int rc; int rc;
int fd; int fd;
@ -258,7 +258,7 @@ static void ser_open(char * port, long baud, union filedescriptor *fdp)
*/ */
if (strncmp(port, "net:", strlen("net:")) == 0) { if (strncmp(port, "net:", strlen("net:")) == 0) {
net_open(port + strlen("net:"), fdp); net_open(port + strlen("net:"), fdp);
return; return 0;
} }
/* /*
@ -268,7 +268,7 @@ static void ser_open(char * port, long baud, union filedescriptor *fdp)
if (fd < 0) { if (fd < 0) {
fprintf(stderr, "%s: ser_open(): can't open device \"%s\": %s\n", fprintf(stderr, "%s: ser_open(): can't open device \"%s\": %s\n",
progname, port, strerror(errno)); progname, port, strerror(errno));
exit(1); return -1;
} }
fdp->ifd = fd; fdp->ifd = fd;
@ -281,8 +281,10 @@ static void ser_open(char * port, long baud, union filedescriptor *fdp)
fprintf(stderr, fprintf(stderr,
"%s: ser_open(): can't set attributes for device \"%s\": %s\n", "%s: ser_open(): can't set attributes for device \"%s\": %s\n",
progname, port, strerror(-rc)); progname, port, strerror(-rc));
exit(1); close(fd);
return -1;
} }
return 0;
} }

View File

@ -44,7 +44,8 @@ union filedescriptor
struct serial_device struct serial_device
{ {
void (*open)(char * port, long baud, union filedescriptor *fd); // open should return -1 on error, other values on success
int (*open)(char * port, long baud, union filedescriptor *fd);
int (*setspeed)(union filedescriptor *fd, long baud); int (*setspeed)(union filedescriptor *fd, long baud);
void (*close)(union filedescriptor *fd); void (*close)(union filedescriptor *fd);

View File

@ -657,7 +657,9 @@ static void stk500_enable(PROGRAMMER * pgm)
static int stk500_open(PROGRAMMER * pgm, char * port) static int stk500_open(PROGRAMMER * pgm, char * port)
{ {
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, pgm->baudrate? pgm->baudrate: 115200, &pgm->fd); if (serial_open(port, pgm->baudrate? pgm->baudrate: 115200, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -1313,7 +1313,9 @@ static int stk500v2_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -1363,7 +1365,9 @@ static int stk600_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -2818,7 +2822,9 @@ static int stk500v2_jtagmkII_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -2906,7 +2912,9 @@ static int stk500v2_dragon_isp_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input
@ -2977,7 +2985,9 @@ static int stk500v2_dragon_hv_open(PROGRAMMER * pgm, char * port)
} }
strcpy(pgm->port, port); strcpy(pgm->port, port);
serial_open(port, baud, &pgm->fd); if (serial_open(port, baud, &pgm->fd)==-1) {
return -1;
}
/* /*
* drain any extraneous input * drain any extraneous input

View File

@ -56,7 +56,7 @@ static int usb_interface;
* The "baud" parameter is meaningless for USB devices, so we reuse it * The "baud" parameter is meaningless for USB devices, so we reuse it
* to pass the desired USB device ID. * to pass the desired USB device ID.
*/ */
static void usbdev_open(char * port, long baud, union filedescriptor *fd) static int usbdev_open(char * port, long baud, union filedescriptor *fd)
{ {
char string[256]; char string[256];
char product[256]; char product[256];
@ -220,7 +220,7 @@ static void usbdev_open(char * port, long baud, union filedescriptor *fd)
progname, USBDEV_BULK_EP_READ); progname, USBDEV_BULK_EP_READ);
fd->usb.ep = USBDEV_BULK_EP_READ; fd->usb.ep = USBDEV_BULK_EP_READ;
} }
return; return 0;
} }
trynext: trynext:
usb_close(udev); usb_close(udev);