diff --git a/avr910.c b/avr910.c index 7f4883b5..63bd6855 100644 --- a/avr910.c +++ b/avr910.c @@ -52,7 +52,16 @@ static int avr910_send(PROGRAMMER * pgm, char * buf, size_t len) static int avr910_recv(PROGRAMMER * pgm, char * buf, size_t len) { - return serial_recv(pgm->fd, buf, len); + int rv; + + rv = serial_recv(pgm->fd, buf, len); + if (rv < 0) { + fprintf(stderr, + "%s: avr910_recv(): programmer is not responding\n", + progname); + exit(1); + } + return 0; } diff --git a/butterfly.c b/butterfly.c index 43b60f90..0108ab62 100644 --- a/butterfly.c +++ b/butterfly.c @@ -66,9 +66,18 @@ static int butterfly_send(PROGRAMMER * pgm, char * buf, size_t len) static int butterfly_recv(PROGRAMMER * pgm, char * buf, size_t len) { + int rv; + no_show_func_info(); - return serial_recv(pgm->fd, buf, len); + rv = serial_recv(pgm->fd, buf, len); + if (rv < 0) { + fprintf(stderr, + "%s: butterfly_recv(): programmer is not responding\n", + progname); + exit(1); + } + return 0; } diff --git a/stk500.c b/stk500.c index 2852a928..6e3532ad 100644 --- a/stk500.c +++ b/stk500.c @@ -63,7 +63,16 @@ static int stk500_send(PROGRAMMER * pgm, char * buf, size_t len) static int stk500_recv(PROGRAMMER * pgm, char * buf, size_t len) { - return serial_recv(pgm->fd, buf, len); + int rv; + + rv = serial_recv(pgm->fd, buf, len); + if (rv < 0) { + fprintf(stderr, + "%s: stk500_recv(): programmer is not responding\n", + progname); + exit(1); + } + return 0; } diff --git a/stk500v2.c b/stk500v2.c index fa504ca9..fe7f2635 100644 --- a/stk500v2.c +++ b/stk500v2.c @@ -128,7 +128,8 @@ static int stk500v2_recv(PROGRAMMER * pgm, unsigned char msg[], size_t maxsize) tstart = tv.tv_sec; while ( (state != sDONE ) && (!timeout) ) { - serial_recv(pgm->fd, &c, 1); + if (serial_recv(pgm->fd, &c, 1) < 0) + goto timedout; DEBUG("0x%02x ",c); checksum ^= c; @@ -203,6 +204,7 @@ static int stk500v2_recv(PROGRAMMER * pgm, unsigned char msg[], size_t maxsize) gettimeofday(&tv, NULL); tnow = tv.tv_sec; if (tnow-tstart > timeoutval) { // wuff - signed/unsigned/overflow + timedout: fprintf(stderr, "%s: stk500_2_ReceiveMessage(): timeout\n", progname); return -1;