rugged 1.7.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) 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 +23 -10
  5. data/vendor/libgit2/COPYING +195 -1
  6. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  7. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  8. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  9. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  10. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  11. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  12. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  13. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  14. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  15. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  16. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  17. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  18. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  19. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  20. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  21. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  22. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  23. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  24. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  25. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  26. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  28. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  29. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  30. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  31. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  32. data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  34. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  35. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  36. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  37. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  38. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  39. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  40. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  41. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  42. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  43. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  44. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  45. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  46. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  47. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  48. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  49. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  50. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  51. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  52. data/vendor/libgit2/include/git2/apply.h +27 -6
  53. data/vendor/libgit2/include/git2/attr.h +17 -4
  54. data/vendor/libgit2/include/git2/blame.h +133 -28
  55. data/vendor/libgit2/include/git2/blob.h +71 -28
  56. data/vendor/libgit2/include/git2/branch.h +22 -15
  57. data/vendor/libgit2/include/git2/buffer.h +6 -4
  58. data/vendor/libgit2/include/git2/cert.h +2 -1
  59. data/vendor/libgit2/include/git2/checkout.h +83 -32
  60. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  61. data/vendor/libgit2/include/git2/clone.h +25 -9
  62. data/vendor/libgit2/include/git2/commit.h +132 -3
  63. data/vendor/libgit2/include/git2/common.h +120 -63
  64. data/vendor/libgit2/include/git2/config.h +93 -23
  65. data/vendor/libgit2/include/git2/credential.h +30 -2
  66. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  67. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  68. data/vendor/libgit2/include/git2/describe.h +13 -1
  69. data/vendor/libgit2/include/git2/diff.h +38 -8
  70. data/vendor/libgit2/include/git2/email.h +9 -29
  71. data/vendor/libgit2/include/git2/errors.h +46 -73
  72. data/vendor/libgit2/include/git2/filter.h +14 -7
  73. data/vendor/libgit2/include/git2/global.h +8 -1
  74. data/vendor/libgit2/include/git2/graph.h +3 -2
  75. data/vendor/libgit2/include/git2/ignore.h +10 -0
  76. data/vendor/libgit2/include/git2/index.h +99 -14
  77. data/vendor/libgit2/include/git2/indexer.h +21 -4
  78. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  79. data/vendor/libgit2/include/git2/merge.h +46 -1
  80. data/vendor/libgit2/include/git2/message.h +2 -2
  81. data/vendor/libgit2/include/git2/net.h +3 -1
  82. data/vendor/libgit2/include/git2/notes.h +9 -6
  83. data/vendor/libgit2/include/git2/object.h +9 -8
  84. data/vendor/libgit2/include/git2/odb.h +91 -49
  85. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  86. data/vendor/libgit2/include/git2/oid.h +23 -24
  87. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  88. data/vendor/libgit2/include/git2/pack.h +13 -1
  89. data/vendor/libgit2/include/git2/patch.h +2 -3
  90. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  91. data/vendor/libgit2/include/git2/proxy.h +10 -0
  92. data/vendor/libgit2/include/git2/rebase.h +9 -6
  93. data/vendor/libgit2/include/git2/refdb.h +2 -2
  94. data/vendor/libgit2/include/git2/reflog.h +3 -2
  95. data/vendor/libgit2/include/git2/refs.h +9 -6
  96. data/vendor/libgit2/include/git2/refspec.h +14 -4
  97. data/vendor/libgit2/include/git2/remote.h +94 -18
  98. data/vendor/libgit2/include/git2/repository.h +57 -21
  99. data/vendor/libgit2/include/git2/reset.h +16 -3
  100. data/vendor/libgit2/include/git2/revert.h +9 -4
  101. data/vendor/libgit2/include/git2/revparse.h +3 -3
  102. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  103. data/vendor/libgit2/include/git2/signature.h +46 -1
  104. data/vendor/libgit2/include/git2/stash.h +17 -3
  105. data/vendor/libgit2/include/git2/status.h +10 -6
  106. data/vendor/libgit2/include/git2/stdint.h +87 -85
  107. data/vendor/libgit2/include/git2/strarray.h +2 -3
  108. data/vendor/libgit2/include/git2/submodule.h +20 -9
  109. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  110. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  111. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  112. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  113. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  114. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  115. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  116. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  117. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  118. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  119. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  120. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  121. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  122. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  123. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  124. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  125. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  126. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  127. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  128. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  129. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  130. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  131. data/vendor/libgit2/include/git2/sys/transport.h +24 -3
  132. data/vendor/libgit2/include/git2/tag.h +3 -1
  133. data/vendor/libgit2/include/git2/trace.h +9 -3
  134. data/vendor/libgit2/include/git2/transaction.h +3 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -3
  136. data/vendor/libgit2/include/git2/tree.h +16 -5
  137. data/vendor/libgit2/include/git2/types.h +19 -3
  138. data/vendor/libgit2/include/git2/version.h +44 -8
  139. data/vendor/libgit2/include/git2/worktree.h +16 -6
  140. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  142. data/vendor/libgit2/src/cli/cmd.c +1 -1
  143. data/vendor/libgit2/src/cli/cmd.h +4 -0
  144. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  145. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  146. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  147. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  149. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  150. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  151. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  152. data/vendor/libgit2/src/cli/common.c +168 -0
  153. data/vendor/libgit2/src/cli/common.h +63 -0
  154. data/vendor/libgit2/src/cli/error.h +1 -1
  155. data/vendor/libgit2/src/cli/main.c +52 -24
  156. data/vendor/libgit2/src/cli/opt.c +29 -3
  157. data/vendor/libgit2/src/cli/opt.h +21 -3
  158. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  159. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  160. data/vendor/libgit2/src/cli/progress.c +51 -2
  161. data/vendor/libgit2/src/cli/progress.h +12 -0
  162. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  163. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  164. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  165. data/vendor/libgit2/src/libgit2/CMakeLists.txt +26 -8
  166. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  167. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  168. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  169. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  170. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  171. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  172. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  173. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  174. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  175. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  176. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  177. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  178. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  179. data/vendor/libgit2/src/libgit2/clone.c +186 -166
  180. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  181. data/vendor/libgit2/src/libgit2/commit.c +92 -0
  182. data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
  183. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  184. data/vendor/libgit2/src/libgit2/config.c +389 -298
  185. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  186. data/vendor/libgit2/src/libgit2/config.h +9 -4
  187. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  188. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  189. data/vendor/libgit2/src/libgit2/config_file.c +99 -88
  190. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  191. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  192. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  193. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  194. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  195. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  196. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  197. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  198. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  199. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  200. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  201. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  202. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  203. data/vendor/libgit2/src/libgit2/email.c +1 -0
  204. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  205. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  206. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  207. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  208. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  209. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  210. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  211. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  212. data/vendor/libgit2/src/libgit2/index.c +68 -90
  213. data/vendor/libgit2/src/libgit2/index.h +2 -2
  214. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  215. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  216. data/vendor/libgit2/src/libgit2/indexer.c +34 -38
  217. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  218. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  219. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  220. data/vendor/libgit2/src/libgit2/merge.c +42 -37
  221. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  222. data/vendor/libgit2/src/libgit2/midx.c +28 -15
  223. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  224. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  225. data/vendor/libgit2/src/libgit2/object.c +6 -5
  226. data/vendor/libgit2/src/libgit2/odb.c +5 -4
  227. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  228. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  229. data/vendor/libgit2/src/libgit2/oid.c +32 -5
  230. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  231. data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
  232. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  233. data/vendor/libgit2/src/libgit2/pack.c +30 -24
  234. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  235. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  236. data/vendor/libgit2/src/libgit2/path.c +1 -1
  237. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  238. data/vendor/libgit2/src/libgit2/push.c +79 -28
  239. data/vendor/libgit2/src/libgit2/push.h +1 -0
  240. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  241. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  242. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  243. data/vendor/libgit2/src/libgit2/refs.c +26 -7
  244. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  245. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  246. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  247. data/vendor/libgit2/src/libgit2/remote.c +121 -61
  248. data/vendor/libgit2/src/libgit2/repository.c +231 -51
  249. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  250. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  251. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  252. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  253. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  254. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  255. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  256. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  257. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  258. data/vendor/libgit2/src/libgit2/status.c +1 -1
  259. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  260. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  261. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  262. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  263. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  264. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  265. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  266. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  267. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  268. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  269. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  270. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  271. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  272. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  273. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  274. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  275. data/vendor/libgit2/src/libgit2/transports/httpclient.c +112 -72
  276. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  277. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  278. data/vendor/libgit2/src/libgit2/transports/local.c +8 -7
  279. data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
  280. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  281. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
  282. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  283. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  284. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  285. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  286. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  287. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  288. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  289. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  290. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  291. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  292. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  293. data/vendor/libgit2/src/util/alloc.c +4 -1
  294. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  295. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  296. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  297. data/vendor/libgit2/src/util/array.h +18 -17
  298. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  299. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  300. data/vendor/libgit2/src/util/date.c +22 -14
  301. data/vendor/libgit2/src/util/date.h +12 -0
  302. data/vendor/libgit2/src/util/errors.c +401 -0
  303. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  304. data/vendor/libgit2/src/util/fs_path.c +15 -4
  305. data/vendor/libgit2/src/util/fs_path.h +23 -0
  306. data/vendor/libgit2/src/util/futils.c +6 -5
  307. data/vendor/libgit2/src/util/futils.h +13 -4
  308. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  309. data/vendor/libgit2/src/util/git2_util.h +6 -0
  310. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  311. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  312. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  313. data/vendor/libgit2/src/util/hashmap.h +424 -0
  314. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  315. data/vendor/libgit2/src/util/integer.h +3 -1
  316. data/vendor/libgit2/src/util/net.c +13 -7
  317. data/vendor/libgit2/src/util/net.h +2 -0
  318. data/vendor/libgit2/src/util/pool.c +1 -1
  319. data/vendor/libgit2/src/util/pool.h +5 -0
  320. data/vendor/libgit2/src/util/pqueue.h +1 -1
  321. data/vendor/libgit2/src/util/process.h +222 -0
  322. data/vendor/libgit2/src/util/rand.c +1 -7
  323. data/vendor/libgit2/src/util/regexp.c +1 -1
  324. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  325. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  326. data/vendor/libgit2/src/util/str.c +2 -2
  327. data/vendor/libgit2/src/util/strlist.c +108 -0
  328. data/vendor/libgit2/src/util/strlist.h +36 -0
  329. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  330. data/vendor/libgit2/src/util/unix/process.c +629 -0
  331. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  332. data/vendor/libgit2/src/util/util.c +2 -2
  333. data/vendor/libgit2/src/util/util.h +4 -38
  334. data/vendor/libgit2/src/util/vector.c +3 -3
  335. data/vendor/libgit2/src/util/vector.h +2 -2
  336. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  337. data/vendor/libgit2/src/util/win32/process.c +506 -0
  338. metadata +45 -28
  339. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  340. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  341. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  342. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  343. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  344. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  345. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  346. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  347. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  348. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  349. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  350. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  351. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  352. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  353. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  354. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  355. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  356. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  357. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  358. data/vendor/libgit2/src/util/khash.h +0 -615
  359. data/vendor/libgit2/src/util/strmap.c +0 -100
  360. data/vendor/libgit2/src/util/strmap.h +0 -131
  361. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -0,0 +1,424 @@
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
+ #ifndef INCLUDE_hashmap_h__
8
+ #define INCLUDE_hashmap_h__
9
+
10
+ /*
11
+ * This is a variation on khash.h from khlib 2013-05-02 (0.2.8)
12
+ *
13
+ * The MIT License
14
+ *
15
+ * Copyright (c) 2008, 2009, 2011 by Attractive Chaos <attractor@live.co.uk>
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
32
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
33
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
34
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35
+ * SOFTWARE.
36
+ */
37
+
38
+ #include <stdlib.h>
39
+ #include <string.h>
40
+ #include <limits.h>
41
+
42
+ #define GIT_HASHMAP_INIT {0}
43
+ #define GIT_HASHSET_INIT {0}
44
+
45
+ #define GIT_HASHMAP_EMPTY
46
+ #define GIT_HASHMAP_INLINE GIT_INLINE(GIT_HASHMAP_EMPTY)
47
+
48
+ #define GIT_HASHMAP_IS_EMPTY(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&2)
49
+ #define GIT_HASHMAP_IS_DELETE(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&1)
50
+ #define GIT_HASHMAP_IS_EITHER(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&3)
51
+ #define GIT_HASHMAP_SET_EMPTY_FALSE(flag, i) (flag[i>>4]&=~(2ul<<((i&0xfU)<<1)))
52
+ #define GIT_HASHMAP_SET_DELETE_TRUE(flag, i) (flag[i>>4]|=1ul<<((i&0xfU)<<1))
53
+ #define GIT_HASHMAP_SET_DELETE_FALSE(flag, i) (flag[i>>4]&=~(1ul<<((i&0xfU)<<1)))
54
+ #define GIT_HASHMAP_SET_BOTH_FALSE(flag, i) (flag[i>>4]&=~(3ul<<((i&0xfU)<<1)))
55
+
56
+ #define GIT_HASHMAP_FLAGSIZE(m) ((m) < 16? 1 : (m)>>4)
57
+ #define GIT_HASHMAP_ROUNDUP(x) (--(x), (x)|=(x)>>1, \
58
+ (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
59
+
60
+ #define GIT_HASHSET_VAL_T void *
61
+
62
+ typedef uint32_t git_hashmap_iter_t;
63
+ #define GIT_HASHMAP_ITER_INIT 0
64
+
65
+ #define GIT_HASHMAP_STRUCT_MEMBERS(key_t, val_t) \
66
+ uint32_t n_buckets, \
67
+ size, \
68
+ n_occupied, \
69
+ upper_bound; \
70
+ uint32_t *flags; \
71
+ key_t *keys; \
72
+ val_t *vals;
73
+
74
+ #define GIT_HASHMAP_STRUCT(name, key_t, val_t) \
75
+ typedef struct { \
76
+ GIT_HASHMAP_STRUCT_MEMBERS(key_t, val_t) \
77
+ } name;
78
+ #define GIT_HASHSET_STRUCT(name, key_t) \
79
+ GIT_HASHMAP_STRUCT(name, key_t, void *)
80
+
81
+
82
+ #define GIT_HASHMAP__COMMON_PROTOTYPES(name, key_t, val_t) \
83
+ extern uint32_t name##_size(name *h); \
84
+ extern bool name##_contains(name *h, key_t key); \
85
+ extern int name##_remove(name *h, key_t key); \
86
+ extern void name##_clear(name *h); \
87
+ extern void name##_dispose(name *h);
88
+
89
+ #define GIT_HASHMAP_PROTOTYPES(name, key_t, val_t) \
90
+ GIT_HASHMAP__COMMON_PROTOTYPES(name, key_t, val_t) \
91
+ extern int name##_get(val_t *out, name *h, key_t key); \
92
+ extern int name##_put(name *h, key_t key, val_t val); \
93
+ extern int name##_iterate(git_hashmap_iter_t *iter, key_t *key, val_t *val, name *h); \
94
+ extern int name##_foreach(name *h, int (*cb)(key_t, val_t));
95
+
96
+ #define GIT_HASHSET_PROTOTYPES(name, key_t) \
97
+ GIT_HASHMAP__COMMON_PROTOTYPES(name, key_t, GIT_HASHSET_VAL_T) \
98
+ extern int name##_add(name *h, key_t key); \
99
+ extern int name##_iterate(git_hashmap_iter_t *iter, key_t *key, name *h); \
100
+ extern int name##_foreach(name *h, int (*cb)(key_t)); \
101
+
102
+
103
+ #define GIT_HASHMAP__COMMON_FUNCTIONS(name, is_map, scope, key_t, val_t, __hash_fn, __equal_fn) \
104
+ GIT_UNUSED_FUNCTION scope uint32_t name##_size(name *h) \
105
+ { \
106
+ return h->size; \
107
+ } \
108
+ GIT_INLINE(int) name##__idx(uint32_t *out, name *h, key_t key) \
109
+ { \
110
+ if (h->n_buckets) { \
111
+ uint32_t k, i, last, mask, step = 0; \
112
+ GIT_ASSERT((h)->flags); \
113
+ mask = h->n_buckets - 1; \
114
+ k = __hash_fn(key); \
115
+ i = k & mask; \
116
+ last = i; \
117
+ while (!GIT_HASHMAP_IS_EMPTY(h->flags, i) && \
118
+ (GIT_HASHMAP_IS_DELETE(h->flags, i) || !__equal_fn(h->keys[i], key))) { \
119
+ i = (i + (++step)) & mask; \
120
+ if (i == last) \
121
+ return GIT_ENOTFOUND; \
122
+ } \
123
+ if (GIT_HASHMAP_IS_EITHER(h->flags, i)) \
124
+ return GIT_ENOTFOUND; \
125
+ *out = i; \
126
+ return 0; \
127
+ } \
128
+ return GIT_ENOTFOUND; \
129
+ } \
130
+ GIT_UNUSED_FUNCTION scope bool name##_contains(name *h, key_t key) \
131
+ { \
132
+ uint32_t idx; \
133
+ return name##__idx(&idx, h, key) == 0; \
134
+ } \
135
+ GIT_INLINE(int) name##__remove_at_idx(name *h, uint32_t idx) \
136
+ { \
137
+ if (idx < h->n_buckets && !GIT_HASHMAP_IS_EITHER(h->flags, idx)) { \
138
+ GIT_HASHMAP_SET_DELETE_TRUE(h->flags, idx); \
139
+ --h->size; \
140
+ return 0; \
141
+ } \
142
+ return GIT_ENOTFOUND; \
143
+ } \
144
+ GIT_UNUSED_FUNCTION scope int name##_remove(name *h, key_t key) \
145
+ { \
146
+ uint32_t idx; \
147
+ int error; \
148
+ if ((error = name##__idx(&idx, h, key)) == 0) \
149
+ error = name##__remove_at_idx(h, idx); \
150
+ return error; \
151
+ } \
152
+ GIT_INLINE(int) name##__resize(name *h, uint32_t new_n_buckets) \
153
+ { \
154
+ /* This function uses 0.25*n_buckets bytes of working \
155
+ * space instead of [sizeof(key_t+val_t)+.25]*n_buckets. \
156
+ */ \
157
+ double git_hashmap__upper_bound = 0.77; \
158
+ uint32_t *new_flags = 0; \
159
+ uint32_t j = 1; \
160
+ { \
161
+ GIT_HASHMAP_ROUNDUP(new_n_buckets); \
162
+ if (new_n_buckets < 4) \
163
+ new_n_buckets = 4; \
164
+ if (h->size >= (uint32_t)(new_n_buckets * git_hashmap__upper_bound + 0.5)) { \
165
+ /* Requested size is too small */ \
166
+ j = 0; \
167
+ } else { \
168
+ /* Shrink or expand; rehash */ \
169
+ new_flags = git__reallocarray(NULL, GIT_HASHMAP_FLAGSIZE(new_n_buckets), sizeof(uint32_t)); \
170
+ if (!new_flags) \
171
+ return -1; \
172
+ memset(new_flags, 0xaa, GIT_HASHMAP_FLAGSIZE(new_n_buckets) * sizeof(uint32_t)); \
173
+ if (h->n_buckets < new_n_buckets) { \
174
+ /* Expand */ \
175
+ key_t *new_keys = git__reallocarray(h->keys, new_n_buckets, sizeof(key_t)); \
176
+ if (!new_keys) { \
177
+ git__free(new_flags); \
178
+ return -1; \
179
+ } \
180
+ h->keys = new_keys; \
181
+ if (is_map) { \
182
+ val_t *new_vals = git__reallocarray(h->vals, new_n_buckets, sizeof(val_t)); \
183
+ if (!new_vals) { \
184
+ git__free(new_flags); \
185
+ return -1; \
186
+ } \
187
+ h->vals = new_vals; \
188
+ } \
189
+ } \
190
+ } \
191
+ } \
192
+ if (j) { \
193
+ /* Rehashing is needed */ \
194
+ for (j = 0; j != h->n_buckets; ++j) { \
195
+ if (GIT_HASHMAP_IS_EITHER(h->flags, j) == 0) { \
196
+ key_t key = h->keys[j]; \
197
+ val_t val; \
198
+ uint32_t new_mask; \
199
+ new_mask = new_n_buckets - 1; \
200
+ if (is_map) \
201
+ val = h->vals[j]; \
202
+ GIT_HASHMAP_SET_DELETE_TRUE(h->flags, j); \
203
+ while (1) { \
204
+ /* Kick-out process; sort of like in Cuckoo hashing */ \
205
+ uint32_t k, i, step = 0; \
206
+ k = __hash_fn(key); \
207
+ i = k & new_mask; \
208
+ while (!GIT_HASHMAP_IS_EMPTY(new_flags, i)) \
209
+ i = (i + (++step)) & new_mask; \
210
+ GIT_HASHMAP_SET_EMPTY_FALSE(new_flags, i); \
211
+ if (i < h->n_buckets && GIT_HASHMAP_IS_EITHER(h->flags, i) == 0) { \
212
+ /* Kick out the existing element */ \
213
+ { \
214
+ key_t tmp = h->keys[i]; \
215
+ h->keys[i] = key; \
216
+ key = tmp; \
217
+ } \
218
+ if (is_map) { \
219
+ val_t tmp = h->vals[i]; \
220
+ h->vals[i] = val; \
221
+ val = tmp; \
222
+ } \
223
+ /* Mark it as deleted in the old hash table */ \
224
+ GIT_HASHMAP_SET_DELETE_TRUE(h->flags, i); \
225
+ } else { \
226
+ /* Write the element and jump out of the loop */ \
227
+ h->keys[i] = key; \
228
+ if (is_map) \
229
+ h->vals[i] = val; \
230
+ break; \
231
+ } \
232
+ } \
233
+ } \
234
+ } \
235
+ if (h->n_buckets > new_n_buckets) { \
236
+ /* Shrink the hash table */ \
237
+ h->keys = git__reallocarray(h->keys, new_n_buckets, sizeof(key_t)); \
238
+ if (is_map) \
239
+ h->vals = git__reallocarray(h->vals, new_n_buckets, sizeof(val_t)); \
240
+ } \
241
+ /* free the working space */ \
242
+ git__free(h->flags); \
243
+ h->flags = new_flags; \
244
+ h->n_buckets = new_n_buckets; \
245
+ h->n_occupied = h->size; \
246
+ h->upper_bound = (uint32_t)(h->n_buckets * git_hashmap__upper_bound + 0.5); \
247
+ } \
248
+ return 0; \
249
+ } \
250
+ GIT_INLINE(int) name##__put_idx(uint32_t *idx, bool *key_exists, name *h, key_t key) \
251
+ { \
252
+ uint32_t x; \
253
+ if (h->n_occupied >= h->upper_bound) { \
254
+ /* Update the hash table */ \
255
+ if (h->n_buckets > (h->size<<1)) { \
256
+ /* Clear "deleted" elements */ \
257
+ if (name##__resize(h, h->n_buckets - 1) < 0) \
258
+ return -1; \
259
+ } else if (name##__resize(h, h->n_buckets + 1) < 0) { \
260
+ return -1; \
261
+ } \
262
+ } \
263
+ GIT_ASSERT((h)->flags); \
264
+ GIT_ASSERT((h)->keys); \
265
+ /* TODO: to implement automatically shrinking; resize() already support shrinking */ \
266
+ { \
267
+ uint32_t k, i, site, last, mask = h->n_buckets - 1, step = 0; \
268
+ x = site = h->n_buckets; \
269
+ k = __hash_fn(key); \
270
+ i = k & mask; \
271
+ if (GIT_HASHMAP_IS_EMPTY(h->flags, i)) { \
272
+ /* for speed up */ \
273
+ x = i; \
274
+ } else { \
275
+ last = i; \
276
+ while (!GIT_HASHMAP_IS_EMPTY(h->flags, i) && (GIT_HASHMAP_IS_DELETE(h->flags, i) || !__equal_fn(h->keys[i], key))) { \
277
+ if (GIT_HASHMAP_IS_DELETE(h->flags, i)) \
278
+ site = i; \
279
+ i = (i + (++step)) & mask; \
280
+ if (i == last) { \
281
+ x = site; \
282
+ break; \
283
+ } \
284
+ } \
285
+ if (x == h->n_buckets) { \
286
+ if (GIT_HASHMAP_IS_EMPTY(h->flags, i) && site != h->n_buckets) \
287
+ x = site; \
288
+ else \
289
+ x = i; \
290
+ } \
291
+ } \
292
+ } \
293
+ if (GIT_HASHMAP_IS_EMPTY(h->flags, x)) { \
294
+ /* not present at all */ \
295
+ h->keys[x] = key; \
296
+ GIT_HASHMAP_SET_BOTH_FALSE(h->flags, x); \
297
+ ++h->size; \
298
+ ++h->n_occupied; \
299
+ *key_exists = 1; \
300
+ } else if (GIT_HASHMAP_IS_DELETE(h->flags, x)) { \
301
+ /* deleted */ \
302
+ h->keys[x] = key; \
303
+ GIT_HASHMAP_SET_BOTH_FALSE(h->flags, x); \
304
+ ++h->size; \
305
+ *key_exists = 1; \
306
+ } else { \
307
+ /* Don't touch h->keys[x] if present and not deleted */ \
308
+ *key_exists = 0; \
309
+ } \
310
+ *idx = x; \
311
+ return 0; \
312
+ } \
313
+ GIT_UNUSED_FUNCTION scope void name##_clear(name *h) \
314
+ { \
315
+ if (h && h->flags) { \
316
+ memset(h->flags, 0xaa, GIT_HASHMAP_FLAGSIZE(h->n_buckets) * sizeof(uint32_t)); \
317
+ h->size = h->n_occupied = 0; \
318
+ } \
319
+ } \
320
+ GIT_UNUSED_FUNCTION scope void name##_dispose(name *h) \
321
+ { \
322
+ git__free(h->flags); \
323
+ git__free(h->keys); \
324
+ git__free(h->vals); \
325
+ memset(h, 0, sizeof(name)); \
326
+ }
327
+
328
+ #define GIT_HASHMAP_FUNCTIONS(name, scope, key_t, val_t, __hash_fn, __equal_fn) \
329
+ GIT_HASHMAP__COMMON_FUNCTIONS(name, true, scope, key_t, val_t, __hash_fn, __equal_fn) \
330
+ \
331
+ GIT_UNUSED_FUNCTION scope int name##_get(val_t *out, name *h, key_t key) \
332
+ { \
333
+ uint32_t idx; \
334
+ int error; \
335
+ if ((error = name##__idx(&idx, h, key)) == 0) \
336
+ *out = (h)->vals[idx]; \
337
+ return error; \
338
+ } \
339
+ GIT_UNUSED_FUNCTION scope int name##_put(name *h, key_t key, val_t val) \
340
+ { \
341
+ uint32_t idx; \
342
+ bool key_exists; \
343
+ int error = name##__put_idx(&idx, &key_exists, h, key); \
344
+ if (error) \
345
+ return error; \
346
+ GIT_ASSERT((h)->vals); \
347
+ if (!key_exists) \
348
+ (h)->keys[idx] = key; \
349
+ (h)->vals[idx] = val; \
350
+ return 0; \
351
+ } \
352
+ GIT_UNUSED_FUNCTION scope int name##_iterate(git_hashmap_iter_t *iter, key_t *key, val_t *val, name *h) \
353
+ { \
354
+ for (; *iter < h->n_buckets; (*iter)++) { \
355
+ if (GIT_HASHMAP_IS_EITHER(h->flags, *iter)) \
356
+ continue; \
357
+ if (key) \
358
+ *key = h->keys[*iter]; \
359
+ if (val) \
360
+ *val = h->vals[*iter]; \
361
+ (*iter)++; \
362
+ return 0; \
363
+ } \
364
+ return GIT_ITEROVER; \
365
+ } \
366
+ GIT_UNUSED_FUNCTION scope int name##_foreach(name *h, int (*cb)(key_t, val_t)) \
367
+ { \
368
+ uint32_t idx = 0; \
369
+ key_t key; \
370
+ val_t val; \
371
+ int ret; \
372
+ while ((ret = name##_iterate(&idx, &key, &val, h)) == 0) { \
373
+ if ((ret = cb(key, val)) != 0) \
374
+ return ret; \
375
+ } \
376
+ return ret == GIT_ITEROVER ? 0 : ret; \
377
+ }
378
+
379
+ #define GIT_HASHSET_FUNCTIONS(name, scope, key_t, __hash_fn, __equal_fn) \
380
+ GIT_HASHMAP__COMMON_FUNCTIONS(name, false, scope, key_t, void *, __hash_fn, __equal_fn) \
381
+ \
382
+ GIT_UNUSED_FUNCTION scope int name##_add(name *h, key_t key) \
383
+ { \
384
+ uint32_t idx; \
385
+ bool key_exists; \
386
+ int error = name##__put_idx(&idx, &key_exists, h, key); \
387
+ if (error) \
388
+ return error; \
389
+ if (!key_exists) { \
390
+ (h)->keys[idx] = key; \
391
+ } \
392
+ return 0; \
393
+ } \
394
+ GIT_UNUSED_FUNCTION scope int name##_iterate(git_hashmap_iter_t *iter, key_t *key, name *h) \
395
+ { \
396
+ for (; *iter < h->n_buckets; (*iter)++) { \
397
+ if (GIT_HASHMAP_IS_EITHER(h->flags, *iter)) \
398
+ continue; \
399
+ *key = h->keys[*iter]; \
400
+ return 0; \
401
+ } \
402
+ return GIT_ITEROVER; \
403
+ } \
404
+ GIT_UNUSED_FUNCTION scope int name##_foreach(name *h, int (*cb)(key_t)) \
405
+ { \
406
+ git_hashmap_iter_t iter = 0; \
407
+ key_t key; \
408
+ int ret; \
409
+ while ((ret = name##_iterate(&iter, &key, h)) == 0) { \
410
+ if ((ret = cb(key)) != 0) \
411
+ return ret; \
412
+ } \
413
+ return ret == GIT_ITEROVER ? 0 : ret; \
414
+ }
415
+
416
+
417
+ #define GIT_HASHSET_SETUP(name, key_t, __hash_fn, __equal_fn) \
418
+ GIT_HASHSET_STRUCT(name, key_t) \
419
+ GIT_HASHSET_FUNCTIONS(name, GIT_HASHMAP_INLINE, key_t, __hash_fn, __equal_fn)
420
+ #define GIT_HASHMAP_SETUP(name, key_t, val_t, __hash_fn, __equal_fn) \
421
+ GIT_HASHMAP_STRUCT(name, key_t, val_t) \
422
+ GIT_HASHMAP_FUNCTIONS(name, GIT_HASHMAP_INLINE, key_t, val_t, __hash_fn, __equal_fn)
423
+
424
+ #endif
@@ -0,0 +1,43 @@
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
+ #ifndef INCLUDE_hashmap_str_h__
8
+ #define INCLUDE_hashmap_str_h__
9
+
10
+ #include "hashmap.h"
11
+
12
+ GIT_INLINE(uint32_t) git_hashmap_str_hash(const char *s)
13
+ {
14
+ uint32_t h = (uint32_t)*s;
15
+
16
+ if (h) {
17
+ for (++s; *s; ++s)
18
+ h = (h << 5) - h + (uint32_t)*s;
19
+ }
20
+
21
+ return h;
22
+ }
23
+
24
+ GIT_INLINE(bool) git_hashmap_str_equal(const char *one, const char *two)
25
+ {
26
+ return strcmp(one, two) == 0;
27
+ }
28
+
29
+ #define GIT_HASHMAP_STR_STRUCT(name, val_t) \
30
+ GIT_HASHMAP_STRUCT(name, const char *, val_t)
31
+ #define GIT_HASHMAP_STR_PROTOTYPES(name, val_t) \
32
+ GIT_HASHMAP_PROTOTYPES(name, const char *, val_t)
33
+ #define GIT_HASHMAP_STR_FUNCTIONS(name, scope, val_t) \
34
+ GIT_HASHMAP_FUNCTIONS(name, scope, const char *, val_t, git_hashmap_str_hash, git_hashmap_str_equal)
35
+
36
+ #define GIT_HASHMAP_STR_SETUP(name, val_t) \
37
+ GIT_HASHMAP_STR_STRUCT(name, val_t) \
38
+ GIT_HASHMAP_STR_FUNCTIONS(name, GIT_HASHMAP_INLINE, val_t)
39
+
40
+ GIT_HASHSET_SETUP(git_hashset_str, const char *, git_hashmap_str_hash, git_hashmap_str_equal);
41
+ GIT_HASHMAP_SETUP(git_hashmap_str, const char *, void *, git_hashmap_str_hash, git_hashmap_str_equal);
42
+
43
+ #endif
@@ -89,7 +89,9 @@ GIT_INLINE(int) git__is_int(int64_t p)
89
89
  /* Use Microsoft's safe integer handling functions where available */
90
90
  #elif defined(_MSC_VER)
91
91
 
92
- # define ENABLE_INTSAFE_SIGNED_FUNCTIONS
92
+ # if !defined(ENABLE_INTSAFE_SIGNED_FUNCTIONS)
93
+ # define ENABLE_INTSAFE_SIGNED_FUNCTIONS
94
+ # endif
93
95
  # include <intsafe.h>
94
96
 
95
97
  # define git__add_sizet_overflow(out, one, two) \
@@ -11,7 +11,6 @@
11
11
 
12
12
  #include "posix.h"
13
13
  #include "str.h"
14
- #include "http_parser.h"
15
14
  #include "runtime.h"
16
15
 
17
16
  #define DEFAULT_PORT_HTTP "80"
@@ -22,7 +21,7 @@
22
21
  #define GIT_NET_URL_PARSER_INIT { 0 }
23
22
 
24
23
  typedef struct {
25
- int hierarchical : 1;
24
+ unsigned int hierarchical : 1;
26
25
 
27
26
  const char *scheme;
28
27
  const char *user;
@@ -388,6 +387,7 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
388
387
  port = GIT_STR_INIT, path = GIT_STR_INIT,
389
388
  query = GIT_STR_INIT, fragment = GIT_STR_INIT;
390
389
  const char *default_port;
390
+ int port_specified = 0;
391
391
  int error = 0;
392
392
 
393
393
  if (parser->scheme_len) {
@@ -409,10 +409,13 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
409
409
  (error = git_str_decode_percent(&host, parser->host, parser->host_len)) < 0)
410
410
  goto done;
411
411
 
412
- if (parser->port_len)
412
+ if (parser->port_len) {
413
+ port_specified = 1;
413
414
  error = git_str_put(&port, parser->port, parser->port_len);
414
- else if (parser->scheme_len && (default_port = default_port_for_scheme(scheme.ptr)) != NULL)
415
+ } else if (parser->scheme_len &&
416
+ (default_port = default_port_for_scheme(scheme.ptr)) != NULL) {
415
417
  error = git_str_puts(&port, default_port);
418
+ }
416
419
 
417
420
  if (error < 0)
418
421
  goto done;
@@ -441,6 +444,7 @@ static int url_parse_finalize(git_net_url *url, git_net_url_parser *parser)
441
444
  url->fragment = git_str_detach(&fragment);
442
445
  url->username = git_str_detach(&user);
443
446
  url->password = git_str_detach(&password);
447
+ url->port_specified = port_specified;
444
448
 
445
449
  error = 0;
446
450
 
@@ -657,7 +661,7 @@ static bool has_at(const char *str)
657
661
  int git_net_url_parse_scp(git_net_url *url, const char *given)
658
662
  {
659
663
  const char *default_port = default_port_for_scheme("ssh");
660
- const char *c, *user, *host, *port, *path = NULL;
664
+ const char *c, *user, *host, *port = NULL, *path = NULL;
661
665
  size_t user_len = 0, host_len = 0, port_len = 0;
662
666
  unsigned short bracket = 0;
663
667
 
@@ -786,10 +790,12 @@ int git_net_url_parse_scp(git_net_url *url, const char *given)
786
790
  GIT_ASSERT(host_len);
787
791
  GIT_ERROR_CHECK_ALLOC(url->host = git__strndup(host, host_len));
788
792
 
789
- if (port_len)
793
+ if (port_len) {
794
+ url->port_specified = 1;
790
795
  GIT_ERROR_CHECK_ALLOC(url->port = git__strndup(port, port_len));
791
- else
796
+ } else {
792
797
  GIT_ERROR_CHECK_ALLOC(url->port = git__strdup(default_port));
798
+ }
793
799
 
794
800
  GIT_ASSERT(path);
795
801
  GIT_ERROR_CHECK_ALLOC(url->path = git__strdup(path));
@@ -35,6 +35,8 @@ typedef struct git_net_url {
35
35
  char *fragment;
36
36
  char *username;
37
37
  char *password;
38
+
39
+ unsigned int port_specified;
38
40
  } git_net_url;
39
41
 
40
42
  #define GIT_NET_URL_INIT { NULL }
@@ -144,7 +144,7 @@ int git_pool_init(git_pool *pool, size_t item_size)
144
144
 
145
145
  void git_pool_clear(git_pool *pool)
146
146
  {
147
- git_vector_free_deep(&pool->allocations);
147
+ git_vector_dispose_deep(&pool->allocations);
148
148
  }
149
149
 
150
150
  static void *pool_alloc(git_pool *pool, size_t size) {
@@ -83,6 +83,11 @@ typedef struct {
83
83
  */
84
84
  extern int git_pool_init(git_pool *pool, size_t item_size);
85
85
 
86
+ GIT_INLINE(bool) git_pool_is_initialized(git_pool *pool)
87
+ {
88
+ return (pool->item_size > 0);
89
+ }
90
+
86
91
  /**
87
92
  * Free all items in pool
88
93
  */
@@ -33,7 +33,7 @@ extern int git_pqueue_init(
33
33
  size_t init_size,
34
34
  git_vector_cmp cmp);
35
35
 
36
- #define git_pqueue_free git_vector_free
36
+ #define git_pqueue_free git_vector_dispose
37
37
  #define git_pqueue_clear git_vector_clear
38
38
  #define git_pqueue_size git_vector_length
39
39
  #define git_pqueue_get git_vector_get