file.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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] == '\\')
  29. #endif // __unix__
  30. { dir[memStrlen(dir) - 1] = NUL; }
  31. #ifdef __unix__
  32. if ((slash = strrchr(dir, '/')) == NULL)
  33. #else
  34. if ((slash = strchr(dir, '\\')) == NULL)
  35. #endif // __unix__
  36. { slash = dir; }
  37. else
  38. slash ++;
  39. if ((point = strchr(dir, '.')) != NULL)
  40. *point = 0;
  41. return_char = memStrcpy(slash);
  42. if (point != NULL)
  43. *point = '.';
  44. if (!isalpha(*return_char) && *return_char != '_')
  45. return_char = memStrcat("_", return_char, false, true);
  46. for (char *tmp = return_char; *tmp != 0;tmp++)
  47. if (!isalnum(*tmp) &&'_' != *tmp)
  48. *tmp = '_';
  49. return return_char;
  50. }