rugged 1.3.2.3 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +1 -1
  3. data/ext/rugged/rugged_config.c +7 -2
  4. data/ext/rugged/rugged_remote.c +17 -0
  5. data/lib/rugged/version.rb +1 -1
  6. data/vendor/libgit2/CMakeLists.txt +103 -276
  7. data/vendor/libgit2/COPYING +36 -19
  8. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  9. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  10. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  11. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  12. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  13. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  14. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  15. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  16. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  17. data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
  18. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  19. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  20. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  21. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  22. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  23. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  24. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  25. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  26. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  27. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  28. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  29. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  30. data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
  31. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  32. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  33. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  34. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  35. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  36. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
  37. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
  38. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  39. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  40. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  42. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  43. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  44. data/vendor/libgit2/deps/zlib/crc32.c +288 -975
  45. data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
  46. data/vendor/libgit2/deps/zlib/deflate.c +31 -83
  47. data/vendor/libgit2/deps/zlib/deflate.h +15 -12
  48. data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
  49. data/vendor/libgit2/deps/zlib/infback.c +1 -2
  50. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  51. data/vendor/libgit2/deps/zlib/inflate.c +8 -39
  52. data/vendor/libgit2/deps/zlib/inflate.h +2 -3
  53. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  54. data/vendor/libgit2/deps/zlib/trees.c +48 -27
  55. data/vendor/libgit2/deps/zlib/zlib.h +100 -126
  56. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  57. data/vendor/libgit2/deps/zlib/zutil.h +9 -12
  58. data/vendor/libgit2/include/git2/apply.h +16 -2
  59. data/vendor/libgit2/include/git2/attr.h +11 -2
  60. data/vendor/libgit2/include/git2/blame.h +4 -1
  61. data/vendor/libgit2/include/git2/blob.h +14 -1
  62. data/vendor/libgit2/include/git2/branch.h +2 -0
  63. data/vendor/libgit2/include/git2/buffer.h +18 -78
  64. data/vendor/libgit2/include/git2/cert.h +2 -2
  65. data/vendor/libgit2/include/git2/checkout.h +5 -2
  66. data/vendor/libgit2/include/git2/clone.h +3 -3
  67. data/vendor/libgit2/include/git2/commit.h +2 -0
  68. data/vendor/libgit2/include/git2/common.h +5 -12
  69. data/vendor/libgit2/include/git2/config.h +19 -3
  70. data/vendor/libgit2/include/git2/credential.h +2 -1
  71. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  72. data/vendor/libgit2/include/git2/deprecated.h +1 -1
  73. data/vendor/libgit2/include/git2/describe.h +7 -2
  74. data/vendor/libgit2/include/git2/diff.h +17 -9
  75. data/vendor/libgit2/include/git2/email.h +1 -1
  76. data/vendor/libgit2/include/git2/errors.h +1 -2
  77. data/vendor/libgit2/include/git2/filter.h +7 -2
  78. data/vendor/libgit2/include/git2/graph.h +1 -0
  79. data/vendor/libgit2/include/git2/ignore.h +1 -1
  80. data/vendor/libgit2/include/git2/index.h +11 -5
  81. data/vendor/libgit2/include/git2/indexer.h +19 -0
  82. data/vendor/libgit2/include/git2/merge.h +23 -3
  83. data/vendor/libgit2/include/git2/message.h +2 -0
  84. data/vendor/libgit2/include/git2/object.h +23 -0
  85. data/vendor/libgit2/include/git2/odb.h +37 -7
  86. data/vendor/libgit2/include/git2/odb_backend.h +1 -1
  87. data/vendor/libgit2/include/git2/pack.h +24 -8
  88. data/vendor/libgit2/include/git2/patch.h +8 -0
  89. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  90. data/vendor/libgit2/include/git2/proxy.h +1 -1
  91. data/vendor/libgit2/include/git2/rebase.h +9 -1
  92. data/vendor/libgit2/include/git2/refdb.h +3 -0
  93. data/vendor/libgit2/include/git2/reflog.h +1 -1
  94. data/vendor/libgit2/include/git2/refs.h +2 -2
  95. data/vendor/libgit2/include/git2/remote.h +184 -37
  96. data/vendor/libgit2/include/git2/repository.h +14 -9
  97. data/vendor/libgit2/include/git2/reset.h +2 -2
  98. data/vendor/libgit2/include/git2/revparse.h +1 -1
  99. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  100. data/vendor/libgit2/include/git2/signature.h +1 -1
  101. data/vendor/libgit2/include/git2/stash.h +3 -3
  102. data/vendor/libgit2/include/git2/status.h +9 -3
  103. data/vendor/libgit2/include/git2/submodule.h +7 -2
  104. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  105. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
  106. data/vendor/libgit2/include/git2/sys/remote.h +31 -0
  107. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  108. data/vendor/libgit2/include/git2/sys/transport.h +25 -34
  109. data/vendor/libgit2/include/git2/tag.h +1 -0
  110. data/vendor/libgit2/include/git2/tree.h +4 -3
  111. data/vendor/libgit2/include/git2/types.h +7 -7
  112. data/vendor/libgit2/include/git2/version.h +3 -3
  113. data/vendor/libgit2/include/git2/worktree.h +12 -2
  114. data/vendor/libgit2/src/CMakeLists.txt +189 -315
  115. data/vendor/libgit2/src/annotated_commit.h +1 -1
  116. data/vendor/libgit2/src/apply.c +18 -18
  117. data/vendor/libgit2/src/apply.h +2 -2
  118. data/vendor/libgit2/src/attr.c +18 -18
  119. data/vendor/libgit2/src/attr_file.c +17 -17
  120. data/vendor/libgit2/src/attr_file.h +4 -4
  121. data/vendor/libgit2/src/attrcache.c +17 -12
  122. data/vendor/libgit2/src/blame_git.c +1 -1
  123. data/vendor/libgit2/src/blob.c +33 -26
  124. data/vendor/libgit2/src/blob.h +1 -1
  125. data/vendor/libgit2/src/branch.c +150 -109
  126. data/vendor/libgit2/src/branch.h +15 -3
  127. data/vendor/libgit2/src/buf.c +126 -0
  128. data/vendor/libgit2/src/buf.h +50 -0
  129. data/vendor/libgit2/src/cc-compat.h +1 -1
  130. data/vendor/libgit2/src/checkout.c +74 -68
  131. data/vendor/libgit2/src/cherrypick.c +10 -10
  132. data/vendor/libgit2/src/clone.c +66 -66
  133. data/vendor/libgit2/src/commit.c +128 -58
  134. data/vendor/libgit2/src/commit.h +24 -1
  135. data/vendor/libgit2/src/commit_graph.c +68 -53
  136. data/vendor/libgit2/src/commit_graph.h +10 -3
  137. data/vendor/libgit2/src/commit_list.c +2 -3
  138. data/vendor/libgit2/src/common.h +10 -3
  139. data/vendor/libgit2/src/config.c +99 -77
  140. data/vendor/libgit2/src/config.h +15 -2
  141. data/vendor/libgit2/src/config_file.c +103 -91
  142. data/vendor/libgit2/src/config_mem.c +9 -9
  143. data/vendor/libgit2/src/config_parse.c +27 -23
  144. data/vendor/libgit2/src/crlf.c +24 -21
  145. data/vendor/libgit2/src/date.c +10 -17
  146. data/vendor/libgit2/src/date.h +33 -0
  147. data/vendor/libgit2/src/describe.c +27 -19
  148. data/vendor/libgit2/src/diff.c +25 -8
  149. data/vendor/libgit2/src/diff.h +2 -4
  150. data/vendor/libgit2/src/diff_driver.c +34 -36
  151. data/vendor/libgit2/src/diff_driver.h +3 -3
  152. data/vendor/libgit2/src/diff_file.c +29 -20
  153. data/vendor/libgit2/src/diff_generate.c +30 -6
  154. data/vendor/libgit2/src/diff_generate.h +5 -3
  155. data/vendor/libgit2/src/diff_print.c +102 -95
  156. data/vendor/libgit2/src/diff_stats.c +40 -29
  157. data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
  158. data/vendor/libgit2/src/diff_tform.c +9 -8
  159. data/vendor/libgit2/src/diff_xdiff.c +3 -8
  160. data/vendor/libgit2/src/email.c +54 -38
  161. data/vendor/libgit2/src/email.h +1 -1
  162. data/vendor/libgit2/src/errors.c +18 -18
  163. data/vendor/libgit2/src/features.h.in +6 -1
  164. data/vendor/libgit2/src/fetch.c +69 -24
  165. data/vendor/libgit2/src/fetch.h +1 -1
  166. data/vendor/libgit2/src/fetchhead.c +19 -19
  167. data/vendor/libgit2/src/filebuf.c +28 -28
  168. data/vendor/libgit2/src/filebuf.h +1 -1
  169. data/vendor/libgit2/src/filter.c +96 -52
  170. data/vendor/libgit2/src/filter.h +26 -5
  171. data/vendor/libgit2/src/fs_path.c +1912 -0
  172. data/vendor/libgit2/src/fs_path.h +752 -0
  173. data/vendor/libgit2/src/futils.c +91 -85
  174. data/vendor/libgit2/src/futils.h +26 -14
  175. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
  176. data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
  177. data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
  178. data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
  179. data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
  180. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
  181. data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
  182. data/vendor/libgit2/src/hash/sha1.h +3 -1
  183. data/vendor/libgit2/src/hash.c +67 -35
  184. data/vendor/libgit2/src/hash.h +12 -12
  185. data/vendor/libgit2/src/ident.c +18 -18
  186. data/vendor/libgit2/src/ignore.c +35 -34
  187. data/vendor/libgit2/src/ignore.h +2 -2
  188. data/vendor/libgit2/src/index.c +79 -80
  189. data/vendor/libgit2/src/index.h +6 -3
  190. data/vendor/libgit2/src/indexer.c +75 -57
  191. data/vendor/libgit2/src/iterator.c +64 -56
  192. data/vendor/libgit2/src/iterator.h +5 -5
  193. data/vendor/libgit2/src/khash.h +1 -1
  194. data/vendor/libgit2/src/libgit2.c +22 -19
  195. data/vendor/libgit2/src/mailmap.c +38 -36
  196. data/vendor/libgit2/src/merge.c +27 -27
  197. data/vendor/libgit2/src/merge.h +1 -14
  198. data/vendor/libgit2/src/merge_driver.c +2 -2
  199. data/vendor/libgit2/src/merge_file.c +13 -3
  200. data/vendor/libgit2/src/message.c +21 -10
  201. data/vendor/libgit2/src/midx.c +83 -66
  202. data/vendor/libgit2/src/midx.h +3 -3
  203. data/vendor/libgit2/src/mwindow.c +1 -1
  204. data/vendor/libgit2/src/net.c +278 -68
  205. data/vendor/libgit2/src/net.h +10 -3
  206. data/vendor/libgit2/src/netops.c +1 -1
  207. data/vendor/libgit2/src/netops.h +1 -1
  208. data/vendor/libgit2/src/notes.c +20 -29
  209. data/vendor/libgit2/src/object.c +49 -9
  210. data/vendor/libgit2/src/object.h +1 -1
  211. data/vendor/libgit2/src/odb.c +35 -32
  212. data/vendor/libgit2/src/odb.h +1 -1
  213. data/vendor/libgit2/src/odb_loose.c +68 -68
  214. data/vendor/libgit2/src/odb_mempack.c +18 -5
  215. data/vendor/libgit2/src/odb_pack.c +43 -43
  216. data/vendor/libgit2/src/oid.c +11 -4
  217. data/vendor/libgit2/src/oid.h +15 -0
  218. data/vendor/libgit2/src/pack-objects.c +41 -26
  219. data/vendor/libgit2/src/pack-objects.h +11 -6
  220. data/vendor/libgit2/src/pack.c +10 -10
  221. data/vendor/libgit2/src/patch.c +3 -3
  222. data/vendor/libgit2/src/patch.h +1 -0
  223. data/vendor/libgit2/src/patch_generate.c +27 -11
  224. data/vendor/libgit2/src/patch_generate.h +5 -5
  225. data/vendor/libgit2/src/patch_parse.c +24 -24
  226. data/vendor/libgit2/src/path.c +76 -1951
  227. data/vendor/libgit2/src/path.h +34 -741
  228. data/vendor/libgit2/src/pathspec.c +6 -6
  229. data/vendor/libgit2/src/pathspec.h +2 -2
  230. data/vendor/libgit2/src/posix.c +3 -3
  231. data/vendor/libgit2/src/posix.h +1 -0
  232. data/vendor/libgit2/src/pqueue.h +1 -1
  233. data/vendor/libgit2/src/proxy.c +4 -1
  234. data/vendor/libgit2/src/proxy.h +1 -1
  235. data/vendor/libgit2/src/push.c +30 -35
  236. data/vendor/libgit2/src/push.h +4 -16
  237. data/vendor/libgit2/src/rand.c +226 -0
  238. data/vendor/libgit2/src/rand.h +37 -0
  239. data/vendor/libgit2/src/reader.c +8 -8
  240. data/vendor/libgit2/src/reader.h +2 -2
  241. data/vendor/libgit2/src/rebase.c +89 -88
  242. data/vendor/libgit2/src/refdb_fs.c +447 -173
  243. data/vendor/libgit2/src/refs.c +32 -32
  244. data/vendor/libgit2/src/refs.h +2 -2
  245. data/vendor/libgit2/src/refspec.c +32 -37
  246. data/vendor/libgit2/src/refspec.h +5 -2
  247. data/vendor/libgit2/src/regexp.c +1 -1
  248. data/vendor/libgit2/src/remote.c +713 -419
  249. data/vendor/libgit2/src/remote.h +15 -10
  250. data/vendor/libgit2/src/repository.c +350 -467
  251. data/vendor/libgit2/src/repository.h +11 -10
  252. data/vendor/libgit2/src/reset.c +8 -5
  253. data/vendor/libgit2/src/revert.c +10 -10
  254. data/vendor/libgit2/src/revparse.c +48 -35
  255. data/vendor/libgit2/src/revwalk.c +7 -7
  256. data/vendor/libgit2/src/signature.c +12 -6
  257. data/vendor/libgit2/src/signature.h +1 -1
  258. data/vendor/libgit2/src/sortedcache.c +1 -1
  259. data/vendor/libgit2/src/sortedcache.h +1 -1
  260. data/vendor/libgit2/src/stash.c +36 -37
  261. data/vendor/libgit2/src/status.c +4 -1
  262. data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
  263. data/vendor/libgit2/src/str.h +357 -0
  264. data/vendor/libgit2/src/streams/mbedtls.c +8 -6
  265. data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
  266. data/vendor/libgit2/src/submodule.c +171 -159
  267. data/vendor/libgit2/src/submodule.h +1 -1
  268. data/vendor/libgit2/src/sysdir.c +68 -52
  269. data/vendor/libgit2/src/sysdir.h +15 -10
  270. data/vendor/libgit2/src/tag.c +29 -27
  271. data/vendor/libgit2/src/thread.h +3 -3
  272. data/vendor/libgit2/src/threadstate.c +3 -3
  273. data/vendor/libgit2/src/threadstate.h +1 -1
  274. data/vendor/libgit2/src/trace.c +1 -14
  275. data/vendor/libgit2/src/trace.h +5 -22
  276. data/vendor/libgit2/src/trailer.c +1 -1
  277. data/vendor/libgit2/src/transaction.c +1 -1
  278. data/vendor/libgit2/src/transport.c +10 -10
  279. data/vendor/libgit2/src/transports/auth.c +7 -9
  280. data/vendor/libgit2/src/transports/auth.h +2 -3
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
  283. data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
  284. data/vendor/libgit2/src/transports/git.c +9 -11
  285. data/vendor/libgit2/src/transports/http.c +37 -17
  286. data/vendor/libgit2/src/transports/http.h +2 -3
  287. data/vendor/libgit2/src/transports/httpclient.c +65 -65
  288. data/vendor/libgit2/src/transports/local.c +124 -116
  289. data/vendor/libgit2/src/transports/smart.c +51 -139
  290. data/vendor/libgit2/src/transports/smart.h +25 -31
  291. data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
  292. data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
  293. data/vendor/libgit2/src/transports/ssh.c +47 -112
  294. data/vendor/libgit2/src/transports/winhttp.c +50 -56
  295. data/vendor/libgit2/src/tree-cache.c +5 -5
  296. data/vendor/libgit2/src/tree-cache.h +2 -2
  297. data/vendor/libgit2/src/tree.c +59 -48
  298. data/vendor/libgit2/src/tree.h +1 -1
  299. data/vendor/libgit2/src/unix/map.c +0 -2
  300. data/vendor/libgit2/src/unix/posix.h +1 -4
  301. data/vendor/libgit2/src/unix/realpath.c +0 -2
  302. data/vendor/libgit2/src/util.c +14 -14
  303. data/vendor/libgit2/src/util.h +2 -28
  304. data/vendor/libgit2/src/vector.h +1 -1
  305. data/vendor/libgit2/src/win32/findfile.c +172 -116
  306. data/vendor/libgit2/src/win32/findfile.h +7 -4
  307. data/vendor/libgit2/src/win32/path_w32.c +140 -9
  308. data/vendor/libgit2/src/win32/path_w32.h +2 -0
  309. data/vendor/libgit2/src/win32/posix.h +0 -1
  310. data/vendor/libgit2/src/win32/posix_w32.c +11 -27
  311. data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
  312. data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
  313. data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
  314. data/vendor/libgit2/src/worktree.c +116 -94
  315. data/vendor/libgit2/src/worktree.h +1 -1
  316. data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
  317. data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
  318. data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
  319. data/vendor/libgit2/src/xdiff/xemit.c +23 -7
  320. data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
  321. data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
  322. data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
  323. data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
  324. data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
  325. data/vendor/libgit2/src/xdiff/xutils.c +18 -7
  326. data/vendor/libgit2/src/zstream.c +5 -5
  327. data/vendor/libgit2/src/zstream.h +4 -4
  328. metadata +25 -10
  329. data/vendor/libgit2/src/buffer.h +0 -374
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "path_w32.h"
9
9
 
10
- #include "path.h"
10
+ #include "fs_path.h"
11
11
  #include "utf-conv.h"
12
12
  #include "posix.h"
13
13
  #include "reparse.h"
@@ -41,7 +41,7 @@ GIT_INLINE(int) path__cwd(wchar_t *path, int size)
41
41
  }
42
42
 
43
43
  /* The Win32 APIs may return "\\?\" once you've used it first.
44
- * But it may not. What a gloriously predictible API!
44
+ * But it may not. What a gloriously predictable API!
45
45
  */
46
46
  if (wcsncmp(path, PATH__NT_NAMESPACE, PATH__NT_NAMESPACE_LEN))
47
47
  return len;
@@ -57,7 +57,7 @@ static wchar_t *path__skip_server(wchar_t *path)
57
57
  wchar_t *c;
58
58
 
59
59
  for (c = path; *c; c++) {
60
- if (git_path_is_dirsep(*c))
60
+ if (git_fs_path_is_dirsep(*c))
61
61
  return c + 1;
62
62
  }
63
63
 
@@ -71,9 +71,9 @@ static wchar_t *path__skip_prefix(wchar_t *path)
71
71
 
72
72
  if (wcsncmp(path, L"UNC\\", 4) == 0)
73
73
  path = path__skip_server(path + 4);
74
- else if (git_path_is_absolute(path))
74
+ else if (git_fs_path_is_absolute(path))
75
75
  path += PATH__ABSOLUTE_LEN;
76
- } else if (git_path_is_absolute(path)) {
76
+ } else if (git_fs_path_is_absolute(path)) {
77
77
  path += PATH__ABSOLUTE_LEN;
78
78
  } else if (path__is_unc(path)) {
79
79
  path = path__skip_server(path + 2);
@@ -151,6 +151,137 @@ int git_win32_path_canonicalize(git_win32_path path)
151
151
  return (int)(to - path);
152
152
  }
153
153
 
154
+ static int git_win32_path_join(
155
+ git_win32_path dest,
156
+ const wchar_t *one,
157
+ size_t one_len,
158
+ const wchar_t *two,
159
+ size_t two_len)
160
+ {
161
+ size_t backslash = 0;
162
+
163
+ if (one_len && two_len && one[one_len - 1] != L'\\')
164
+ backslash = 1;
165
+
166
+ if (one_len + two_len + backslash > MAX_PATH) {
167
+ git_error_set(GIT_ERROR_INVALID, "path too long");
168
+ return -1;
169
+ }
170
+
171
+ memmove(dest, one, one_len * sizeof(wchar_t));
172
+
173
+ if (backslash)
174
+ dest[one_len] = L'\\';
175
+
176
+ memcpy(dest + one_len + backslash, two, two_len * sizeof(wchar_t));
177
+ dest[one_len + backslash + two_len] = L'\0';
178
+
179
+ return 0;
180
+ }
181
+
182
+ struct win32_path_iter {
183
+ wchar_t *env;
184
+ const wchar_t *current_dir;
185
+ };
186
+
187
+ static int win32_path_iter_init(struct win32_path_iter *iter)
188
+ {
189
+ DWORD len = GetEnvironmentVariableW(L"PATH", NULL, 0);
190
+
191
+ if (!len && GetLastError() == ERROR_ENVVAR_NOT_FOUND) {
192
+ iter->env = NULL;
193
+ iter->current_dir = NULL;
194
+ return 0;
195
+ } else if (!len) {
196
+ git_error_set(GIT_ERROR_OS, "could not load PATH");
197
+ return -1;
198
+ }
199
+
200
+ iter->env = git__malloc(len * sizeof(wchar_t));
201
+ GIT_ERROR_CHECK_ALLOC(iter->env);
202
+
203
+ len = GetEnvironmentVariableW(L"PATH", iter->env, len);
204
+
205
+ if (len == 0) {
206
+ git_error_set(GIT_ERROR_OS, "could not load PATH");
207
+ return -1;
208
+ }
209
+
210
+ iter->current_dir = iter->env;
211
+ return 0;
212
+ }
213
+
214
+ static int win32_path_iter_next(
215
+ const wchar_t **out,
216
+ size_t *out_len,
217
+ struct win32_path_iter *iter)
218
+ {
219
+ const wchar_t *start;
220
+ wchar_t term;
221
+ size_t len = 0;
222
+
223
+ if (!iter->current_dir || !*iter->current_dir)
224
+ return GIT_ITEROVER;
225
+
226
+ term = (*iter->current_dir == L'"') ? *iter->current_dir++ : L';';
227
+ start = iter->current_dir;
228
+
229
+ while (*iter->current_dir && *iter->current_dir != term) {
230
+ iter->current_dir++;
231
+ len++;
232
+ }
233
+
234
+ *out = start;
235
+ *out_len = len;
236
+
237
+ if (term == L'"' && *iter->current_dir)
238
+ iter->current_dir++;
239
+
240
+ while (*iter->current_dir == L';')
241
+ iter->current_dir++;
242
+
243
+ return 0;
244
+ }
245
+
246
+ static void win32_path_iter_dispose(struct win32_path_iter *iter)
247
+ {
248
+ if (!iter)
249
+ return;
250
+
251
+ git__free(iter->env);
252
+ iter->env = NULL;
253
+ iter->current_dir = NULL;
254
+ }
255
+
256
+ int git_win32_path_find_executable(git_win32_path fullpath, wchar_t *exe)
257
+ {
258
+ struct win32_path_iter path_iter;
259
+ const wchar_t *dir;
260
+ size_t dir_len, exe_len = wcslen(exe);
261
+ bool found = false;
262
+
263
+ if (win32_path_iter_init(&path_iter) < 0)
264
+ return -1;
265
+
266
+ while (win32_path_iter_next(&dir, &dir_len, &path_iter) != GIT_ITEROVER) {
267
+ if (git_win32_path_join(fullpath, dir, dir_len, exe, exe_len) < 0)
268
+ continue;
269
+
270
+ if (_waccess(fullpath, 0) == 0) {
271
+ found = true;
272
+ break;
273
+ }
274
+ }
275
+
276
+ win32_path_iter_dispose(&path_iter);
277
+
278
+ if (found)
279
+ return 0;
280
+
281
+ fullpath[0] = L'\0';
282
+ return GIT_ENOTFOUND;
283
+ }
284
+
154
285
  static int win32_path_cwd(wchar_t *out, size_t len)
155
286
  {
156
287
  int cwd_len;
@@ -204,7 +335,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
204
335
  dest += PATH__NT_NAMESPACE_LEN;
205
336
 
206
337
  /* See if this is an absolute path (beginning with a drive letter) */
207
- if (git_path_is_absolute(src)) {
338
+ if (git_fs_path_is_absolute(src)) {
208
339
  if (git__utf8_to_16(dest, GIT_WIN_PATH_MAX, src) < 0)
209
340
  goto on_error;
210
341
  }
@@ -228,7 +359,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
228
359
  if (path__cwd(dest, GIT_WIN_PATH_MAX) < 0)
229
360
  goto on_error;
230
361
 
231
- if (!git_path_is_absolute(dest)) {
362
+ if (!git_fs_path_is_absolute(dest)) {
232
363
  errno = ENOENT;
233
364
  goto on_error;
234
365
  }
@@ -266,7 +397,7 @@ int git_win32_path_relative_from_utf8(git_win32_path out, const char *src)
266
397
  int len;
267
398
 
268
399
  /* Handle absolute paths */
269
- if (git_path_is_absolute(src) ||
400
+ if (git_fs_path_is_absolute(src) ||
270
401
  path__is_nt_namespace(src) ||
271
402
  path__is_unc(src) ||
272
403
  path__startswith_slash(src)) {
@@ -305,7 +436,7 @@ int git_win32_path_to_utf8(git_win32_utf8_path dest, const wchar_t *src)
305
436
  if ((len = git__utf16_to_8(out, GIT_WIN_PATH_UTF8, src)) < 0)
306
437
  return len;
307
438
 
308
- git_path_mkposix(dest);
439
+ git_fs_path_mkposix(dest);
309
440
 
310
441
  return len;
311
442
  }
@@ -86,4 +86,6 @@ size_t git_win32_path_trim_end(wchar_t *str, size_t len);
86
86
  */
87
87
  size_t git_win32_path_remove_namespace(wchar_t *str, size_t len);
88
88
 
89
+ int git_win32_path_find_executable(git_win32_path fullpath, wchar_t* exe);
90
+
89
91
  #endif
@@ -42,7 +42,6 @@ extern int p_inet_pton(int af, const char *src, void* dst);
42
42
 
43
43
  extern int p_vsnprintf(char *buffer, size_t count, const char *format, va_list argptr);
44
44
  extern int p_snprintf(char *buffer, size_t count, const char *format, ...) GIT_FORMAT_PRINTF(3, 4);
45
- extern int p_mkstemp(char *tmp_path);
46
45
  extern int p_chdir(const char *path);
47
46
  extern int p_chmod(const char *path, mode_t mode);
48
47
  extern int p_rmdir(const char *path);
@@ -9,12 +9,10 @@
9
9
 
10
10
  #include "../posix.h"
11
11
  #include "../futils.h"
12
- #include "path.h"
12
+ #include "fs_path.h"
13
13
  #include "path_w32.h"
14
14
  #include "utf-conv.h"
15
- #include "repository.h"
16
15
  #include "reparse.h"
17
- #include "buffer.h"
18
16
  #include <errno.h>
19
17
  #include <io.h>
20
18
  #include <fcntl.h>
@@ -415,21 +413,21 @@ int p_readlink(const char *path, char *buf, size_t bufsiz)
415
413
 
416
414
  static bool target_is_dir(const char *target, const char *path)
417
415
  {
418
- git_buf resolved = GIT_BUF_INIT;
416
+ git_str resolved = GIT_STR_INIT;
419
417
  git_win32_path resolved_w;
420
418
  bool isdir = true;
421
419
 
422
- if (git_path_is_absolute(target))
420
+ if (git_fs_path_is_absolute(target))
423
421
  git_win32_path_from_utf8(resolved_w, target);
424
- else if (git_path_dirname_r(&resolved, path) < 0 ||
425
- git_path_apply_relative(&resolved, target) < 0 ||
422
+ else if (git_fs_path_dirname_r(&resolved, path) < 0 ||
423
+ git_fs_path_apply_relative(&resolved, target) < 0 ||
426
424
  git_win32_path_from_utf8(resolved_w, resolved.ptr) < 0)
427
425
  goto out;
428
426
 
429
427
  isdir = GetFileAttributesW(resolved_w) & FILE_ATTRIBUTE_DIRECTORY;
430
428
 
431
429
  out:
432
- git_buf_dispose(&resolved);
430
+ git_str_dispose(&resolved);
433
431
  return isdir;
434
432
  }
435
433
 
@@ -443,7 +441,7 @@ int p_symlink(const char *target, const char *path)
443
441
  * not want to use `git_win32_path_from_utf8` for converting the target,
444
442
  * as that function will automatically pre-pend the current working
445
443
  * directory in case the path is not absolute. As Git will instead use
446
- * relative symlinks, this is not someting we want.
444
+ * relative symlinks, this is not something we want.
447
445
  */
448
446
  if (git_win32_path_from_utf8(path_w, path) < 0 ||
449
447
  git_win32_path_relative_from_utf8(target_w, target) < 0)
@@ -662,7 +660,7 @@ int p_getcwd(char *buffer_out, size_t size)
662
660
  return -1;
663
661
  }
664
662
 
665
- git_path_mkposix(buffer_out);
663
+ git_fs_path_mkposix(buffer_out);
666
664
  return 0;
667
665
  }
668
666
 
@@ -822,7 +820,7 @@ char *p_realpath(const char *orig_path, char *buffer)
822
820
  if (git_win32_path_to_utf8(buffer, buffer_w) < 0)
823
821
  return NULL;
824
822
 
825
- git_path_mkposix(buffer);
823
+ git_fs_path_mkposix(buffer);
826
824
 
827
825
  return buffer;
828
826
  }
@@ -862,20 +860,6 @@ int p_snprintf(char *buffer, size_t count, const char *format, ...)
862
860
  return r;
863
861
  }
864
862
 
865
- /* TODO: wut? */
866
- int p_mkstemp(char *tmp_path)
867
- {
868
- #if defined(_MSC_VER) && _MSC_VER >= 1500
869
- if (_mktemp_s(tmp_path, strlen(tmp_path) + 1) != 0)
870
- return -1;
871
- #else
872
- if (_mktemp(tmp_path) == NULL)
873
- return -1;
874
- #endif
875
-
876
- return p_open(tmp_path, O_RDWR | O_CREAT | O_EXCL, 0744); /* -V536 */
877
- }
878
-
879
863
  int p_access(const char *path, mode_t mode)
880
864
  {
881
865
  git_win32_path buf;
@@ -1003,7 +987,7 @@ ssize_t p_pread(int fd, void *data, size_t size, off64_t offset)
1003
987
  /* Fail if the final offset would have overflowed to match POSIX semantics. */
1004
988
  if (!git__is_ssizet(size) || git__add_int64_overflow(&final_offset, offset, (int64_t)size)) {
1005
989
  errno = EINVAL;
1006
- return -1;
990
+ return -1;
1007
991
  }
1008
992
 
1009
993
  /*
@@ -1038,7 +1022,7 @@ ssize_t p_pwrite(int fd, const void *data, size_t size, off64_t offset)
1038
1022
  /* Fail if the final offset would have overflowed to match POSIX semantics. */
1039
1023
  if (!git__is_ssizet(size) || git__add_int64_overflow(&final_offset, offset, (int64_t)size)) {
1040
1024
  errno = EINVAL;
1041
- return -1;
1025
+ return -1;
1042
1026
  }
1043
1027
 
1044
1028
  /*
@@ -7,7 +7,6 @@
7
7
 
8
8
  #include "w32_buffer.h"
9
9
 
10
- #include "../buffer.h"
11
10
  #include "utf-conv.h"
12
11
 
13
12
  GIT_INLINE(int) handle_wc_error(void)
@@ -20,7 +19,7 @@ GIT_INLINE(int) handle_wc_error(void)
20
19
  return -1;
21
20
  }
22
21
 
23
- int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
22
+ int git_str_put_w(git_str *buf, const wchar_t *string_w, size_t len_w)
24
23
  {
25
24
  int utf8_len, utf8_write_len;
26
25
  size_t new_size;
@@ -43,7 +42,7 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
43
42
  GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
44
43
  GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
45
44
 
46
- if (git_buf_grow(buf, new_size) < 0)
45
+ if (git_str_grow(buf, new_size) < 0)
47
46
  return -1;
48
47
 
49
48
  if ((utf8_write_len = WideCharToMultiByte(
@@ -8,13 +8,12 @@
8
8
  #define INCLUDE_win32_w32_buffer_h__
9
9
 
10
10
  #include "common.h"
11
-
12
- #include "../buffer.h"
11
+ #include "str.h"
13
12
 
14
13
  /**
15
14
  * Convert a wide character string to UTF-8 and append the results to the
16
15
  * buffer.
17
16
  */
18
- int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w);
17
+ int git_str_put_w(git_str *buf, const wchar_t *string_w, size_t len_w);
19
18
 
20
19
  #endif
@@ -199,7 +199,7 @@ int git_win32_leakcheck_stack(
199
199
  return 0;
200
200
  }
201
201
 
202
- /* Strack tracing */
202
+ /* Stack tracing */
203
203
 
204
204
  #define STACKTRACE_UID_LEN (15)
205
205