- char *ethaddr;
- uchar *fp, *efp;
-
- while ((ethaddr = getenv("ethaddr")) == NULL || *ethaddr == '\0') {
-
- puts("*** Ethernet address is not set\n");
-
- for (;;) {
- int n;
-
- n = readline("Enter board ethernet address: ");
-
- if (n < 0) {
- puts("\n");
- return (0);
- }
-
- if (n == 0)
- continue;
-
- if (n == 17) {
- int i;
- char *p, *q;
- uchar ea[6];
-
- /* see if it looks like an ethernet address */
-
- p = console_buffer;
-
- for (i = 0; i < 6; i++) {
- char term = (i == 5 ? '\0' : ':');
-
- ea[i] = simple_strtol(p, &q, 16);
-
- if ((q - p) != 2 || *q++ != term)
- break;
-
- p = q;
+ char *ethaddr;
+ uchar *fp, *efp;
+ int rc, count = 0;
+
+ while ((ethaddr = getenv ("ethaddr")) == NULL || *ethaddr == '\0') {
+
+ printf ("*** Ethernet address is%s not set\n",
+ count == 0 ? "" : " STILL");
+
+ if ((rc = hymod_get_ethaddr ()) < 0) {
+ if (rc == -1)
+ puts ("\n*** interrupted!");
+ else
+ puts ("\n*** timeout!");
+ printf (" - fetch of '%s' aborted\n", fn);
+ return (0);