/hboot/memstr.c

https://github.com/tpruvot/android_device_motorola_jordan · C · 80 lines · 60 code · 20 blank · 0 comment · 12 complexity · 1967322f63ef4358ecf1cdd3f67122f1 MD5 · raw file

  1. #include "string.h"
  2. void *memcpy(void *dest, const void *src, size_t n)
  3. {
  4. char *d = (char*)dest;
  5. const char *s = (const char*)src;
  6. while (n-- > 0)
  7. *d++ = *s++;
  8. return dest;
  9. }
  10. void *memset(void *dest, int fill, size_t n)
  11. {
  12. unsigned char *d = (unsigned char*)dest;
  13. while (n-- > 0)
  14. *d++ = (unsigned char)fill;
  15. return dest;
  16. }
  17. int memcmp(const void *s1, const void *s2, size_t n)
  18. {
  19. unsigned char *ss1 = (unsigned char*)s1;
  20. unsigned char *ss2 = (unsigned char*)s2;
  21. while (n-- > 0)
  22. {
  23. if (*ss1 != *ss2)
  24. return *ss1 - *ss2;
  25. ++ss1;
  26. ++ss2;
  27. }
  28. return 0;
  29. }
  30. size_t strlen(const char *s)
  31. {
  32. size_t n = 0;
  33. while (*s++)
  34. n++;
  35. return n;
  36. }
  37. char *strcpy(char *d, const char *s)
  38. {
  39. char *dest = d;
  40. while (*d++ = *s++);
  41. return dest;
  42. }
  43. int strcmp(const char *s1, const char *s2)
  44. {
  45. size_t l1, l2;
  46. l1 = strlen(s1);
  47. l2 = strlen(s2);
  48. if (l1 < l2)
  49. return -1;
  50. if (l1 > l2)
  51. return 1;
  52. while (*s1)
  53. {
  54. if (*s1 != *s2)
  55. return *s1 - *s2;
  56. ++s1;
  57. ++s2;
  58. }
  59. return 0;
  60. }