rugged 0.27.7 → 0.27.10

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 (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -47,7 +47,7 @@ extern int p_chdir(const char* path);
47
47
  extern int p_chmod(const char* path, mode_t mode);
48
48
  extern int p_rmdir(const char* path);
49
49
  extern int p_access(const char* path, mode_t mode);
50
- extern int p_ftruncate(int fd, git_off_t size);
50
+ extern int p_ftruncate(int fd, off64_t size);
51
51
 
52
52
  /* p_lstat is almost but not quite POSIX correct. Specifically, the use of
53
53
  * ENOTDIR is wrong, in that it does not mean precisely that a non-directory
@@ -60,7 +60,4 @@ extern int p_lstat_posixly(const char *filename, struct stat *buf);
60
60
  extern struct tm * p_localtime_r(const time_t *timer, struct tm *result);
61
61
  extern struct tm * p_gmtime_r(const time_t *timer, struct tm *result);
62
62
 
63
- /* Use the bundled regcomp */
64
- #define p_regcomp regcomp
65
-
66
63
  #endif
@@ -8,7 +8,7 @@
8
8
  #include "common.h"
9
9
 
10
10
  #include "../posix.h"
11
- #include "../fileops.h"
11
+ #include "../futils.h"
12
12
  #include "path.h"
13
13
  #include "path_w32.h"
14
14
  #include "utf-conv.h"
@@ -29,15 +29,20 @@
29
29
  #define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
30
30
  #endif
31
31
 
32
+ #ifndef SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
33
+ # define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x02
34
+ #endif
35
+
36
+ #ifndef SYMBOLIC_LINK_FLAG_DIRECTORY
37
+ # define SYMBOLIC_LINK_FLAG_DIRECTORY 0x01
38
+ #endif
39
+
32
40
  /* Allowable mode bits on Win32. Using mode bits that are not supported on
33
41
  * Win32 (eg S_IRWXU) is generally ignored, but Wine warns loudly about it
34
42
  * so we simply remove them.
35
43
  */
36
44
  #define WIN32_MODE_MASK (_S_IREAD | _S_IWRITE)
37
45
 
38
- /* GetFinalPathNameByHandleW signature */
39
- typedef DWORD(WINAPI *PFGetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD, DWORD);
40
-
41
46
  unsigned long git_win32__createfile_sharemode =
42
47
  FILE_SHARE_READ | FILE_SHARE_WRITE;
43
48
  int git_win32__retries = 10;
@@ -205,7 +210,7 @@ on_error:
205
210
  * We now take a "git_off_t" rather than "long" because
206
211
  * files may be longer than 2Gb.
207
212
  */
208
- int p_ftruncate(int fd, git_off_t size)
213
+ int p_ftruncate(int fd, off64_t size)
209
214
  {
210
215
  if (size < 0) {
211
216
  errno = EINVAL;
@@ -246,9 +251,25 @@ int p_link(const char *old, const char *new)
246
251
 
247
252
  GIT_INLINE(int) unlink_once(const wchar_t *path)
248
253
  {
254
+ DWORD error;
255
+
249
256
  if (DeleteFileW(path))
250
257
  return 0;
251
258
 
259
+ if ((error = GetLastError()) == ERROR_ACCESS_DENIED) {
260
+ WIN32_FILE_ATTRIBUTE_DATA fdata;
261
+ if (!GetFileAttributesExW(path, GetFileExInfoStandard, &fdata) ||
262
+ !(fdata.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ||
263
+ !(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
264
+ goto out;
265
+
266
+ if (RemoveDirectoryW(path))
267
+ return 0;
268
+ }
269
+
270
+ out:
271
+ SetLastError(error);
272
+
252
273
  if (last_error_retryable())
253
274
  return GIT_RETRY;
254
275
 
@@ -354,7 +375,7 @@ static int do_lstat(const char *path, struct stat *buf, bool posixly_correct)
354
375
  if ((len = git_win32_path_from_utf8(path_w, path)) < 0)
355
376
  return -1;
356
377
 
357
- git_win32__path_trim_end(path_w, len);
378
+ git_win32_path_trim_end(path_w, len);
358
379
 
359
380
  return lstat_w(path_w, buf, posixly_correct);
360
381
  }
@@ -393,12 +414,43 @@ int p_readlink(const char *path, char *buf, size_t bufsiz)
393
414
  return (int)bufsiz;
394
415
  }
395
416
 
396
- int p_symlink(const char *old, const char *new)
417
+ static bool target_is_dir(const char *target, const char *path)
397
418
  {
398
- /* Real symlinks on NTFS require admin privileges. Until this changes,
399
- * libgit2 just creates a text file with the link target in the contents.
400
- */
401
- return git_futils_fake_symlink(old, new);
419
+ git_buf resolved = GIT_BUF_INIT;
420
+ git_win32_path resolved_w;
421
+ bool isdir = true;
422
+
423
+ if (git_path_is_absolute(target))
424
+ git_win32_path_from_utf8(resolved_w, target);
425
+ else if (git_path_dirname_r(&resolved, path) < 0 ||
426
+ git_path_apply_relative(&resolved, target) < 0 ||
427
+ git_win32_path_from_utf8(resolved_w, resolved.ptr) < 0)
428
+ goto out;
429
+
430
+ isdir = GetFileAttributesW(resolved_w) & FILE_ATTRIBUTE_DIRECTORY;
431
+
432
+ out:
433
+ git_buf_dispose(&resolved);
434
+ return isdir;
435
+ }
436
+
437
+ int p_symlink(const char *target, const char *path)
438
+ {
439
+ git_win32_path target_w, path_w;
440
+ DWORD dwFlags;
441
+
442
+ if (git_win32_path_from_utf8(path_w, path) < 0 ||
443
+ git__utf8_to_16(target_w, MAX_PATH, target) < 0)
444
+ return -1;
445
+
446
+ dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
447
+ if (target_is_dir(target, path))
448
+ dwFlags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
449
+
450
+ if (!CreateSymbolicLinkW(path_w, target_w, dwFlags))
451
+ return -1;
452
+
453
+ return 0;
402
454
  }
403
455
 
404
456
  struct open_opts {
@@ -524,7 +576,7 @@ int p_utimes(const char *path, const struct p_timeval times[2])
524
576
  attrs_new = attrs_orig & ~FILE_ATTRIBUTE_READONLY;
525
577
 
526
578
  if (!SetFileAttributesW(wpath, attrs_new)) {
527
- giterr_set(GITERR_OS, "failed to set attributes");
579
+ git_error_set(GIT_ERROR_OS, "failed to set attributes");
528
580
  return -1;
529
581
  }
530
582
  }
@@ -598,40 +650,13 @@ int p_getcwd(char *buffer_out, size_t size)
598
650
  return 0;
599
651
  }
600
652
 
601
- /*
602
- * Returns the address of the GetFinalPathNameByHandleW function.
603
- * This function is available on Windows Vista and higher.
604
- */
605
- static PFGetFinalPathNameByHandleW get_fpnbyhandle(void)
606
- {
607
- static PFGetFinalPathNameByHandleW pFunc = NULL;
608
- PFGetFinalPathNameByHandleW toReturn = pFunc;
609
-
610
- if (!toReturn) {
611
- HMODULE hModule = GetModuleHandleW(L"kernel32");
612
-
613
- if (hModule)
614
- toReturn = (PFGetFinalPathNameByHandleW)GetProcAddress(hModule, "GetFinalPathNameByHandleW");
615
-
616
- pFunc = toReturn;
617
- }
618
-
619
- assert(toReturn);
620
-
621
- return toReturn;
622
- }
623
-
624
653
  static int getfinalpath_w(
625
654
  git_win32_path dest,
626
655
  const wchar_t *path)
627
656
  {
628
- PFGetFinalPathNameByHandleW pgfp = get_fpnbyhandle();
629
657
  HANDLE hFile;
630
658
  DWORD dwChars;
631
659
 
632
- if (!pgfp)
633
- return -1;
634
-
635
660
  /* Use FILE_FLAG_BACKUP_SEMANTICS so we can open a directory. Do not
636
661
  * specify FILE_FLAG_OPEN_REPARSE_POINT; we want to open a handle to the
637
662
  * target of the link. */
@@ -642,14 +667,14 @@ static int getfinalpath_w(
642
667
  return -1;
643
668
 
644
669
  /* Call GetFinalPathNameByHandle */
645
- dwChars = pgfp(hFile, dest, GIT_WIN_PATH_UTF16, FILE_NAME_NORMALIZED);
670
+ dwChars = GetFinalPathNameByHandleW(hFile, dest, GIT_WIN_PATH_UTF16, FILE_NAME_NORMALIZED);
646
671
  CloseHandle(hFile);
647
672
 
648
673
  if (!dwChars || dwChars >= GIT_WIN_PATH_UTF16)
649
674
  return -1;
650
675
 
651
- /* The path may be delivered to us with a prefix; canonicalize */
652
- return (int)git_win32__canonicalize_path(dest, dwChars);
676
+ /* The path may be delivered to us with a namespace prefix; remove */
677
+ return (int)git_win32_path_remove_namespace(dest, dwChars);
653
678
  }
654
679
 
655
680
  static int follow_and_lstat_link(git_win32_path path, struct stat* buf)
@@ -871,7 +896,7 @@ int p_rename(const char *from, const char *to)
871
896
  int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags)
872
897
  {
873
898
  if ((size_t)((int)length) != length)
874
- return -1; /* giterr_set will be done by caller */
899
+ return -1; /* git_error_set will be done by caller */
875
900
 
876
901
  return recv(socket, buffer, (int)length, flags);
877
902
  }
@@ -879,7 +904,7 @@ int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags)
879
904
  int p_send(GIT_SOCKET socket, const void *buffer, size_t length, int flags)
880
905
  {
881
906
  if ((size_t)((int)length) != length)
882
- return -1; /* giterr_set will be done by caller */
907
+ return -1; /* git_error_set will be done by caller */
883
908
 
884
909
  return send(socket, buffer, (int)length, flags);
885
910
  }
@@ -13,8 +13,6 @@
13
13
  #include <sys/types.h>
14
14
  #include <sys/stat.h>
15
15
 
16
- #include <regex.h>
17
-
18
16
  #include <io.h>
19
17
  #include <direct.h>
20
18
  #ifdef GIT_THREADS
@@ -32,8 +32,6 @@ static DWORD WINAPI git_win32__threadproc(LPVOID lpParameter)
32
32
 
33
33
  thread->result = thread->proc(thread->param);
34
34
 
35
- git__free_tls_data();
36
-
37
35
  return CLEAN_THREAD_EXIT;
38
36
  }
39
37
 
@@ -42,15 +40,15 @@ int git_threads_init(void)
42
40
  HMODULE hModule = GetModuleHandleW(L"kernel32");
43
41
 
44
42
  if (hModule) {
45
- win32_srwlock_initialize = (win32_srwlock_fn)
43
+ win32_srwlock_initialize = (win32_srwlock_fn)(void *)
46
44
  GetProcAddress(hModule, "InitializeSRWLock");
47
- win32_srwlock_acquire_shared = (win32_srwlock_fn)
45
+ win32_srwlock_acquire_shared = (win32_srwlock_fn)(void *)
48
46
  GetProcAddress(hModule, "AcquireSRWLockShared");
49
- win32_srwlock_release_shared = (win32_srwlock_fn)
47
+ win32_srwlock_release_shared = (win32_srwlock_fn)(void *)
50
48
  GetProcAddress(hModule, "ReleaseSRWLockShared");
51
- win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
49
+ win32_srwlock_acquire_exclusive = (win32_srwlock_fn)(void *)
52
50
  GetProcAddress(hModule, "AcquireSRWLockExclusive");
53
- win32_srwlock_release_exclusive = (win32_srwlock_fn)
51
+ win32_srwlock_release_exclusive = (win32_srwlock_fn)(void *)
54
52
  GetProcAddress(hModule, "ReleaseSRWLockExclusive");
55
53
  }
56
54
 
@@ -103,9 +101,6 @@ void git_thread_exit(void *value)
103
101
  {
104
102
  assert(GIT_GLOBAL->current_thread);
105
103
  GIT_GLOBAL->current_thread->result = value;
106
-
107
- git__free_tls_data();
108
-
109
104
  ExitThread(CLEAN_THREAD_EXIT);
110
105
  }
111
106
 
@@ -25,25 +25,29 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
25
25
  int utf8_len, utf8_write_len;
26
26
  size_t new_size;
27
27
 
28
- if (!len_w)
28
+ if (!len_w) {
29
29
  return 0;
30
+ } else if (len_w > INT_MAX) {
31
+ git_error_set_oom();
32
+ return -1;
33
+ }
30
34
 
31
35
  assert(string_w);
32
36
 
33
37
  /* Measure the string necessary for conversion */
34
- if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, NULL, 0, NULL, NULL)) == 0)
38
+ if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, NULL, 0, NULL, NULL)) == 0)
35
39
  return 0;
36
40
 
37
41
  assert(utf8_len > 0);
38
42
 
39
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
40
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
43
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
44
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
41
45
 
42
46
  if (git_buf_grow(buf, new_size) < 0)
43
47
  return -1;
44
48
 
45
49
  if ((utf8_write_len = WideCharToMultiByte(
46
- CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
50
+ CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
47
51
  return handle_wc_error();
48
52
 
49
53
  assert(utf8_write_len == utf8_len);
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #ifndef INCLUDE_win32_w32_common_h__
9
+ #define INCLUDE_win32_w32_common_h__
10
+
11
+ /*
12
+ * Provides a large enough buffer to support Windows paths: MAX_PATH is
13
+ * 260, corresponding to a maximum path length of 259 characters plus a
14
+ * NULL terminator. Prefixing with "\\?\" adds 4 characters, but if the
15
+ * original was a UNC path, then we turn "\\server\share" into
16
+ * "\\?\UNC\server\share". So we replace the first two characters with
17
+ * 8 characters, a net gain of 6, so the maximum length is MAX_PATH+6.
18
+ */
19
+ #define GIT_WIN_PATH_UTF16 MAX_PATH+6
20
+
21
+ /* Maximum size of a UTF-8 Win32 path. We remove the "\\?\" or "\\?\UNC\"
22
+ * prefixes for presentation, bringing us back to 259 (non-NULL)
23
+ * characters. UTF-8 does have 4-byte sequences, but they are encoded in
24
+ * UTF-16 using surrogate pairs, which takes up the space of two characters.
25
+ * Two characters in the range U+0800 -> U+FFFF take up more space in UTF-8
26
+ * (6 bytes) than one surrogate pair (4 bytes).
27
+ */
28
+ #define GIT_WIN_PATH_UTF8 (259 * 3 + 1)
29
+
30
+ /*
31
+ * The length of a Windows "shortname", for 8.3 compatibility.
32
+ */
33
+ #define GIT_WIN_PATH_SHORTNAME 13
34
+
35
+ /* Win32 path types */
36
+ typedef wchar_t git_win32_path[GIT_WIN_PATH_UTF16];
37
+ typedef char git_win32_utf8_path[GIT_WIN_PATH_UTF8];
38
+
39
+ #endif
@@ -71,99 +71,6 @@ static bool g_limit_reached = false; /* had allocs after we filled row table */
71
71
  static unsigned int g_checkpoint_id = 0; /* to better label leak checkpoints */
72
72
  static bool g_transient_leaks_since_mark = false; /* payload for hook */
73
73
 
74
- static void *crtdbg__malloc(size_t len, const char *file, int line)
75
- {
76
- void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
77
- if (!ptr) giterr_set_oom();
78
- return ptr;
79
- }
80
-
81
- static void *crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
82
- {
83
- void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
84
- if (!ptr) giterr_set_oom();
85
- return ptr;
86
- }
87
-
88
- static char *crtdbg__strdup(const char *str, const char *file, int line)
89
- {
90
- char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
91
- if (!ptr) giterr_set_oom();
92
- return ptr;
93
- }
94
-
95
- static char *crtdbg__strndup(const char *str, size_t n, const char *file, int line)
96
- {
97
- size_t length = 0, alloclength;
98
- char *ptr;
99
-
100
- length = p_strnlen(str, n);
101
-
102
- if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
103
- !(ptr = crtdbg__malloc(alloclength, file, line)))
104
- return NULL;
105
-
106
- if (length)
107
- memcpy(ptr, str, length);
108
-
109
- ptr[length] = '\0';
110
-
111
- return ptr;
112
- }
113
-
114
- static char *crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
115
- {
116
- char *ptr;
117
- size_t alloclen;
118
-
119
- if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
120
- !(ptr = crtdbg__malloc(alloclen, file, line)))
121
- return NULL;
122
-
123
- memcpy(ptr, start, n);
124
- ptr[n] = '\0';
125
- return ptr;
126
- }
127
-
128
- static void *crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
129
- {
130
- void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
131
- if (!new_ptr) giterr_set_oom();
132
- return new_ptr;
133
- }
134
-
135
- static void *crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
136
- {
137
- size_t newsize;
138
-
139
- return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
140
- NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
141
- }
142
-
143
- static void *crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
144
- {
145
- return crtdbg__reallocarray(NULL, nelem, elsize, file, line);
146
- }
147
-
148
- static void crtdbg__free(void *ptr)
149
- {
150
- free(ptr);
151
- }
152
-
153
- int git_win32_crtdbg_init_allocator(git_allocator *allocator)
154
- {
155
- allocator->gmalloc = crtdbg__malloc;
156
- allocator->gcalloc = crtdbg__calloc;
157
- allocator->gstrdup = crtdbg__strdup;
158
- allocator->gstrndup = crtdbg__strndup;
159
- allocator->gsubstrdup = crtdbg__substrdup;
160
- allocator->grealloc = crtdbg__realloc;
161
- allocator->greallocarray = crtdbg__reallocarray;
162
- allocator->gmallocarray = crtdbg__mallocarray;
163
- allocator->gfree = crtdbg__free;
164
- return 0;
165
- }
166
-
167
74
  /**
168
75
  * Compare function for bsearch on g_cs_index table.
169
76
  */
@@ -347,11 +254,11 @@ int git_win32__crtdbg_stacktrace__dump(
347
254
  bool b_quiet = IS_BIT_SET(opt, GIT_WIN32__CRTDBG_STACKTRACE__QUIET);
348
255
 
349
256
  if (b_leaks_since_mark && b_leaks_total) {
350
- giterr_set(GITERR_INVALID, "cannot combine LEAKS_SINCE_MARK and LEAKS_TOTAL.");
257
+ git_error_set(GIT_ERROR_INVALID, "cannot combine LEAKS_SINCE_MARK and LEAKS_TOTAL.");
351
258
  return GIT_ERROR;
352
259
  }
353
260
  if (!b_set_mark && !b_leaks_since_mark && !b_leaks_total) {
354
- giterr_set(GITERR_INVALID, "nothing to do.");
261
+ git_error_set(GIT_ERROR_INVALID, "nothing to do.");
355
262
  return GIT_ERROR;
356
263
  }
357
264
 
@@ -43,8 +43,6 @@
43
43
  * startup. See tests/main.c for an example.
44
44
  */
45
45
 
46
- int git_win32_crtdbg_init_allocator(git_allocator *allocator);
47
-
48
46
  /**
49
47
  * Initialize our memory leak tracking and de-dup data structures.
50
48
  * This should ONLY be called by git_libgit2_init().
@@ -13,11 +13,6 @@
13
13
  #include "win32/posix.h"
14
14
  #include "hash.h"
15
15
 
16
- /**
17
- * This is supposedly defined in WinBase.h (from Windows.h) but there were linker issues.
18
- */
19
- USHORT WINAPI RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
20
-
21
16
  static bool g_win32_stack_initialized = false;
22
17
  static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
23
18
  static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
@@ -55,7 +50,7 @@ void git_win32__stack_cleanup(void)
55
50
  int git_win32__stack_capture(git_win32__stack__raw_data *pdata, int skip)
56
51
  {
57
52
  if (!g_win32_stack_initialized) {
58
- giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
53
+ git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
59
54
  return GIT_ERROR;
60
55
  }
61
56
 
@@ -81,7 +76,7 @@ int git_win32__stack_compare(
81
76
  }
82
77
 
83
78
  int git_win32__stack_format(
84
- char *pbuf, int buf_len,
79
+ char *pbuf, size_t buf_len,
85
80
  const git_win32__stack__raw_data *pdata,
86
81
  const char *prefix, const char *suffix)
87
82
  {
@@ -96,13 +91,13 @@ int git_win32__stack_format(
96
91
  } s;
97
92
 
98
93
  IMAGEHLP_LINE64 line;
99
- int buf_used = 0;
94
+ size_t buf_used = 0;
100
95
  unsigned int k;
101
96
  char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
102
- int detail_len;
97
+ size_t detail_len;
103
98
 
104
99
  if (!g_win32_stack_initialized) {
105
- giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
100
+ git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
106
101
  return GIT_ERROR;
107
102
  }
108
103
 
@@ -176,7 +171,7 @@ int git_win32__stack_format(
176
171
  }
177
172
 
178
173
  int git_win32__stack(
179
- char * pbuf, int buf_len,
174
+ char * pbuf, size_t buf_len,
180
175
  int skip,
181
176
  const char *prefix, const char *suffix)
182
177
  {
@@ -38,7 +38,7 @@ typedef void (*git_win32__stack__aux_cb_alloc)(unsigned int *aux_id);
38
38
  * @param aux_msg A buffer where a formatted message should be written.
39
39
  * @param aux_msg_len The size of the buffer.
40
40
  */
41
- typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, unsigned int aux_msg_len);
41
+ typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, size_t aux_msg_len);
42
42
 
43
43
  /**
44
44
  * Register an "aux" data provider to augment our C stacktrace data.
@@ -116,7 +116,7 @@ int git_win32__stack_compare(
116
116
  * @param suffix String written after each frame; defaults to "\n".
117
117
  */
118
118
  int git_win32__stack_format(
119
- char *pbuf, int buf_len,
119
+ char *pbuf, size_t buf_len,
120
120
  const git_win32__stack__raw_data *pdata,
121
121
  const char *prefix, const char *suffix);
122
122
 
@@ -132,7 +132,7 @@ int git_win32__stack_format(
132
132
  * @param suffix String written after each frame; defaults to "\n".
133
133
  */
134
134
  int git_win32__stack(
135
- char * pbuf, int buf_len,
135
+ char * pbuf, size_t buf_len,
136
136
  int skip,
137
137
  const char *prefix, const char *suffix);
138
138
 
@@ -68,7 +68,7 @@ int git_win32__set_hidden(const char *path, bool hidden)
68
68
  newattrs = attrs & ~FILE_ATTRIBUTE_HIDDEN;
69
69
 
70
70
  if (attrs != newattrs && !SetFileAttributesW(buf, newattrs)) {
71
- giterr_set(GITERR_OS, "failed to %s hidden bit for '%s'",
71
+ git_error_set(GIT_ERROR_OS, "failed to %s hidden bit for '%s'",
72
72
  hidden ? "set" : "unset", path);
73
73
  return -1;
74
74
  }
@@ -94,70 +94,33 @@ int git_win32__hidden(bool *out, const char *path)
94
94
  return 0;
95
95
  }
96
96
 
97
- /**
98
- * Removes any trailing backslashes from a path, except in the case of a drive
99
- * letter path (C:\, D:\, etc.). This function cannot fail.
100
- *
101
- * @param path The path which should be trimmed.
102
- * @return The length of the modified string (<= the input length)
103
- */
104
- size_t git_win32__path_trim_end(wchar_t *str, size_t len)
97
+ int git_win32__file_attribute_to_stat(
98
+ struct stat *st,
99
+ const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
100
+ const wchar_t *path)
105
101
  {
106
- while (1) {
107
- if (!len || str[len - 1] != L'\\')
108
- break;
109
-
110
- /* Don't trim backslashes from drive letter paths, which
111
- * are 3 characters long and of the form C:\, D:\, etc. */
112
- if (len == 3 && git_win32__isalpha(str[0]) && str[1] == ':')
113
- break;
114
-
115
- len--;
102
+ git_win32__stat_init(st,
103
+ attrdata->dwFileAttributes,
104
+ attrdata->nFileSizeHigh,
105
+ attrdata->nFileSizeLow,
106
+ attrdata->ftCreationTime,
107
+ attrdata->ftLastAccessTime,
108
+ attrdata->ftLastWriteTime);
109
+
110
+ if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
111
+ git_win32_path target;
112
+
113
+ if (git_win32_path_readlink_w(target, path) >= 0) {
114
+ st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
115
+
116
+ /* st_size gets the UTF-8 length of the target name, in bytes,
117
+ * not counting the NULL terminator */
118
+ if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
119
+ git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
120
+ return -1;
121
+ }
122
+ }
116
123
  }
117
124
 
118
- str[len] = L'\0';
119
-
120
- return len;
121
- }
122
-
123
- /**
124
- * Removes any of the following namespace prefixes from a path,
125
- * if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
126
- *
127
- * @param path The path which should be converted.
128
- * @return The length of the modified string (<= the input length)
129
- */
130
- size_t git_win32__canonicalize_path(wchar_t *str, size_t len)
131
- {
132
- static const wchar_t dosdevices_prefix[] = L"\\\?\?\\";
133
- static const wchar_t nt_prefix[] = L"\\\\?\\";
134
- static const wchar_t unc_prefix[] = L"UNC\\";
135
- size_t to_advance = 0;
136
-
137
- /* "\??\" -- DOS Devices prefix */
138
- if (len >= CONST_STRLEN(dosdevices_prefix) &&
139
- !wcsncmp(str, dosdevices_prefix, CONST_STRLEN(dosdevices_prefix))) {
140
- to_advance += CONST_STRLEN(dosdevices_prefix);
141
- len -= CONST_STRLEN(dosdevices_prefix);
142
- }
143
- /* "\\?\" -- NT namespace prefix */
144
- else if (len >= CONST_STRLEN(nt_prefix) &&
145
- !wcsncmp(str, nt_prefix, CONST_STRLEN(nt_prefix))) {
146
- to_advance += CONST_STRLEN(nt_prefix);
147
- len -= CONST_STRLEN(nt_prefix);
148
- }
149
-
150
- /* "\??\UNC\", "\\?\UNC\" -- UNC prefix */
151
- if (to_advance && len >= CONST_STRLEN(unc_prefix) &&
152
- !wcsncmp(str + to_advance, unc_prefix, CONST_STRLEN(unc_prefix))) {
153
- to_advance += CONST_STRLEN(unc_prefix);
154
- len -= CONST_STRLEN(unc_prefix);
155
- }
156
-
157
- if (to_advance) {
158
- memmove(str, str + to_advance, len * sizeof(wchar_t));
159
- str[len] = L'\0';
160
- }
161
-
162
- return git_win32__path_trim_end(str, len);
125
+ return 0;
163
126
  }