cmd_date.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. *******************************************************************************
  3. \file cmd_date.c
  4. \brief Command-line interface to Bee2: managing dates
  5. \project bee2/cmd
  6. \created 2023.05.29
  7. \version 2023.06.06
  8. \copyright The Bee2 authors
  9. \license Licensed under the Apache License, Version 2.0 (see LICENSE.txt).
  10. *******************************************************************************
  11. */
  12. #include "../cmd.h"
  13. #include <bee2/core/err.h>
  14. #include <bee2/core/mem.h>
  15. #include <bee2/core/str.h>
  16. #include <stdio.h>
  17. /*
  18. *******************************************************************************
  19. Разбор даты
  20. *******************************************************************************
  21. */
  22. err_t cmdDateParse(octet date[6], const char* str)
  23. {
  24. // входной контроль
  25. if (!memIsValid(date, 6) || !strIsValid(str))
  26. return ERR_BAD_INPUT;
  27. if (strLen(str) != 6 || !strIsNumeric(str))
  28. return ERR_BAD_DATE;
  29. // разобрать дату
  30. memCopy(date, str, 6);
  31. date[0] -= '0', date[1] -= '0', date[2] -= '0';
  32. date[3] -= '0', date[4] -= '0', date[5] -= '0';
  33. if (memIsZero(date, 6))
  34. {
  35. if (!tmDate2(date))
  36. return ERR_BAD_TIMER;
  37. }
  38. else if (!tmDateIsValid2(date))
  39. return ERR_BAD_DATE;
  40. return ERR_OK;
  41. }