rugged 1.7.2 → 1.9.4

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 (405) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +4 -4
  3. data/ext/rugged/rugged.c +12 -1
  4. data/ext/rugged/rugged_blame.c +22 -6
  5. data/ext/rugged/rugged_blob.c +24 -9
  6. data/ext/rugged/rugged_branch.c +10 -7
  7. data/ext/rugged/rugged_branch_collection.c +8 -6
  8. data/ext/rugged/rugged_commit.c +7 -6
  9. data/ext/rugged/rugged_config.c +20 -11
  10. data/ext/rugged/rugged_diff.c +26 -12
  11. data/ext/rugged/rugged_diff_hunk.c +2 -1
  12. data/ext/rugged/rugged_index.c +39 -29
  13. data/ext/rugged/rugged_note.c +7 -6
  14. data/ext/rugged/rugged_object.c +3 -2
  15. data/ext/rugged/rugged_patch.c +23 -9
  16. data/ext/rugged/rugged_rebase.c +22 -10
  17. data/ext/rugged/rugged_reference.c +22 -13
  18. data/ext/rugged/rugged_reference_collection.c +9 -7
  19. data/ext/rugged/rugged_remote.c +23 -12
  20. data/ext/rugged/rugged_remote_collection.c +11 -9
  21. data/ext/rugged/rugged_repo.c +60 -45
  22. data/ext/rugged/rugged_revwalk.c +22 -12
  23. data/ext/rugged/rugged_submodule.c +23 -20
  24. data/ext/rugged/rugged_submodule_collection.c +20 -9
  25. data/ext/rugged/rugged_tag.c +6 -4
  26. data/ext/rugged/rugged_tag_collection.c +7 -5
  27. data/ext/rugged/rugged_tree.c +27 -15
  28. data/lib/rugged/version.rb +1 -1
  29. data/vendor/libgit2/AUTHORS +3 -0
  30. data/vendor/libgit2/CMakeLists.txt +23 -10
  31. data/vendor/libgit2/COPYING +195 -1
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +4 -1
  33. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  34. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  35. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  36. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  37. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  38. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  39. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  40. data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
  41. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  42. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  43. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  44. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  45. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  46. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  47. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  48. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  49. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  50. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  51. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  52. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  53. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  54. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  55. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  56. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  57. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  58. data/vendor/libgit2/deps/pcre/CMakeLists.txt +3 -3
  59. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
  60. data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
  61. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  62. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  63. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  64. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  65. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  66. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  67. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  68. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  69. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  70. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  71. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  72. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  73. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  74. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  75. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  76. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  77. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  78. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  79. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  80. data/vendor/libgit2/include/git2/apply.h +27 -6
  81. data/vendor/libgit2/include/git2/attr.h +17 -4
  82. data/vendor/libgit2/include/git2/blame.h +133 -28
  83. data/vendor/libgit2/include/git2/blob.h +71 -28
  84. data/vendor/libgit2/include/git2/branch.h +22 -15
  85. data/vendor/libgit2/include/git2/buffer.h +6 -4
  86. data/vendor/libgit2/include/git2/cert.h +2 -1
  87. data/vendor/libgit2/include/git2/checkout.h +83 -32
  88. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  89. data/vendor/libgit2/include/git2/clone.h +25 -9
  90. data/vendor/libgit2/include/git2/commit.h +132 -3
  91. data/vendor/libgit2/include/git2/common.h +120 -63
  92. data/vendor/libgit2/include/git2/config.h +93 -23
  93. data/vendor/libgit2/include/git2/credential.h +30 -2
  94. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +134 -4
  96. data/vendor/libgit2/include/git2/describe.h +13 -1
  97. data/vendor/libgit2/include/git2/diff.h +38 -8
  98. data/vendor/libgit2/include/git2/email.h +9 -29
  99. data/vendor/libgit2/include/git2/errors.h +46 -73
  100. data/vendor/libgit2/include/git2/filter.h +14 -7
  101. data/vendor/libgit2/include/git2/global.h +8 -1
  102. data/vendor/libgit2/include/git2/graph.h +3 -2
  103. data/vendor/libgit2/include/git2/ignore.h +10 -0
  104. data/vendor/libgit2/include/git2/index.h +100 -15
  105. data/vendor/libgit2/include/git2/indexer.h +21 -4
  106. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  107. data/vendor/libgit2/include/git2/merge.h +50 -3
  108. data/vendor/libgit2/include/git2/message.h +2 -2
  109. data/vendor/libgit2/include/git2/net.h +3 -1
  110. data/vendor/libgit2/include/git2/notes.h +9 -6
  111. data/vendor/libgit2/include/git2/object.h +9 -8
  112. data/vendor/libgit2/include/git2/odb.h +91 -49
  113. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  114. data/vendor/libgit2/include/git2/oid.h +23 -25
  115. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  116. data/vendor/libgit2/include/git2/pack.h +13 -1
  117. data/vendor/libgit2/include/git2/patch.h +2 -3
  118. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  119. data/vendor/libgit2/include/git2/proxy.h +12 -3
  120. data/vendor/libgit2/include/git2/rebase.h +9 -6
  121. data/vendor/libgit2/include/git2/refdb.h +2 -2
  122. data/vendor/libgit2/include/git2/reflog.h +3 -2
  123. data/vendor/libgit2/include/git2/refs.h +9 -6
  124. data/vendor/libgit2/include/git2/refspec.h +14 -4
  125. data/vendor/libgit2/include/git2/remote.h +113 -25
  126. data/vendor/libgit2/include/git2/repository.h +57 -21
  127. data/vendor/libgit2/include/git2/reset.h +16 -3
  128. data/vendor/libgit2/include/git2/revert.h +9 -4
  129. data/vendor/libgit2/include/git2/revparse.h +3 -3
  130. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  131. data/vendor/libgit2/include/git2/signature.h +46 -1
  132. data/vendor/libgit2/include/git2/stash.h +17 -3
  133. data/vendor/libgit2/include/git2/status.h +10 -6
  134. data/vendor/libgit2/include/git2/stdint.h +87 -85
  135. data/vendor/libgit2/include/git2/strarray.h +2 -3
  136. data/vendor/libgit2/include/git2/submodule.h +20 -9
  137. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  138. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  139. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  140. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  141. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  142. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  143. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  144. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  145. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  146. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  147. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  148. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  149. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  150. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  151. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  152. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  153. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  154. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  155. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  156. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  157. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  158. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  159. data/vendor/libgit2/include/git2/sys/transport.h +25 -4
  160. data/vendor/libgit2/include/git2/tag.h +3 -1
  161. data/vendor/libgit2/include/git2/trace.h +9 -3
  162. data/vendor/libgit2/include/git2/transaction.h +3 -2
  163. data/vendor/libgit2/include/git2/transport.h +11 -3
  164. data/vendor/libgit2/include/git2/tree.h +16 -5
  165. data/vendor/libgit2/include/git2/types.h +19 -3
  166. data/vendor/libgit2/include/git2/version.h +46 -8
  167. data/vendor/libgit2/include/git2/worktree.h +16 -6
  168. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  169. data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
  170. data/vendor/libgit2/src/cli/cmd.c +1 -1
  171. data/vendor/libgit2/src/cli/cmd.h +4 -0
  172. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  173. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  174. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  175. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  176. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  177. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  178. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  179. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  180. data/vendor/libgit2/src/cli/common.c +168 -0
  181. data/vendor/libgit2/src/cli/common.h +63 -0
  182. data/vendor/libgit2/src/cli/error.h +1 -1
  183. data/vendor/libgit2/src/cli/main.c +52 -24
  184. data/vendor/libgit2/src/cli/opt.c +31 -5
  185. data/vendor/libgit2/src/cli/opt.h +21 -3
  186. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  187. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  188. data/vendor/libgit2/src/cli/progress.c +51 -2
  189. data/vendor/libgit2/src/cli/progress.h +12 -0
  190. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  191. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  192. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  193. data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
  194. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  195. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  196. data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
  197. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  198. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  199. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  200. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  201. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  202. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  203. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  204. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  205. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  206. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  207. data/vendor/libgit2/src/libgit2/clone.c +192 -166
  208. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  209. data/vendor/libgit2/src/libgit2/commit.c +93 -1
  210. data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
  211. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  212. data/vendor/libgit2/src/libgit2/config.c +390 -299
  213. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  214. data/vendor/libgit2/src/libgit2/config.h +9 -4
  215. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  216. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  217. data/vendor/libgit2/src/libgit2/config_file.c +101 -89
  218. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  219. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  220. data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
  221. data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
  222. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  223. data/vendor/libgit2/src/libgit2/delta.c +5 -1
  224. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  225. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  226. data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
  227. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  228. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  229. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  230. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  231. data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
  232. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  233. data/vendor/libgit2/src/libgit2/email.c +1 -0
  234. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  235. data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
  236. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  237. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  238. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  239. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  240. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  241. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  242. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  243. data/vendor/libgit2/src/libgit2/index.c +76 -98
  244. data/vendor/libgit2/src/libgit2/index.h +5 -2
  245. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  246. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  247. data/vendor/libgit2/src/libgit2/indexer.c +36 -40
  248. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  249. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +43 -38
  252. data/vendor/libgit2/src/libgit2/merge.h +4 -0
  253. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  254. data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
  255. data/vendor/libgit2/src/libgit2/message.c +1 -1
  256. data/vendor/libgit2/src/libgit2/midx.c +30 -18
  257. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  258. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  259. data/vendor/libgit2/src/libgit2/object.c +6 -5
  260. data/vendor/libgit2/src/libgit2/odb.c +7 -10
  261. data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  264. data/vendor/libgit2/src/libgit2/oid.c +36 -10
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
  267. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  268. data/vendor/libgit2/src/libgit2/pack.c +33 -24
  269. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  270. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  271. data/vendor/libgit2/src/libgit2/path.c +1 -1
  272. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  273. data/vendor/libgit2/src/libgit2/push.c +79 -28
  274. data/vendor/libgit2/src/libgit2/push.h +1 -0
  275. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  276. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  277. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  278. data/vendor/libgit2/src/libgit2/refs.c +41 -13
  279. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  280. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  281. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  282. data/vendor/libgit2/src/libgit2/remote.c +125 -62
  283. data/vendor/libgit2/src/libgit2/remote.h +0 -1
  284. data/vendor/libgit2/src/libgit2/repository.c +235 -54
  285. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  286. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  287. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  288. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  289. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  290. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  291. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  292. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  293. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  294. data/vendor/libgit2/src/libgit2/status.c +1 -1
  295. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  296. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  297. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  298. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  299. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  300. data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
  301. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  302. data/vendor/libgit2/src/libgit2/submodule.c +118 -68
  303. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  304. data/vendor/libgit2/src/libgit2/tag.c +4 -2
  305. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  306. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  307. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  308. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  309. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
  310. data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
  311. data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
  312. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  313. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  314. data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
  315. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  316. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  317. data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
  318. data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
  319. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  320. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +5 -5
  321. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  322. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  323. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
  324. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  325. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  326. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  327. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  328. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  329. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  330. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  331. data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
  332. data/vendor/libgit2/src/util/alloc.c +4 -1
  333. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  334. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  335. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  336. data/vendor/libgit2/src/util/array.h +18 -17
  337. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  338. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  339. data/vendor/libgit2/src/util/date.c +22 -14
  340. data/vendor/libgit2/src/util/date.h +12 -0
  341. data/vendor/libgit2/src/util/errors.c +401 -0
  342. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  343. data/vendor/libgit2/src/util/fs_path.c +81 -10
  344. data/vendor/libgit2/src/util/fs_path.h +29 -0
  345. data/vendor/libgit2/src/util/futils.c +6 -5
  346. data/vendor/libgit2/src/util/futils.h +24 -7
  347. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  348. data/vendor/libgit2/src/util/git2_util.h +6 -0
  349. data/vendor/libgit2/src/util/hash/builtin.c +14 -4
  350. data/vendor/libgit2/src/util/hash/openssl.c +148 -0
  351. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  352. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
  353. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  354. data/vendor/libgit2/src/util/hashmap.h +425 -0
  355. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  356. data/vendor/libgit2/src/util/integer.h +3 -1
  357. data/vendor/libgit2/src/util/net.c +17 -11
  358. data/vendor/libgit2/src/util/net.h +2 -0
  359. data/vendor/libgit2/src/util/pool.c +1 -1
  360. data/vendor/libgit2/src/util/pool.h +5 -0
  361. data/vendor/libgit2/src/util/pqueue.h +1 -1
  362. data/vendor/libgit2/src/util/process.h +223 -0
  363. data/vendor/libgit2/src/util/rand.c +1 -7
  364. data/vendor/libgit2/src/util/regexp.c +1 -1
  365. data/vendor/libgit2/src/util/runtime.c +2 -2
  366. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  367. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  368. data/vendor/libgit2/src/util/str.c +20 -8
  369. data/vendor/libgit2/src/util/str.h +5 -3
  370. data/vendor/libgit2/src/util/strlist.c +108 -0
  371. data/vendor/libgit2/src/util/strlist.h +36 -0
  372. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  373. data/vendor/libgit2/src/util/unix/process.c +706 -0
  374. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  375. data/vendor/libgit2/src/util/util.c +18 -5
  376. data/vendor/libgit2/src/util/util.h +5 -38
  377. data/vendor/libgit2/src/util/vector.c +3 -3
  378. data/vendor/libgit2/src/util/vector.h +2 -2
  379. data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
  380. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  381. data/vendor/libgit2/src/util/win32/process.c +522 -0
  382. metadata +60 -32
  383. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  384. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  385. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  386. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  387. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  388. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  389. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  390. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  391. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  392. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  393. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  394. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  395. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  396. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  397. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  398. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  399. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  400. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  401. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  402. data/vendor/libgit2/src/util/khash.h +0 -615
  403. data/vendor/libgit2/src/util/strmap.c +0 -100
  404. data/vendor/libgit2/src/util/strmap.h +0 -131
  405. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -0,0 +1,223 @@
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 use_shell : 1,
15
+ capture_in : 1,
16
+ capture_out : 1,
17
+ capture_err : 1,
18
+ exclude_env : 1;
19
+
20
+ char *cwd;
21
+ } git_process_options;
22
+
23
+ typedef enum {
24
+ GIT_PROCESS_STATUS_NONE,
25
+ GIT_PROCESS_STATUS_NORMAL,
26
+ GIT_PROCESS_STATUS_ERROR
27
+ } git_process_result_status;
28
+
29
+ #define GIT_PROCESS_RESULT_INIT { GIT_PROCESS_STATUS_NONE }
30
+
31
+ typedef struct {
32
+ git_process_result_status status;
33
+ int exitcode;
34
+ int signal;
35
+ } git_process_result;
36
+
37
+ #define GIT_PROCESS_OPTIONS_INIT { 0 }
38
+
39
+ #ifdef GIT_WIN32
40
+ # define p_pid_t DWORD
41
+ #else
42
+ # define p_pid_t pid_t
43
+ #endif
44
+
45
+ /**
46
+ * Create a new process. The command to run should be specified as the
47
+ * element of the `arg` array, execv-style. This should be the full path
48
+ * to the command to run, the PATH is not obeyed.
49
+ *
50
+ * This function will add the given environment variables (in `env`)
51
+ * to the current environment. Operations on environment variables
52
+ * are not thread safe, so you may not modify the environment during
53
+ * this call. You can avoid this by setting `exclude_env` in the
54
+ * options and providing the entire environment yourself.
55
+ *
56
+ * @param out location to store the process
57
+ * @param args the command (with arguments) to run
58
+ * @param args_len the length of the args array
59
+ * @param env environment variables to add (or NULL)
60
+ * @param env_len the length of the env len
61
+ * @param opts the options for creating the process
62
+ * @return 0 or an error code
63
+ */
64
+ extern int git_process_new(
65
+ git_process **out,
66
+ const char **args,
67
+ size_t args_len,
68
+ const char **env,
69
+ size_t env_len,
70
+ git_process_options *opts);
71
+
72
+ /**
73
+ * Create a new process. The command to run should be specified as the
74
+ * `cmdline` option - which is the full text of the command line as it
75
+ * would be specified or run by a user. The command to run will be
76
+ * looked up in the PATH.
77
+ *
78
+ * On Unix, this will be executed by the system's shell (`/bin/sh`)
79
+ * and may contain _Bourne-style_ shell quoting rules. On Windows,
80
+ * this will be passed to `CreateProcess`, and similarly, may
81
+ * contain _Windows-style_ shell quoting rules.
82
+ *
83
+ * This function will add the given environment variables (in `env`)
84
+ * to the current environment. Operations on environment variables
85
+ * are not thread safe, so you may not modify the environment during
86
+ * this call. You can avoid this by setting `exclude_env` in the
87
+ * options and providing the entire environment yourself.
88
+ */
89
+ extern int git_process_new_from_cmdline(
90
+ git_process **out,
91
+ const char *cmdline,
92
+ const char **env,
93
+ size_t env_len,
94
+ git_process_options *opts);
95
+
96
+ #ifdef GIT_WIN32
97
+
98
+ extern int git_process__appname(
99
+ git_str *out,
100
+ const char *cmdline);
101
+
102
+ /* Windows path parsing is tricky; this helper function is for testing. */
103
+ extern int git_process__cmdline(
104
+ git_str *out,
105
+ const char **in,
106
+ size_t in_len);
107
+
108
+ #endif
109
+
110
+ /*
111
+ * Whether the given string looks like a command line option (starts
112
+ * with a dash). This is useful for examining strings that will become
113
+ * cmdline arguments to ensure that they are not erroneously treated
114
+ * as an option. For example, arguments to `ssh`.
115
+ */
116
+ GIT_INLINE(bool) git_process__is_cmdline_option(const char *str)
117
+ {
118
+ return (str && str[0] == '-');
119
+ }
120
+
121
+ /**
122
+ * Start the process.
123
+ *
124
+ * @param process the process to start
125
+ * @return 0 or an error code
126
+ */
127
+ extern int git_process_start(git_process *process);
128
+
129
+ /**
130
+ * Returns the process id of the process.
131
+ *
132
+ * @param out pointer to a pid_t to store the process id
133
+ * @param process the process to query
134
+ * @return 0 or an error code
135
+ */
136
+ extern int git_process_id(p_pid_t *out, git_process *process);
137
+
138
+ /**
139
+ * Read from the process's stdout. The process must have been created with
140
+ * `capture_out` set to true.
141
+ *
142
+ * @param process the process to read from
143
+ * @param buf the buf to read into
144
+ * @param count maximum number of bytes to read
145
+ * @return number of bytes read or an error code
146
+ */
147
+ extern ssize_t git_process_read(git_process *process, void *buf, size_t count);
148
+
149
+ /**
150
+ * Read from the process's stderr. The process must have been created with
151
+ * `capture_err` set to true.
152
+ *
153
+ * @param process the process to read from
154
+ * @param buf the buf to read into
155
+ * @param count maximum number of bytes to read
156
+ * @return number of bytes read or an error code
157
+ */
158
+ extern ssize_t git_process_read_err(git_process *process, void *buf, size_t count);
159
+
160
+ /**
161
+ * Write to the process's stdin. The process must have been created with
162
+ * `capture_in` set to true.
163
+ *
164
+ * @param process the process to write to
165
+ * @param buf the buf to write
166
+ * @param count maximum number of bytes to write
167
+ * @return number of bytes written or an error code
168
+ */
169
+ extern ssize_t git_process_write(git_process *process, const void *buf, size_t count);
170
+
171
+ /**
172
+ * Wait for the process to finish.
173
+ *
174
+ * @param result the result of the process or NULL
175
+ * @param process the process to wait on
176
+ */
177
+ extern int git_process_wait(git_process_result *result, git_process *process);
178
+
179
+ /**
180
+ * Close the input pipe from the child.
181
+ *
182
+ * @param process the process to close the pipe on
183
+ */
184
+ extern int git_process_close_in(git_process *process);
185
+
186
+ /**
187
+ * Close the output pipe from the child.
188
+ *
189
+ * @param process the process to close the pipe on
190
+ */
191
+ extern int git_process_close_out(git_process *process);
192
+
193
+ /**
194
+ * Close the error pipe from the child.
195
+ *
196
+ * @param process the process to close the pipe on
197
+ */
198
+ extern int git_process_close_err(git_process *process);
199
+
200
+ /**
201
+ * Close all resources that are used by the process. This does not
202
+ * wait for the process to complete.
203
+ *
204
+ * @parma process the process to close
205
+ */
206
+ extern int git_process_close(git_process *process);
207
+
208
+ /**
209
+ * Place a human-readable error message in the given git buffer.
210
+ *
211
+ * @param msg the buffer to store the message
212
+ * @param result the process result that produced an error
213
+ */
214
+ extern int git_process_result_msg(git_str *msg, git_process_result *result);
215
+
216
+ /**
217
+ * Free a process structure
218
+ *
219
+ * @param process the process to free
220
+ */
221
+ extern void git_process_free(git_process *process);
222
+
223
+ #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
@@ -80,10 +76,10 @@ GIT_INLINE(int) getseed(uint64_t *seed)
80
76
  GIT_INLINE(int) getseed(uint64_t *seed)
81
77
  {
82
78
  struct timeval tv;
83
- double loadavg[3];
84
79
  int fd;
85
80
 
86
81
  # if defined(GIT_RAND_GETLOADAVG)
82
+ double loadavg[3];
87
83
  bits convert;
88
84
  # endif
89
85
 
@@ -129,8 +125,6 @@ GIT_INLINE(int) getseed(uint64_t *seed)
129
125
  convert.f = loadavg[0]; *seed ^= (convert.d >> 36);
130
126
  convert.f = loadavg[1]; *seed ^= (convert.d);
131
127
  convert.f = loadavg[2]; *seed ^= (convert.d >> 16);
132
- # else
133
- GIT_UNUSED(loadavg[0]);
134
128
  # endif
135
129
 
136
130
  *seed ^= git_time_monotonic();
@@ -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),
@@ -16,7 +16,7 @@ static git_atomic32 init_count;
16
16
  static int init_common(git_runtime_init_fn init_fns[], size_t cnt)
17
17
  {
18
18
  size_t i;
19
- int ret;
19
+ int ret = 0;
20
20
 
21
21
  /* Initialize subsystems that have global state */
22
22
  for (i = 0; i < cnt; i++) {
@@ -110,7 +110,7 @@ GIT_INLINE(int) init_unlock(void)
110
110
 
111
111
  int git_runtime_init(git_runtime_init_fn init_fns[], size_t cnt)
112
112
  {
113
- int ret;
113
+ int ret = 0;
114
114
 
115
115
  if (init_lock() < 0)
116
116
  return -1;
@@ -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
  *
@@ -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;
@@ -1065,10 +1065,13 @@ int git_str_puts_escaped(
1065
1065
  git_str *buf,
1066
1066
  const char *string,
1067
1067
  const char *esc_chars,
1068
- const char *esc_with)
1068
+ const char *esc_prefix,
1069
+ const char *esc_suffix)
1069
1070
  {
1070
1071
  const char *scan;
1071
- size_t total = 0, esc_len = strlen(esc_with), count, alloclen;
1072
+ size_t total = 0, count, alloclen;
1073
+ size_t esc_prefix_len = esc_prefix ? strlen(esc_prefix) : 0;
1074
+ size_t esc_suffix_len = esc_suffix ? strlen(esc_suffix) : 0;
1072
1075
 
1073
1076
  if (!string)
1074
1077
  return 0;
@@ -1080,7 +1083,7 @@ int git_str_puts_escaped(
1080
1083
  scan += count;
1081
1084
  /* count run of escaped characters */
1082
1085
  count = strspn(scan, esc_chars);
1083
- total += count * (esc_len + 1);
1086
+ total += count * (esc_prefix_len + esc_suffix_len + 1);
1084
1087
  scan += count;
1085
1088
  }
1086
1089
 
@@ -1096,13 +1099,22 @@ int git_str_puts_escaped(
1096
1099
  buf->size += count;
1097
1100
 
1098
1101
  for (count = strspn(scan, esc_chars); count > 0; --count) {
1099
- /* copy escape sequence */
1100
- memmove(buf->ptr + buf->size, esc_with, esc_len);
1101
- buf->size += esc_len;
1102
+ /* copy escape prefix sequence */
1103
+ if (esc_prefix) {
1104
+ memmove(buf->ptr + buf->size, esc_prefix, esc_prefix_len);
1105
+ buf->size += esc_prefix_len;
1106
+ }
1107
+
1102
1108
  /* copy character to be escaped */
1103
1109
  buf->ptr[buf->size] = *scan;
1104
1110
  buf->size++;
1105
1111
  scan++;
1112
+
1113
+ /* copy escape suffix sequence */
1114
+ if (esc_suffix) {
1115
+ memmove(buf->ptr + buf->size, esc_suffix, esc_suffix_len);
1116
+ buf->size += esc_suffix_len;
1117
+ }
1106
1118
  }
1107
1119
  }
1108
1120
 
@@ -268,21 +268,23 @@ int git_str_splice(
268
268
  * @param str String buffer to append data to
269
269
  * @param string String to escape and append
270
270
  * @param esc_chars Characters to be escaped
271
- * @param esc_with String to insert in from of each found character
271
+ * @param esc_prefix String to insert as prefix of each found character
272
+ * @param esc_suffix String to insert as suffix of each found character
272
273
  * @return 0 on success, <0 on failure (probably allocation problem)
273
274
  */
274
275
  extern int git_str_puts_escaped(
275
276
  git_str *str,
276
277
  const char *string,
277
278
  const char *esc_chars,
278
- const char *esc_with);
279
+ const char *esc_prefix,
280
+ const char *esc_suffix);
279
281
 
280
282
  /**
281
283
  * Append string escaping characters that are regex special
282
284
  */
283
285
  GIT_INLINE(int) git_str_puts_escape_regex(git_str *str, const char *string)
284
286
  {
285
- return git_str_puts_escaped(str, string, "^.[]$()|*+?{}\\", "\\");
287
+ return git_str_puts_escaped(str, string, "^.[]$()|*+?{}\\", "\\", NULL);
286
288
  }
287
289
 
288
290
  /**
@@ -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
+ }
@@ -0,0 +1,36 @@
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_runtime_h__
9
+ #define INCLUDE_runtime_h__
10
+
11
+ #include "git2_util.h"
12
+
13
+ extern int git_strlist_copy(char ***out, const char **in, size_t len);
14
+
15
+ extern int git_strlist_copy_with_null(
16
+ char ***out,
17
+ const char **in,
18
+ size_t len);
19
+
20
+ extern bool git_strlist_contains_prefix(
21
+ const char **strings,
22
+ size_t len,
23
+ const char *str,
24
+ size_t n);
25
+
26
+ extern bool git_strlist_contains_key(
27
+ const char **strings,
28
+ size_t len,
29
+ const char *key,
30
+ char delimiter);
31
+
32
+ extern void git_strlist_free(char **strings, size_t len);
33
+
34
+ extern void git_strlist_free_with_null(char **strings);
35
+
36
+ #endif
@@ -54,8 +54,6 @@ GIT_INLINE(int) p_fsync(int fd)
54
54
  #define p_send(s,b,l,f) send(s,b,l,f)
55
55
  #define p_inet_pton(a, b, c) inet_pton(a, b, c)
56
56
 
57
- #define p_strcasecmp(s1, s2) strcasecmp(s1, s2)
58
- #define p_strncasecmp(s1, s2, c) strncasecmp(s1, s2, c)
59
57
  #define p_vsnprintf(b, c, f, a) vsnprintf(b, c, f, a)
60
58
  #define p_snprintf snprintf
61
59
  #define p_chdir(p) chdir(p)