input.c 1.4 KB

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