zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

pathcch.h (6112B) - Raw


      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 
      6 #include <apiset.h>
      7 #include <apisetcconv.h>
      8 #include <minwindef.h>
      9 #include <minwinbase.h>
     10 
     11 #ifdef __cplusplus
     12 extern "C" {
     13 #endif
     14 
     15 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
     16 
     17 #define VOLUME_PREFIX L"\\\\?\\Volume"
     18 #define VOLUME_PREFIX_LEN (ARRAYSIZE (VOLUME_PREFIX) - 1)
     19 
     20 #define PATHCCH_MAX_CCH 0x8000
     21 
     22 typedef enum PATHCCH_OPTIONS {
     23   PATHCCH_NONE = 0x0,
     24   PATHCCH_ALLOW_LONG_PATHS = 0x01,
     25   PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS = 0x02,
     26   PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS = 0x04,
     27   PATHCCH_DO_NOT_NORMALIZE_SEGMENTS = 0x08,
     28   PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH = 0x10,
     29   PATHCCH_ENSURE_TRAILING_SLASH = 0x020,
     30   PATHCCH_CANONICALIZE_SLASHES = 0x040
     31 } PATHCCH_OPTIONS;
     32 DEFINE_ENUM_FLAG_OPERATORS(PATHCCH_OPTIONS)
     33 
     34   WINPATHCCHAPI HRESULT APIENTRY PathAllocCombine (PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags, PWSTR *ppszPathOut);
     35   WINPATHCCHAPI HRESULT APIENTRY PathAllocCanonicalize (PCWSTR pszPathIn, unsigned long dwFlags, PWSTR *ppszPathOut);
     36   WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslash (PWSTR pszPath, size_t cchPath);
     37   WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining);
     38   WINPATHCCHAPI HRESULT APIENTRY PathCchAddExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt);
     39   WINPATHCCHAPI HRESULT APIENTRY PathCchAppend (PWSTR pszPath, size_t cchPath, PCWSTR pszMore);
     40   WINPATHCCHAPI HRESULT APIENTRY PathCchAppendEx (PWSTR pszPath, size_t cchPath, PCWSTR pszMore, unsigned long dwFlags);
     41   WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalize (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn);
     42   WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalizeEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, unsigned long dwFlags);
     43   WINPATHCCHAPI HRESULT APIENTRY PathCchCombine (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore);
     44   WINPATHCCHAPI HRESULT APIENTRY PathCchCombineEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags);
     45   WINPATHCCHAPI HRESULT APIENTRY PathCchFindExtension (PCWSTR pszPath, size_t cchPath, PCWSTR *ppszExt);
     46   WINPATHCCHAPI WINBOOL APIENTRY PathCchIsRoot (PCWSTR pszPath);
     47   WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining);
     48   WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslash (PWSTR pszPath, size_t cchPath);
     49   WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveExtension (PWSTR pszPath, size_t cchPath);
     50   WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveFileSpec (PWSTR pszPath, size_t cchPath);
     51   WINPATHCCHAPI HRESULT APIENTRY PathCchRenameExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt);
     52   WINPATHCCHAPI HRESULT APIENTRY PathCchSkipRoot (PCWSTR pszPath, PCWSTR *ppszRootEnd);
     53   WINPATHCCHAPI HRESULT APIENTRY PathCchStripPrefix (PWSTR pszPath, size_t cchPath);
     54   WINPATHCCHAPI HRESULT APIENTRY PathCchStripToRoot (PWSTR pszPath, size_t cchPath);
     55   WINPATHCCHAPI WINBOOL APIENTRY PathIsUNCEx (PCWSTR pszPath, PCWSTR *ppszServer);
     56 
     57 #ifndef PATHCCH_NO_DEPRECATE
     58 #undef PathAddBackslash
     59 #undef PathAddBackslashA
     60 #undef PathAddBackslashW
     61 
     62 #undef PathAddExtension
     63 #undef PathAddExtensionA
     64 #undef PathAddExtensionW
     65 
     66 #undef PathAppend
     67 #undef PathAppendA
     68 #undef PathAppendW
     69 
     70 #undef PathCanonicalize
     71 #undef PathCanonicalizeA
     72 #undef PathCanonicalizeW
     73 
     74 #undef PathCombine
     75 #undef PathCombineA
     76 #undef PathCombineW
     77 
     78 #undef PathRenameExtension
     79 #undef PathRenameExtensionA
     80 #undef PathRenameExtensionW
     81 
     82 #ifndef DEPRECATE_SUPPORTED
     83 #define PathIsRelativeWorker PathIsRelativeWorker_is_internal_to_pathcch;
     84 #define StrIsEqualWorker StrIsEqualWorker_is_internal_to_pathcch;
     85 #define FindPreviousBackslashWorker FindPreviousBackslashWorker_is_internal_to_pathcch;
     86 #define IsHexDigitWorker IsHexDigitWorker_is_internal_to_pathcch;
     87 #define StringIsGUIDWorker StringIsGUIDWorker_is_internal_to_pathcch;
     88 #define PathIsVolumeGUIDWorker PathIsVolumeGUIDWorker_is_internal_to_pathcch;
     89 #define IsValidExtensionWorker IsValidExtensionWorker_is_internal_to_pathcch;
     90 
     91 #define PathAddBackslash PathAddBackslash_instead_use_PathCchAddBackslash;
     92 #define PathAddBackslashA PathAddBackslash_instead_use_PathCchAddBackslash;
     93 #define PathAddBackslashW PathAddBackslash_instead_use_PathCchAddBackslash;
     94 
     95 #define PathAddExtension PathAddExtension_instead_use_PathCchAddExtension;
     96 #define PathAddExtensionA PathAddExtension_instead_use_PathCchAddExtension;
     97 #define PathAddExtensionW PathAddExtension_instead_use_PathCchAddExtension;
     98 
     99 #define PathAppend PathAppend_instead_use_PathCchAppend;
    100 #define PathAppendA PathAppend_instead_use_PathCchAppend;
    101 #define PathAppendW PathAppend_instead_use_PathCchAppend;
    102 
    103 #define PathCanonicalize PathCanonicalize_instead_use_PathCchCanonicalize;
    104 #define PathCanonicalizeA PathCanonicalize_instead_use_PathCchCanonicalize;
    105 #define PathCanonicalizeW PathCanonicalize_instead_use_PathCchCanonicalize;
    106 
    107 #define PathCombine PathCombine_instead_use_PathCchCombine;
    108 #define PathCombineA PathCombine_instead_use_PathCchCombine;
    109 #define PathCombineW PathCombine_instead_use_PathCchCombine;
    110 
    111 #define PathRenameExtension PathRenameExtension_instead_use_PathCchRenameExtension;
    112 #define PathRenameExtensionA PathRenameExtension_instead_use_PathCchRenameExtension;
    113 #define PathRenameExtensionW PathRenameExtension_instead_use_PathCchRenameExtension;
    114 #endif
    115 #endif
    116 #endif
    117 
    118 #ifdef __cplusplus
    119 }
    120 #endif
    121 
    122 #ifdef __cplusplus
    123 
    124 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
    125   __CRT_INLINE WINBOOL PathIsUNCEx (PWSTR path, PWSTR *pserver) {
    126     return PathIsUNCEx (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (pserver));
    127   }
    128 
    129   __CRT_INLINE HRESULT PathCchSkipRoot (PWSTR path, PWSTR *prootend) {
    130     return PathCchSkipRoot (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (prootend));
    131   }
    132 
    133   __CRT_INLINE HRESULT PathCchFindExtension (PWSTR path, size_t n, PWSTR *pext) {
    134     return PathCchFindExtension (const_cast<PCWSTR> (path), n, const_cast<PCWSTR *> (pext));
    135 }
    136 #endif
    137 #endif