wc2regex.c 726 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <grass/gis.h>
  2. #include <grass/raster.h>
  3. char *wc2regex(const char *wc)
  4. {
  5. int i, j;
  6. char *regex;
  7. for (i = 0, j = 2; wc[i]; i++, j++) {
  8. switch (wc[i]) {
  9. case '.':
  10. case '*':
  11. j++;
  12. break;
  13. }
  14. }
  15. regex = (char *)G_malloc(j + 1);
  16. j = 0;
  17. regex[j++] = '^';
  18. for (i = 0; wc[i]; i++) {
  19. switch (wc[i]) {
  20. case '.':
  21. regex[j++] = '\\';
  22. break;
  23. case '*':
  24. regex[j++] = '.';
  25. break;
  26. case '?':
  27. regex[j++] = '.';
  28. continue;
  29. case '{':
  30. regex[j++] = '(';
  31. continue;
  32. case '}':
  33. regex[j++] = ')';
  34. continue;
  35. case ',':
  36. regex[j++] = '|';
  37. continue;
  38. }
  39. regex[j++] = wc[i];
  40. }
  41. regex[j++] = '$';
  42. regex[j] = 0;
  43. return regex;
  44. }