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
@@ -7,11 +7,24 @@
7
7
 
8
8
  #include "offmap.h"
9
9
 
10
- __KHASH_IMPL(off, static kh_inline, git_off_t, void *, 1, kh_int64_hash_func, kh_int64_hash_equal)
10
+ #define kmalloc git__malloc
11
+ #define kcalloc git__calloc
12
+ #define krealloc git__realloc
13
+ #define kreallocarray git__reallocarray
14
+ #define kfree git__free
15
+ #include "khash.h"
11
16
 
12
- git_offmap *git_offmap_alloc(void)
17
+ __KHASH_TYPE(off, off64_t, void *)
18
+
19
+ __KHASH_IMPL(off, static kh_inline, off64_t, void *, 1, kh_int64_hash_func, kh_int64_hash_equal)
20
+
21
+
22
+ int git_offmap_new(git_offmap **out)
13
23
  {
14
- return kh_init(off);
24
+ *out = kh_init(off);
25
+ GIT_ERROR_CHECK_ALLOC(*out);
26
+
27
+ return 0;
15
28
  }
16
29
 
17
30
  void git_offmap_free(git_offmap *map)
@@ -24,60 +37,65 @@ void git_offmap_clear(git_offmap *map)
24
37
  kh_clear(off, map);
25
38
  }
26
39
 
27
- size_t git_offmap_num_entries(git_offmap *map)
40
+ size_t git_offmap_size(git_offmap *map)
28
41
  {
29
42
  return kh_size(map);
30
43
  }
31
44
 
32
- size_t git_offmap_lookup_index(git_offmap *map, const git_off_t key)
45
+ void *git_offmap_get(git_offmap *map, const off64_t key)
33
46
  {
34
- return kh_get(off, map, key);
47
+ size_t idx = kh_get(off, map, key);
48
+ if (idx == kh_end(map) || !kh_exist(map, idx))
49
+ return NULL;
50
+ return kh_val(map, idx);
35
51
  }
36
52
 
37
- int git_offmap_valid_index(git_offmap *map, size_t idx)
53
+ int git_offmap_set(git_offmap *map, const off64_t key, void *value)
38
54
  {
39
- return idx != kh_end(map);
40
- }
55
+ size_t idx;
56
+ int rval;
41
57
 
42
- int git_offmap_exists(git_offmap *map, const git_off_t key)
43
- {
44
- return kh_get(off, map, key) != kh_end(map);
45
- }
58
+ idx = kh_put(off, map, key, &rval);
59
+ if (rval < 0)
60
+ return -1;
46
61
 
47
- void *git_offmap_value_at(git_offmap *map, size_t idx)
48
- {
49
- return kh_val(map, idx);
50
- }
62
+ if (rval == 0)
63
+ kh_key(map, idx) = key;
51
64
 
52
- void git_offmap_set_value_at(git_offmap *map, size_t idx, void *value)
53
- {
54
65
  kh_val(map, idx) = value;
66
+
67
+ return 0;
55
68
  }
56
69
 
57
- void git_offmap_delete_at(git_offmap *map, size_t idx)
70
+ int git_offmap_delete(git_offmap *map, const off64_t key)
58
71
  {
72
+ khiter_t idx = kh_get(off, map, key);
73
+ if (idx == kh_end(map))
74
+ return GIT_ENOTFOUND;
59
75
  kh_del(off, map, idx);
76
+ return 0;
60
77
  }
61
78
 
62
- int git_offmap_put(git_offmap *map, const git_off_t key, int *err)
79
+ int git_offmap_exists(git_offmap *map, const off64_t key)
63
80
  {
64
- return kh_put(off, map, key, err);
81
+ return kh_get(off, map, key) != kh_end(map);
65
82
  }
66
83
 
67
- void git_offmap_insert(git_offmap *map, const git_off_t key, void *value, int *rval)
84
+ int git_offmap_iterate(void **value, git_offmap *map, size_t *iter, off64_t *key)
68
85
  {
69
- khiter_t idx = kh_put(off, map, key, rval);
86
+ size_t i = *iter;
70
87
 
71
- if ((*rval) >= 0) {
72
- if ((*rval) == 0)
73
- kh_key(map, idx) = key;
74
- kh_val(map, idx) = value;
75
- }
76
- }
88
+ while (i < map->n_buckets && !kh_exist(map, i))
89
+ i++;
77
90
 
78
- void git_offmap_delete(git_offmap *map, const git_off_t key)
79
- {
80
- khiter_t idx = git_offmap_lookup_index(map, key);
81
- if (git_offmap_valid_index(map, idx))
82
- git_offmap_delete_at(map, idx);
91
+ if (i >= map->n_buckets)
92
+ return GIT_ITEROVER;
93
+
94
+ if (key)
95
+ *key = kh_key(map, i);
96
+ if (value)
97
+ *value = kh_value(map, i);
98
+ *iter = ++i;
99
+
100
+ return 0;
83
101
  }
@@ -11,36 +11,123 @@
11
11
 
12
12
  #include "git2/types.h"
13
13
 
14
- #define kmalloc git__malloc
15
- #define kcalloc git__calloc
16
- #define krealloc git__realloc
17
- #define kreallocarray git__reallocarray
18
- #define kfree git__free
19
- #include "khash.h"
14
+ /** A map with `off64_t`s as key. */
15
+ typedef struct kh_off_s git_offmap;
20
16
 
21
- __KHASH_TYPE(off, git_off_t, void *)
22
- typedef khash_t(off) git_offmap;
17
+ /**
18
+ * Allocate a new `off64_t` map.
19
+ *
20
+ * @param out Pointer to the map that shall be allocated.
21
+ * @return 0 on success, an error code if allocation has failed.
22
+ */
23
+ int git_offmap_new(git_offmap **out);
23
24
 
24
- git_offmap *git_offmap_alloc(void);
25
+ /**
26
+ * Free memory associated with the map.
27
+ *
28
+ * Note that this function will _not_ free values added to this
29
+ * map.
30
+ *
31
+ * @param map Pointer to the map that is to be free'd. May be
32
+ * `NULL`.
33
+ */
25
34
  void git_offmap_free(git_offmap *map);
35
+
36
+ /**
37
+ * Clear all entries from the map.
38
+ *
39
+ * This function will remove all entries from the associated map.
40
+ * Memory associated with it will not be released, though.
41
+ *
42
+ * @param map Pointer to the map that shall be cleared. May be
43
+ * `NULL`.
44
+ */
26
45
  void git_offmap_clear(git_offmap *map);
27
46
 
28
- size_t git_offmap_num_entries(git_offmap *map);
47
+ /**
48
+ * Return the number of elements in the map.
49
+ *
50
+ * @parameter map map containing the elements
51
+ * @return number of elements in the map
52
+ */
53
+ size_t git_offmap_size(git_offmap *map);
54
+
55
+ /**
56
+ * Return value associated with the given key.
57
+ *
58
+ * @param map map to search key in
59
+ * @param key key to search for
60
+ * @return value associated with the given key or NULL if the key was not found
61
+ */
62
+ void *git_offmap_get(git_offmap *map, const off64_t key);
63
+
64
+ /**
65
+ * Set the entry for key to value.
66
+ *
67
+ * If the map has no corresponding entry for the given key, a new
68
+ * entry will be created with the given value. If an entry exists
69
+ * already, its value will be updated to match the given value.
70
+ *
71
+ * @param map map to create new entry in
72
+ * @param key key to set
73
+ * @param value value to associate the key with; may be NULL
74
+ * @return zero if the key was successfully set, a negative error
75
+ * code otherwise
76
+ */
77
+ int git_offmap_set(git_offmap *map, const off64_t key, void *value);
29
78
 
30
- size_t git_offmap_lookup_index(git_offmap *map, const git_off_t key);
31
- int git_offmap_valid_index(git_offmap *map, size_t idx);
79
+ /**
80
+ * Delete an entry from the map.
81
+ *
82
+ * Delete the given key and its value from the map. If no such
83
+ * key exists, this will do nothing.
84
+ *
85
+ * @param map map to delete key in
86
+ * @param key key to delete
87
+ * @return `0` if the key has been deleted, GIT_ENOTFOUND if no
88
+ * such key was found, a negative code in case of an
89
+ * error
90
+ */
91
+ int git_offmap_delete(git_offmap *map, const off64_t key);
32
92
 
33
- int git_offmap_exists(git_offmap *map, const git_off_t key);
93
+ /**
94
+ * Check whether a key exists in the given map.
95
+ *
96
+ * @param map map to query for the key
97
+ * @param key key to search for
98
+ * @return 0 if the key has not been found, 1 otherwise
99
+ */
100
+ int git_offmap_exists(git_offmap *map, const off64_t key);
34
101
 
35
- void *git_offmap_value_at(git_offmap *map, size_t idx);
36
- void git_offmap_set_value_at(git_offmap *map, size_t idx, void *value);
37
- void git_offmap_delete_at(git_offmap *map, size_t idx);
102
+ /**
103
+ * Iterate over entries of the map.
104
+ *
105
+ * This functions allows to iterate over all key-value entries of
106
+ * the map. The current position is stored in the `iter` variable
107
+ * and should be initialized to `0` before the first call to this
108
+ * function.
109
+ *
110
+ * @param map map to iterate over
111
+ * @param value pointer to the variable where to store the current
112
+ * value. May be NULL.
113
+ * @param iter iterator storing the current position. Initialize
114
+ * with zero previous to the first call.
115
+ * @param key pointer to the variable where to store the current
116
+ * key. May be NULL.
117
+ * @return `0` if the next entry was correctly retrieved.
118
+ * GIT_ITEROVER if no entries are left. A negative error
119
+ * code otherwise.
120
+ */
121
+ int git_offmap_iterate(void **value, git_offmap *map, size_t *iter, off64_t *key);
38
122
 
39
- int git_offmap_put(git_offmap *map, const git_off_t key, int *err);
40
- void git_offmap_insert(git_offmap *map, const git_off_t key, void *value, int *rval);
41
- void git_offmap_delete(git_offmap *map, const git_off_t key);
123
+ #define git_offmap_foreach(h, kvar, vvar, code) { size_t __i = 0; \
124
+ while (git_offmap_iterate((void **) &(vvar), h, &__i, &(kvar)) == 0) { \
125
+ code; \
126
+ } }
42
127
 
43
- #define git_offmap_foreach kh_foreach
44
- #define git_offmap_foreach_value kh_foreach_value
128
+ #define git_offmap_foreach_value(h, vvar, code) { size_t __i = 0; \
129
+ while (git_offmap_iterate((void **) &(vvar), h, &__i, NULL) == 0) { \
130
+ code; \
131
+ } }
45
132
 
46
133
  #endif
@@ -17,7 +17,7 @@ static char to_hex[] = "0123456789abcdef";
17
17
 
18
18
  static int oid_error_invalid(const char *msg)
19
19
  {
20
- giterr_set(GITERR_INVALID, "unable to parse OID - %s", msg);
20
+ git_error_set(GIT_ERROR_INVALID, "unable to parse OID - %s", msg);
21
21
  return -1;
22
22
  }
23
23
 
@@ -237,7 +237,7 @@ int git_oid_streq(const git_oid *oid_a, const char *str)
237
237
  return git_oid_strcmp(oid_a, str) == 0 ? 0 : -1;
238
238
  }
239
239
 
240
- int git_oid_iszero(const git_oid *oid_a)
240
+ int git_oid_is_zero(const git_oid *oid_a)
241
241
  {
242
242
  const unsigned char *a = oid_a->id;
243
243
  unsigned int i;
@@ -247,6 +247,11 @@ int git_oid_iszero(const git_oid *oid_a)
247
247
  return 1;
248
248
  }
249
249
 
250
+ int git_oid_iszero(const git_oid *oid_a)
251
+ {
252
+ return git_oid_is_zero(oid_a);
253
+ }
254
+
250
255
  typedef short node_index;
251
256
 
252
257
  typedef union {
@@ -263,7 +268,7 @@ struct git_oid_shorten {
263
268
  static int resize_trie(git_oid_shorten *self, size_t new_size)
264
269
  {
265
270
  self->nodes = git__reallocarray(self->nodes, new_size, sizeof(trie_node));
266
- GITERR_CHECK_ALLOC(self->nodes);
271
+ GIT_ERROR_CHECK_ALLOC(self->nodes);
267
272
 
268
273
  if (new_size > self->size) {
269
274
  memset(&self->nodes[self->size], 0x0, (new_size - self->size) * sizeof(trie_node));
@@ -381,7 +386,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
381
386
  node_index idx;
382
387
 
383
388
  if (os->full) {
384
- giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
389
+ git_error_set(GIT_ERROR_INVALID, "unable to shorten OID - OID set full");
385
390
  return -1;
386
391
  }
387
392
 
@@ -396,7 +401,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
396
401
  trie_node *node;
397
402
 
398
403
  if (c == -1) {
399
- giterr_set(GITERR_INVALID, "unable to shorten OID - invalid hex value");
404
+ git_error_set(GIT_ERROR_INVALID, "unable to shorten OID - invalid hex value");
400
405
  return -1;
401
406
  }
402
407
 
@@ -411,7 +416,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
411
416
  node = push_leaf(os, idx, git__fromhex(tail[0]), &tail[1]);
412
417
  if (node == NULL) {
413
418
  if (os->full)
414
- giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
419
+ git_error_set(GIT_ERROR_INVALID, "unable to shorten OID - OID set full");
415
420
  return -1;
416
421
  }
417
422
  }
@@ -419,7 +424,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
419
424
  if (node->children[c] == 0) {
420
425
  if (push_leaf(os, idx, c, &text_oid[i + 1]) == NULL) {
421
426
  if (os->full)
422
- giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
427
+ git_error_set(GIT_ERROR_INVALID, "unable to shorten OID - OID set full");
423
428
  return -1;
424
429
  }
425
430
  break;
@@ -7,6 +7,15 @@
7
7
 
8
8
  #include "oidmap.h"
9
9
 
10
+ #define kmalloc git__malloc
11
+ #define kcalloc git__calloc
12
+ #define krealloc git__realloc
13
+ #define kreallocarray git__reallocarray
14
+ #define kfree git__free
15
+ #include "khash.h"
16
+
17
+ __KHASH_TYPE(oid, const git_oid *, void *)
18
+
10
19
  GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
11
20
  {
12
21
  khint_t h;
@@ -16,9 +25,12 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
16
25
 
17
26
  __KHASH_IMPL(oid, static kh_inline, const git_oid *, void *, 1, git_oidmap_hash, git_oid_equal)
18
27
 
19
- git_oidmap *git_oidmap_alloc()
28
+ int git_oidmap_new(git_oidmap **out)
20
29
  {
21
- return kh_init(oid);
30
+ *out = kh_init(oid);
31
+ GIT_ERROR_CHECK_ALLOC(*out);
32
+
33
+ return 0;
22
34
  }
23
35
 
24
36
  void git_oidmap_free(git_oidmap *map)
@@ -36,70 +48,60 @@ size_t git_oidmap_size(git_oidmap *map)
36
48
  return kh_size(map);
37
49
  }
38
50
 
39
- size_t git_oidmap_lookup_index(git_oidmap *map, const git_oid *key)
51
+ void *git_oidmap_get(git_oidmap *map, const git_oid *key)
40
52
  {
41
- return kh_get(oid, map, key);
53
+ size_t idx = kh_get(oid, map, key);
54
+ if (idx == kh_end(map) || !kh_exist(map, idx))
55
+ return NULL;
56
+ return kh_val(map, idx);
42
57
  }
43
58
 
44
- int git_oidmap_valid_index(git_oidmap *map, size_t idx)
59
+ int git_oidmap_set(git_oidmap *map, const git_oid *key, void *value)
45
60
  {
46
- return idx != kh_end(map);
47
- }
61
+ size_t idx;
62
+ int rval;
48
63
 
49
- int git_oidmap_exists(git_oidmap *map, const git_oid *key)
50
- {
51
- return kh_get(oid, map, key) != kh_end(map);
52
- }
64
+ idx = kh_put(oid, map, key, &rval);
65
+ if (rval < 0)
66
+ return -1;
53
67
 
54
- int git_oidmap_has_data(git_oidmap *map, size_t idx)
55
- {
56
- return kh_exist(map, idx);
57
- }
68
+ if (rval == 0)
69
+ kh_key(map, idx) = key;
58
70
 
59
- const git_oid *git_oidmap_key(git_oidmap *map, size_t idx)
60
- {
61
- return kh_key(map, idx);
62
- }
71
+ kh_val(map, idx) = value;
63
72
 
64
- void git_oidmap_set_key_at(git_oidmap *map, size_t idx, git_oid *key)
65
- {
66
- kh_key(map, idx) = key;
73
+ return 0;
67
74
  }
68
75
 
69
- void *git_oidmap_value_at(git_oidmap *map, size_t idx)
76
+ int git_oidmap_delete(git_oidmap *map, const git_oid *key)
70
77
  {
71
- return kh_val(map, idx);
78
+ khiter_t idx = kh_get(oid, map, key);
79
+ if (idx == kh_end(map))
80
+ return GIT_ENOTFOUND;
81
+ kh_del(oid, map, idx);
82
+ return 0;
72
83
  }
73
84
 
74
- void git_oidmap_set_value_at(git_oidmap *map, size_t idx, void *value)
85
+ int git_oidmap_exists(git_oidmap *map, const git_oid *key)
75
86
  {
76
- kh_val(map, idx) = value;
87
+ return kh_get(oid, map, key) != kh_end(map);
77
88
  }
78
89
 
79
- void git_oidmap_delete_at(git_oidmap *map, size_t idx)
90
+ int git_oidmap_iterate(void **value, git_oidmap *map, size_t *iter, const git_oid **key)
80
91
  {
81
- kh_del(oid, map, idx);
82
- }
92
+ size_t i = *iter;
83
93
 
84
- int git_oidmap_put(git_oidmap *map, const git_oid *key, int *err)
85
- {
86
- return kh_put(oid, map, key, err);
87
- }
94
+ while (i < map->n_buckets && !kh_exist(map, i))
95
+ i++;
88
96
 
89
- void git_oidmap_insert(git_oidmap *map, const git_oid *key, void *value, int *rval)
90
- {
91
- khiter_t idx = kh_put(oid, map, key, rval);
97
+ if (i >= map->n_buckets)
98
+ return GIT_ITEROVER;
92
99
 
93
- if ((*rval) >= 0) {
94
- if ((*rval) == 0)
95
- kh_key(map, idx) = key;
96
- kh_val(map, idx) = value;
97
- }
98
- }
100
+ if (key)
101
+ *key = kh_key(map, i);
102
+ if (value)
103
+ *value = kh_value(map, i);
104
+ *iter = ++i;
99
105
 
100
- void git_oidmap_delete(git_oidmap *map, const git_oid *key)
101
- {
102
- khiter_t idx = git_oidmap_lookup_index(map, key);
103
- if (git_oidmap_valid_index(map, idx))
104
- git_oidmap_delete_at(map, idx);
106
+ return 0;
105
107
  }
@@ -11,41 +11,118 @@
11
11
 
12
12
  #include "git2/oid.h"
13
13
 
14
- #define kmalloc git__malloc
15
- #define kcalloc git__calloc
16
- #define krealloc git__realloc
17
- #define kreallocarray git__reallocarray
18
- #define kfree git__free
19
- #include "khash.h"
14
+ /** A map with `git_oid`s as key. */
15
+ typedef struct kh_oid_s git_oidmap;
20
16
 
21
- __KHASH_TYPE(oid, const git_oid *, void *)
22
- typedef khash_t(oid) git_oidmap;
17
+ /**
18
+ * Allocate a new OID map.
19
+ *
20
+ * @param out Pointer to the map that shall be allocated.
21
+ * @return 0 on success, an error code if allocation has failed.
22
+ */
23
+ int git_oidmap_new(git_oidmap **out);
23
24
 
24
- git_oidmap *git_oidmap_alloc(void);
25
+ /**
26
+ * Free memory associated with the map.
27
+ *
28
+ * Note that this function will _not_ free values added to this
29
+ * map.
30
+ *
31
+ * @param map Pointer to the map that is to be free'd. May be
32
+ * `NULL`.
33
+ */
25
34
  void git_oidmap_free(git_oidmap *map);
35
+
36
+ /**
37
+ * Clear all entries from the map.
38
+ *
39
+ * This function will remove all entries from the associated map.
40
+ * Memory associated with it will not be released, though.
41
+ *
42
+ * @param map Pointer to the map that shall be cleared. May be
43
+ * `NULL`.
44
+ */
26
45
  void git_oidmap_clear(git_oidmap *map);
27
46
 
47
+ /**
48
+ * Return the number of elements in the map.
49
+ *
50
+ * @parameter map map containing the elements
51
+ * @return number of elements in the map
52
+ */
28
53
  size_t git_oidmap_size(git_oidmap *map);
29
54
 
30
- size_t git_oidmap_lookup_index(git_oidmap *map, const git_oid *key);
31
- int git_oidmap_valid_index(git_oidmap *map, size_t idx);
55
+ /**
56
+ * Return value associated with the given key.
57
+ *
58
+ * @param map map to search key in
59
+ * @param key key to search for
60
+ * @return value associated with the given key or NULL if the key was not found
61
+ */
62
+ void *git_oidmap_get(git_oidmap *map, const git_oid *key);
32
63
 
33
- int git_oidmap_exists(git_oidmap *map, const git_oid *key);
34
- int git_oidmap_has_data(git_oidmap *map, size_t idx);
64
+ /**
65
+ * Set the entry for key to value.
66
+ *
67
+ * If the map has no corresponding entry for the given key, a new
68
+ * entry will be created with the given value. If an entry exists
69
+ * already, its value will be updated to match the given value.
70
+ *
71
+ * @param map map to create new entry in
72
+ * @param key key to set
73
+ * @param value value to associate the key with; may be NULL
74
+ * @return zero if the key was successfully set, a negative error
75
+ * code otherwise
76
+ */
77
+ int git_oidmap_set(git_oidmap *map, const git_oid *key, void *value);
35
78
 
36
- const git_oid *git_oidmap_key(git_oidmap *map, size_t idx);
37
- void git_oidmap_set_key_at(git_oidmap *map, size_t idx, git_oid *key);
38
- void *git_oidmap_value_at(git_oidmap *map, size_t idx);
39
- void git_oidmap_set_value_at(git_oidmap *map, size_t idx, void *value);
40
- void git_oidmap_delete_at(git_oidmap *map, size_t idx);
79
+ /**
80
+ * Delete an entry from the map.
81
+ *
82
+ * Delete the given key and its value from the map. If no such
83
+ * key exists, this will do nothing.
84
+ *
85
+ * @param map map to delete key in
86
+ * @param key key to delete
87
+ * @return `0` if the key has been deleted, GIT_ENOTFOUND if no
88
+ * such key was found, a negative code in case of an
89
+ * error
90
+ */
91
+ int git_oidmap_delete(git_oidmap *map, const git_oid *key);
41
92
 
42
- int git_oidmap_put(git_oidmap *map, const git_oid *key, int *err);
43
- void git_oidmap_insert(git_oidmap *map, const git_oid *key, void *value, int *rval);
44
- void git_oidmap_delete(git_oidmap *map, const git_oid *key);
93
+ /**
94
+ * Check whether a key exists in the given map.
95
+ *
96
+ * @param map map to query for the key
97
+ * @param key key to search for
98
+ * @return 0 if the key has not been found, 1 otherwise
99
+ */
100
+ int git_oidmap_exists(git_oidmap *map, const git_oid *key);
45
101
 
46
- #define git_oidmap_foreach_value kh_foreach_value
102
+ /**
103
+ * Iterate over entries of the map.
104
+ *
105
+ * This functions allows to iterate over all key-value entries of
106
+ * the map. The current position is stored in the `iter` variable
107
+ * and should be initialized to `0` before the first call to this
108
+ * function.
109
+ *
110
+ * @param map map to iterate over
111
+ * @param value pointer to the variable where to store the current
112
+ * value. May be NULL.
113
+ * @param iter iterator storing the current position. Initialize
114
+ * with zero previous to the first call.
115
+ * @param key pointer to the variable where to store the current
116
+ * key. May be NULL.
117
+ * @return `0` if the next entry was correctly retrieved.
118
+ * GIT_ITEROVER if no entries are left. A negative error
119
+ * code otherwise.
120
+ */
121
+ int git_oidmap_iterate(void **value, git_oidmap *map, size_t *iter, const git_oid **key);
47
122
 
48
- #define git_oidmap_begin kh_begin
49
- #define git_oidmap_end kh_end
123
+ #define git_oidmap_foreach_value(h, vvar, code) { size_t __i = 0; \
124
+ while (git_oidmap_iterate((void **) &(vvar), h, &__i, NULL) == 0) { \
125
+ code; \
126
+ } }
50
127
 
51
128
  #endif