string.c 706 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <string.h>
  2. #include "string.h"
  3. static int hex(char ch)
  4. {
  5. if ((ch >= '0') && (ch <= '9'))
  6. return ch - '0';
  7. if ((ch >= 'a') && (ch <= 'f'))
  8. return ch - 'a' + 10;
  9. if ((ch >= 'A') && (ch <= 'F'))
  10. return ch - 'A' + 10;
  11. return -1;
  12. }
  13. /*
  14. * While we find nice hex chars, build a long_val.
  15. * Return number of chars processed.
  16. */
  17. int hex2u64(const char *ptr, u64 *long_val)
  18. {
  19. const char *p = ptr;
  20. *long_val = 0;
  21. while (*p) {
  22. const int hex_val = hex(*p);
  23. if (hex_val < 0)
  24. break;
  25. *long_val = (*long_val << 4) | hex_val;
  26. p++;
  27. }
  28. return p - ptr;
  29. }
  30. char *strxfrchar(char *s, char from, char to)
  31. {
  32. char *p = s;
  33. while ((p = strchr(p, from)) != NULL)
  34. *p++ = to;
  35. return s;
  36. }