rugged 1.6.3 → 1.9.0

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 (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -18,7 +18,7 @@
18
18
  # endif
19
19
  # include <windows.h>
20
20
 
21
- # ifdef GIT_QSORT_S
21
+ # ifdef GIT_QSORT_MSC
22
22
  # include <search.h>
23
23
  # endif
24
24
  #endif
@@ -623,12 +623,12 @@ int git__bsearch_r(
623
623
  */
624
624
  int git__strcmp_cb(const void *a, const void *b)
625
625
  {
626
- return strcmp((const char *)a, (const char *)b);
626
+ return git__strcmp((const char *)a, (const char *)b);
627
627
  }
628
628
 
629
629
  int git__strcasecmp_cb(const void *a, const void *b)
630
630
  {
631
- return strcasecmp((const char *)a, (const char *)b);
631
+ return git__strcasecmp((const char *)a, (const char *)b);
632
632
  }
633
633
 
634
634
  int git__parse_bool(int *out, const char *value)
@@ -673,7 +673,7 @@ size_t git__unescape(char *str)
673
673
  return (pos - str);
674
674
  }
675
675
 
676
- #if defined(GIT_QSORT_S) || defined(GIT_QSORT_R_BSD)
676
+ #if defined(GIT_QSORT_MSC) || defined(GIT_QSORT_BSD)
677
677
  typedef struct {
678
678
  git__sort_r_cmp cmp;
679
679
  void *payload;
@@ -688,9 +688,11 @@ static int GIT_LIBGIT2_CALL git__qsort_r_glue_cmp(
688
688
  #endif
689
689
 
690
690
 
691
- #if !defined(GIT_QSORT_R_BSD) && \
692
- !defined(GIT_QSORT_R_GNU) && \
693
- !defined(GIT_QSORT_S)
691
+ #if !defined(GIT_QSORT_BSD) && \
692
+ !defined(GIT_QSORT_GNU) && \
693
+ !defined(GIT_QSORT_C11) && \
694
+ !defined(GIT_QSORT_MSC)
695
+
694
696
  static void swap(uint8_t *a, uint8_t *b, size_t elsize)
695
697
  {
696
698
  char tmp[256];
@@ -716,17 +718,20 @@ static void insertsort(
716
718
  for (j = i; j > base && cmp(j, j - elsize, payload) < 0; j -= elsize)
717
719
  swap(j, j - elsize, elsize);
718
720
  }
721
+
719
722
  #endif
720
723
 
721
724
  void git__qsort_r(
722
725
  void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload)
723
726
  {
724
- #if defined(GIT_QSORT_R_BSD)
727
+ #if defined(GIT_QSORT_GNU)
728
+ qsort_r(els, nel, elsize, cmp, payload);
729
+ #elif defined(GIT_QSORT_C11)
730
+ qsort_s(els, nel, elsize, cmp, payload);
731
+ #elif defined(GIT_QSORT_BSD)
725
732
  git__qsort_r_glue glue = { cmp, payload };
726
733
  qsort_r(els, nel, elsize, &glue, git__qsort_r_glue_cmp);
727
- #elif defined(GIT_QSORT_R_GNU)
728
- qsort_r(els, nel, elsize, cmp, payload);
729
- #elif defined(GIT_QSORT_S)
734
+ #elif defined(GIT_QSORT_MSC)
730
735
  git__qsort_r_glue glue = { cmp, payload };
731
736
  qsort_s(els, nel, elsize, git__qsort_r_glue_cmp, &glue);
732
737
  #else
@@ -743,7 +748,7 @@ int git__getenv(git_str *out, const char *name)
743
748
 
744
749
  git_str_clear(out);
745
750
 
746
- if (git__utf8_to_16_alloc(&wide_name, name) < 0)
751
+ if (git_utf8_to_16_alloc(&wide_name, name) < 0)
747
752
  return -1;
748
753
 
749
754
  if ((value_len = GetEnvironmentVariableW(wide_name, NULL, 0)) > 0) {
@@ -7,15 +7,15 @@
7
7
  #ifndef INCLUDE_util_h__
8
8
  #define INCLUDE_util_h__
9
9
 
10
- #ifndef GIT_WIN32
11
- # include <ctype.h>
12
- #endif
13
-
14
10
  #include "str.h"
15
11
  #include "git2_util.h"
16
12
  #include "strnlen.h"
17
13
  #include "thread.h"
18
14
 
15
+ #ifndef GIT_WIN32
16
+ # include <ctype.h>
17
+ #endif
18
+
19
19
  #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
20
20
  #define bitsizeof(x) (CHAR_BIT * sizeof(x))
21
21
  #define MSB(x, bits) ((x) & (~UINT64_C(0) << (bitsizeof(x) - (bits))))
@@ -83,15 +83,6 @@ extern char *git__strsep(char **end, const char *sep);
83
83
  extern void git__strntolower(char *str, size_t len);
84
84
  extern void git__strtolower(char *str);
85
85
 
86
- #ifdef GIT_WIN32
87
- GIT_INLINE(int) git__tolower(int c)
88
- {
89
- return (c >= 'A' && c <= 'Z') ? (c + 32) : c;
90
- }
91
- #else
92
- # define git__tolower(a) tolower(a)
93
- #endif
94
-
95
86
  extern size_t git__linenlen(const char *buffer, size_t buffer_len);
96
87
 
97
88
  GIT_INLINE(const char *) git__next_line(const char *s)
@@ -249,26 +240,6 @@ GIT_INLINE(size_t) git__size_t_powerof2(size_t v)
249
240
  return git__size_t_bitmask(v) + 1;
250
241
  }
251
242
 
252
- GIT_INLINE(bool) git__isupper(int c)
253
- {
254
- return (c >= 'A' && c <= 'Z');
255
- }
256
-
257
- GIT_INLINE(bool) git__isalpha(int c)
258
- {
259
- return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
260
- }
261
-
262
- GIT_INLINE(bool) git__isdigit(int c)
263
- {
264
- return (c >= '0' && c <= '9');
265
- }
266
-
267
- GIT_INLINE(bool) git__isspace(int c)
268
- {
269
- return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == '\v');
270
- }
271
-
272
243
  GIT_INLINE(bool) git__isspace_nonlf(int c)
273
244
  {
274
245
  return (c == ' ' || c == '\t' || c == '\f' || c == '\r' || c == '\v');
@@ -279,11 +250,6 @@ GIT_INLINE(bool) git__iswildcard(int c)
279
250
  return (c == '*' || c == '?' || c == '[');
280
251
  }
281
252
 
282
- GIT_INLINE(bool) git__isxdigit(int c)
283
- {
284
- return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
285
- }
286
-
287
253
  /*
288
254
  * Parse a string value as a boolean, just like Core Git does.
289
255
  *
@@ -319,59 +285,67 @@ GIT_INLINE(void) git__memzero(void *data, size_t size)
319
285
 
320
286
  #ifdef GIT_WIN32
321
287
 
322
- GIT_INLINE(double) git__timer(void)
288
+ GIT_INLINE(uint64_t) git_time_monotonic(void)
323
289
  {
324
290
  /* GetTickCount64 returns the number of milliseconds that have
325
291
  * elapsed since the system was started. */
326
- return (double) GetTickCount64() / (double) 1000;
292
+ return GetTickCount64();
327
293
  }
328
294
 
329
295
  #elif __APPLE__
330
296
 
331
297
  #include <mach/mach_time.h>
298
+ #include <sys/time.h>
332
299
 
333
- GIT_INLINE(double) git__timer(void)
300
+ GIT_INLINE(uint64_t) git_time_monotonic(void)
334
301
  {
335
- uint64_t time = mach_absolute_time();
336
- static double scaling_factor = 0;
302
+ static double scaling_factor = 0;
303
+
304
+ if (scaling_factor == 0) {
305
+ mach_timebase_info_data_t info;
337
306
 
338
- if (scaling_factor == 0) {
339
- mach_timebase_info_data_t info;
340
- (void)mach_timebase_info(&info);
341
- scaling_factor = (double)info.numer / (double)info.denom;
342
- }
307
+ scaling_factor = mach_timebase_info(&info) == KERN_SUCCESS ?
308
+ ((double)info.numer / (double)info.denom) / 1.0E6 :
309
+ -1;
310
+ } else if (scaling_factor < 0) {
311
+ struct timeval tv;
312
+
313
+ /* mach_timebase_info failed; fall back to gettimeofday */
314
+ gettimeofday(&tv, NULL);
315
+ return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
316
+ }
343
317
 
344
- return (double)time * scaling_factor / 1.0E9;
318
+ return (uint64_t)(mach_absolute_time() * scaling_factor);
345
319
  }
346
320
 
347
321
  #elif defined(__amigaos4__)
348
322
 
349
323
  #include <proto/timer.h>
350
324
 
351
- GIT_INLINE(double) git__timer(void)
325
+ GIT_INLINE(uint64_t) git_time_monotonic(void)
352
326
  {
353
327
  struct TimeVal tv;
354
328
  ITimer->GetUpTime(&tv);
355
- return (double)tv.Seconds + (double)tv.Microseconds / 1.0E6;
329
+ return (tv.Seconds * 1000) + (tv.Microseconds / 1000);
356
330
  }
357
331
 
358
332
  #else
359
333
 
360
334
  #include <sys/time.h>
361
335
 
362
- GIT_INLINE(double) git__timer(void)
336
+ GIT_INLINE(uint64_t) git_time_monotonic(void)
363
337
  {
364
338
  struct timeval tv;
365
339
 
366
340
  #ifdef CLOCK_MONOTONIC
367
341
  struct timespec tp;
368
342
  if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
369
- return (double) tp.tv_sec + (double) tp.tv_nsec / 1.0E9;
343
+ return (tp.tv_sec * 1000) + (tp.tv_nsec / 1.0E6);
370
344
  #endif
371
345
 
372
346
  /* Fall back to using gettimeofday */
373
347
  gettimeofday(&tv, NULL);
374
- return (double)tv.tv_sec + (double)tv.tv_usec / 1.0E6;
348
+ return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
375
349
  }
376
350
 
377
351
  #endif
@@ -76,7 +76,7 @@ int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
76
76
  return 0;
77
77
  }
78
78
 
79
- void git_vector_free(git_vector *v)
79
+ void git_vector_dispose(git_vector *v)
80
80
  {
81
81
  if (!v)
82
82
  return;
@@ -88,7 +88,7 @@ void git_vector_free(git_vector *v)
88
88
  v->_alloc_size = 0;
89
89
  }
90
90
 
91
- void git_vector_free_deep(git_vector *v)
91
+ void git_vector_dispose_deep(git_vector *v)
92
92
  {
93
93
  size_t i;
94
94
 
@@ -100,7 +100,7 @@ void git_vector_free_deep(git_vector *v)
100
100
  v->contents[i] = NULL;
101
101
  }
102
102
 
103
- git_vector_free(v);
103
+ git_vector_dispose(v);
104
104
  }
105
105
 
106
106
  int git_vector_init(git_vector *v, size_t initial_size, git_vector_cmp cmp)
@@ -28,8 +28,8 @@ typedef struct git_vector {
28
28
 
29
29
  GIT_WARN_UNUSED_RESULT int git_vector_init(
30
30
  git_vector *v, size_t initial_size, git_vector_cmp cmp);
31
- void git_vector_free(git_vector *v);
32
- void git_vector_free_deep(git_vector *v); /* free each entry and self */
31
+ void git_vector_dispose(git_vector *v);
32
+ void git_vector_dispose_deep(git_vector *v); /* free each entry and self */
33
33
  void git_vector_clear(git_vector *v);
34
34
  GIT_WARN_UNUSED_RESULT int git_vector_dup(
35
35
  git_vector *v, const git_vector *src, git_vector_cmp cmp);
@@ -43,7 +43,7 @@ char *git_win32_get_error_message(DWORD error_code)
43
43
  (LPWSTR)&lpMsgBuf, 0, NULL)) {
44
44
  /* Convert the message to UTF-8. If this fails, we will
45
45
  * return NULL, which is a condition expected by the caller */
46
- if (git__utf16_to_8_alloc(&utf8_msg, lpMsgBuf) < 0)
46
+ if (git_utf8_from_16_alloc(&utf8_msg, lpMsgBuf) < 0)
47
47
  utf8_msg = NULL;
48
48
 
49
49
  LocalFree(lpMsgBuf);
@@ -336,13 +336,13 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
336
336
 
337
337
  /* See if this is an absolute path (beginning with a drive letter) */
338
338
  if (git_fs_path_is_absolute(src)) {
339
- if (git__utf8_to_16(dest, GIT_WIN_PATH_MAX, src) < 0)
339
+ if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src) < 0)
340
340
  goto on_error;
341
341
  }
342
342
  /* File-prefixed NT-style paths beginning with \\?\ */
343
343
  else if (path__is_nt_namespace(src)) {
344
344
  /* Skip the NT prefix, the destination already contains it */
345
- if (git__utf8_to_16(dest, GIT_WIN_PATH_MAX, src + PATH__NT_NAMESPACE_LEN) < 0)
345
+ if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src + PATH__NT_NAMESPACE_LEN) < 0)
346
346
  goto on_error;
347
347
  }
348
348
  /* UNC paths */
@@ -351,7 +351,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
351
351
  dest += 4;
352
352
 
353
353
  /* Skip the leading "\\" */
354
- if (git__utf8_to_16(dest, GIT_WIN_PATH_MAX - 2, src + 2) < 0)
354
+ if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX - 2, src + 2) < 0)
355
355
  goto on_error;
356
356
  }
357
357
  /* Absolute paths omitting the drive letter */
@@ -365,7 +365,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
365
365
  }
366
366
 
367
367
  /* Skip the drive letter specification ("C:") */
368
- if (git__utf8_to_16(dest + 2, GIT_WIN_PATH_MAX - 2, src) < 0)
368
+ if (git_utf8_to_16(dest + 2, GIT_WIN_PATH_MAX - 2, src) < 0)
369
369
  goto on_error;
370
370
  }
371
371
  /* Relative paths */
@@ -377,7 +377,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
377
377
 
378
378
  dest[cwd_len++] = L'\\';
379
379
 
380
- if (git__utf8_to_16(dest + cwd_len, GIT_WIN_PATH_MAX - cwd_len, src) < 0)
380
+ if (git_utf8_to_16(dest + cwd_len, GIT_WIN_PATH_MAX - cwd_len, src) < 0)
381
381
  goto on_error;
382
382
  }
383
383
 
@@ -404,7 +404,7 @@ int git_win32_path_relative_from_utf8(git_win32_path out, const char *src)
404
404
  return git_win32_path_from_utf8(out, src);
405
405
  }
406
406
 
407
- if ((len = git__utf8_to_16(dest, GIT_WIN_PATH_MAX, src)) < 0)
407
+ if ((len = git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src)) < 0)
408
408
  return -1;
409
409
 
410
410
  for (p = dest; p < (dest + len); p++) {
@@ -433,7 +433,7 @@ int git_win32_path_to_utf8(git_win32_utf8_path dest, const wchar_t *src)
433
433
  }
434
434
  }
435
435
 
436
- if ((len = git__utf16_to_8(out, GIT_WIN_PATH_UTF8, src)) < 0)
436
+ if ((len = git_utf8_from_16(out, GIT_WIN_PATH_UTF8, src)) < 0)
437
437
  return len;
438
438
 
439
439
  git_fs_path_mkposix(dest);
@@ -471,7 +471,7 @@ char *git_win32_path_8dot3_name(const char *path)
471
471
  if (namelen > 12 || (shortname = git__malloc(namelen + 1)) == NULL)
472
472
  return NULL;
473
473
 
474
- if ((len = git__utf16_to_8(shortname, namelen + 1, start)) < 0)
474
+ if ((len = git_utf8_from_16(shortname, namelen + 1, start)) < 0)
475
475
  return NULL;
476
476
 
477
477
  return shortname;
@@ -649,7 +649,7 @@ int p_getcwd(char *buffer_out, size_t size)
649
649
  git_win32_path_remove_namespace(cwd, wcslen(cwd));
650
650
 
651
651
  /* Convert the working directory back to UTF-8 */
652
- if (git__utf16_to_8(buffer_out, size, cwd) < 0) {
652
+ if (git_utf8_from_16(buffer_out, size, cwd) < 0) {
653
653
  DWORD code = GetLastError();
654
654
 
655
655
  if (code == ERROR_INSUFFICIENT_BUFFER)
@@ -770,6 +770,7 @@ int p_rmdir(const char *path)
770
770
  * handle to the directory." This sounds like what everybody else calls
771
771
  * EBUSY. Let's convert appropriate error codes.
772
772
  */
773
+ case ERROR_ACCESS_DENIED:
773
774
  case ERROR_SHARING_VIOLATION:
774
775
  errno = EBUSY;
775
776
  break;
@@ -787,13 +788,19 @@ int p_rmdir(const char *path)
787
788
  char *p_realpath(const char *orig_path, char *buffer)
788
789
  {
789
790
  git_win32_path orig_path_w, buffer_w;
791
+ DWORD long_len;
790
792
 
791
793
  if (git_win32_path_from_utf8(orig_path_w, orig_path) < 0)
792
794
  return NULL;
793
795
 
794
- /* Note that if the path provided is a relative path, then the current directory
796
+ /*
797
+ * POSIX realpath performs two functions: first, it turns relative
798
+ * paths into absolute paths. For this, we need GetFullPathName.
799
+ *
800
+ * Note that if the path provided is a relative path, then the current directory
795
801
  * is used to resolve the path -- which is a concurrency issue because the current
796
- * directory is a process-wide variable. */
802
+ * directory is a process-wide variable.
803
+ */
797
804
  if (!GetFullPathNameW(orig_path_w, GIT_WIN_PATH_UTF16, buffer_w, NULL)) {
798
805
  if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
799
806
  errno = ENAMETOOLONG;
@@ -803,9 +810,26 @@ char *p_realpath(const char *orig_path, char *buffer)
803
810
  return NULL;
804
811
  }
805
812
 
806
- /* The path must exist. */
807
- if (GetFileAttributesW(buffer_w) == INVALID_FILE_ATTRIBUTES) {
808
- errno = ENOENT;
813
+ /*
814
+ * Then, the path is canonicalized. eg, on macOS,
815
+ * "/TMP" -> "/private/tmp". For this, we need GetLongPathName.
816
+ */
817
+ if ((long_len = GetLongPathNameW(buffer_w, buffer_w, GIT_WIN_PATH_UTF16)) == 0) {
818
+ DWORD error = GetLastError();
819
+
820
+ if (error == ERROR_FILE_NOT_FOUND ||
821
+ error == ERROR_PATH_NOT_FOUND)
822
+ errno = ENOENT;
823
+ else if (error == ERROR_ACCESS_DENIED)
824
+ errno = EPERM;
825
+ else
826
+ errno = EINVAL;
827
+
828
+ return NULL;
829
+ }
830
+
831
+ if (long_len > GIT_WIN_PATH_UTF16) {
832
+ errno = ENAMETOOLONG;
809
833
  return NULL;
810
834
  }
811
835
 
@@ -821,7 +845,6 @@ char *p_realpath(const char *orig_path, char *buffer)
821
845
  return NULL;
822
846
 
823
847
  git_fs_path_mkposix(buffer);
824
-
825
848
  return buffer;
826
849
  }
827
850