rugged 1.3.2 → 1.6.2

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 (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -9,7 +9,6 @@
9
9
 
10
10
  #include "repository.h"
11
11
  #include "commit.h"
12
- #include "message.h"
13
12
  #include "tree.h"
14
13
  #include "reflog.h"
15
14
  #include "blob.h"
@@ -26,6 +25,7 @@
26
25
  #include "merge.h"
27
26
  #include "diff.h"
28
27
  #include "diff_generate.h"
28
+ #include "strarray.h"
29
29
 
30
30
  static int create_error(int error, const char *msg)
31
31
  {
@@ -43,20 +43,20 @@ static int retrieve_head(git_reference **out, git_repository *repo)
43
43
  return error;
44
44
  }
45
45
 
46
- static int append_abbreviated_oid(git_buf *out, const git_oid *b_commit)
46
+ static int append_abbreviated_oid(git_str *out, const git_oid *b_commit)
47
47
  {
48
48
  char *formatted_oid;
49
49
 
50
50
  formatted_oid = git_oid_allocfmt(b_commit);
51
51
  GIT_ERROR_CHECK_ALLOC(formatted_oid);
52
52
 
53
- git_buf_put(out, formatted_oid, 7);
53
+ git_str_put(out, formatted_oid, 7);
54
54
  git__free(formatted_oid);
55
55
 
56
- return git_buf_oom(out) ? -1 : 0;
56
+ return git_str_oom(out) ? -1 : 0;
57
57
  }
58
58
 
59
- static int append_commit_description(git_buf *out, git_commit *commit)
59
+ static int append_commit_description(git_str *out, git_commit *commit)
60
60
  {
61
61
  const char *summary = git_commit_summary(commit);
62
62
  GIT_ERROR_CHECK_ALLOC(summary);
@@ -64,16 +64,16 @@ static int append_commit_description(git_buf *out, git_commit *commit)
64
64
  if (append_abbreviated_oid(out, git_commit_id(commit)) < 0)
65
65
  return -1;
66
66
 
67
- git_buf_putc(out, ' ');
68
- git_buf_puts(out, summary);
69
- git_buf_putc(out, '\n');
67
+ git_str_putc(out, ' ');
68
+ git_str_puts(out, summary);
69
+ git_str_putc(out, '\n');
70
70
 
71
- return git_buf_oom(out) ? -1 : 0;
71
+ return git_str_oom(out) ? -1 : 0;
72
72
  }
73
73
 
74
74
  static int retrieve_base_commit_and_message(
75
75
  git_commit **b_commit,
76
- git_buf *stash_message,
76
+ git_str *stash_message,
77
77
  git_repository *repo)
78
78
  {
79
79
  git_reference *head = NULL;
@@ -83,9 +83,9 @@ static int retrieve_base_commit_and_message(
83
83
  return error;
84
84
 
85
85
  if (strcmp("HEAD", git_reference_name(head)) == 0)
86
- error = git_buf_puts(stash_message, "(no branch): ");
86
+ error = git_str_puts(stash_message, "(no branch): ");
87
87
  else
88
- error = git_buf_printf(
88
+ error = git_str_printf(
89
89
  stash_message,
90
90
  "%s: ",
91
91
  git_reference_name(head) + strlen(GIT_REFS_HEADS_DIR));
@@ -128,13 +128,13 @@ static int commit_index(
128
128
  {
129
129
  git_tree *i_tree = NULL;
130
130
  git_oid i_commit_oid;
131
- git_buf msg = GIT_BUF_INIT;
131
+ git_str msg = GIT_STR_INIT;
132
132
  int error;
133
133
 
134
134
  if ((error = build_tree_from_index(&i_tree, repo, index)) < 0)
135
135
  goto cleanup;
136
136
 
137
- if ((error = git_buf_printf(&msg, "index on %s\n", message)) < 0)
137
+ if ((error = git_str_printf(&msg, "index on %s\n", message)) < 0)
138
138
  goto cleanup;
139
139
 
140
140
  if ((error = git_commit_create(
@@ -144,7 +144,7 @@ static int commit_index(
144
144
  stasher,
145
145
  stasher,
146
146
  NULL,
147
- git_buf_cstr(&msg),
147
+ git_str_cstr(&msg),
148
148
  i_tree,
149
149
  1,
150
150
  &parent)) < 0)
@@ -154,7 +154,7 @@ static int commit_index(
154
154
 
155
155
  cleanup:
156
156
  git_tree_free(i_tree);
157
- git_buf_dispose(&msg);
157
+ git_str_dispose(&msg);
158
158
  return error;
159
159
  }
160
160
 
@@ -194,6 +194,30 @@ static int stash_to_index(
194
194
  return git_index_add(index, &entry);
195
195
  }
196
196
 
197
+ static int stash_update_index_from_paths(
198
+ git_repository *repo,
199
+ git_index *index,
200
+ const git_strarray *paths)
201
+ {
202
+ unsigned int status_flags;
203
+ size_t i;
204
+ int error = 0;
205
+
206
+ for (i = 0; i < paths->count; i++) {
207
+ git_status_file(&status_flags, repo, paths->strings[i]);
208
+
209
+ if (status_flags & (GIT_STATUS_WT_DELETED | GIT_STATUS_INDEX_DELETED)) {
210
+ if ((error = git_index_remove(index, paths->strings[i], 0)) < 0)
211
+ return error;
212
+ } else {
213
+ if ((error = stash_to_index(repo, index, paths->strings[i])) < 0)
214
+ return error;
215
+ }
216
+ }
217
+
218
+ return error;
219
+ }
220
+
197
221
  static int stash_update_index_from_diff(
198
222
  git_repository *repo,
199
223
  git_index *index,
@@ -303,13 +327,13 @@ static int commit_untracked(
303
327
  {
304
328
  git_tree *u_tree = NULL;
305
329
  git_oid u_commit_oid;
306
- git_buf msg = GIT_BUF_INIT;
330
+ git_str msg = GIT_STR_INIT;
307
331
  int error;
308
332
 
309
333
  if ((error = build_untracked_tree(&u_tree, repo, i_commit, flags)) < 0)
310
334
  goto cleanup;
311
335
 
312
- if ((error = git_buf_printf(&msg, "untracked files on %s\n", message)) < 0)
336
+ if ((error = git_str_printf(&msg, "untracked files on %s\n", message)) < 0)
313
337
  goto cleanup;
314
338
 
315
339
  if ((error = git_commit_create(
@@ -319,7 +343,7 @@ static int commit_untracked(
319
343
  stasher,
320
344
  stasher,
321
345
  NULL,
322
- git_buf_cstr(&msg),
346
+ git_str_cstr(&msg),
323
347
  u_tree,
324
348
  0,
325
349
  NULL)) < 0)
@@ -329,7 +353,7 @@ static int commit_untracked(
329
353
 
330
354
  cleanup:
331
355
  git_tree_free(u_tree);
332
- git_buf_dispose(&msg);
356
+ git_str_dispose(&msg);
333
357
  return error;
334
358
  }
335
359
 
@@ -389,24 +413,79 @@ cleanup:
389
413
  return error;
390
414
  }
391
415
 
392
- static int commit_worktree(
416
+ static int build_stash_commit_from_tree(
393
417
  git_oid *w_commit_oid,
394
418
  git_repository *repo,
395
419
  const git_signature *stasher,
396
420
  const char *message,
397
421
  git_commit *i_commit,
398
422
  git_commit *b_commit,
399
- git_commit *u_commit)
423
+ git_commit *u_commit,
424
+ const git_tree *tree)
400
425
  {
401
426
  const git_commit *parents[] = { NULL, NULL, NULL };
402
- git_index *i_index = NULL, *r_index = NULL;
403
- git_tree *w_tree = NULL;
404
- int error = 0, ignorecase;
405
427
 
406
428
  parents[0] = b_commit;
407
429
  parents[1] = i_commit;
408
430
  parents[2] = u_commit;
409
431
 
432
+ return git_commit_create(
433
+ w_commit_oid,
434
+ repo,
435
+ NULL,
436
+ stasher,
437
+ stasher,
438
+ NULL,
439
+ message,
440
+ tree,
441
+ u_commit ? 3 : 2,
442
+ parents);
443
+ }
444
+
445
+ static int build_stash_commit_from_index(
446
+ git_oid *w_commit_oid,
447
+ git_repository *repo,
448
+ const git_signature *stasher,
449
+ const char *message,
450
+ git_commit *i_commit,
451
+ git_commit *b_commit,
452
+ git_commit *u_commit,
453
+ git_index *index)
454
+ {
455
+ git_tree *tree;
456
+ int error;
457
+
458
+ if ((error = build_tree_from_index(&tree, repo, index)) < 0)
459
+ goto cleanup;
460
+
461
+ error = build_stash_commit_from_tree(
462
+ w_commit_oid,
463
+ repo,
464
+ stasher,
465
+ message,
466
+ i_commit,
467
+ b_commit,
468
+ u_commit,
469
+ tree);
470
+
471
+ cleanup:
472
+ git_tree_free(tree);
473
+ return error;
474
+ }
475
+
476
+ static int commit_worktree(
477
+ git_oid *w_commit_oid,
478
+ git_repository *repo,
479
+ const git_signature *stasher,
480
+ const char *message,
481
+ git_commit *i_commit,
482
+ git_commit *b_commit,
483
+ git_commit *u_commit)
484
+ {
485
+ git_index *i_index = NULL, *r_index = NULL;
486
+ git_tree *w_tree = NULL;
487
+ int error = 0, ignorecase;
488
+
410
489
  if ((error = git_repository_index(&r_index, repo) < 0) ||
411
490
  (error = git_index_new(&i_index)) < 0 ||
412
491
  (error = git_index__fill(i_index, &r_index->entries) < 0) ||
@@ -418,17 +497,16 @@ static int commit_worktree(
418
497
  if ((error = build_workdir_tree(&w_tree, repo, i_index, b_commit)) < 0)
419
498
  goto cleanup;
420
499
 
421
- error = git_commit_create(
500
+ error = build_stash_commit_from_tree(
422
501
  w_commit_oid,
423
502
  repo,
424
- NULL,
425
503
  stasher,
426
- stasher,
427
- NULL,
428
504
  message,
429
- w_tree,
430
- u_commit ? 3 : 2,
431
- parents);
505
+ i_commit,
506
+ b_commit,
507
+ u_commit,
508
+ w_tree
509
+ );
432
510
 
433
511
  cleanup:
434
512
  git_tree_free(w_tree);
@@ -437,33 +515,33 @@ cleanup:
437
515
  return error;
438
516
  }
439
517
 
440
- static int prepare_worktree_commit_message(git_buf *out, const char *user_message)
518
+ static int prepare_worktree_commit_message(git_str *out, const char *user_message)
441
519
  {
442
- git_buf buf = GIT_BUF_INIT;
520
+ git_str buf = GIT_STR_INIT;
443
521
  int error = 0;
444
522
 
445
523
  if (!user_message) {
446
- git_buf_printf(&buf, "WIP on %s", git_buf_cstr(out));
524
+ git_str_printf(&buf, "WIP on %s", git_str_cstr(out));
447
525
  } else {
448
526
  const char *colon;
449
527
 
450
- if ((colon = strchr(git_buf_cstr(out), ':')) == NULL)
528
+ if ((colon = strchr(git_str_cstr(out), ':')) == NULL)
451
529
  goto cleanup;
452
530
 
453
- git_buf_puts(&buf, "On ");
454
- git_buf_put(&buf, git_buf_cstr(out), colon - out->ptr);
455
- git_buf_printf(&buf, ": %s\n", user_message);
531
+ git_str_puts(&buf, "On ");
532
+ git_str_put(&buf, git_str_cstr(out), colon - out->ptr);
533
+ git_str_printf(&buf, ": %s\n", user_message);
456
534
  }
457
535
 
458
- if (git_buf_oom(&buf)) {
536
+ if (git_str_oom(&buf)) {
459
537
  error = -1;
460
538
  goto cleanup;
461
539
  }
462
540
 
463
- git_buf_swap(out, &buf);
541
+ git_str_swap(out, &buf);
464
542
 
465
543
  cleanup:
466
- git_buf_dispose(&buf);
544
+ git_str_dispose(&buf);
467
545
  return error;
468
546
  }
469
547
 
@@ -521,6 +599,54 @@ static int ensure_there_are_changes_to_stash(git_repository *repo, uint32_t flag
521
599
  return error;
522
600
  }
523
601
 
602
+ static int has_changes_cb(
603
+ const char *path,
604
+ unsigned int status,
605
+ void *payload)
606
+ {
607
+ GIT_UNUSED(path);
608
+ GIT_UNUSED(status);
609
+ GIT_UNUSED(payload);
610
+
611
+ if (status == GIT_STATUS_CURRENT)
612
+ return GIT_ENOTFOUND;
613
+
614
+ return 0;
615
+ }
616
+
617
+ static int ensure_there_are_changes_to_stash_paths(
618
+ git_repository *repo,
619
+ uint32_t flags,
620
+ const git_strarray *paths)
621
+ {
622
+ int error;
623
+ git_status_options opts = GIT_STATUS_OPTIONS_INIT;
624
+
625
+ opts.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
626
+ opts.flags = GIT_STATUS_OPT_EXCLUDE_SUBMODULES |
627
+ GIT_STATUS_OPT_INCLUDE_UNMODIFIED |
628
+ GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH;
629
+
630
+ if (flags & GIT_STASH_INCLUDE_UNTRACKED)
631
+ opts.flags |= GIT_STATUS_OPT_INCLUDE_UNTRACKED |
632
+ GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS;
633
+
634
+ if (flags & GIT_STASH_INCLUDE_IGNORED)
635
+ opts.flags |= GIT_STATUS_OPT_INCLUDE_IGNORED |
636
+ GIT_STATUS_OPT_RECURSE_IGNORED_DIRS;
637
+
638
+ git_strarray_copy(&opts.pathspec, paths);
639
+
640
+ error = git_status_foreach_ext(repo, &opts, has_changes_cb, NULL);
641
+
642
+ git_strarray_dispose(&opts.pathspec);
643
+
644
+ if (error == GIT_ENOTFOUND)
645
+ return create_error(GIT_ENOTFOUND, "one of the files does not have any changes to stash.");
646
+
647
+ return error;
648
+ }
649
+
524
650
  static int reset_index_and_workdir(git_repository *repo, git_commit *commit, uint32_t flags)
525
651
  {
526
652
  git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
@@ -541,14 +667,36 @@ int git_stash_save(
541
667
  const char *message,
542
668
  uint32_t flags)
543
669
  {
544
- git_index *index = NULL;
670
+ git_stash_save_options opts = GIT_STASH_SAVE_OPTIONS_INIT;
671
+
672
+ GIT_ASSERT_ARG(stasher);
673
+
674
+ opts.stasher = stasher;
675
+ opts.message = message;
676
+ opts.flags = flags;
677
+
678
+ return git_stash_save_with_opts(out, repo, &opts);
679
+ }
680
+
681
+ int git_stash_save_with_opts(
682
+ git_oid *out,
683
+ git_repository *repo,
684
+ const git_stash_save_options *opts)
685
+ {
686
+ git_index *index = NULL, *paths_index = NULL;
545
687
  git_commit *b_commit = NULL, *i_commit = NULL, *u_commit = NULL;
546
- git_buf msg = GIT_BUF_INIT;
688
+ git_str msg = GIT_STR_INIT;
689
+ git_tree *tree = NULL;
690
+ git_reference *head = NULL;
691
+ bool has_paths = false;
692
+
547
693
  int error;
548
694
 
549
695
  GIT_ASSERT_ARG(out);
550
696
  GIT_ASSERT_ARG(repo);
551
- GIT_ASSERT_ARG(stasher);
697
+ GIT_ASSERT_ARG(opts && opts->stasher);
698
+
699
+ has_paths = opts->paths.count > 0;
552
700
 
553
701
  if ((error = git_repository__ensure_not_bare(repo, "stash save")) < 0)
554
702
  return error;
@@ -556,44 +704,63 @@ int git_stash_save(
556
704
  if ((error = retrieve_base_commit_and_message(&b_commit, &msg, repo)) < 0)
557
705
  goto cleanup;
558
706
 
559
- if ((error = ensure_there_are_changes_to_stash(repo, flags)) < 0)
707
+ if (!has_paths &&
708
+ (error = ensure_there_are_changes_to_stash(repo, opts->flags)) < 0)
709
+ goto cleanup;
710
+ else if (has_paths &&
711
+ (error = ensure_there_are_changes_to_stash_paths(
712
+ repo, opts->flags, &opts->paths)) < 0)
560
713
  goto cleanup;
561
714
 
562
715
  if ((error = git_repository_index(&index, repo)) < 0)
563
716
  goto cleanup;
564
717
 
565
- if ((error = commit_index(&i_commit, repo, index, stasher,
566
- git_buf_cstr(&msg), b_commit)) < 0)
718
+ if ((error = commit_index(&i_commit, repo, index, opts->stasher,
719
+ git_str_cstr(&msg), b_commit)) < 0)
567
720
  goto cleanup;
568
721
 
569
- if ((flags & (GIT_STASH_INCLUDE_UNTRACKED | GIT_STASH_INCLUDE_IGNORED)) &&
570
- (error = commit_untracked(&u_commit, repo, stasher,
571
- git_buf_cstr(&msg), i_commit, flags)) < 0)
722
+ if ((opts->flags & (GIT_STASH_INCLUDE_UNTRACKED | GIT_STASH_INCLUDE_IGNORED)) &&
723
+ (error = commit_untracked(&u_commit, repo, opts->stasher,
724
+ git_str_cstr(&msg), i_commit, opts->flags)) < 0)
572
725
  goto cleanup;
573
726
 
574
- if ((error = prepare_worktree_commit_message(&msg, message)) < 0)
727
+ if ((error = prepare_worktree_commit_message(&msg, opts->message)) < 0)
575
728
  goto cleanup;
576
729
 
577
- if ((error = commit_worktree(out, repo, stasher, git_buf_cstr(&msg),
578
- i_commit, b_commit, u_commit)) < 0)
579
- goto cleanup;
730
+ if (!has_paths) {
731
+ if ((error = commit_worktree(out, repo, opts->stasher, git_str_cstr(&msg),
732
+ i_commit, b_commit, u_commit)) < 0)
733
+ goto cleanup;
734
+ } else {
735
+ if ((error = git_index_new(&paths_index)) < 0 ||
736
+ (error = retrieve_head(&head, repo)) < 0 ||
737
+ (error = git_reference_peel((git_object**)&tree, head, GIT_OBJECT_TREE)) < 0 ||
738
+ (error = git_index_read_tree(paths_index, tree)) < 0 ||
739
+ (error = stash_update_index_from_paths(repo, paths_index, &opts->paths)) < 0 ||
740
+ (error = build_stash_commit_from_index(out, repo, opts->stasher, git_str_cstr(&msg),
741
+ i_commit, b_commit, u_commit, paths_index)) < 0)
742
+ goto cleanup;
743
+ }
580
744
 
581
- git_buf_rtrim(&msg);
745
+ git_str_rtrim(&msg);
582
746
 
583
- if ((error = update_reflog(out, repo, git_buf_cstr(&msg))) < 0)
747
+ if ((error = update_reflog(out, repo, git_str_cstr(&msg))) < 0)
584
748
  goto cleanup;
585
749
 
586
- if ((error = reset_index_and_workdir(repo, (flags & GIT_STASH_KEEP_INDEX) ? i_commit : b_commit,
587
- flags)) < 0)
750
+ if (!(opts->flags & GIT_STASH_KEEP_ALL) &&
751
+ (error = reset_index_and_workdir(repo,
752
+ (opts->flags & GIT_STASH_KEEP_INDEX) ? i_commit : b_commit,opts->flags)) < 0)
588
753
  goto cleanup;
589
754
 
590
755
  cleanup:
591
-
592
- git_buf_dispose(&msg);
756
+ git_str_dispose(&msg);
593
757
  git_commit_free(i_commit);
594
758
  git_commit_free(b_commit);
595
759
  git_commit_free(u_commit);
760
+ git_tree_free(tree);
761
+ git_reference_free(head);
596
762
  git_index_free(index);
763
+ git_index_free(paths_index);
597
764
 
598
765
  return error;
599
766
  }
@@ -778,6 +945,13 @@ int git_stash_apply_options_init(git_stash_apply_options *opts, unsigned int ver
778
945
  return 0;
779
946
  }
780
947
 
948
+ int git_stash_save_options_init(git_stash_save_options *opts, unsigned int version)
949
+ {
950
+ GIT_INIT_STRUCTURE_FROM_TEMPLATE(
951
+ opts, version, git_stash_save_options, GIT_STASH_SAVE_OPTIONS_INIT);
952
+ return 0;
953
+ }
954
+
781
955
  #ifndef GIT_DEPRECATE_HARD
782
956
  int git_stash_apply_init_options(git_stash_apply_options *opts, unsigned int version)
783
957
  {
@@ -84,7 +84,7 @@ static unsigned int workdir_delta2status(
84
84
 
85
85
  if (!git_oid_equal(&idx2wd->old_file.id, &idx2wd->new_file.id)) {
86
86
  /* if OIDs don't match, we might need to calculate them now to
87
- * discern between RENAMED vs RENAMED+MODIFED
87
+ * discern between RENAMED vs RENAMED+MODIFIED
88
88
  */
89
89
  if (git_oid_is_zero(&idx2wd->old_file.id) &&
90
90
  diff->old_src == GIT_ITERATOR_WORKDIR &&
@@ -336,6 +336,9 @@ int git_status_list_new(
336
336
  GIT_DIFF_FIND_RENAMES_FROM_REWRITES |
337
337
  GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY;
338
338
 
339
+ if (opts != NULL && opts->rename_threshold != 0)
340
+ findopt.rename_threshold = opts->rename_threshold;
341
+
339
342
  if (show != GIT_STATUS_SHOW_WORKDIR_ONLY) {
340
343
  if ((error = git_diff_tree_to_index(
341
344
  &status->head2idx, repo, head, index, &diffopt)) < 0)
@@ -8,6 +8,7 @@
8
8
  #include "util.h"
9
9
 
10
10
  #include "common.h"
11
+ #include "strarray.h"
11
12
 
12
13
  int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
13
14
  {
@@ -0,0 +1,25 @@
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_strarray_h__
8
+ #define INCLUDE_strarray_h__
9
+
10
+ #include "common.h"
11
+ #include "git2/strarray.h"
12
+
13
+ /**
14
+ * Copy a string array object from source to target.
15
+ *
16
+ * Note: target is overwritten and hence should be empty, otherwise its
17
+ * contents are leaked. Call git_strarray_free() if necessary.
18
+ *
19
+ * @param tgt target
20
+ * @param src source
21
+ * @return 0 on success, < 0 on allocation failure
22
+ */
23
+ extern int git_strarray_copy(git_strarray *tgt, const git_strarray *src);
24
+
25
+ #endif
@@ -23,12 +23,14 @@
23
23
  #endif
24
24
 
25
25
  /* Work around C90-conformance issues */
26
- #if defined(_MSC_VER)
27
- # define inline __inline
28
- #elif defined(__GNUC__)
29
- # define inline __inline__
30
- #else
31
- # define inline
26
+ #if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
27
+ # if defined(_MSC_VER)
28
+ # define inline __inline
29
+ # elif defined(__GNUC__)
30
+ # define inline __inline__
31
+ # else
32
+ # define inline
33
+ # endif
32
34
  #endif
33
35
 
34
36
  #include <mbedtls/config.h>
@@ -198,7 +198,7 @@ static int openssl_ensure_initialized(void)
198
198
  if ((error = git_openssl_stream_dynamic_init()) == 0)
199
199
  error = openssl_init();
200
200
 
201
- openssl_initialized = true;
201
+ openssl_initialized = !error;
202
202
  }
203
203
 
204
204
  error |= git_mutex_unlock(&openssl_mutex);
@@ -91,7 +91,7 @@ int (*sk_num)(const void *sk);
91
91
  void *(*sk_value)(const void *sk, int i);
92
92
  void (*sk_free)(void *sk);
93
93
 
94
- void *openssl_handle;
94
+ static void *openssl_handle;
95
95
 
96
96
  GIT_INLINE(void *) openssl_sym(int *err, const char *name, bool required)
97
97
  {
@@ -125,7 +125,8 @@ int git_openssl_stream_dynamic_init(void)
125
125
  (openssl_handle = dlopen("libssl.1.1.dylib", RTLD_NOW)) == NULL &&
126
126
  (openssl_handle = dlopen("libssl.so.1.0.0", RTLD_NOW)) == NULL &&
127
127
  (openssl_handle = dlopen("libssl.1.0.0.dylib", RTLD_NOW)) == NULL &&
128
- (openssl_handle = dlopen("libssl.so.10", RTLD_NOW)) == NULL) {
128
+ (openssl_handle = dlopen("libssl.so.10", RTLD_NOW)) == NULL &&
129
+ (openssl_handle = dlopen("libssl.so.3", RTLD_NOW)) == NULL) {
129
130
  git_error_set(GIT_ERROR_SSL, "could not load ssl libraries");
130
131
  return -1;
131
132
  }
@@ -175,7 +176,6 @@ int git_openssl_stream_dynamic_init(void)
175
176
 
176
177
  SSL_connect = (int (*)(SSL *))openssl_sym(&err, "SSL_connect", true);
177
178
  SSL_ctrl = (long (*)(SSL *, int, long, void *))openssl_sym(&err, "SSL_ctrl", true);
178
- SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get_peer_certificate", true);
179
179
  SSL_library_init = (int (*)(void))openssl_sym(&err, "SSL_library_init", false);
180
180
  SSL_free = (void (*)(SSL *))openssl_sym(&err, "SSL_free", true);
181
181
  SSL_get_error = (int (*)(SSL *, int))openssl_sym(&err, "SSL_get_error", true);
@@ -187,6 +187,10 @@ int git_openssl_stream_dynamic_init(void)
187
187
  SSL_shutdown = (int (*)(SSL *ssl))openssl_sym(&err, "SSL_shutdown", true);
188
188
  SSL_write = (int (*)(SSL *, const void *, int))openssl_sym(&err, "SSL_write", true);
189
189
 
190
+ if (!(SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get_peer_certificate", false))) {
191
+ SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get1_peer_certificate", true);
192
+ }
193
+
190
194
  SSL_CTX_ctrl = (long (*)(SSL_CTX *, int, long, void *))openssl_sym(&err, "SSL_CTX_ctrl", true);
191
195
  SSL_CTX_free = (void (*)(SSL_CTX *))openssl_sym(&err, "SSL_CTX_free", true);
192
196
  SSL_CTX_new = (SSL_CTX *(*)(const SSL_METHOD *))openssl_sym(&err, "SSL_CTX_new", true);
@@ -13,7 +13,7 @@
13
13
  * The implementation was written so as to conform with Netscapes SSL.
14
14
  *
15
15
  * This library is free for commercial and non-commercial use as long as
16
- * the following conditions are aheared to. The following conditions
16
+ * the following conditions are adhered to. The following conditions
17
17
  * apply to all code found in this distribution, be it the RC4, RSA,
18
18
  * lhash, DES, etc., code; not just the SSL code. The SSL documentation
19
19
  * included with this distribution is covered by the same copyright terms
@@ -38,7 +38,7 @@
38
38
  * must display the following acknowledgement:
39
39
  * "This product includes cryptographic software written by
40
40
  * Eric Young (eay@cryptsoft.com)"
41
- * The word 'cryptographic' can be left out if the rouines from the library
41
+ * The word 'cryptographic' can be left out if the routines from the library
42
42
  * being used are not cryptographic related :-).
43
43
  * 4. If you include any Windows specific code (or a derivative thereof) from
44
44
  * the apps directory (application code) you must include an acknowledgement:
@@ -56,7 +56,7 @@
56
56
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
57
57
  * SUCH DAMAGE.
58
58
  *
59
- * The licence and distribution terms for any publically available version or
59
+ * The licence and distribution terms for any publicly available version or
60
60
  * derivative of this code cannot be changed. i.e. this code cannot simply be
61
61
  * copied and put under another distribution licence
62
62
  * [including the GNU Public Licence.]
@@ -135,9 +135,12 @@ static ssize_t socket_write(git_stream *stream, const char *data, size_t len, in
135
135
  git_socket_stream *st = (git_socket_stream *) stream;
136
136
  ssize_t written;
137
137
 
138
+ GIT_ASSERT(flags == 0);
139
+ GIT_UNUSED(flags);
140
+
138
141
  errno = 0;
139
142
 
140
- if ((written = p_send(st->s, data, len, flags)) < 0) {
143
+ if ((written = p_send(st->s, data, len, 0)) < 0) {
141
144
  net_set_error("error sending data");
142
145
  return -1;
143
146
  }