hversion.c 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "hversion.h"
  2. #include "htime.h"
  3. const char* hv_compile_version() {
  4. static char s_version[16] = {0};
  5. datetime_t dt = hv_compile_datetime();
  6. snprintf(s_version, sizeof(s_version), "%d.%d.%d.%d",
  7. HV_VERSION_MAJOR, dt.year%100, dt.month, dt.day);
  8. return s_version;
  9. }
  10. int version_atoi(const char* str) {
  11. int hex = 0;
  12. // trim v1.2.3.4
  13. const char* pv = strchr(str, 'v');
  14. const char* pdot = pv ? pv+1 : str;
  15. while (1) {
  16. hex = (hex << 8) | atoi(pdot);
  17. pdot = strchr(pdot, '.');
  18. if (pdot == NULL) break;
  19. ++pdot;
  20. }
  21. return hex;
  22. }
  23. void version_itoa(int num, char* str) {
  24. char* ch = (char*)&num;
  25. sprintf(str, "%d.%d.%d.%d", ch[3], ch[2], ch[1], ch[0]);
  26. // trim 0.1.2.3
  27. const char* p = str;
  28. while (1) {
  29. if (p[0] == '0' && p[1] == '.') {
  30. p += 2;
  31. }
  32. else {
  33. break;
  34. }
  35. }
  36. if (p != str) {
  37. strcpy(str, p);
  38. }
  39. }