pathcch.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #include <apiset.h>
  6. #include <apisetcconv.h>
  7. #include <minwindef.h>
  8. #include <minwinbase.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
  13. #define VOLUME_PREFIX L"\\\\?\\Volume"
  14. #define VOLUME_PREFIX_LEN (ARRAYSIZE (VOLUME_PREFIX) - 1)
  15. #define PATHCCH_ALLOW_LONG_PATHS 0x00000001
  16. #define PATHCCH_MAX_CCH 0x8000
  17. WINPATHCCHAPI HRESULT APIENTRY PathAllocCombine (PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags, PWSTR *ppszPathOut);
  18. WINPATHCCHAPI HRESULT APIENTRY PathAllocCanonicalize (PCWSTR pszPathIn, unsigned long dwFlags, PWSTR *ppszPathOut);
  19. WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslash (PWSTR pszPath, size_t cchPath);
  20. WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining);
  21. WINPATHCCHAPI HRESULT APIENTRY PathCchAddExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt);
  22. WINPATHCCHAPI HRESULT APIENTRY PathCchAppend (PWSTR pszPath, size_t cchPath, PCWSTR pszMore);
  23. WINPATHCCHAPI HRESULT APIENTRY PathCchAppendEx (PWSTR pszPath, size_t cchPath, PCWSTR pszMore, unsigned long dwFlags);
  24. WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalize (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn);
  25. WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalizeEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, unsigned long dwFlags);
  26. WINPATHCCHAPI HRESULT APIENTRY PathCchCombine (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore);
  27. WINPATHCCHAPI HRESULT APIENTRY PathCchCombineEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags);
  28. WINPATHCCHAPI HRESULT APIENTRY PathCchFindExtension (PCWSTR pszPath, size_t cchPath, PCWSTR *ppszExt);
  29. WINPATHCCHAPI WINBOOL APIENTRY PathCchIsRoot (PCWSTR pszPath);
  30. WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining);
  31. WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslash (PWSTR pszPath, size_t cchPath);
  32. WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveExtension (PWSTR pszPath, size_t cchPath);
  33. WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveFileSpec (PWSTR pszPath, size_t cchPath);
  34. WINPATHCCHAPI HRESULT APIENTRY PathCchRenameExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt);
  35. WINPATHCCHAPI HRESULT APIENTRY PathCchSkipRoot (PCWSTR pszPath, PCWSTR *ppszRootEnd);
  36. WINPATHCCHAPI HRESULT APIENTRY PathCchStripPrefix (PWSTR pszPath, size_t cchPath);
  37. WINPATHCCHAPI HRESULT APIENTRY PathCchStripToRoot (PWSTR pszPath, size_t cchPath);
  38. WINPATHCCHAPI WINBOOL APIENTRY PathIsUNCEx (PCWSTR pszPath, PCWSTR *ppszServer);
  39. #ifndef PATHCCH_NO_DEPRECATE
  40. #undef PathAddBackslash
  41. #undef PathAddBackslashA
  42. #undef PathAddBackslashW
  43. #undef PathAddExtension
  44. #undef PathAddExtensionA
  45. #undef PathAddExtensionW
  46. #undef PathAppend
  47. #undef PathAppendA
  48. #undef PathAppendW
  49. #undef PathCanonicalize
  50. #undef PathCanonicalizeA
  51. #undef PathCanonicalizeW
  52. #undef PathCombine
  53. #undef PathCombineA
  54. #undef PathCombineW
  55. #undef PathRenameExtension
  56. #undef PathRenameExtensionA
  57. #undef PathRenameExtensionW
  58. #ifndef DEPRECATE_SUPPORTED
  59. #define PathIsRelativeWorker PathIsRelativeWorker_is_internal_to_pathcch;
  60. #define StrIsEqualWorker StrIsEqualWorker_is_internal_to_pathcch;
  61. #define FindPreviousBackslashWorker FindPreviousBackslashWorker_is_internal_to_pathcch;
  62. #define IsHexDigitWorker IsHexDigitWorker_is_internal_to_pathcch;
  63. #define StringIsGUIDWorker StringIsGUIDWorker_is_internal_to_pathcch;
  64. #define PathIsVolumeGUIDWorker PathIsVolumeGUIDWorker_is_internal_to_pathcch;
  65. #define IsValidExtensionWorker IsValidExtensionWorker_is_internal_to_pathcch;
  66. #define PathAddBackslash PathAddBackslash_instead_use_PathCchAddBackslash;
  67. #define PathAddBackslashA PathAddBackslash_instead_use_PathCchAddBackslash;
  68. #define PathAddBackslashW PathAddBackslash_instead_use_PathCchAddBackslash;
  69. #define PathAddExtension PathAddExtension_instead_use_PathCchAddExtension;
  70. #define PathAddExtensionA PathAddExtension_instead_use_PathCchAddExtension;
  71. #define PathAddExtensionW PathAddExtension_instead_use_PathCchAddExtension;
  72. #define PathAppend PathAppend_instead_use_PathCchAppend;
  73. #define PathAppendA PathAppend_instead_use_PathCchAppend;
  74. #define PathAppendW PathAppend_instead_use_PathCchAppend;
  75. #define PathCanonicalize PathCanonicalize_instead_use_PathCchCanonicalize;
  76. #define PathCanonicalizeA PathCanonicalize_instead_use_PathCchCanonicalize;
  77. #define PathCanonicalizeW PathCanonicalize_instead_use_PathCchCanonicalize;
  78. #define PathCombine PathCombine_instead_use_PathCchCombine;
  79. #define PathCombineA PathCombine_instead_use_PathCchCombine;
  80. #define PathCombineW PathCombine_instead_use_PathCchCombine;
  81. #define PathRenameExtension PathRenameExtension_instead_use_PathCchRenameExtension;
  82. #define PathRenameExtensionA PathRenameExtension_instead_use_PathCchRenameExtension;
  83. #define PathRenameExtensionW PathRenameExtension_instead_use_PathCchRenameExtension;
  84. #endif
  85. #endif
  86. #endif
  87. #ifdef __cplusplus
  88. }
  89. #endif
  90. #ifdef __cplusplus
  91. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
  92. __CRT_INLINE WINBOOL PathIsUNCEx (PWSTR path, PWSTR *pserver) {
  93. return PathIsUNCEx (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (pserver));
  94. }
  95. __CRT_INLINE HRESULT PathCchSkipRoot (PWSTR path, PWSTR *prootend) {
  96. return PathCchSkipRoot (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (prootend));
  97. }
  98. __CRT_INLINE HRESULT PathCchFindExtension (PWSTR path, size_t n, PWSTR *pext) {
  99. return PathCchFindExtension (const_cast<PCWSTR> (path), n, const_cast<PCWSTR *> (pext));
  100. }
  101. #endif
  102. #endif