From b55eb658ef8adcad1c0f4bbc450ff651b31e7d1a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 4 Jul 2011 08:34:35 +0000 Subject: add missing error handling --- bootloader/bootloader.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'bootloader/bootloader.c') diff --git a/bootloader/bootloader.c b/bootloader/bootloader.c index 9c4f39a..fbc1e69 100644 --- a/bootloader/bootloader.c +++ b/bootloader/bootloader.c @@ -25,13 +25,15 @@ int transfer(int fd, struct page *p, int pages, int pagesize) { - int n, off; + int n, off, e = 0; unsigned char sum; +#if 0 fprintf(stderr, "trying to reboot device\n"); usleep(500); put('R', fd); /* try to reboot */ usleep(500); +#endif fprintf(stderr, "waiting for bootloader "); do { @@ -42,7 +44,8 @@ transfer(int fd, struct page *p, int pages, int pagesize) fprintf(stderr, "\nwriting: "); for (n = 0; n < pages; n++) { - fprintf(stderr, "%c", ".o"[p[n].dirty]); + fprintf(stderr, "%c", e ? 'E' : ".o"[p[n].dirty]); + if (p[n].dirty) { put('D', fd); put(n, fd); @@ -52,8 +55,11 @@ transfer(int fd, struct page *p, int pages, int pagesize) sum += p[n].data[off]; } put(sum, fd); - if (get(fd) != 'd') + if (get(fd) != 'd') { n--; /* resend */ + e = 1; + } else + e = 0; } } fprintf(stderr, "\nrebooting\n"); @@ -89,8 +95,10 @@ main(int argc, char **argv) assert(p[120].dirty == 0); /* protect firmware */ fd = open_tty(dev); - if (fd == -1) + if (fd == -1) { perror(dev); + return -1; + } transfer(fd, p, PAGENUM, PAGESIZE); close(fd); -- cgit v1.2.3