rugged 0.27.9 → 0.27.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +98 -54
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  8. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  9. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  10. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  11. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  12. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  13. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  14. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  15. data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +93 -0
  16. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  17. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  18. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  19. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  20. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +2 -0
  21. data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2.h +5 -0
  82. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  83. data/vendor/libgit2/include/git2/apply.h +149 -0
  84. data/vendor/libgit2/include/git2/attr.h +38 -20
  85. data/vendor/libgit2/include/git2/blame.h +42 -25
  86. data/vendor/libgit2/include/git2/blob.h +45 -13
  87. data/vendor/libgit2/include/git2/branch.h +1 -1
  88. data/vendor/libgit2/include/git2/buffer.h +22 -16
  89. data/vendor/libgit2/include/git2/cert.h +135 -0
  90. data/vendor/libgit2/include/git2/checkout.h +65 -32
  91. data/vendor/libgit2/include/git2/cherrypick.h +9 -7
  92. data/vendor/libgit2/include/git2/clone.h +12 -10
  93. data/vendor/libgit2/include/git2/commit.h +53 -3
  94. data/vendor/libgit2/include/git2/common.h +60 -8
  95. data/vendor/libgit2/include/git2/config.h +30 -19
  96. data/vendor/libgit2/include/git2/cred.h +308 -0
  97. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  98. data/vendor/libgit2/include/git2/describe.h +32 -9
  99. data/vendor/libgit2/include/git2/diff.h +208 -156
  100. data/vendor/libgit2/include/git2/errors.h +54 -46
  101. data/vendor/libgit2/include/git2/filter.h +8 -0
  102. data/vendor/libgit2/include/git2/ignore.h +2 -2
  103. data/vendor/libgit2/include/git2/index.h +74 -52
  104. data/vendor/libgit2/include/git2/indexer.h +76 -6
  105. data/vendor/libgit2/include/git2/mailmap.h +115 -0
  106. data/vendor/libgit2/include/git2/merge.h +35 -18
  107. data/vendor/libgit2/include/git2/net.h +0 -5
  108. data/vendor/libgit2/include/git2/notes.h +1 -1
  109. data/vendor/libgit2/include/git2/object.h +17 -29
  110. data/vendor/libgit2/include/git2/odb.h +12 -11
  111. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  112. data/vendor/libgit2/include/git2/oid.h +2 -2
  113. data/vendor/libgit2/include/git2/pack.h +14 -3
  114. data/vendor/libgit2/include/git2/proxy.h +14 -8
  115. data/vendor/libgit2/include/git2/rebase.h +53 -6
  116. data/vendor/libgit2/include/git2/refs.h +33 -15
  117. data/vendor/libgit2/include/git2/refspec.h +17 -0
  118. data/vendor/libgit2/include/git2/remote.h +123 -24
  119. data/vendor/libgit2/include/git2/repository.h +76 -39
  120. data/vendor/libgit2/include/git2/revert.h +6 -4
  121. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  122. data/vendor/libgit2/include/git2/signature.h +2 -2
  123. data/vendor/libgit2/include/git2/stash.h +15 -12
  124. data/vendor/libgit2/include/git2/status.h +33 -20
  125. data/vendor/libgit2/include/git2/submodule.h +30 -12
  126. data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
  127. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  128. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  129. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  130. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  131. data/vendor/libgit2/include/git2/sys/index.h +3 -0
  132. data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
  133. data/vendor/libgit2/include/git2/sys/merge.h +9 -4
  134. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  135. data/vendor/libgit2/include/git2/sys/path.h +64 -0
  136. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  137. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  138. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  139. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  140. data/vendor/libgit2/include/git2/tag.h +13 -4
  141. data/vendor/libgit2/include/git2/trace.h +2 -2
  142. data/vendor/libgit2/include/git2/transaction.h +1 -0
  143. data/vendor/libgit2/include/git2/transport.h +11 -311
  144. data/vendor/libgit2/include/git2/tree.h +4 -4
  145. data/vendor/libgit2/include/git2/types.h +33 -111
  146. data/vendor/libgit2/include/git2/version.h +4 -4
  147. data/vendor/libgit2/include/git2/worktree.h +48 -13
  148. data/vendor/libgit2/src/CMakeLists.txt +96 -164
  149. data/vendor/libgit2/src/alloc.c +43 -0
  150. data/vendor/libgit2/src/alloc.h +40 -0
  151. data/vendor/libgit2/src/allocators/stdalloc.c +119 -0
  152. data/vendor/libgit2/src/{streams/curl.h → allocators/stdalloc.h} +5 -5
  153. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  154. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  155. data/vendor/libgit2/src/annotated_commit.c +15 -8
  156. data/vendor/libgit2/src/apply.c +537 -31
  157. data/vendor/libgit2/src/apply.h +3 -1
  158. data/vendor/libgit2/src/array.h +2 -2
  159. data/vendor/libgit2/src/attr.c +81 -75
  160. data/vendor/libgit2/src/attr_file.c +207 -121
  161. data/vendor/libgit2/src/attr_file.h +9 -9
  162. data/vendor/libgit2/src/attrcache.c +51 -53
  163. data/vendor/libgit2/src/attrcache.h +2 -1
  164. data/vendor/libgit2/src/blame.c +47 -20
  165. data/vendor/libgit2/src/blame.h +2 -1
  166. data/vendor/libgit2/src/blame_git.c +37 -20
  167. data/vendor/libgit2/src/blob.c +128 -42
  168. data/vendor/libgit2/src/blob.h +19 -2
  169. data/vendor/libgit2/src/branch.c +67 -43
  170. data/vendor/libgit2/src/buf_text.c +7 -6
  171. data/vendor/libgit2/src/buffer.c +69 -57
  172. data/vendor/libgit2/src/buffer.h +1 -1
  173. data/vendor/libgit2/src/cache.c +38 -45
  174. data/vendor/libgit2/src/cache.h +3 -3
  175. data/vendor/libgit2/src/cc-compat.h +20 -3
  176. data/vendor/libgit2/src/checkout.c +109 -90
  177. data/vendor/libgit2/src/cherrypick.c +15 -9
  178. data/vendor/libgit2/src/clone.c +49 -27
  179. data/vendor/libgit2/src/clone.h +4 -0
  180. data/vendor/libgit2/src/commit.c +117 -49
  181. data/vendor/libgit2/src/commit.h +7 -0
  182. data/vendor/libgit2/src/commit_list.c +30 -78
  183. data/vendor/libgit2/src/commit_list.h +2 -2
  184. data/vendor/libgit2/src/common.h +27 -91
  185. data/vendor/libgit2/src/config.c +194 -176
  186. data/vendor/libgit2/src/config.h +8 -20
  187. data/vendor/libgit2/src/config_backend.h +96 -0
  188. data/vendor/libgit2/src/config_cache.c +41 -35
  189. data/vendor/libgit2/src/config_entries.c +229 -0
  190. data/vendor/libgit2/src/config_entries.h +24 -0
  191. data/vendor/libgit2/src/config_file.c +439 -753
  192. data/vendor/libgit2/src/config_mem.c +220 -0
  193. data/vendor/libgit2/src/config_parse.c +114 -63
  194. data/vendor/libgit2/src/config_parse.h +17 -16
  195. data/vendor/libgit2/src/config_snapshot.c +206 -0
  196. data/vendor/libgit2/src/crlf.c +219 -190
  197. data/vendor/libgit2/src/delta.c +25 -18
  198. data/vendor/libgit2/src/describe.c +42 -41
  199. data/vendor/libgit2/src/diff.c +53 -68
  200. data/vendor/libgit2/src/diff.h +2 -1
  201. data/vendor/libgit2/src/diff_driver.c +47 -49
  202. data/vendor/libgit2/src/diff_file.c +19 -17
  203. data/vendor/libgit2/src/diff_file.h +1 -1
  204. data/vendor/libgit2/src/diff_generate.c +162 -106
  205. data/vendor/libgit2/src/diff_generate.h +3 -3
  206. data/vendor/libgit2/src/diff_parse.c +4 -4
  207. data/vendor/libgit2/src/diff_print.c +42 -30
  208. data/vendor/libgit2/src/diff_stats.c +22 -7
  209. data/vendor/libgit2/src/diff_tform.c +16 -16
  210. data/vendor/libgit2/src/diff_xdiff.c +15 -3
  211. data/vendor/libgit2/src/errors.c +51 -39
  212. data/vendor/libgit2/src/errors.h +81 -0
  213. data/vendor/libgit2/src/features.h.in +11 -3
  214. data/vendor/libgit2/src/fetch.c +10 -5
  215. data/vendor/libgit2/src/fetchhead.c +17 -17
  216. data/vendor/libgit2/src/filebuf.c +32 -36
  217. data/vendor/libgit2/src/filebuf.h +2 -2
  218. data/vendor/libgit2/src/filter.c +46 -38
  219. data/vendor/libgit2/src/filter.h +0 -10
  220. data/vendor/libgit2/src/{fileops.c → futils.c} +80 -73
  221. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  222. data/vendor/libgit2/src/global.c +48 -63
  223. data/vendor/libgit2/src/global.h +0 -2
  224. data/vendor/libgit2/src/hash.c +61 -0
  225. data/vendor/libgit2/src/hash.h +20 -19
  226. data/vendor/libgit2/src/hash/sha1.h +38 -0
  227. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  228. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  229. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  230. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  231. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  232. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  233. data/vendor/libgit2/src/hash/sha1/mbedtls.c +46 -0
  234. data/vendor/libgit2/src/hash/sha1/mbedtls.h +19 -0
  235. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  236. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  237. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  238. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  239. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  240. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  241. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  242. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  243. data/vendor/libgit2/src/hashsig.c +5 -5
  244. data/vendor/libgit2/src/idxmap.c +107 -61
  245. data/vendor/libgit2/src/idxmap.h +153 -31
  246. data/vendor/libgit2/src/ignore.c +43 -47
  247. data/vendor/libgit2/src/index.c +337 -232
  248. data/vendor/libgit2/src/index.h +17 -1
  249. data/vendor/libgit2/src/indexer.c +346 -175
  250. data/vendor/libgit2/src/integer.h +71 -26
  251. data/vendor/libgit2/src/iterator.c +142 -70
  252. data/vendor/libgit2/src/iterator.h +15 -0
  253. data/vendor/libgit2/src/khash.h +3 -1
  254. data/vendor/libgit2/src/mailmap.c +485 -0
  255. data/vendor/libgit2/src/mailmap.h +35 -0
  256. data/vendor/libgit2/src/map.h +1 -1
  257. data/vendor/libgit2/src/merge.c +144 -100
  258. data/vendor/libgit2/src/merge_driver.c +11 -11
  259. data/vendor/libgit2/src/merge_file.c +2 -2
  260. data/vendor/libgit2/src/mwindow.c +24 -29
  261. data/vendor/libgit2/src/mwindow.h +4 -4
  262. data/vendor/libgit2/src/net.c +184 -0
  263. data/vendor/libgit2/src/net.h +36 -0
  264. data/vendor/libgit2/src/netops.c +55 -156
  265. data/vendor/libgit2/src/netops.h +3 -23
  266. data/vendor/libgit2/src/notes.c +16 -11
  267. data/vendor/libgit2/src/object.c +120 -69
  268. data/vendor/libgit2/src/object.h +22 -9
  269. data/vendor/libgit2/src/object_api.c +8 -8
  270. data/vendor/libgit2/src/odb.c +116 -93
  271. data/vendor/libgit2/src/odb.h +8 -7
  272. data/vendor/libgit2/src/odb_loose.c +62 -55
  273. data/vendor/libgit2/src/odb_mempack.c +21 -34
  274. data/vendor/libgit2/src/odb_pack.c +18 -14
  275. data/vendor/libgit2/src/offmap.c +53 -35
  276. data/vendor/libgit2/src/offmap.h +108 -21
  277. data/vendor/libgit2/src/oid.c +12 -7
  278. data/vendor/libgit2/src/oidmap.c +49 -47
  279. data/vendor/libgit2/src/oidmap.h +101 -24
  280. data/vendor/libgit2/src/pack-objects.c +88 -87
  281. data/vendor/libgit2/src/pack-objects.h +2 -8
  282. data/vendor/libgit2/src/pack.c +99 -101
  283. data/vendor/libgit2/src/pack.h +17 -19
  284. data/vendor/libgit2/src/parse.c +10 -0
  285. data/vendor/libgit2/src/parse.h +3 -3
  286. data/vendor/libgit2/src/patch.c +4 -4
  287. data/vendor/libgit2/src/patch_generate.c +20 -20
  288. data/vendor/libgit2/src/patch_parse.c +151 -63
  289. data/vendor/libgit2/src/path.c +169 -125
  290. data/vendor/libgit2/src/path.h +3 -71
  291. data/vendor/libgit2/src/pathspec.c +19 -19
  292. data/vendor/libgit2/src/pool.c +26 -22
  293. data/vendor/libgit2/src/pool.h +7 -7
  294. data/vendor/libgit2/src/posix.c +10 -10
  295. data/vendor/libgit2/src/posix.h +12 -1
  296. data/vendor/libgit2/src/proxy.c +8 -3
  297. data/vendor/libgit2/src/push.c +37 -31
  298. data/vendor/libgit2/src/push.h +2 -1
  299. data/vendor/libgit2/src/reader.c +265 -0
  300. data/vendor/libgit2/src/reader.h +107 -0
  301. data/vendor/libgit2/src/rebase.c +115 -59
  302. data/vendor/libgit2/src/refdb.c +15 -3
  303. data/vendor/libgit2/src/refdb_fs.c +381 -254
  304. data/vendor/libgit2/src/reflog.c +13 -15
  305. data/vendor/libgit2/src/refs.c +118 -88
  306. data/vendor/libgit2/src/refs.h +5 -3
  307. data/vendor/libgit2/src/refspec.c +56 -37
  308. data/vendor/libgit2/src/refspec.h +1 -1
  309. data/vendor/libgit2/src/regexp.c +221 -0
  310. data/vendor/libgit2/src/regexp.h +97 -0
  311. data/vendor/libgit2/src/remote.c +266 -215
  312. data/vendor/libgit2/src/remote.h +11 -2
  313. data/vendor/libgit2/src/repository.c +280 -225
  314. data/vendor/libgit2/src/repository.h +52 -40
  315. data/vendor/libgit2/src/reset.c +8 -8
  316. data/vendor/libgit2/src/revert.c +14 -9
  317. data/vendor/libgit2/src/revparse.c +47 -48
  318. data/vendor/libgit2/src/revwalk.c +120 -57
  319. data/vendor/libgit2/src/revwalk.h +22 -1
  320. data/vendor/libgit2/src/settings.c +47 -10
  321. data/vendor/libgit2/src/signature.c +11 -11
  322. data/vendor/libgit2/src/sortedcache.c +22 -36
  323. data/vendor/libgit2/src/sortedcache.h +1 -1
  324. data/vendor/libgit2/src/stash.c +125 -99
  325. data/vendor/libgit2/src/status.c +28 -22
  326. data/vendor/libgit2/src/stream.h +17 -2
  327. data/vendor/libgit2/src/streams/mbedtls.c +483 -0
  328. data/vendor/libgit2/src/streams/mbedtls.h +23 -0
  329. data/vendor/libgit2/src/streams/openssl.c +224 -114
  330. data/vendor/libgit2/src/streams/openssl.h +4 -108
  331. data/vendor/libgit2/src/streams/registry.c +118 -0
  332. data/vendor/libgit2/src/streams/registry.h +19 -0
  333. data/vendor/libgit2/src/streams/socket.c +55 -30
  334. data/vendor/libgit2/src/streams/stransport.c +57 -32
  335. data/vendor/libgit2/src/streams/stransport.h +5 -0
  336. data/vendor/libgit2/src/streams/tls.c +50 -19
  337. data/vendor/libgit2/src/streams/tls.h +12 -4
  338. data/vendor/libgit2/src/strmap.c +47 -74
  339. data/vendor/libgit2/src/strmap.h +108 -33
  340. data/vendor/libgit2/src/submodule.c +272 -216
  341. data/vendor/libgit2/src/submodule.h +1 -1
  342. data/vendor/libgit2/src/sysdir.c +29 -19
  343. data/vendor/libgit2/src/tag.c +41 -28
  344. data/vendor/libgit2/src/tag.h +2 -1
  345. data/vendor/libgit2/src/trace.c +2 -2
  346. data/vendor/libgit2/src/trace.h +3 -3
  347. data/vendor/libgit2/src/trailer.c +52 -38
  348. data/vendor/libgit2/src/transaction.c +30 -29
  349. data/vendor/libgit2/src/transport.c +5 -5
  350. data/vendor/libgit2/src/transports/auth.c +15 -11
  351. data/vendor/libgit2/src/transports/auth.h +10 -3
  352. data/vendor/libgit2/src/transports/auth_negotiate.c +33 -18
  353. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  354. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  355. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  356. data/vendor/libgit2/src/transports/cred.c +24 -24
  357. data/vendor/libgit2/src/transports/git.c +26 -31
  358. data/vendor/libgit2/src/transports/http.c +881 -348
  359. data/vendor/libgit2/src/transports/http.h +2 -0
  360. data/vendor/libgit2/src/transports/local.c +35 -35
  361. data/vendor/libgit2/src/transports/smart.c +70 -47
  362. data/vendor/libgit2/src/transports/smart.h +3 -4
  363. data/vendor/libgit2/src/transports/smart_pkt.c +43 -40
  364. data/vendor/libgit2/src/transports/smart_protocol.c +96 -116
  365. data/vendor/libgit2/src/transports/ssh.c +77 -66
  366. data/vendor/libgit2/src/transports/winhttp.c +318 -314
  367. data/vendor/libgit2/src/tree-cache.c +19 -12
  368. data/vendor/libgit2/src/tree.c +103 -142
  369. data/vendor/libgit2/src/tree.h +1 -12
  370. data/vendor/libgit2/src/unix/map.c +3 -3
  371. data/vendor/libgit2/src/unix/posix.h +1 -11
  372. data/vendor/libgit2/src/userdiff.h +3 -1
  373. data/vendor/libgit2/src/util.c +70 -56
  374. data/vendor/libgit2/src/util.h +28 -156
  375. data/vendor/libgit2/src/vector.c +4 -4
  376. data/vendor/libgit2/src/wildmatch.c +320 -0
  377. data/vendor/libgit2/src/wildmatch.h +23 -0
  378. data/vendor/libgit2/src/win32/dir.c +3 -3
  379. data/vendor/libgit2/src/win32/findfile.c +3 -3
  380. data/vendor/libgit2/src/win32/map.c +9 -11
  381. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  382. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  383. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  384. data/vendor/libgit2/src/win32/posix.h +1 -4
  385. data/vendor/libgit2/src/win32/posix_w32.c +70 -45
  386. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  387. data/vendor/libgit2/src/win32/thread.c +5 -10
  388. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  389. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  390. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +3 -2
  391. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +26 -75
  392. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  393. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  394. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  395. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  396. data/vendor/libgit2/src/worktree.c +95 -60
  397. data/vendor/libgit2/src/worktree.h +2 -0
  398. data/vendor/libgit2/src/xdiff/xdiffi.c +7 -5
  399. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  400. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  401. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  402. data/vendor/libgit2/src/zstream.c +4 -4
  403. metadata +122 -33
  404. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  405. data/vendor/libgit2/deps/regex/config.h +0 -7
  406. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  407. data/vendor/libgit2/deps/regex/regex.c +0 -92
  408. data/vendor/libgit2/deps/regex/regex.h +0 -582
  409. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  410. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  411. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  412. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  413. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  414. data/vendor/libgit2/libgit2.pc.in +0 -13
  415. data/vendor/libgit2/src/config_file.h +0 -73
  416. data/vendor/libgit2/src/fnmatch.c +0 -248
  417. data/vendor/libgit2/src/fnmatch.h +0 -48
  418. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  419. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  420. data/vendor/libgit2/src/streams/curl.c +0 -385
@@ -12,11 +12,11 @@
12
12
  #include "git2.h"
13
13
  #include "auth.h"
14
14
 
15
- #ifdef GIT_GSSAPI
15
+ #if defined(GIT_GSSAPI) || defined(GIT_GSSFRAMEWORK)
16
16
 
17
17
  extern int git_http_auth_negotiate(
18
18
  git_http_auth_context **out,
19
- const gitno_connection_data *connection_data);
19
+ const git_net_url *url);
20
20
 
21
21
  #else
22
22
 
@@ -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
+ #include "git2.h"
9
+ #include "common.h"
10
+ #include "buffer.h"
11
+ #include "auth.h"
12
+ #include "auth_ntlm.h"
13
+ #include "git2/sys/cred.h"
14
+
15
+ #ifdef GIT_NTLM
16
+
17
+ #include "ntlm.h"
18
+
19
+ typedef struct {
20
+ git_http_auth_context parent;
21
+ ntlm_client *ntlm;
22
+ char *challenge;
23
+ bool complete;
24
+ } http_auth_ntlm_context;
25
+
26
+ static int ntlm_set_challenge(
27
+ git_http_auth_context *c,
28
+ const char *challenge)
29
+ {
30
+ http_auth_ntlm_context *ctx = (http_auth_ntlm_context *)c;
31
+
32
+ assert(ctx && challenge);
33
+
34
+ git__free(ctx->challenge);
35
+
36
+ ctx->challenge = git__strdup(challenge);
37
+ GIT_ERROR_CHECK_ALLOC(ctx->challenge);
38
+
39
+ return 0;
40
+ }
41
+
42
+ static int ntlm_set_credentials(http_auth_ntlm_context *ctx, git_cred *_cred)
43
+ {
44
+ git_cred_userpass_plaintext *cred;
45
+ const char *sep, *username;
46
+ char *domain = NULL, *domainuser = NULL;
47
+ int error = 0;
48
+
49
+ assert(_cred->credtype == GIT_CREDTYPE_USERPASS_PLAINTEXT);
50
+ cred = (git_cred_userpass_plaintext *)_cred;
51
+
52
+ if ((sep = strchr(cred->username, '\\')) != NULL) {
53
+ domain = strndup(cred->username, (sep - cred->username));
54
+ GIT_ERROR_CHECK_ALLOC(domain);
55
+
56
+ domainuser = strdup(sep + 1);
57
+ GIT_ERROR_CHECK_ALLOC(domainuser);
58
+
59
+ username = domainuser;
60
+ } else {
61
+ username = cred->username;
62
+ }
63
+
64
+ if (ntlm_client_set_credentials(ctx->ntlm,
65
+ username, domain, cred->password) < 0) {
66
+ git_error_set(GIT_ERROR_NET, "could not set credentials: %s",
67
+ ntlm_client_errmsg(ctx->ntlm));
68
+ error = -1;
69
+ goto done;
70
+ }
71
+
72
+ done:
73
+ git__free(domain);
74
+ git__free(domainuser);
75
+ return error;
76
+ }
77
+
78
+ static int ntlm_next_token(
79
+ git_buf *buf,
80
+ git_http_auth_context *c,
81
+ git_cred *cred)
82
+ {
83
+ http_auth_ntlm_context *ctx = (http_auth_ntlm_context *)c;
84
+ git_buf input_buf = GIT_BUF_INIT;
85
+ const unsigned char *msg;
86
+ size_t challenge_len, msg_len;
87
+ int error = -1;
88
+
89
+ assert(buf && ctx && ctx->ntlm);
90
+
91
+ challenge_len = ctx->challenge ? strlen(ctx->challenge) : 0;
92
+
93
+ if (ctx->complete)
94
+ ntlm_client_reset(ctx->ntlm);
95
+
96
+ /*
97
+ * Set us complete now since it's the default case; the one
98
+ * incomplete case (successfully created a client request)
99
+ * will explicitly set that it requires a second step.
100
+ */
101
+ ctx->complete = true;
102
+
103
+ if (cred && ntlm_set_credentials(ctx, cred) != 0)
104
+ goto done;
105
+
106
+ if (challenge_len < 4) {
107
+ git_error_set(GIT_ERROR_NET, "no ntlm challenge sent from server");
108
+ goto done;
109
+ } else if (challenge_len == 4) {
110
+ if (memcmp(ctx->challenge, "NTLM", 4) != 0) {
111
+ git_error_set(GIT_ERROR_NET, "server did not request NTLM");
112
+ goto done;
113
+ }
114
+
115
+ if (ntlm_client_negotiate(&msg, &msg_len, ctx->ntlm) != 0) {
116
+ git_error_set(GIT_ERROR_NET, "ntlm authentication failed: %s",
117
+ ntlm_client_errmsg(ctx->ntlm));
118
+ goto done;
119
+ }
120
+
121
+ ctx->complete = false;
122
+ } else {
123
+ if (memcmp(ctx->challenge, "NTLM ", 5) != 0) {
124
+ git_error_set(GIT_ERROR_NET, "challenge from server was not NTLM");
125
+ goto done;
126
+ }
127
+
128
+ if (git_buf_decode_base64(&input_buf,
129
+ ctx->challenge + 5, challenge_len - 5) < 0) {
130
+ git_error_set(GIT_ERROR_NET, "invalid NTLM challenge from server");
131
+ goto done;
132
+ }
133
+
134
+ if (ntlm_client_set_challenge(ctx->ntlm,
135
+ (const unsigned char *)input_buf.ptr, input_buf.size) != 0) {
136
+ git_error_set(GIT_ERROR_NET, "ntlm challenge failed: %s",
137
+ ntlm_client_errmsg(ctx->ntlm));
138
+ goto done;
139
+ }
140
+
141
+ if (ntlm_client_response(&msg, &msg_len, ctx->ntlm) != 0) {
142
+ git_error_set(GIT_ERROR_NET, "ntlm authentication failed: %s",
143
+ ntlm_client_errmsg(ctx->ntlm));
144
+ goto done;
145
+ }
146
+ }
147
+
148
+ git_buf_puts(buf, "NTLM ");
149
+ git_buf_encode_base64(buf, (const char *)msg, msg_len);
150
+
151
+ if (git_buf_oom(buf))
152
+ goto done;
153
+
154
+ error = 0;
155
+
156
+ done:
157
+ git_buf_dispose(&input_buf);
158
+ return error;
159
+ }
160
+
161
+ static int ntlm_is_complete(git_http_auth_context *c)
162
+ {
163
+ http_auth_ntlm_context *ctx = (http_auth_ntlm_context *)c;
164
+
165
+ assert(ctx);
166
+ return (ctx->complete == true);
167
+ }
168
+
169
+ static void ntlm_context_free(git_http_auth_context *c)
170
+ {
171
+ http_auth_ntlm_context *ctx = (http_auth_ntlm_context *)c;
172
+
173
+ ntlm_client_free(ctx->ntlm);
174
+ git__free(ctx->challenge);
175
+ git__free(ctx);
176
+ }
177
+
178
+ static int ntlm_init_context(
179
+ http_auth_ntlm_context *ctx,
180
+ const git_net_url *url)
181
+ {
182
+ GIT_UNUSED(url);
183
+
184
+ if ((ctx->ntlm = ntlm_client_init(NTLM_CLIENT_DEFAULTS)) == NULL) {
185
+ git_error_set_oom();
186
+ return -1;
187
+ }
188
+
189
+ return 0;
190
+ }
191
+
192
+ int git_http_auth_ntlm(
193
+ git_http_auth_context **out,
194
+ const git_net_url *url)
195
+ {
196
+ http_auth_ntlm_context *ctx;
197
+
198
+ GIT_UNUSED(url);
199
+
200
+ *out = NULL;
201
+
202
+ ctx = git__calloc(1, sizeof(http_auth_ntlm_context));
203
+ GIT_ERROR_CHECK_ALLOC(ctx);
204
+
205
+ if (ntlm_init_context(ctx, url) < 0) {
206
+ git__free(ctx);
207
+ return -1;
208
+ }
209
+
210
+ ctx->parent.type = GIT_AUTHTYPE_NTLM;
211
+ ctx->parent.credtypes = GIT_CREDTYPE_USERPASS_PLAINTEXT;
212
+ ctx->parent.connection_affinity = 1;
213
+ ctx->parent.set_challenge = ntlm_set_challenge;
214
+ ctx->parent.next_token = ntlm_next_token;
215
+ ctx->parent.is_complete = ntlm_is_complete;
216
+ ctx->parent.free = ntlm_context_free;
217
+
218
+ *out = (git_http_auth_context *)ctx;
219
+
220
+ return 0;
221
+ }
222
+
223
+ #endif /* GIT_NTLM */
@@ -0,0 +1,35 @@
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_transports_auth_ntlm_h__
9
+ #define INCLUDE_transports_auth_ntlm_h__
10
+
11
+ #include "git2.h"
12
+ #include "auth.h"
13
+
14
+ #ifdef GIT_NTLM
15
+
16
+ #if defined(GIT_OPENSSL)
17
+ # define CRYPT_OPENSSL
18
+ #elif defined(GIT_MBEDTLS)
19
+ # define CRYPT_MBEDTLS
20
+ #elif defined(GIT_SECURE_TRANSPORT)
21
+ # define CRYPT_COMMONCRYPTO
22
+ #endif
23
+
24
+ extern int git_http_auth_ntlm(
25
+ git_http_auth_context **out,
26
+ const git_net_url *url);
27
+
28
+ #else
29
+
30
+ #define git_http_auth_ntlm git_http_auth_dummy
31
+
32
+ #endif /* GIT_NTLM */
33
+
34
+ #endif
35
+
@@ -5,10 +5,10 @@
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
7
 
8
- #include "cred.h"
8
+ #include "common.h"
9
9
 
10
- #include "git2.h"
11
- #include "smart.h"
10
+ #include "git2/cred.h"
11
+ #include "git2/sys/cred.h"
12
12
  #include "git2/cred_helpers.h"
13
13
 
14
14
  static int git_cred_ssh_key_type_new(
@@ -27,7 +27,7 @@ int git_cred_has_username(git_cred *cred)
27
27
  return 1;
28
28
  }
29
29
 
30
- const char *git_cred__username(git_cred *cred)
30
+ const char *git_cred_get_username(git_cred *cred)
31
31
  {
32
32
  switch (cred->credtype) {
33
33
  case GIT_CREDTYPE_USERNAME:
@@ -88,7 +88,7 @@ int git_cred_userpass_plaintext_new(
88
88
  assert(cred && username && password);
89
89
 
90
90
  c = git__malloc(sizeof(git_cred_userpass_plaintext));
91
- GITERR_CHECK_ALLOC(c);
91
+ GIT_ERROR_CHECK_ALLOC(c);
92
92
 
93
93
  c->parent.credtype = GIT_CREDTYPE_USERPASS_PLAINTEXT;
94
94
  c->parent.free = plaintext_free;
@@ -217,7 +217,7 @@ int git_cred_ssh_key_memory_new(
217
217
  GIT_UNUSED(privatekey);
218
218
  GIT_UNUSED(passphrase);
219
219
 
220
- giterr_set(GITERR_INVALID,
220
+ git_error_set(GIT_ERROR_INVALID,
221
221
  "this version of libgit2 was not built with ssh memory credentials.");
222
222
  return -1;
223
223
  #endif
@@ -236,25 +236,25 @@ static int git_cred_ssh_key_type_new(
236
236
  assert(username && cred && privatekey);
237
237
 
238
238
  c = git__calloc(1, sizeof(git_cred_ssh_key));
239
- GITERR_CHECK_ALLOC(c);
239
+ GIT_ERROR_CHECK_ALLOC(c);
240
240
 
241
241
  c->parent.credtype = credtype;
242
242
  c->parent.free = ssh_key_free;
243
243
 
244
244
  c->username = git__strdup(username);
245
- GITERR_CHECK_ALLOC(c->username);
245
+ GIT_ERROR_CHECK_ALLOC(c->username);
246
246
 
247
247
  c->privatekey = git__strdup(privatekey);
248
- GITERR_CHECK_ALLOC(c->privatekey);
248
+ GIT_ERROR_CHECK_ALLOC(c->privatekey);
249
249
 
250
250
  if (publickey) {
251
251
  c->publickey = git__strdup(publickey);
252
- GITERR_CHECK_ALLOC(c->publickey);
252
+ GIT_ERROR_CHECK_ALLOC(c->publickey);
253
253
  }
254
254
 
255
255
  if (passphrase) {
256
256
  c->passphrase = git__strdup(passphrase);
257
- GITERR_CHECK_ALLOC(c->passphrase);
257
+ GIT_ERROR_CHECK_ALLOC(c->passphrase);
258
258
  }
259
259
 
260
260
  *cred = &c->parent;
@@ -264,7 +264,7 @@ static int git_cred_ssh_key_type_new(
264
264
  int git_cred_ssh_interactive_new(
265
265
  git_cred **out,
266
266
  const char *username,
267
- git_cred_ssh_interactive_callback prompt_callback,
267
+ git_cred_ssh_interactive_cb prompt_callback,
268
268
  void *payload)
269
269
  {
270
270
  git_cred_ssh_interactive *c;
@@ -272,13 +272,13 @@ int git_cred_ssh_interactive_new(
272
272
  assert(out && username && prompt_callback);
273
273
 
274
274
  c = git__calloc(1, sizeof(git_cred_ssh_interactive));
275
- GITERR_CHECK_ALLOC(c);
275
+ GIT_ERROR_CHECK_ALLOC(c);
276
276
 
277
277
  c->parent.credtype = GIT_CREDTYPE_SSH_INTERACTIVE;
278
278
  c->parent.free = ssh_interactive_free;
279
279
 
280
280
  c->username = git__strdup(username);
281
- GITERR_CHECK_ALLOC(c->username);
281
+ GIT_ERROR_CHECK_ALLOC(c->username);
282
282
 
283
283
  c->prompt_callback = prompt_callback;
284
284
  c->payload = payload;
@@ -293,13 +293,13 @@ int git_cred_ssh_key_from_agent(git_cred **cred, const char *username) {
293
293
  assert(username && cred);
294
294
 
295
295
  c = git__calloc(1, sizeof(git_cred_ssh_key));
296
- GITERR_CHECK_ALLOC(c);
296
+ GIT_ERROR_CHECK_ALLOC(c);
297
297
 
298
298
  c->parent.credtype = GIT_CREDTYPE_SSH_KEY;
299
299
  c->parent.free = ssh_key_free;
300
300
 
301
301
  c->username = git__strdup(username);
302
- GITERR_CHECK_ALLOC(c->username);
302
+ GIT_ERROR_CHECK_ALLOC(c->username);
303
303
 
304
304
  c->privatekey = NULL;
305
305
 
@@ -312,7 +312,7 @@ int git_cred_ssh_custom_new(
312
312
  const char *username,
313
313
  const char *publickey,
314
314
  size_t publickey_len,
315
- git_cred_sign_callback sign_callback,
315
+ git_cred_sign_cb sign_callback,
316
316
  void *payload)
317
317
  {
318
318
  git_cred_ssh_custom *c;
@@ -320,17 +320,17 @@ int git_cred_ssh_custom_new(
320
320
  assert(username && cred);
321
321
 
322
322
  c = git__calloc(1, sizeof(git_cred_ssh_custom));
323
- GITERR_CHECK_ALLOC(c);
323
+ GIT_ERROR_CHECK_ALLOC(c);
324
324
 
325
325
  c->parent.credtype = GIT_CREDTYPE_SSH_CUSTOM;
326
326
  c->parent.free = ssh_custom_free;
327
327
 
328
328
  c->username = git__strdup(username);
329
- GITERR_CHECK_ALLOC(c->username);
329
+ GIT_ERROR_CHECK_ALLOC(c->username);
330
330
 
331
331
  if (publickey_len > 0) {
332
332
  c->publickey = git__malloc(publickey_len);
333
- GITERR_CHECK_ALLOC(c->publickey);
333
+ GIT_ERROR_CHECK_ALLOC(c->publickey);
334
334
 
335
335
  memcpy(c->publickey, publickey, publickey_len);
336
336
  }
@@ -350,7 +350,7 @@ int git_cred_default_new(git_cred **cred)
350
350
  assert(cred);
351
351
 
352
352
  c = git__calloc(1, sizeof(git_cred_default));
353
- GITERR_CHECK_ALLOC(c);
353
+ GIT_ERROR_CHECK_ALLOC(c);
354
354
 
355
355
  c->credtype = GIT_CREDTYPE_DEFAULT;
356
356
  c->free = default_free;
@@ -368,10 +368,10 @@ int git_cred_username_new(git_cred **cred, const char *username)
368
368
 
369
369
  len = strlen(username);
370
370
 
371
- GITERR_CHECK_ALLOC_ADD(&allocsize, sizeof(git_cred_username), len);
372
- GITERR_CHECK_ALLOC_ADD(&allocsize, allocsize, 1);
371
+ GIT_ERROR_CHECK_ALLOC_ADD(&allocsize, sizeof(git_cred_username), len);
372
+ GIT_ERROR_CHECK_ALLOC_ADD(&allocsize, allocsize, 1);
373
373
  c = git__malloc(allocsize);
374
- GITERR_CHECK_ALLOC(c);
374
+ GIT_ERROR_CHECK_ALLOC(c);
375
375
 
376
376
  c->parent.credtype = GIT_CREDTYPE_USERNAME;
377
377
  c->parent.free = username_free;
@@ -47,7 +47,7 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url)
47
47
 
48
48
  delim = strchr(url, '/');
49
49
  if (delim == NULL) {
50
- giterr_set(GITERR_NET, "malformed URL");
50
+ git_error_set(GIT_ERROR_NET, "malformed URL");
51
51
  return -1;
52
52
  }
53
53
 
@@ -75,19 +75,19 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url)
75
75
 
76
76
  static int send_command(git_proto_stream *s)
77
77
  {
78
- int error;
79
78
  git_buf request = GIT_BUF_INIT;
79
+ int error;
80
+
81
+ if ((error = gen_proto(&request, s->cmd, s->url)) < 0)
82
+ goto cleanup;
80
83
 
81
- error = gen_proto(&request, s->cmd, s->url);
82
- if (error < 0)
84
+ if ((error = git_stream__write_full(s->io, request.ptr, request.size, 0)) < 0)
83
85
  goto cleanup;
84
86
 
85
- error = git_stream_write(s->io, request.ptr, request.size, 0);
86
- if (error >= 0)
87
- s->sent_command = 1;
87
+ s->sent_command = 1;
88
88
 
89
89
  cleanup:
90
- git_buf_free(&request);
90
+ git_buf_dispose(&request);
91
91
  return error;
92
92
  }
93
93
 
@@ -121,13 +121,13 @@ static int git_proto_stream_write(
121
121
  const char *buffer,
122
122
  size_t len)
123
123
  {
124
- int error;
125
124
  git_proto_stream *s = (git_proto_stream *)stream;
125
+ int error;
126
126
 
127
127
  if (!s->sent_command && (error = send_command(s)) < 0)
128
128
  return error;
129
129
 
130
- return git_stream_write(s->io, buffer, len, 0);
130
+ return git_stream__write_full(s->io, buffer, len, 0);
131
131
  }
132
132
 
133
133
  static void git_proto_stream_free(git_smart_subtransport_stream *stream)
@@ -163,7 +163,7 @@ static int git_proto_stream_alloc(
163
163
  return -1;
164
164
 
165
165
  s = git__calloc(1, sizeof(git_proto_stream));
166
- GITERR_CHECK_ALLOC(s);
166
+ GIT_ERROR_CHECK_ALLOC(s);
167
167
 
168
168
  s->parent.subtransport = &t->parent;
169
169
  s->parent.read = git_proto_stream_read;
@@ -181,7 +181,7 @@ static int git_proto_stream_alloc(
181
181
  if ((git_socket_stream_new(&s->io, host, port)) < 0)
182
182
  return -1;
183
183
 
184
- GITERR_CHECK_VERSION(s->io, GIT_STREAM_VERSION, "git_stream");
184
+ GIT_ERROR_CHECK_VERSION(s->io, GIT_STREAM_VERSION, "git_stream");
185
185
 
186
186
  *stream = &s->parent;
187
187
  return 0;
@@ -192,8 +192,9 @@ static int _git_uploadpack_ls(
192
192
  const char *url,
193
193
  git_smart_subtransport_stream **stream)
194
194
  {
195
- char *host=NULL, *port=NULL, *path=NULL, *user=NULL, *pass=NULL;
195
+ git_net_url urldata = GIT_NET_URL_INIT;
196
196
  const char *stream_url = url;
197
+ const char *host, *port;
197
198
  git_proto_stream *s;
198
199
  int error;
199
200
 
@@ -202,17 +203,15 @@ static int _git_uploadpack_ls(
202
203
  if (!git__prefixcmp(url, prefix_git))
203
204
  stream_url += strlen(prefix_git);
204
205
 
205
- if ((error = gitno_extract_url_parts(&host, &port, &path, &user, &pass, url, GIT_DEFAULT_PORT)) < 0)
206
+ if ((error = git_net_url_parse(&urldata, url)) < 0)
206
207
  return error;
207
208
 
208
- error = git_proto_stream_alloc(t, stream_url, cmd_uploadpack, host, port, stream);
209
+ host = urldata.host;
210
+ port = urldata.port ? urldata.port : GIT_DEFAULT_PORT;
209
211
 
210
- git__free(host);
211
- git__free(port);
212
- git__free(path);
213
- git__free(user);
214
- git__free(pass);
212
+ error = git_proto_stream_alloc(t, stream_url, cmd_uploadpack, host, port, stream);
215
213
 
214
+ git_net_url_dispose(&urldata);
216
215
 
217
216
  if (error < 0) {
218
217
  git_proto_stream_free(*stream);
@@ -242,7 +241,7 @@ static int _git_uploadpack(
242
241
  return 0;
243
242
  }
244
243
 
245
- giterr_set(GITERR_NET, "must call UPLOADPACK_LS before UPLOADPACK");
244
+ git_error_set(GIT_ERROR_NET, "must call UPLOADPACK_LS before UPLOADPACK");
246
245
  return -1;
247
246
  }
248
247
 
@@ -251,7 +250,7 @@ static int _git_receivepack_ls(
251
250
  const char *url,
252
251
  git_smart_subtransport_stream **stream)
253
252
  {
254
- char *host=NULL, *port=NULL, *path=NULL, *user=NULL, *pass=NULL;
253
+ git_net_url urldata = GIT_NET_URL_INIT;
255
254
  const char *stream_url = url;
256
255
  git_proto_stream *s;
257
256
  int error;
@@ -260,16 +259,12 @@ static int _git_receivepack_ls(
260
259
  if (!git__prefixcmp(url, prefix_git))
261
260
  stream_url += strlen(prefix_git);
262
261
 
263
- if ((error = gitno_extract_url_parts(&host, &port, &path, &user, &pass, url, GIT_DEFAULT_PORT)) < 0)
262
+ if ((error = git_net_url_parse(&urldata, url)) < 0)
264
263
  return error;
265
264
 
266
- error = git_proto_stream_alloc(t, stream_url, cmd_receivepack, host, port, stream);
265
+ error = git_proto_stream_alloc(t, stream_url, cmd_receivepack, urldata.host, urldata.port, stream);
267
266
 
268
- git__free(host);
269
- git__free(port);
270
- git__free(path);
271
- git__free(user);
272
- git__free(pass);
267
+ git_net_url_dispose(&urldata);
273
268
 
274
269
  if (error < 0) {
275
270
  git_proto_stream_free(*stream);
@@ -298,7 +293,7 @@ static int _git_receivepack(
298
293
  return 0;
299
294
  }
300
295
 
301
- giterr_set(GITERR_NET, "must call RECEIVEPACK_LS before RECEIVEPACK");
296
+ git_error_set(GIT_ERROR_NET, "must call RECEIVEPACK_LS before RECEIVEPACK");
302
297
  return -1;
303
298
  }
304
299
 
@@ -358,7 +353,7 @@ int git_smart_subtransport_git(git_smart_subtransport **out, git_transport *owne
358
353
  return -1;
359
354
 
360
355
  t = git__calloc(1, sizeof(git_subtransport));
361
- GITERR_CHECK_ALLOC(t);
356
+ GIT_ERROR_CHECK_ALLOC(t);
362
357
 
363
358
  t->owner = owner;
364
359
  t->parent.action = _git_action;