input.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * (C) Copyright 2003
  3. * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <bootretry.h>
  9. #include <cli.h>
  10. int
  11. hymod_get_serno (const char *prompt)
  12. {
  13. for (;;) {
  14. int n, serno;
  15. char *p;
  16. #ifdef CONFIG_BOOT_RETRY_TIME
  17. reset_cmd_timeout ();
  18. #endif
  19. n = cli_readline(prompt);
  20. if (n < 0)
  21. return (n);
  22. if (n == 0)
  23. continue;
  24. serno = (int) simple_strtol (console_buffer, &p, 10);
  25. if (p > console_buffer && *p == '\0' && serno > 0)
  26. return (serno);
  27. printf ("Invalid number (%s) - please re-enter\n",
  28. console_buffer);
  29. }
  30. }
  31. int
  32. hymod_get_ethaddr (void)
  33. {
  34. for (;;) {
  35. int n;
  36. #ifdef CONFIG_BOOT_RETRY_TIME
  37. reset_cmd_timeout ();
  38. #endif
  39. n = cli_readline("Enter board ethernet address: ");
  40. if (n < 0)
  41. return (n);
  42. if (n == 0)
  43. continue;
  44. if (n == 17) {
  45. int i;
  46. char *p, *q;
  47. /* see if it looks like an ethernet address */
  48. p = console_buffer;
  49. for (i = 0; i < 6; i++) {
  50. char term = (i == 5 ? '\0' : ':');
  51. (void)simple_strtol (p, &q, 16);
  52. if ((q - p) != 2 || *q++ != term)
  53. break;
  54. p = q;
  55. }
  56. if (i == 6) {
  57. /* it looks ok - set it */
  58. printf ("Setting ethernet addr to %s\n",
  59. console_buffer);
  60. setenv ("ethaddr", console_buffer);
  61. puts ("Remember to do a 'saveenv' to "
  62. "make it permanent\n");
  63. return (0);
  64. }
  65. }
  66. printf ("Invalid ethernet addr (%s) - please re-enter\n",
  67. console_buffer);
  68. }
  69. }