file.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "__virtualmath.h"
  2. /**
  3. * @param dir 文件地址
  4. * @return 0-错误, 1-普通文件, 2-目录
  5. */
  6. int checkFileReadble(char *dir){
  7. struct stat my_stat;
  8. int status;
  9. if (dir == NULL)
  10. return 3;
  11. status = stat(dir, &my_stat);
  12. if (status != 0)
  13. return 3;
  14. else if (S_ISREG(my_stat.st_mode)) // 普通文件
  15. return 1;
  16. else if (S_ISDIR(my_stat.st_mode))
  17. return 2;
  18. else
  19. return 3;
  20. }
  21. char *splitDir(char * dir){
  22. char *slash = NULL;
  23. char *point = NULL;
  24. char *return_char = NULL;
  25. #ifdef __unix__
  26. if (dir[memStrlen(dir) - 1] == '/')
  27. #else
  28. if (dir[memStrlen(dir) - 1] == '\\') // TODO-szh 设置 sep
  29. #endif // __unix__
  30. { dir[memStrlen(dir) - 1] = NUL; }
  31. if (
  32. #ifdef __unix__
  33. (slash = strrchr(dir, '/')) == NULL
  34. #else
  35. (slash = strchr(dir, '\\')) == NULL
  36. #endif // __unix__
  37. )
  38. { slash = dir; }
  39. else
  40. slash ++;
  41. if ((point = strchr(dir, '.')) != NULL)
  42. *point = 0;
  43. return_char = memStrcpy(slash);
  44. if (point != NULL)
  45. *point = '.';
  46. if (!isalpha(*return_char) && *return_char != '_')
  47. return_char = memStrcat("_", return_char, false, true);
  48. for (char *tmp = return_char; *tmp != 0;tmp++)
  49. if (!isalnum(*tmp) &&'_' != *tmp)
  50. *tmp = '_';
  51. return return_char;
  52. }