strlib.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "strlib.h"
  5. #include "utils.h"
  6. //-----------------------------------------------
  7. // string lib.
  8. unsigned char* jstrescape (unsigned char* pt) {
  9. //copy from here
  10. unsigned char * ptr;
  11. int i =0, j=0;
  12. //copy string to temporary
  13. CREATE(ptr, char, J_MAX_MALLOC_SIZE);
  14. strcpy (ptr,pt);
  15. while (ptr[i] != '\0') {
  16. switch (ptr[i]) {
  17. case '\'':
  18. pt[j++] = '\\';
  19. pt[j++] = ptr[i++];
  20. break;
  21. case '\\':
  22. pt[j++] = '\\';
  23. pt[j++] = ptr[i++];
  24. break;
  25. default:
  26. pt[j++] = ptr[i++];
  27. }
  28. }
  29. pt[j++] = '\0';
  30. free (ptr);
  31. return (unsigned char*) &pt[0];
  32. }
  33. unsigned char* jstrescapecpy (unsigned char* pt,unsigned char* spt) {
  34. //copy from here
  35. int i =0, j=0;
  36. while (spt[i] != '\0') {
  37. switch (spt[i]) {
  38. case '\'':
  39. pt[j++] = '\\';
  40. pt[j++] = spt[i++];
  41. break;
  42. case '\\':
  43. pt[j++] = '\\';
  44. pt[j++] = spt[i++];
  45. break;
  46. default:
  47. pt[j++] = spt[i++];
  48. }
  49. }
  50. pt[j++] = '\0';
  51. return (unsigned char*) &pt[0];
  52. }
  53. int jmemescapecpy (unsigned char* pt,unsigned char* spt, int size) {
  54. //copy from here
  55. int i =0, j=0;
  56. while (i < size) {
  57. switch (spt[i]) {
  58. case '\'':
  59. pt[j++] = '\\';
  60. pt[j++] = spt[i++];
  61. break;
  62. case '\\':
  63. pt[j++] = '\\';
  64. pt[j++] = spt[i++];
  65. break;
  66. default:
  67. pt[j++] = spt[i++];
  68. }
  69. }
  70. // copy size is 0 ~ (j-1)
  71. return j;
  72. }