rugged 1.6.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -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
  */
@@ -301,3 +301,57 @@ int p_munmap(git_map *map)
301
301
  }
302
302
 
303
303
  #endif
304
+
305
+ #if defined(GIT_IO_POLL) || defined(GIT_IO_WSAPOLL)
306
+
307
+ /* Handled by posix.h; this test simplifies the final else */
308
+
309
+ #elif defined(GIT_IO_SELECT)
310
+
311
+ int p_poll(struct pollfd *fds, unsigned int nfds, int timeout_ms)
312
+ {
313
+ fd_set read_fds, write_fds, except_fds;
314
+ struct timeval timeout = { 0, 0 };
315
+ unsigned int i;
316
+ int max_fd = -1, ret;
317
+
318
+ FD_ZERO(&read_fds);
319
+ FD_ZERO(&write_fds);
320
+ FD_ZERO(&except_fds);
321
+
322
+ for (i = 0; i < nfds; i++) {
323
+ if ((fds[i].events & POLLIN))
324
+ FD_SET(fds[i].fd, &read_fds);
325
+
326
+ if ((fds[i].events & POLLOUT))
327
+ FD_SET(fds[i].fd, &write_fds);
328
+
329
+ if ((fds[i].events & POLLPRI))
330
+ FD_SET(fds[i].fd, &except_fds);
331
+
332
+ max_fd = MAX(max_fd, fds[i].fd);
333
+ }
334
+
335
+ if (timeout_ms > 0) {
336
+ timeout.tv_sec = timeout_ms / 1000;
337
+ timeout.tv_usec = (timeout_ms % 1000) * 1000;
338
+ }
339
+
340
+ if ((ret = select(max_fd + 1, &read_fds, &write_fds, &except_fds,
341
+ timeout_ms < 0 ? NULL : &timeout)) < 0)
342
+ goto done;
343
+
344
+ for (i = 0; i < nfds; i++) {
345
+ fds[i].revents = 0 |
346
+ FD_ISSET(fds[i].fd, &read_fds) ? POLLIN : 0 |
347
+ FD_ISSET(fds[i].fd, &write_fds) ? POLLOUT : 0 |
348
+ FD_ISSET(fds[i].fd, &except_fds) ? POLLPRI : 0;
349
+ }
350
+
351
+ done:
352
+ return ret;
353
+ }
354
+
355
+ #else
356
+ # error no poll compatible implementation
357
+ #endif
@@ -195,4 +195,26 @@ extern const char *p_gai_strerror(int ret);
195
195
  # define p_gai_strerror(c) gai_strerror(c)
196
196
  #endif /* NO_ADDRINFO */
197
197
 
198
+ #ifdef GIT_IO_POLL
199
+ # include <poll.h>
200
+ # define p_poll poll
201
+ #elif GIT_IO_WSAPOLL
202
+ # include <winsock2.h>
203
+ # define p_poll WSAPoll
204
+ #else
205
+ # define POLLIN 0x01
206
+ # define POLLPRI 0x02
207
+ # define POLLOUT 0x04
208
+ # define POLLERR 0x08
209
+ # define POLLHUP 0x10
210
+
211
+ struct pollfd {
212
+ int fd;
213
+ short events;
214
+ short revents;
215
+ };
216
+
217
+ extern int p_poll(struct pollfd *fds, unsigned int nfds, int timeout);
218
+ #endif
219
+
198
220
  #endif
@@ -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
@@ -0,0 +1,222 @@
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_process_h__
9
+ #define INCLUDE_process_h__
10
+
11
+ typedef struct git_process git_process;
12
+
13
+ typedef struct {
14
+ unsigned int capture_in : 1,
15
+ capture_out : 1,
16
+ capture_err : 1,
17
+ exclude_env : 1;
18
+
19
+ char *cwd;
20
+ } git_process_options;
21
+
22
+ typedef enum {
23
+ GIT_PROCESS_STATUS_NONE,
24
+ GIT_PROCESS_STATUS_NORMAL,
25
+ GIT_PROCESS_STATUS_ERROR
26
+ } git_process_result_status;
27
+
28
+ #define GIT_PROCESS_RESULT_INIT { GIT_PROCESS_STATUS_NONE }
29
+
30
+ typedef struct {
31
+ git_process_result_status status;
32
+ int exitcode;
33
+ int signal;
34
+ } git_process_result;
35
+
36
+ #define GIT_PROCESS_OPTIONS_INIT { 0 }
37
+
38
+ #ifdef GIT_WIN32
39
+ # define p_pid_t DWORD
40
+ #else
41
+ # define p_pid_t pid_t
42
+ #endif
43
+
44
+ /**
45
+ * Create a new process. The command to run should be specified as the
46
+ * element of the `arg` array, execv-style. This should be the full path
47
+ * to the command to run, the PATH is not obeyed.
48
+ *
49
+ * This function will add the given environment variables (in `env`)
50
+ * to the current environment. Operations on environment variables
51
+ * are not thread safe, so you may not modify the environment during
52
+ * this call. You can avoid this by setting `exclude_env` in the
53
+ * options and providing the entire environment yourself.
54
+ *
55
+ * @param out location to store the process
56
+ * @param args the command (with arguments) to run
57
+ * @param args_len the length of the args array
58
+ * @param env environment variables to add (or NULL)
59
+ * @param env_len the length of the env len
60
+ * @param opts the options for creating the process
61
+ * @return 0 or an error code
62
+ */
63
+ extern int git_process_new(
64
+ git_process **out,
65
+ const char **args,
66
+ size_t args_len,
67
+ const char **env,
68
+ size_t env_len,
69
+ git_process_options *opts);
70
+
71
+ /**
72
+ * Create a new process. The command to run should be specified as the
73
+ * `cmdline` option - which is the full text of the command line as it
74
+ * would be specified or run by a user. The command to run will be
75
+ * looked up in the PATH.
76
+ *
77
+ * On Unix, this will be executed by the system's shell (`/bin/sh`)
78
+ * and may contain _Bourne-style_ shell quoting rules. On Windows,
79
+ * this will be passed to `CreateProcess`, and similarly, may
80
+ * contain _Windows-style_ shell quoting rules.
81
+ *
82
+ * This function will add the given environment variables (in `env`)
83
+ * to the current environment. Operations on environment variables
84
+ * are not thread safe, so you may not modify the environment during
85
+ * this call. You can avoid this by setting `exclude_env` in the
86
+ * options and providing the entire environment yourself.
87
+ */
88
+ extern int git_process_new_from_cmdline(
89
+ git_process **out,
90
+ const char *cmdline,
91
+ const char **env,
92
+ size_t env_len,
93
+ git_process_options *opts);
94
+
95
+ #ifdef GIT_WIN32
96
+
97
+ extern int git_process__appname(
98
+ git_str *out,
99
+ const char *cmdline);
100
+
101
+ /* Windows path parsing is tricky; this helper function is for testing. */
102
+ extern int git_process__cmdline(
103
+ git_str *out,
104
+ const char **in,
105
+ size_t in_len);
106
+
107
+ #endif
108
+
109
+ /*
110
+ * Whether the given string looks like a command line option (starts
111
+ * with a dash). This is useful for examining strings that will become
112
+ * cmdline arguments to ensure that they are not erroneously treated
113
+ * as an option. For example, arguments to `ssh`.
114
+ */
115
+ GIT_INLINE(bool) git_process__is_cmdline_option(const char *str)
116
+ {
117
+ return (str && str[0] == '-');
118
+ }
119
+
120
+ /**
121
+ * Start the process.
122
+ *
123
+ * @param process the process to start
124
+ * @return 0 or an error code
125
+ */
126
+ extern int git_process_start(git_process *process);
127
+
128
+ /**
129
+ * Returns the process id of the process.
130
+ *
131
+ * @param out pointer to a pid_t to store the process id
132
+ * @param process the process to query
133
+ * @return 0 or an error code
134
+ */
135
+ extern int git_process_id(p_pid_t *out, git_process *process);
136
+
137
+ /**
138
+ * Read from the process's stdout. The process must have been created with
139
+ * `capture_out` set to true.
140
+ *
141
+ * @param process the process to read from
142
+ * @param buf the buf to read into
143
+ * @param count maximum number of bytes to read
144
+ * @return number of bytes read or an error code
145
+ */
146
+ extern ssize_t git_process_read(git_process *process, void *buf, size_t count);
147
+
148
+ /**
149
+ * Read from the process's stderr. The process must have been created with
150
+ * `capture_err` set to true.
151
+ *
152
+ * @param process the process to read from
153
+ * @param buf the buf to read into
154
+ * @param count maximum number of bytes to read
155
+ * @return number of bytes read or an error code
156
+ */
157
+ extern ssize_t git_process_read_err(git_process *process, void *buf, size_t count);
158
+
159
+ /**
160
+ * Write to the process's stdin. The process must have been created with
161
+ * `capture_in` set to true.
162
+ *
163
+ * @param process the process to write to
164
+ * @param buf the buf to write
165
+ * @param count maximum number of bytes to write
166
+ * @return number of bytes written or an error code
167
+ */
168
+ extern ssize_t git_process_write(git_process *process, const void *buf, size_t count);
169
+
170
+ /**
171
+ * Wait for the process to finish.
172
+ *
173
+ * @param result the result of the process or NULL
174
+ * @param process the process to wait on
175
+ */
176
+ extern int git_process_wait(git_process_result *result, git_process *process);
177
+
178
+ /**
179
+ * Close the input pipe from the child.
180
+ *
181
+ * @param process the process to close the pipe on
182
+ */
183
+ extern int git_process_close_in(git_process *process);
184
+
185
+ /**
186
+ * Close the output pipe from the child.
187
+ *
188
+ * @param process the process to close the pipe on
189
+ */
190
+ extern int git_process_close_out(git_process *process);
191
+
192
+ /**
193
+ * Close the error pipe from the child.
194
+ *
195
+ * @param process the process to close the pipe on
196
+ */
197
+ extern int git_process_close_err(git_process *process);
198
+
199
+ /**
200
+ * Close all resources that are used by the process. This does not
201
+ * wait for the process to complete.
202
+ *
203
+ * @parma process the process to close
204
+ */
205
+ extern int git_process_close(git_process *process);
206
+
207
+ /**
208
+ * Place a human-readable error message in the given git buffer.
209
+ *
210
+ * @param msg the buffer to store the message
211
+ * @param result the process result that produced an error
212
+ */
213
+ extern int git_process_result_msg(git_str *msg, git_process_result *result);
214
+
215
+ /**
216
+ * Free a process structure
217
+ *
218
+ * @param process the process to free
219
+ */
220
+ extern void git_process_free(git_process *process);
221
+
222
+ #endif
@@ -10,10 +10,6 @@ See <http://creativecommons.org/publicdomain/zero/1.0/>. */
10
10
  #include "rand.h"
11
11
  #include "runtime.h"
12
12
 
13
- #if defined(GIT_RAND_GETENTROPY)
14
- # include <sys/random.h>
15
- #endif
16
-
17
13
  #if defined(GIT_WIN32)
18
14
  # include <wincrypt.h>
19
15
  #endif
@@ -32,7 +28,6 @@ GIT_INLINE(int) getseed(uint64_t *seed)
32
28
  HCRYPTPROV provider;
33
29
  SYSTEMTIME systemtime;
34
30
  FILETIME filetime, idletime, kerneltime, usertime;
35
- bits convert;
36
31
 
37
32
  if (CryptAcquireContext(&provider, 0, 0, PROV_RSA_FULL,
38
33
  CRYPT_VERIFYCONTEXT|CRYPT_SILENT)) {
@@ -67,7 +62,7 @@ GIT_INLINE(int) getseed(uint64_t *seed)
67
62
  *seed ^= ((uint64_t)GetCurrentProcessId() << 32);
68
63
  *seed ^= ((uint64_t)GetCurrentThreadId() << 48);
69
64
 
70
- convert.f = git__timer(); *seed ^= (convert.d);
65
+ *seed ^= git_time_monotonic();
71
66
 
72
67
  /* Mix in the addresses of some functions and variables */
73
68
  *seed ^= (((uint64_t)((uintptr_t)seed) << 32));
@@ -81,9 +76,12 @@ GIT_INLINE(int) getseed(uint64_t *seed)
81
76
  GIT_INLINE(int) getseed(uint64_t *seed)
82
77
  {
83
78
  struct timeval tv;
79
+ int fd;
80
+
81
+ # if defined(GIT_RAND_GETLOADAVG)
84
82
  double loadavg[3];
85
83
  bits convert;
86
- int fd;
84
+ # endif
87
85
 
88
86
  # if defined(GIT_RAND_GETENTROPY)
89
87
  GIT_UNUSED((fd = 0));
@@ -127,11 +125,9 @@ GIT_INLINE(int) getseed(uint64_t *seed)
127
125
  convert.f = loadavg[0]; *seed ^= (convert.d >> 36);
128
126
  convert.f = loadavg[1]; *seed ^= (convert.d);
129
127
  convert.f = loadavg[2]; *seed ^= (convert.d >> 16);
130
- # else
131
- GIT_UNUSED(loadavg[0]);
132
128
  # endif
133
129
 
134
- convert.f = git__timer(); *seed ^= (convert.d);
130
+ *seed ^= git_time_monotonic();
135
131
 
136
132
  /* Mix in the addresses of some variables */
137
133
  *seed ^= ((uint64_t)((size_t)((void *)seed)) << 32);
@@ -125,7 +125,7 @@ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches,
125
125
 
126
126
  if ((data = pcre2_match_data_create(nmatches, NULL)) == NULL) {
127
127
  git_error_set_oom();
128
- goto out;
128
+ return -1;
129
129
  }
130
130
 
131
131
  if ((error = pcre2_match(*r, (const unsigned char *) string, strlen(string),
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  #include "sortedcache.h"
9
+ #include "hashmap.h"
9
10
 
10
11
  int git_sortedcache_new(
11
12
  git_sortedcache **out,
@@ -26,8 +27,7 @@ int git_sortedcache_new(
26
27
  GIT_ERROR_CHECK_ALLOC(sc);
27
28
 
28
29
  if (git_pool_init(&sc->pool, 1) < 0 ||
29
- git_vector_init(&sc->items, 4, item_cmp) < 0 ||
30
- git_strmap_new(&sc->map) < 0)
30
+ git_vector_init(&sc->items, 4, item_cmp) < 0)
31
31
  goto fail;
32
32
 
33
33
  if (git_rwlock_init(&sc->lock)) {
@@ -46,8 +46,7 @@ int git_sortedcache_new(
46
46
  return 0;
47
47
 
48
48
  fail:
49
- git_strmap_free(sc->map);
50
- git_vector_free(&sc->items);
49
+ git_vector_dispose(&sc->items);
51
50
  git_pool_clear(&sc->pool);
52
51
  git__free(sc);
53
52
  return -1;
@@ -65,7 +64,7 @@ const char *git_sortedcache_path(git_sortedcache *sc)
65
64
 
66
65
  static void sortedcache_clear(git_sortedcache *sc)
67
66
  {
68
- git_strmap_clear(sc->map);
67
+ git_hashmap_str_clear(&sc->map);
69
68
 
70
69
  if (sc->free_item) {
71
70
  size_t i;
@@ -88,8 +87,8 @@ static void sortedcache_free(git_sortedcache *sc)
88
87
  return;
89
88
 
90
89
  sortedcache_clear(sc);
91
- git_vector_free(&sc->items);
92
- git_strmap_free(sc->map);
90
+ git_vector_dispose(&sc->items);
91
+ git_hashmap_str_dispose(&sc->map);
93
92
 
94
93
  git_sortedcache_wunlock(sc);
95
94
 
@@ -274,7 +273,7 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
274
273
  char *item_key;
275
274
  void *item;
276
275
 
277
- if ((item = git_strmap_get(sc->map, key)) != NULL)
276
+ if (git_hashmap_str_get(&item, &sc->map, key) == 0)
278
277
  goto done;
279
278
 
280
279
  keylen = strlen(key);
@@ -294,11 +293,11 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
294
293
  item_key = ((char *)item) + sc->item_path_offset;
295
294
  memcpy(item_key, key, keylen);
296
295
 
297
- if ((error = git_strmap_set(sc->map, item_key, item)) < 0)
296
+ if ((error = git_hashmap_str_put(&sc->map, item_key, item)) < 0)
298
297
  goto done;
299
298
 
300
299
  if ((error = git_vector_insert(&sc->items, item)) < 0)
301
- git_strmap_delete(sc->map, item_key);
300
+ git_hashmap_str_remove(&sc->map, item_key);
302
301
 
303
302
  done:
304
303
  if (out)
@@ -307,9 +306,11 @@ done:
307
306
  }
308
307
 
309
308
  /* lookup item by key */
310
- void *git_sortedcache_lookup(const git_sortedcache *sc, const char *key)
309
+ void *git_sortedcache_lookup(git_sortedcache *sc, const char *key)
311
310
  {
312
- return git_strmap_get(sc->map, key);
311
+ void *value;
312
+
313
+ return git_hashmap_str_get(&value, &sc->map, key) == 0 ? value : NULL;
313
314
  }
314
315
 
315
316
  /* find out how many items are in the cache */
@@ -370,7 +371,7 @@ int git_sortedcache_remove(git_sortedcache *sc, size_t pos)
370
371
 
371
372
  (void)git_vector_remove(&sc->items, pos);
372
373
 
373
- git_strmap_delete(sc->map, item + sc->item_path_offset);
374
+ git_hashmap_str_remove(&sc->map, item + sc->item_path_offset);
374
375
 
375
376
  if (sc->free_item)
376
377
  sc->free_item(sc->free_item_payload, item);
@@ -14,7 +14,7 @@
14
14
  #include "vector.h"
15
15
  #include "thread.h"
16
16
  #include "pool.h"
17
- #include "strmap.h"
17
+ #include "hashmap_str.h"
18
18
 
19
19
  #include <stddef.h>
20
20
 
@@ -36,7 +36,7 @@ typedef struct {
36
36
  void *free_item_payload;
37
37
  git_pool pool;
38
38
  git_vector items;
39
- git_strmap *map;
39
+ git_hashmap_str map;
40
40
  git_futils_filestamp stamp;
41
41
  char path[GIT_FLEX_ARRAY];
42
42
  } git_sortedcache;
@@ -163,7 +163,7 @@ GIT_WARN_UNUSED_RESULT int git_sortedcache_rlock(git_sortedcache *sc);
163
163
  void git_sortedcache_runlock(git_sortedcache *sc);
164
164
 
165
165
  /* Lookup item by key - returns NULL if not found */
166
- void *git_sortedcache_lookup(const git_sortedcache *sc, const char *key);
166
+ void *git_sortedcache_lookup(git_sortedcache *sc, const char *key);
167
167
 
168
168
  /* Get how many items are in the cache
169
169
  *
@@ -0,0 +1,66 @@
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_stackstr_h__
8
+ #define INCLUDE_stackstr_h__
9
+
10
+ #include "git2_util.h"
11
+
12
+ typedef struct {
13
+ /* Length of / number of bytes used by `data`. */
14
+ size_t len;
15
+
16
+ /* Size of the allocated `data` buffer. */
17
+ size_t size;
18
+
19
+ /* The actual string buffer data. */
20
+ char data[GIT_FLEX_ARRAY];
21
+ } git_staticstr;
22
+
23
+ #define git_staticstr_with_size(__size) \
24
+ struct { \
25
+ size_t len; \
26
+ size_t size; \
27
+ char data[__size]; \
28
+ }
29
+
30
+ #define git_staticstr_init(__str, __size) \
31
+ do { \
32
+ (__str)->len = 0; \
33
+ (__str)->size = __size; \
34
+ (__str)->data[0] = '\0'; \
35
+ } while(0)
36
+
37
+ #define git_staticstr_offset(__str) \
38
+ ((__str)->data + (__str)->len)
39
+
40
+ #define git_staticstr_remain(__str) \
41
+ ((__str)->len > (__str)->size ? 0 : ((__str)->size - (__str)->len))
42
+
43
+ #define git_staticstr_increase(__str, __len) \
44
+ do { ((__str)->len += __len); } while(0)
45
+
46
+ #define git_staticstr_consume_bytes(__str, __len) \
47
+ do { git_staticstr_consume(__str, (__str)->data + __len); } while(0)
48
+
49
+ #define git_staticstr_consume(__str, __end) \
50
+ do { \
51
+ if (__end > (__str)->data && \
52
+ __end <= (__str)->data + (__str)->len) { \
53
+ size_t __consumed = __end - (__str)->data; \
54
+ memmove((__str)->data, __end, (__str)->len - __consumed); \
55
+ (__str)->len -= __consumed; \
56
+ (__str)->data[(__str)->len] = '\0'; \
57
+ } \
58
+ } while(0)
59
+
60
+ #define git_staticstr_clear(__str) \
61
+ do { \
62
+ (__str)->len = 0; \
63
+ (__str)->data[0] = 0; \
64
+ } while(0)
65
+
66
+ #endif
@@ -485,8 +485,8 @@ int git_str_decode_percent(
485
485
  for (str_pos = 0; str_pos < str_len; buf->size++, str_pos++) {
486
486
  if (str[str_pos] == '%' &&
487
487
  str_len > str_pos + 2 &&
488
- isxdigit(str[str_pos + 1]) &&
489
- isxdigit(str[str_pos + 2])) {
488
+ git__isxdigit(str[str_pos + 1]) &&
489
+ git__isxdigit(str[str_pos + 2])) {
490
490
  buf->ptr[buf->size] = (HEX_DECODE(str[str_pos + 1]) << 4) +
491
491
  HEX_DECODE(str[str_pos + 2]);
492
492
  str_pos += 2;
@@ -0,0 +1,108 @@
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 <stdio.h>
9
+
10
+ #include "git2_util.h"
11
+ #include "vector.h"
12
+ #include "strlist.h"
13
+
14
+ int git_strlist_copy(char ***out, const char **in, size_t len)
15
+ {
16
+ char **dup;
17
+ size_t i;
18
+
19
+ dup = git__calloc(len, sizeof(char *));
20
+ GIT_ERROR_CHECK_ALLOC(dup);
21
+
22
+ for (i = 0; i < len; i++) {
23
+ dup[i] = git__strdup(in[i]);
24
+ GIT_ERROR_CHECK_ALLOC(dup[i]);
25
+ }
26
+
27
+ *out = dup;
28
+ return 0;
29
+ }
30
+
31
+ int git_strlist_copy_with_null(char ***out, const char **in, size_t len)
32
+ {
33
+ char **dup;
34
+ size_t new_len, i;
35
+
36
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_len, len, 1);
37
+
38
+ dup = git__calloc(new_len, sizeof(char *));
39
+ GIT_ERROR_CHECK_ALLOC(dup);
40
+
41
+ for (i = 0; i < len; i++) {
42
+ dup[i] = git__strdup(in[i]);
43
+ GIT_ERROR_CHECK_ALLOC(dup[i]);
44
+ }
45
+
46
+ *out = dup;
47
+ return 0;
48
+ }
49
+
50
+ bool git_strlist_contains_prefix(
51
+ const char **strings,
52
+ size_t len,
53
+ const char *str,
54
+ size_t n)
55
+ {
56
+ size_t i;
57
+
58
+ for (i = 0; i < len; i++) {
59
+ if (strncmp(strings[i], str, n) == 0)
60
+ return true;
61
+ }
62
+
63
+ return false;
64
+ }
65
+
66
+ bool git_strlist_contains_key(
67
+ const char **strings,
68
+ size_t len,
69
+ const char *key,
70
+ char delimiter)
71
+ {
72
+ const char *c;
73
+
74
+ for (c = key; *c; c++) {
75
+ if (*c == delimiter)
76
+ break;
77
+ }
78
+
79
+ return *c ?
80
+ git_strlist_contains_prefix(strings, len, key, (c - key)) :
81
+ false;
82
+ }
83
+
84
+ void git_strlist_free(char **strings, size_t len)
85
+ {
86
+ size_t i;
87
+
88
+ if (!strings)
89
+ return;
90
+
91
+ for (i = 0; i < len; i++)
92
+ git__free(strings[i]);
93
+
94
+ git__free(strings);
95
+ }
96
+
97
+ void git_strlist_free_with_null(char **strings)
98
+ {
99
+ char **s;
100
+
101
+ if (!strings)
102
+ return;
103
+
104
+ for (s = strings; *s; s++)
105
+ git__free(*s);
106
+
107
+ git__free(strings);
108
+ }