aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bootloader/bootloader.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/bootloader/bootloader.c b/bootloader/bootloader.c
index fe570d7..3e9999e 100644
--- a/bootloader/bootloader.c
+++ b/bootloader/bootloader.c
@@ -27,7 +27,7 @@
int
transfer(int fd, struct page *p, int pages, int pagesize)
{
- int n, off;
+ int n, off, maxerr = 3;
unsigned char sum;
fprintf(stderr, "waiting for bootloader ...");
@@ -61,7 +61,10 @@ transfer(int fd, struct page *p, int pages, int pagesize)
fprintf(stderr, "E");
break;
default:
- goto fubar;
+ if (!maxerr--)
+ goto fubar;
+ fprintf(stderr, "\ngarbage on the line, retry\n");
+ return transfer(fd, p, pages, pagesize);
}
}
}