rugged 0.27.9 → 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 (420) 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 +98 -54
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  8. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  9. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  10. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  11. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  12. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  13. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  14. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  15. data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +93 -0
  16. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  17. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  18. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  19. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  20. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +2 -0
  21. data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -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.h +5 -0
  82. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  83. data/vendor/libgit2/include/git2/apply.h +149 -0
  84. data/vendor/libgit2/include/git2/attr.h +38 -20
  85. data/vendor/libgit2/include/git2/blame.h +42 -25
  86. data/vendor/libgit2/include/git2/blob.h +45 -13
  87. data/vendor/libgit2/include/git2/branch.h +1 -1
  88. data/vendor/libgit2/include/git2/buffer.h +22 -16
  89. data/vendor/libgit2/include/git2/cert.h +135 -0
  90. data/vendor/libgit2/include/git2/checkout.h +65 -32
  91. data/vendor/libgit2/include/git2/cherrypick.h +9 -7
  92. data/vendor/libgit2/include/git2/clone.h +12 -10
  93. data/vendor/libgit2/include/git2/commit.h +53 -3
  94. data/vendor/libgit2/include/git2/common.h +60 -8
  95. data/vendor/libgit2/include/git2/config.h +30 -19
  96. data/vendor/libgit2/include/git2/cred.h +308 -0
  97. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  98. data/vendor/libgit2/include/git2/describe.h +32 -9
  99. data/vendor/libgit2/include/git2/diff.h +208 -156
  100. data/vendor/libgit2/include/git2/errors.h +54 -46
  101. data/vendor/libgit2/include/git2/filter.h +8 -0
  102. data/vendor/libgit2/include/git2/ignore.h +2 -2
  103. data/vendor/libgit2/include/git2/index.h +74 -52
  104. data/vendor/libgit2/include/git2/indexer.h +76 -6
  105. data/vendor/libgit2/include/git2/mailmap.h +115 -0
  106. data/vendor/libgit2/include/git2/merge.h +35 -18
  107. data/vendor/libgit2/include/git2/net.h +0 -5
  108. data/vendor/libgit2/include/git2/notes.h +1 -1
  109. data/vendor/libgit2/include/git2/object.h +17 -29
  110. data/vendor/libgit2/include/git2/odb.h +12 -11
  111. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  112. data/vendor/libgit2/include/git2/oid.h +2 -2
  113. data/vendor/libgit2/include/git2/pack.h +14 -3
  114. data/vendor/libgit2/include/git2/proxy.h +14 -8
  115. data/vendor/libgit2/include/git2/rebase.h +53 -6
  116. data/vendor/libgit2/include/git2/refs.h +33 -15
  117. data/vendor/libgit2/include/git2/refspec.h +17 -0
  118. data/vendor/libgit2/include/git2/remote.h +123 -24
  119. data/vendor/libgit2/include/git2/repository.h +76 -39
  120. data/vendor/libgit2/include/git2/revert.h +6 -4
  121. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  122. data/vendor/libgit2/include/git2/signature.h +2 -2
  123. data/vendor/libgit2/include/git2/stash.h +15 -12
  124. data/vendor/libgit2/include/git2/status.h +33 -20
  125. data/vendor/libgit2/include/git2/submodule.h +30 -12
  126. data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
  127. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  128. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  129. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  130. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  131. data/vendor/libgit2/include/git2/sys/index.h +3 -0
  132. data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
  133. data/vendor/libgit2/include/git2/sys/merge.h +9 -4
  134. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  135. data/vendor/libgit2/include/git2/sys/path.h +64 -0
  136. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  137. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  138. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  139. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  140. data/vendor/libgit2/include/git2/tag.h +13 -4
  141. data/vendor/libgit2/include/git2/trace.h +2 -2
  142. data/vendor/libgit2/include/git2/transaction.h +1 -0
  143. data/vendor/libgit2/include/git2/transport.h +11 -311
  144. data/vendor/libgit2/include/git2/tree.h +4 -4
  145. data/vendor/libgit2/include/git2/types.h +33 -111
  146. data/vendor/libgit2/include/git2/version.h +4 -4
  147. data/vendor/libgit2/include/git2/worktree.h +48 -13
  148. data/vendor/libgit2/src/CMakeLists.txt +96 -164
  149. data/vendor/libgit2/src/alloc.c +43 -0
  150. data/vendor/libgit2/src/alloc.h +40 -0
  151. data/vendor/libgit2/src/allocators/stdalloc.c +119 -0
  152. data/vendor/libgit2/src/{streams/curl.h → allocators/stdalloc.h} +5 -5
  153. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  154. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  155. data/vendor/libgit2/src/annotated_commit.c +15 -8
  156. data/vendor/libgit2/src/apply.c +537 -31
  157. data/vendor/libgit2/src/apply.h +3 -1
  158. data/vendor/libgit2/src/array.h +2 -2
  159. data/vendor/libgit2/src/attr.c +81 -75
  160. data/vendor/libgit2/src/attr_file.c +207 -121
  161. data/vendor/libgit2/src/attr_file.h +9 -9
  162. data/vendor/libgit2/src/attrcache.c +51 -53
  163. data/vendor/libgit2/src/attrcache.h +2 -1
  164. data/vendor/libgit2/src/blame.c +47 -20
  165. data/vendor/libgit2/src/blame.h +2 -1
  166. data/vendor/libgit2/src/blame_git.c +37 -20
  167. data/vendor/libgit2/src/blob.c +128 -42
  168. data/vendor/libgit2/src/blob.h +19 -2
  169. data/vendor/libgit2/src/branch.c +67 -43
  170. data/vendor/libgit2/src/buf_text.c +7 -6
  171. data/vendor/libgit2/src/buffer.c +69 -57
  172. data/vendor/libgit2/src/buffer.h +1 -1
  173. data/vendor/libgit2/src/cache.c +38 -45
  174. data/vendor/libgit2/src/cache.h +3 -3
  175. data/vendor/libgit2/src/cc-compat.h +20 -3
  176. data/vendor/libgit2/src/checkout.c +109 -90
  177. data/vendor/libgit2/src/cherrypick.c +15 -9
  178. data/vendor/libgit2/src/clone.c +49 -27
  179. data/vendor/libgit2/src/clone.h +4 -0
  180. data/vendor/libgit2/src/commit.c +117 -49
  181. data/vendor/libgit2/src/commit.h +7 -0
  182. data/vendor/libgit2/src/commit_list.c +30 -78
  183. data/vendor/libgit2/src/commit_list.h +2 -2
  184. data/vendor/libgit2/src/common.h +27 -91
  185. data/vendor/libgit2/src/config.c +194 -176
  186. data/vendor/libgit2/src/config.h +8 -20
  187. data/vendor/libgit2/src/config_backend.h +96 -0
  188. data/vendor/libgit2/src/config_cache.c +41 -35
  189. data/vendor/libgit2/src/config_entries.c +229 -0
  190. data/vendor/libgit2/src/config_entries.h +24 -0
  191. data/vendor/libgit2/src/config_file.c +439 -753
  192. data/vendor/libgit2/src/config_mem.c +220 -0
  193. data/vendor/libgit2/src/config_parse.c +114 -63
  194. data/vendor/libgit2/src/config_parse.h +17 -16
  195. data/vendor/libgit2/src/config_snapshot.c +206 -0
  196. data/vendor/libgit2/src/crlf.c +219 -190
  197. data/vendor/libgit2/src/delta.c +25 -18
  198. data/vendor/libgit2/src/describe.c +42 -41
  199. data/vendor/libgit2/src/diff.c +53 -68
  200. data/vendor/libgit2/src/diff.h +2 -1
  201. data/vendor/libgit2/src/diff_driver.c +47 -49
  202. data/vendor/libgit2/src/diff_file.c +19 -17
  203. data/vendor/libgit2/src/diff_file.h +1 -1
  204. data/vendor/libgit2/src/diff_generate.c +162 -106
  205. data/vendor/libgit2/src/diff_generate.h +3 -3
  206. data/vendor/libgit2/src/diff_parse.c +4 -4
  207. data/vendor/libgit2/src/diff_print.c +42 -30
  208. data/vendor/libgit2/src/diff_stats.c +22 -7
  209. data/vendor/libgit2/src/diff_tform.c +16 -16
  210. data/vendor/libgit2/src/diff_xdiff.c +15 -3
  211. data/vendor/libgit2/src/errors.c +51 -39
  212. data/vendor/libgit2/src/errors.h +81 -0
  213. data/vendor/libgit2/src/features.h.in +11 -3
  214. data/vendor/libgit2/src/fetch.c +10 -5
  215. data/vendor/libgit2/src/fetchhead.c +17 -17
  216. data/vendor/libgit2/src/filebuf.c +32 -36
  217. data/vendor/libgit2/src/filebuf.h +2 -2
  218. data/vendor/libgit2/src/filter.c +46 -38
  219. data/vendor/libgit2/src/filter.h +0 -10
  220. data/vendor/libgit2/src/{fileops.c → futils.c} +80 -73
  221. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  222. data/vendor/libgit2/src/global.c +48 -63
  223. data/vendor/libgit2/src/global.h +0 -2
  224. data/vendor/libgit2/src/hash.c +61 -0
  225. data/vendor/libgit2/src/hash.h +20 -19
  226. data/vendor/libgit2/src/hash/sha1.h +38 -0
  227. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  228. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  229. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  230. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  231. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  232. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  233. data/vendor/libgit2/src/hash/sha1/mbedtls.c +46 -0
  234. data/vendor/libgit2/src/hash/sha1/mbedtls.h +19 -0
  235. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  236. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  237. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  238. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  239. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  240. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  241. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  242. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  243. data/vendor/libgit2/src/hashsig.c +5 -5
  244. data/vendor/libgit2/src/idxmap.c +107 -61
  245. data/vendor/libgit2/src/idxmap.h +153 -31
  246. data/vendor/libgit2/src/ignore.c +43 -47
  247. data/vendor/libgit2/src/index.c +337 -232
  248. data/vendor/libgit2/src/index.h +17 -1
  249. data/vendor/libgit2/src/indexer.c +346 -175
  250. data/vendor/libgit2/src/integer.h +71 -26
  251. data/vendor/libgit2/src/iterator.c +142 -70
  252. data/vendor/libgit2/src/iterator.h +15 -0
  253. data/vendor/libgit2/src/khash.h +3 -1
  254. data/vendor/libgit2/src/mailmap.c +485 -0
  255. data/vendor/libgit2/src/mailmap.h +35 -0
  256. data/vendor/libgit2/src/map.h +1 -1
  257. data/vendor/libgit2/src/merge.c +144 -100
  258. data/vendor/libgit2/src/merge_driver.c +11 -11
  259. data/vendor/libgit2/src/merge_file.c +2 -2
  260. data/vendor/libgit2/src/mwindow.c +24 -29
  261. data/vendor/libgit2/src/mwindow.h +4 -4
  262. data/vendor/libgit2/src/net.c +184 -0
  263. data/vendor/libgit2/src/net.h +36 -0
  264. data/vendor/libgit2/src/netops.c +55 -156
  265. data/vendor/libgit2/src/netops.h +3 -23
  266. data/vendor/libgit2/src/notes.c +16 -11
  267. data/vendor/libgit2/src/object.c +120 -69
  268. data/vendor/libgit2/src/object.h +22 -9
  269. data/vendor/libgit2/src/object_api.c +8 -8
  270. data/vendor/libgit2/src/odb.c +116 -93
  271. data/vendor/libgit2/src/odb.h +8 -7
  272. data/vendor/libgit2/src/odb_loose.c +62 -55
  273. data/vendor/libgit2/src/odb_mempack.c +21 -34
  274. data/vendor/libgit2/src/odb_pack.c +18 -14
  275. data/vendor/libgit2/src/offmap.c +53 -35
  276. data/vendor/libgit2/src/offmap.h +108 -21
  277. data/vendor/libgit2/src/oid.c +12 -7
  278. data/vendor/libgit2/src/oidmap.c +49 -47
  279. data/vendor/libgit2/src/oidmap.h +101 -24
  280. data/vendor/libgit2/src/pack-objects.c +88 -87
  281. data/vendor/libgit2/src/pack-objects.h +2 -8
  282. data/vendor/libgit2/src/pack.c +99 -101
  283. data/vendor/libgit2/src/pack.h +17 -19
  284. data/vendor/libgit2/src/parse.c +10 -0
  285. data/vendor/libgit2/src/parse.h +3 -3
  286. data/vendor/libgit2/src/patch.c +4 -4
  287. data/vendor/libgit2/src/patch_generate.c +20 -20
  288. data/vendor/libgit2/src/patch_parse.c +151 -63
  289. data/vendor/libgit2/src/path.c +169 -125
  290. data/vendor/libgit2/src/path.h +3 -71
  291. data/vendor/libgit2/src/pathspec.c +19 -19
  292. data/vendor/libgit2/src/pool.c +26 -22
  293. data/vendor/libgit2/src/pool.h +7 -7
  294. data/vendor/libgit2/src/posix.c +10 -10
  295. data/vendor/libgit2/src/posix.h +12 -1
  296. data/vendor/libgit2/src/proxy.c +8 -3
  297. data/vendor/libgit2/src/push.c +37 -31
  298. data/vendor/libgit2/src/push.h +2 -1
  299. data/vendor/libgit2/src/reader.c +265 -0
  300. data/vendor/libgit2/src/reader.h +107 -0
  301. data/vendor/libgit2/src/rebase.c +115 -59
  302. data/vendor/libgit2/src/refdb.c +15 -3
  303. data/vendor/libgit2/src/refdb_fs.c +381 -254
  304. data/vendor/libgit2/src/reflog.c +13 -15
  305. data/vendor/libgit2/src/refs.c +118 -88
  306. data/vendor/libgit2/src/refs.h +5 -3
  307. data/vendor/libgit2/src/refspec.c +56 -37
  308. data/vendor/libgit2/src/refspec.h +1 -1
  309. data/vendor/libgit2/src/regexp.c +221 -0
  310. data/vendor/libgit2/src/regexp.h +97 -0
  311. data/vendor/libgit2/src/remote.c +266 -215
  312. data/vendor/libgit2/src/remote.h +11 -2
  313. data/vendor/libgit2/src/repository.c +280 -225
  314. data/vendor/libgit2/src/repository.h +52 -40
  315. data/vendor/libgit2/src/reset.c +8 -8
  316. data/vendor/libgit2/src/revert.c +14 -9
  317. data/vendor/libgit2/src/revparse.c +47 -48
  318. data/vendor/libgit2/src/revwalk.c +120 -57
  319. data/vendor/libgit2/src/revwalk.h +22 -1
  320. data/vendor/libgit2/src/settings.c +47 -10
  321. data/vendor/libgit2/src/signature.c +11 -11
  322. data/vendor/libgit2/src/sortedcache.c +22 -36
  323. data/vendor/libgit2/src/sortedcache.h +1 -1
  324. data/vendor/libgit2/src/stash.c +125 -99
  325. data/vendor/libgit2/src/status.c +28 -22
  326. data/vendor/libgit2/src/stream.h +17 -2
  327. data/vendor/libgit2/src/streams/mbedtls.c +483 -0
  328. data/vendor/libgit2/src/streams/mbedtls.h +23 -0
  329. data/vendor/libgit2/src/streams/openssl.c +224 -114
  330. data/vendor/libgit2/src/streams/openssl.h +4 -108
  331. data/vendor/libgit2/src/streams/registry.c +118 -0
  332. data/vendor/libgit2/src/streams/registry.h +19 -0
  333. data/vendor/libgit2/src/streams/socket.c +55 -30
  334. data/vendor/libgit2/src/streams/stransport.c +57 -32
  335. data/vendor/libgit2/src/streams/stransport.h +5 -0
  336. data/vendor/libgit2/src/streams/tls.c +50 -19
  337. data/vendor/libgit2/src/streams/tls.h +12 -4
  338. data/vendor/libgit2/src/strmap.c +47 -74
  339. data/vendor/libgit2/src/strmap.h +108 -33
  340. data/vendor/libgit2/src/submodule.c +272 -216
  341. data/vendor/libgit2/src/submodule.h +1 -1
  342. data/vendor/libgit2/src/sysdir.c +29 -19
  343. data/vendor/libgit2/src/tag.c +41 -28
  344. data/vendor/libgit2/src/tag.h +2 -1
  345. data/vendor/libgit2/src/trace.c +2 -2
  346. data/vendor/libgit2/src/trace.h +3 -3
  347. data/vendor/libgit2/src/trailer.c +52 -38
  348. data/vendor/libgit2/src/transaction.c +30 -29
  349. data/vendor/libgit2/src/transport.c +5 -5
  350. data/vendor/libgit2/src/transports/auth.c +15 -11
  351. data/vendor/libgit2/src/transports/auth.h +10 -3
  352. data/vendor/libgit2/src/transports/auth_negotiate.c +33 -18
  353. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  354. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  355. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  356. data/vendor/libgit2/src/transports/cred.c +24 -24
  357. data/vendor/libgit2/src/transports/git.c +26 -31
  358. data/vendor/libgit2/src/transports/http.c +881 -348
  359. data/vendor/libgit2/src/transports/http.h +2 -0
  360. data/vendor/libgit2/src/transports/local.c +35 -35
  361. data/vendor/libgit2/src/transports/smart.c +70 -47
  362. data/vendor/libgit2/src/transports/smart.h +3 -4
  363. data/vendor/libgit2/src/transports/smart_pkt.c +43 -40
  364. data/vendor/libgit2/src/transports/smart_protocol.c +96 -116
  365. data/vendor/libgit2/src/transports/ssh.c +77 -66
  366. data/vendor/libgit2/src/transports/winhttp.c +318 -314
  367. data/vendor/libgit2/src/tree-cache.c +19 -12
  368. data/vendor/libgit2/src/tree.c +103 -142
  369. data/vendor/libgit2/src/tree.h +1 -12
  370. data/vendor/libgit2/src/unix/map.c +3 -3
  371. data/vendor/libgit2/src/unix/posix.h +1 -11
  372. data/vendor/libgit2/src/userdiff.h +3 -1
  373. data/vendor/libgit2/src/util.c +70 -56
  374. data/vendor/libgit2/src/util.h +28 -156
  375. data/vendor/libgit2/src/vector.c +4 -4
  376. data/vendor/libgit2/src/wildmatch.c +320 -0
  377. data/vendor/libgit2/src/wildmatch.h +23 -0
  378. data/vendor/libgit2/src/win32/dir.c +3 -3
  379. data/vendor/libgit2/src/win32/findfile.c +3 -3
  380. data/vendor/libgit2/src/win32/map.c +9 -11
  381. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  382. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  383. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  384. data/vendor/libgit2/src/win32/posix.h +1 -4
  385. data/vendor/libgit2/src/win32/posix_w32.c +70 -45
  386. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  387. data/vendor/libgit2/src/win32/thread.c +5 -10
  388. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  389. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  390. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +3 -2
  391. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +26 -75
  392. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  393. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  394. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  395. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  396. data/vendor/libgit2/src/worktree.c +95 -60
  397. data/vendor/libgit2/src/worktree.h +2 -0
  398. data/vendor/libgit2/src/xdiff/xdiffi.c +7 -5
  399. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  400. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  401. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  402. data/vendor/libgit2/src/zstream.c +4 -4
  403. metadata +122 -33
  404. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  405. data/vendor/libgit2/deps/regex/config.h +0 -7
  406. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  407. data/vendor/libgit2/deps/regex/regex.c +0 -92
  408. data/vendor/libgit2/deps/regex/regex.h +0 -582
  409. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  410. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  411. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  412. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  413. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  414. data/vendor/libgit2/libgit2.pc.in +0 -13
  415. data/vendor/libgit2/src/config_file.h +0 -73
  416. data/vendor/libgit2/src/fnmatch.c +0 -248
  417. data/vendor/libgit2/src/fnmatch.h +0 -48
  418. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  419. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  420. data/vendor/libgit2/src/streams/curl.c +0 -385
@@ -4,8 +4,8 @@
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
- #ifndef INCLUDE_fileops_h__
8
- #define INCLUDE_fileops_h__
7
+ #ifndef INCLUDE_futils_h__
8
+ #define INCLUDE_futils_h__
9
9
 
10
10
  #include "common.h"
11
11
 
@@ -255,7 +255,7 @@ extern int git_futils_truncate(const char *path, int mode);
255
255
  /**
256
256
  * Get the filesize in bytes of a file
257
257
  */
258
- extern git_off_t git_futils_filesize(git_file fd);
258
+ extern int git_futils_filesize(uint64_t *out, git_file fd);
259
259
 
260
260
  #define GIT_PERMS_IS_EXEC(MODE) (((MODE) & 0111) != 0)
261
261
  #define GIT_PERMS_CANONICAL(MODE) (GIT_PERMS_IS_EXEC(MODE) ? 0755 : 0644)
@@ -290,7 +290,7 @@ extern mode_t git_futils_canonical_mode(mode_t raw_mode);
290
290
  extern int git_futils_mmap_ro(
291
291
  git_map *out,
292
292
  git_file fd,
293
- git_off_t begin,
293
+ off64_t begin,
294
294
  size_t len);
295
295
 
296
296
  /**
@@ -330,7 +330,7 @@ extern int git_futils_fake_symlink(const char *new, const char *old);
330
330
  */
331
331
  typedef struct {
332
332
  struct timespec mtime;
333
- git_off_t size;
333
+ uint64_t size;
334
334
  unsigned int ino;
335
335
  } git_futils_filestamp;
336
336
 
@@ -340,7 +340,7 @@ typedef struct {
340
340
  * This function updates the file stamp to current data for the given path
341
341
  * and returns 0 if the file is up-to-date relative to the prior setting,
342
342
  * 1 if the file has been changed, or GIT_ENOTFOUND if the file doesn't
343
- * exist. This will not call giterr_set, so you must set the error if you
343
+ * exist. This will not call git_error_set, so you must set the error if you
344
344
  * plan to return an error.
345
345
  *
346
346
  * @param stamp File stamp to be checked
@@ -7,11 +7,13 @@
7
7
 
8
8
  #include "global.h"
9
9
 
10
+ #include "alloc.h"
10
11
  #include "hash.h"
11
12
  #include "sysdir.h"
12
13
  #include "filter.h"
13
14
  #include "merge_driver.h"
14
- #include "streams/curl.h"
15
+ #include "streams/registry.h"
16
+ #include "streams/mbedtls.h"
15
17
  #include "streams/openssl.h"
16
18
  #include "thread-utils.h"
17
19
  #include "git2/global.h"
@@ -24,9 +26,23 @@
24
26
 
25
27
  git_mutex git__mwindow_mutex;
26
28
 
27
- #define MAX_SHUTDOWN_CB 10
29
+ typedef int (*git_global_init_fn)(void);
30
+
31
+ static git_global_init_fn git__init_callbacks[] = {
32
+ git_allocator_global_init,
33
+ git_hash_global_init,
34
+ git_sysdir_global_init,
35
+ git_filter_global_init,
36
+ git_merge_driver_global_init,
37
+ git_transport_ssh_global_init,
38
+ git_stream_registry_global_init,
39
+ git_openssl_stream_global_init,
40
+ git_mbedtls_stream_global_init,
41
+ git_mwindow_global_init
42
+ };
43
+
44
+ static git_global_shutdown_fn git__shutdown_callbacks[ARRAY_SIZE(git__init_callbacks)];
28
45
 
29
- static git_global_shutdown_fn git__shutdown_callbacks[MAX_SHUTDOWN_CB];
30
46
  static git_atomic git__n_shutdown_callbacks;
31
47
  static git_atomic git__n_inits;
32
48
  char *git__user_agent;
@@ -35,7 +51,7 @@ char *git__ssl_ciphers;
35
51
  void git__on_shutdown(git_global_shutdown_fn callback)
36
52
  {
37
53
  int count = git_atomic_inc(&git__n_shutdown_callbacks);
38
- assert(count <= MAX_SHUTDOWN_CB && count > 0);
54
+ assert(count <= (int) ARRAY_SIZE(git__shutdown_callbacks) && count > 0);
39
55
  git__shutdown_callbacks[count - 1] = callback;
40
56
  }
41
57
 
@@ -50,6 +66,7 @@ static void git__global_state_cleanup(git_global_st *st)
50
66
 
51
67
  static int init_common(void)
52
68
  {
69
+ size_t i;
53
70
  int ret;
54
71
 
55
72
  /* Initialize the CRT debug allocator first, before our first malloc */
@@ -58,15 +75,10 @@ static int init_common(void)
58
75
  git_win32__stack_init();
59
76
  #endif
60
77
 
61
- /* Initialize any other subsystems that have global state */
62
- if ((ret = git_hash_global_init()) == 0 &&
63
- (ret = git_sysdir_global_init()) == 0 &&
64
- (ret = git_filter_global_init()) == 0 &&
65
- (ret = git_merge_driver_global_init()) == 0 &&
66
- (ret = git_transport_ssh_global_init()) == 0 &&
67
- (ret = git_openssl_stream_global_init()) == 0 &&
68
- (ret = git_curl_stream_global_init()) == 0)
69
- ret = git_mwindow_global_init();
78
+ /* Initialize subsystems that have global state */
79
+ for (i = 0; i < ARRAY_SIZE(git__init_callbacks); i++)
80
+ if ((ret = git__init_callbacks[i]()) != 0)
81
+ break;
70
82
 
71
83
  GIT_MEMORY_BARRIER;
72
84
 
@@ -129,14 +141,21 @@ static void shutdown_common(void)
129
141
  */
130
142
  #if defined(GIT_THREADS) && defined(GIT_WIN32)
131
143
 
132
- static DWORD _tls_index;
144
+ static DWORD _fls_index;
133
145
  static volatile LONG _mutex = 0;
134
146
 
147
+ static void WINAPI fls_free(void *st)
148
+ {
149
+ git__global_state_cleanup(st);
150
+ git__free(st);
151
+ }
152
+
135
153
  static int synchronized_threads_init(void)
136
154
  {
137
155
  int error;
138
156
 
139
- _tls_index = TlsAlloc();
157
+ if ((_fls_index = FlsAlloc(fls_free)) == FLS_OUT_OF_INDEXES)
158
+ return -1;
140
159
 
141
160
  git_threads_init();
142
161
 
@@ -178,9 +197,7 @@ int git_libgit2_shutdown(void)
178
197
  if ((ret = git_atomic_dec(&git__n_inits)) == 0) {
179
198
  shutdown_common();
180
199
 
181
- git__free_tls_data();
182
-
183
- TlsFree(_tls_index);
200
+ FlsFree(_fls_index);
184
201
  git_mutex_free(&git__mwindow_mutex);
185
202
 
186
203
  #if defined(GIT_MSVC_CRTDBG)
@@ -201,7 +218,7 @@ git_global_st *git__global_state(void)
201
218
 
202
219
  assert(git_atomic_get(&git__n_inits) > 0);
203
220
 
204
- if ((ptr = TlsGetValue(_tls_index)) != NULL)
221
+ if ((ptr = FlsGetValue(_fls_index)) != NULL)
205
222
  return ptr;
206
223
 
207
224
  ptr = git__calloc(1, sizeof(git_global_st));
@@ -210,43 +227,10 @@ git_global_st *git__global_state(void)
210
227
 
211
228
  git_buf_init(&ptr->error_buf, 0);
212
229
 
213
- TlsSetValue(_tls_index, ptr);
230
+ FlsSetValue(_fls_index, ptr);
214
231
  return ptr;
215
232
  }
216
233
 
217
- /**
218
- * Free the TLS data associated with this thread.
219
- * This should only be used by the thread as it
220
- * is exiting.
221
- */
222
- void git__free_tls_data(void)
223
- {
224
- void *ptr = TlsGetValue(_tls_index);
225
- if (!ptr)
226
- return;
227
-
228
- git__global_state_cleanup(ptr);
229
- git__free(ptr);
230
- TlsSetValue(_tls_index, NULL);
231
- }
232
-
233
- BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
234
- {
235
- GIT_UNUSED(hInstDll);
236
- GIT_UNUSED(lpvReserved);
237
-
238
- /* This is how Windows lets us know our thread is being shut down */
239
- if (fdwReason == DLL_THREAD_DETACH) {
240
- git__free_tls_data();
241
- }
242
-
243
- /*
244
- * Windows pays attention to this during library loading. We don't do anything
245
- * so we trivially succeed.
246
- */
247
- return TRUE;
248
- }
249
-
250
234
  #elif defined(GIT_THREADS) && defined(_POSIX_THREADS)
251
235
 
252
236
  static pthread_key_t _tls_key;
@@ -274,10 +258,10 @@ int git_libgit2_init(void)
274
258
  {
275
259
  int ret, err;
276
260
 
277
- ret = git_atomic_inc(&git__n_inits);
278
-
279
261
  if ((err = pthread_mutex_lock(&_init_mutex)) != 0)
280
262
  return err;
263
+
264
+ ret = git_atomic_inc(&git__n_inits);
281
265
  err = pthread_once(&_once_init, init_once);
282
266
  err |= pthread_mutex_unlock(&_init_mutex);
283
267
 
@@ -291,13 +275,13 @@ int git_libgit2_shutdown(void)
291
275
  {
292
276
  void *ptr = NULL;
293
277
  pthread_once_t new_once = PTHREAD_ONCE_INIT;
294
- int ret;
278
+ int error, ret;
295
279
 
296
- if ((ret = git_atomic_dec(&git__n_inits)) != 0)
297
- return ret;
280
+ if ((error = pthread_mutex_lock(&_init_mutex)) != 0)
281
+ return error;
298
282
 
299
- if ((ret = pthread_mutex_lock(&_init_mutex)) != 0)
300
- return ret;
283
+ if ((ret = git_atomic_dec(&git__n_inits)) != 0)
284
+ goto out;
301
285
 
302
286
  /* Shut down any subsystems that have global state */
303
287
  shutdown_common();
@@ -312,10 +296,11 @@ int git_libgit2_shutdown(void)
312
296
  git_mutex_free(&git__mwindow_mutex);
313
297
  _once_init = new_once;
314
298
 
315
- if ((ret = pthread_mutex_unlock(&_init_mutex)) != 0)
316
- return ret;
299
+ out:
300
+ if ((error = pthread_mutex_unlock(&_init_mutex)) != 0)
301
+ return error;
317
302
 
318
- return 0;
303
+ return ret;
319
304
  }
320
305
 
321
306
  git_global_st *git__global_state(void)
@@ -35,8 +35,6 @@ typedef void (*git_global_shutdown_fn)(void);
35
35
 
36
36
  extern void git__on_shutdown(git_global_shutdown_fn callback);
37
37
 
38
- extern void git__free_tls_data(void);
39
-
40
38
  extern const char *git_libgit2__user_agent(void);
41
39
  extern const char *git_libgit2__ssl_ciphers(void);
42
40
 
@@ -7,6 +7,67 @@
7
7
 
8
8
  #include "hash.h"
9
9
 
10
+ int git_hash_global_init(void)
11
+ {
12
+ return git_hash_sha1_global_init();
13
+ }
14
+
15
+ int git_hash_ctx_init(git_hash_ctx *ctx)
16
+ {
17
+ int error;
18
+
19
+ if ((error = git_hash_sha1_ctx_init(&ctx->sha1)) < 0)
20
+ return error;
21
+
22
+ ctx->algo = GIT_HASH_ALGO_SHA1;
23
+
24
+ return 0;
25
+ }
26
+
27
+ void git_hash_ctx_cleanup(git_hash_ctx *ctx)
28
+ {
29
+ switch (ctx->algo) {
30
+ case GIT_HASH_ALGO_SHA1:
31
+ git_hash_sha1_ctx_cleanup(&ctx->sha1);
32
+ return;
33
+ default:
34
+ assert(0);
35
+ }
36
+ }
37
+
38
+ int git_hash_init(git_hash_ctx *ctx)
39
+ {
40
+ switch (ctx->algo) {
41
+ case GIT_HASH_ALGO_SHA1:
42
+ return git_hash_sha1_init(&ctx->sha1);
43
+ default:
44
+ assert(0);
45
+ return -1;
46
+ }
47
+ }
48
+
49
+ int git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
50
+ {
51
+ switch (ctx->algo) {
52
+ case GIT_HASH_ALGO_SHA1:
53
+ return git_hash_sha1_update(&ctx->sha1, data, len);
54
+ default:
55
+ assert(0);
56
+ return -1;
57
+ }
58
+ }
59
+
60
+ int git_hash_final(git_oid *out, git_hash_ctx *ctx)
61
+ {
62
+ switch (ctx->algo) {
63
+ case GIT_HASH_ALGO_SHA1:
64
+ return git_hash_sha1_final(out, &ctx->sha1);
65
+ default:
66
+ assert(0);
67
+ return -1;
68
+ }
69
+ }
70
+
10
71
  int git_hash_buf(git_oid *out, const void *data, size_t len)
11
72
  {
12
73
  git_hash_ctx ctx;
@@ -4,6 +4,7 @@
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
+
7
8
  #ifndef INCLUDE_hash_h__
8
9
  #define INCLUDE_hash_h__
9
10
 
@@ -11,30 +12,30 @@
11
12
 
12
13
  #include "git2/oid.h"
13
14
 
14
- typedef struct git_hash_prov git_hash_prov;
15
- typedef struct git_hash_ctx git_hash_ctx;
16
-
17
- int git_hash_global_init(void);
18
- int git_hash_ctx_init(git_hash_ctx *ctx);
19
- void git_hash_ctx_cleanup(git_hash_ctx *ctx);
20
-
21
- #if defined(GIT_SHA1_COLLISIONDETECT)
22
- # include "hash/hash_collisiondetect.h"
23
- #elif defined(GIT_SHA1_COMMON_CRYPTO)
24
- # include "hash/hash_common_crypto.h"
25
- #elif defined(GIT_SHA1_OPENSSL)
26
- # include "hash/hash_openssl.h"
27
- #elif defined(GIT_SHA1_WIN32)
28
- # include "hash/hash_win32.h"
29
- #else
30
- # include "hash/hash_generic.h"
31
- #endif
32
-
33
15
  typedef struct {
34
16
  void *data;
35
17
  size_t len;
36
18
  } git_buf_vec;
37
19
 
20
+ typedef enum {
21
+ GIT_HASH_ALGO_UNKNOWN = 0,
22
+ GIT_HASH_ALGO_SHA1,
23
+ } git_hash_algo_t;
24
+
25
+ #include "hash/sha1.h"
26
+
27
+ typedef struct git_hash_ctx {
28
+ union {
29
+ git_hash_sha1_ctx sha1;
30
+ };
31
+ git_hash_algo_t algo;
32
+ } git_hash_ctx;
33
+
34
+ int git_hash_global_init(void);
35
+
36
+ int git_hash_ctx_init(git_hash_ctx *ctx);
37
+ void git_hash_ctx_cleanup(git_hash_ctx *ctx);
38
+
38
39
  int git_hash_init(git_hash_ctx *c);
39
40
  int git_hash_update(git_hash_ctx *c, const void *data, size_t len);
40
41
  int git_hash_final(git_oid *out, git_hash_ctx *c);
@@ -0,0 +1,38 @@
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_hash_sha1_h__
9
+ #define INCLUDE_hash_sha1_h__
10
+
11
+ #include "common.h"
12
+
13
+ typedef struct git_hash_sha1_ctx git_hash_sha1_ctx;
14
+
15
+ #if defined(GIT_SHA1_COLLISIONDETECT)
16
+ # include "sha1/collisiondetect.h"
17
+ #elif defined(GIT_SHA1_COMMON_CRYPTO)
18
+ # include "sha1/common_crypto.h"
19
+ #elif defined(GIT_SHA1_OPENSSL)
20
+ # include "sha1/openssl.h"
21
+ #elif defined(GIT_SHA1_WIN32)
22
+ # include "sha1/win32.h"
23
+ #elif defined(GIT_SHA1_MBEDTLS)
24
+ # include "sha1/mbedtls.h"
25
+ #else
26
+ # include "sha1/generic.h"
27
+ #endif
28
+
29
+ int git_hash_sha1_global_init(void);
30
+
31
+ int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx);
32
+ void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx);
33
+
34
+ int git_hash_sha1_init(git_hash_sha1_ctx *c);
35
+ int git_hash_sha1_update(git_hash_sha1_ctx *c, const void *data, size_t len);
36
+ int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *c);
37
+
38
+ #endif
@@ -0,0 +1,48 @@
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
+ #include "collisiondetect.h"
9
+
10
+ int git_hash_sha1_global_init(void)
11
+ {
12
+ return 0;
13
+ }
14
+
15
+ int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
16
+ {
17
+ return git_hash_sha1_init(ctx);
18
+ }
19
+
20
+ void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
21
+ {
22
+ GIT_UNUSED(ctx);
23
+ }
24
+
25
+ int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
26
+ {
27
+ assert(ctx);
28
+ SHA1DCInit(&ctx->c);
29
+ return 0;
30
+ }
31
+
32
+ int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
33
+ {
34
+ assert(ctx);
35
+ SHA1DCUpdate(&ctx->c, data, len);
36
+ return 0;
37
+ }
38
+
39
+ int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *ctx)
40
+ {
41
+ assert(ctx);
42
+ if (SHA1DCFinal(out->id, &ctx->c)) {
43
+ git_error_set(GIT_ERROR_SHA1, "SHA1 collision attack detected");
44
+ return -1;
45
+ }
46
+
47
+ return 0;
48
+ }