rugged 1.3.2.3 → 1.4.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 (329) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +1 -1
  3. data/ext/rugged/rugged_config.c +7 -2
  4. data/ext/rugged/rugged_remote.c +17 -0
  5. data/lib/rugged/version.rb +1 -1
  6. data/vendor/libgit2/CMakeLists.txt +103 -276
  7. data/vendor/libgit2/COPYING +36 -19
  8. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  9. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  10. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  11. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  12. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  13. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  14. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  15. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  16. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  17. data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
  18. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  19. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  20. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  21. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  22. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  23. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  24. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  25. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  26. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  27. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  28. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  29. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  30. data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
  31. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  32. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  33. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  34. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  35. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  36. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
  37. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
  38. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  39. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  40. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  42. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  43. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  44. data/vendor/libgit2/deps/zlib/crc32.c +288 -975
  45. data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
  46. data/vendor/libgit2/deps/zlib/deflate.c +31 -83
  47. data/vendor/libgit2/deps/zlib/deflate.h +15 -12
  48. data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
  49. data/vendor/libgit2/deps/zlib/infback.c +1 -2
  50. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  51. data/vendor/libgit2/deps/zlib/inflate.c +8 -39
  52. data/vendor/libgit2/deps/zlib/inflate.h +2 -3
  53. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  54. data/vendor/libgit2/deps/zlib/trees.c +48 -27
  55. data/vendor/libgit2/deps/zlib/zlib.h +100 -126
  56. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  57. data/vendor/libgit2/deps/zlib/zutil.h +9 -12
  58. data/vendor/libgit2/include/git2/apply.h +16 -2
  59. data/vendor/libgit2/include/git2/attr.h +11 -2
  60. data/vendor/libgit2/include/git2/blame.h +4 -1
  61. data/vendor/libgit2/include/git2/blob.h +14 -1
  62. data/vendor/libgit2/include/git2/branch.h +2 -0
  63. data/vendor/libgit2/include/git2/buffer.h +18 -78
  64. data/vendor/libgit2/include/git2/cert.h +2 -2
  65. data/vendor/libgit2/include/git2/checkout.h +5 -2
  66. data/vendor/libgit2/include/git2/clone.h +3 -3
  67. data/vendor/libgit2/include/git2/commit.h +2 -0
  68. data/vendor/libgit2/include/git2/common.h +5 -12
  69. data/vendor/libgit2/include/git2/config.h +19 -3
  70. data/vendor/libgit2/include/git2/credential.h +2 -1
  71. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  72. data/vendor/libgit2/include/git2/deprecated.h +1 -1
  73. data/vendor/libgit2/include/git2/describe.h +7 -2
  74. data/vendor/libgit2/include/git2/diff.h +17 -9
  75. data/vendor/libgit2/include/git2/email.h +1 -1
  76. data/vendor/libgit2/include/git2/errors.h +1 -2
  77. data/vendor/libgit2/include/git2/filter.h +7 -2
  78. data/vendor/libgit2/include/git2/graph.h +1 -0
  79. data/vendor/libgit2/include/git2/ignore.h +1 -1
  80. data/vendor/libgit2/include/git2/index.h +11 -5
  81. data/vendor/libgit2/include/git2/indexer.h +19 -0
  82. data/vendor/libgit2/include/git2/merge.h +23 -3
  83. data/vendor/libgit2/include/git2/message.h +2 -0
  84. data/vendor/libgit2/include/git2/object.h +23 -0
  85. data/vendor/libgit2/include/git2/odb.h +37 -7
  86. data/vendor/libgit2/include/git2/odb_backend.h +1 -1
  87. data/vendor/libgit2/include/git2/pack.h +24 -8
  88. data/vendor/libgit2/include/git2/patch.h +8 -0
  89. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  90. data/vendor/libgit2/include/git2/proxy.h +1 -1
  91. data/vendor/libgit2/include/git2/rebase.h +9 -1
  92. data/vendor/libgit2/include/git2/refdb.h +3 -0
  93. data/vendor/libgit2/include/git2/reflog.h +1 -1
  94. data/vendor/libgit2/include/git2/refs.h +2 -2
  95. data/vendor/libgit2/include/git2/remote.h +184 -37
  96. data/vendor/libgit2/include/git2/repository.h +14 -9
  97. data/vendor/libgit2/include/git2/reset.h +2 -2
  98. data/vendor/libgit2/include/git2/revparse.h +1 -1
  99. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  100. data/vendor/libgit2/include/git2/signature.h +1 -1
  101. data/vendor/libgit2/include/git2/stash.h +3 -3
  102. data/vendor/libgit2/include/git2/status.h +9 -3
  103. data/vendor/libgit2/include/git2/submodule.h +7 -2
  104. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  105. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
  106. data/vendor/libgit2/include/git2/sys/remote.h +31 -0
  107. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  108. data/vendor/libgit2/include/git2/sys/transport.h +25 -34
  109. data/vendor/libgit2/include/git2/tag.h +1 -0
  110. data/vendor/libgit2/include/git2/tree.h +4 -3
  111. data/vendor/libgit2/include/git2/types.h +7 -7
  112. data/vendor/libgit2/include/git2/version.h +3 -3
  113. data/vendor/libgit2/include/git2/worktree.h +12 -2
  114. data/vendor/libgit2/src/CMakeLists.txt +189 -315
  115. data/vendor/libgit2/src/annotated_commit.h +1 -1
  116. data/vendor/libgit2/src/apply.c +18 -18
  117. data/vendor/libgit2/src/apply.h +2 -2
  118. data/vendor/libgit2/src/attr.c +18 -18
  119. data/vendor/libgit2/src/attr_file.c +17 -17
  120. data/vendor/libgit2/src/attr_file.h +4 -4
  121. data/vendor/libgit2/src/attrcache.c +17 -12
  122. data/vendor/libgit2/src/blame_git.c +1 -1
  123. data/vendor/libgit2/src/blob.c +33 -26
  124. data/vendor/libgit2/src/blob.h +1 -1
  125. data/vendor/libgit2/src/branch.c +150 -109
  126. data/vendor/libgit2/src/branch.h +15 -3
  127. data/vendor/libgit2/src/buf.c +126 -0
  128. data/vendor/libgit2/src/buf.h +50 -0
  129. data/vendor/libgit2/src/cc-compat.h +1 -1
  130. data/vendor/libgit2/src/checkout.c +74 -68
  131. data/vendor/libgit2/src/cherrypick.c +10 -10
  132. data/vendor/libgit2/src/clone.c +66 -66
  133. data/vendor/libgit2/src/commit.c +128 -58
  134. data/vendor/libgit2/src/commit.h +24 -1
  135. data/vendor/libgit2/src/commit_graph.c +68 -53
  136. data/vendor/libgit2/src/commit_graph.h +10 -3
  137. data/vendor/libgit2/src/commit_list.c +2 -3
  138. data/vendor/libgit2/src/common.h +10 -3
  139. data/vendor/libgit2/src/config.c +99 -77
  140. data/vendor/libgit2/src/config.h +15 -2
  141. data/vendor/libgit2/src/config_file.c +103 -91
  142. data/vendor/libgit2/src/config_mem.c +9 -9
  143. data/vendor/libgit2/src/config_parse.c +27 -23
  144. data/vendor/libgit2/src/crlf.c +24 -21
  145. data/vendor/libgit2/src/date.c +10 -17
  146. data/vendor/libgit2/src/date.h +33 -0
  147. data/vendor/libgit2/src/describe.c +27 -19
  148. data/vendor/libgit2/src/diff.c +25 -8
  149. data/vendor/libgit2/src/diff.h +2 -4
  150. data/vendor/libgit2/src/diff_driver.c +34 -36
  151. data/vendor/libgit2/src/diff_driver.h +3 -3
  152. data/vendor/libgit2/src/diff_file.c +29 -20
  153. data/vendor/libgit2/src/diff_generate.c +30 -6
  154. data/vendor/libgit2/src/diff_generate.h +5 -3
  155. data/vendor/libgit2/src/diff_print.c +102 -95
  156. data/vendor/libgit2/src/diff_stats.c +40 -29
  157. data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
  158. data/vendor/libgit2/src/diff_tform.c +9 -8
  159. data/vendor/libgit2/src/diff_xdiff.c +3 -8
  160. data/vendor/libgit2/src/email.c +54 -38
  161. data/vendor/libgit2/src/email.h +1 -1
  162. data/vendor/libgit2/src/errors.c +18 -18
  163. data/vendor/libgit2/src/features.h.in +6 -1
  164. data/vendor/libgit2/src/fetch.c +69 -24
  165. data/vendor/libgit2/src/fetch.h +1 -1
  166. data/vendor/libgit2/src/fetchhead.c +19 -19
  167. data/vendor/libgit2/src/filebuf.c +28 -28
  168. data/vendor/libgit2/src/filebuf.h +1 -1
  169. data/vendor/libgit2/src/filter.c +96 -52
  170. data/vendor/libgit2/src/filter.h +26 -5
  171. data/vendor/libgit2/src/fs_path.c +1912 -0
  172. data/vendor/libgit2/src/fs_path.h +752 -0
  173. data/vendor/libgit2/src/futils.c +91 -85
  174. data/vendor/libgit2/src/futils.h +26 -14
  175. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
  176. data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
  177. data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
  178. data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
  179. data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
  180. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
  181. data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
  182. data/vendor/libgit2/src/hash/sha1.h +3 -1
  183. data/vendor/libgit2/src/hash.c +67 -35
  184. data/vendor/libgit2/src/hash.h +12 -12
  185. data/vendor/libgit2/src/ident.c +18 -18
  186. data/vendor/libgit2/src/ignore.c +35 -34
  187. data/vendor/libgit2/src/ignore.h +2 -2
  188. data/vendor/libgit2/src/index.c +79 -80
  189. data/vendor/libgit2/src/index.h +6 -3
  190. data/vendor/libgit2/src/indexer.c +75 -57
  191. data/vendor/libgit2/src/iterator.c +64 -56
  192. data/vendor/libgit2/src/iterator.h +5 -5
  193. data/vendor/libgit2/src/khash.h +1 -1
  194. data/vendor/libgit2/src/libgit2.c +22 -19
  195. data/vendor/libgit2/src/mailmap.c +38 -36
  196. data/vendor/libgit2/src/merge.c +27 -27
  197. data/vendor/libgit2/src/merge.h +1 -14
  198. data/vendor/libgit2/src/merge_driver.c +2 -2
  199. data/vendor/libgit2/src/merge_file.c +13 -3
  200. data/vendor/libgit2/src/message.c +21 -10
  201. data/vendor/libgit2/src/midx.c +83 -66
  202. data/vendor/libgit2/src/midx.h +3 -3
  203. data/vendor/libgit2/src/mwindow.c +1 -1
  204. data/vendor/libgit2/src/net.c +278 -68
  205. data/vendor/libgit2/src/net.h +10 -3
  206. data/vendor/libgit2/src/netops.c +1 -1
  207. data/vendor/libgit2/src/netops.h +1 -1
  208. data/vendor/libgit2/src/notes.c +20 -29
  209. data/vendor/libgit2/src/object.c +49 -9
  210. data/vendor/libgit2/src/object.h +1 -1
  211. data/vendor/libgit2/src/odb.c +35 -32
  212. data/vendor/libgit2/src/odb.h +1 -1
  213. data/vendor/libgit2/src/odb_loose.c +68 -68
  214. data/vendor/libgit2/src/odb_mempack.c +18 -5
  215. data/vendor/libgit2/src/odb_pack.c +43 -43
  216. data/vendor/libgit2/src/oid.c +11 -4
  217. data/vendor/libgit2/src/oid.h +15 -0
  218. data/vendor/libgit2/src/pack-objects.c +41 -26
  219. data/vendor/libgit2/src/pack-objects.h +11 -6
  220. data/vendor/libgit2/src/pack.c +10 -10
  221. data/vendor/libgit2/src/patch.c +3 -3
  222. data/vendor/libgit2/src/patch.h +1 -0
  223. data/vendor/libgit2/src/patch_generate.c +27 -11
  224. data/vendor/libgit2/src/patch_generate.h +5 -5
  225. data/vendor/libgit2/src/patch_parse.c +24 -24
  226. data/vendor/libgit2/src/path.c +76 -1951
  227. data/vendor/libgit2/src/path.h +34 -741
  228. data/vendor/libgit2/src/pathspec.c +6 -6
  229. data/vendor/libgit2/src/pathspec.h +2 -2
  230. data/vendor/libgit2/src/posix.c +3 -3
  231. data/vendor/libgit2/src/posix.h +1 -0
  232. data/vendor/libgit2/src/pqueue.h +1 -1
  233. data/vendor/libgit2/src/proxy.c +4 -1
  234. data/vendor/libgit2/src/proxy.h +1 -1
  235. data/vendor/libgit2/src/push.c +30 -35
  236. data/vendor/libgit2/src/push.h +4 -16
  237. data/vendor/libgit2/src/rand.c +226 -0
  238. data/vendor/libgit2/src/rand.h +37 -0
  239. data/vendor/libgit2/src/reader.c +8 -8
  240. data/vendor/libgit2/src/reader.h +2 -2
  241. data/vendor/libgit2/src/rebase.c +89 -88
  242. data/vendor/libgit2/src/refdb_fs.c +447 -173
  243. data/vendor/libgit2/src/refs.c +32 -32
  244. data/vendor/libgit2/src/refs.h +2 -2
  245. data/vendor/libgit2/src/refspec.c +32 -37
  246. data/vendor/libgit2/src/refspec.h +5 -2
  247. data/vendor/libgit2/src/regexp.c +1 -1
  248. data/vendor/libgit2/src/remote.c +713 -419
  249. data/vendor/libgit2/src/remote.h +15 -10
  250. data/vendor/libgit2/src/repository.c +350 -467
  251. data/vendor/libgit2/src/repository.h +11 -10
  252. data/vendor/libgit2/src/reset.c +8 -5
  253. data/vendor/libgit2/src/revert.c +10 -10
  254. data/vendor/libgit2/src/revparse.c +48 -35
  255. data/vendor/libgit2/src/revwalk.c +7 -7
  256. data/vendor/libgit2/src/signature.c +12 -6
  257. data/vendor/libgit2/src/signature.h +1 -1
  258. data/vendor/libgit2/src/sortedcache.c +1 -1
  259. data/vendor/libgit2/src/sortedcache.h +1 -1
  260. data/vendor/libgit2/src/stash.c +36 -37
  261. data/vendor/libgit2/src/status.c +4 -1
  262. data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
  263. data/vendor/libgit2/src/str.h +357 -0
  264. data/vendor/libgit2/src/streams/mbedtls.c +8 -6
  265. data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
  266. data/vendor/libgit2/src/submodule.c +171 -159
  267. data/vendor/libgit2/src/submodule.h +1 -1
  268. data/vendor/libgit2/src/sysdir.c +68 -52
  269. data/vendor/libgit2/src/sysdir.h +15 -10
  270. data/vendor/libgit2/src/tag.c +29 -27
  271. data/vendor/libgit2/src/thread.h +3 -3
  272. data/vendor/libgit2/src/threadstate.c +3 -3
  273. data/vendor/libgit2/src/threadstate.h +1 -1
  274. data/vendor/libgit2/src/trace.c +1 -14
  275. data/vendor/libgit2/src/trace.h +5 -22
  276. data/vendor/libgit2/src/trailer.c +1 -1
  277. data/vendor/libgit2/src/transaction.c +1 -1
  278. data/vendor/libgit2/src/transport.c +10 -10
  279. data/vendor/libgit2/src/transports/auth.c +7 -9
  280. data/vendor/libgit2/src/transports/auth.h +2 -3
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
  283. data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
  284. data/vendor/libgit2/src/transports/git.c +9 -11
  285. data/vendor/libgit2/src/transports/http.c +37 -17
  286. data/vendor/libgit2/src/transports/http.h +2 -3
  287. data/vendor/libgit2/src/transports/httpclient.c +65 -65
  288. data/vendor/libgit2/src/transports/local.c +124 -116
  289. data/vendor/libgit2/src/transports/smart.c +51 -139
  290. data/vendor/libgit2/src/transports/smart.h +25 -31
  291. data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
  292. data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
  293. data/vendor/libgit2/src/transports/ssh.c +47 -112
  294. data/vendor/libgit2/src/transports/winhttp.c +50 -56
  295. data/vendor/libgit2/src/tree-cache.c +5 -5
  296. data/vendor/libgit2/src/tree-cache.h +2 -2
  297. data/vendor/libgit2/src/tree.c +59 -48
  298. data/vendor/libgit2/src/tree.h +1 -1
  299. data/vendor/libgit2/src/unix/map.c +0 -2
  300. data/vendor/libgit2/src/unix/posix.h +1 -4
  301. data/vendor/libgit2/src/unix/realpath.c +0 -2
  302. data/vendor/libgit2/src/util.c +14 -14
  303. data/vendor/libgit2/src/util.h +2 -28
  304. data/vendor/libgit2/src/vector.h +1 -1
  305. data/vendor/libgit2/src/win32/findfile.c +172 -116
  306. data/vendor/libgit2/src/win32/findfile.h +7 -4
  307. data/vendor/libgit2/src/win32/path_w32.c +140 -9
  308. data/vendor/libgit2/src/win32/path_w32.h +2 -0
  309. data/vendor/libgit2/src/win32/posix.h +0 -1
  310. data/vendor/libgit2/src/win32/posix_w32.c +11 -27
  311. data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
  312. data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
  313. data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
  314. data/vendor/libgit2/src/worktree.c +116 -94
  315. data/vendor/libgit2/src/worktree.h +1 -1
  316. data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
  317. data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
  318. data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
  319. data/vendor/libgit2/src/xdiff/xemit.c +23 -7
  320. data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
  321. data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
  322. data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
  323. data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
  324. data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
  325. data/vendor/libgit2/src/xdiff/xutils.c +18 -7
  326. data/vendor/libgit2/src/zstream.c +5 -5
  327. data/vendor/libgit2/src/zstream.h +4 -4
  328. metadata +25 -10
  329. data/vendor/libgit2/src/buffer.h +0 -374
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "filter.h"
9
9
 
10
+ #include "buf.h"
10
11
  #include "common.h"
11
12
  #include "futils.h"
12
13
  #include "hash.h"
@@ -17,6 +18,7 @@
17
18
  #include "blob.h"
18
19
  #include "attr_file.h"
19
20
  #include "array.h"
21
+ #include "path.h"
20
22
 
21
23
  struct git_filter_source {
22
24
  git_repository *repo;
@@ -36,7 +38,7 @@ typedef struct {
36
38
  struct git_filter_list {
37
39
  git_array_t(git_filter_entry) filters;
38
40
  git_filter_source source;
39
- git_buf *temp_buf;
41
+ git_str *temp_buf;
40
42
  char path[GIT_FLEX_ARRAY];
41
43
  };
42
44
 
@@ -68,7 +70,7 @@ static void git_filter_global_shutdown(void);
68
70
 
69
71
 
70
72
  static int filter_def_scan_attrs(
71
- git_buf *attrs, size_t *nattr, size_t *nmatch, const char *attr_str)
73
+ git_str *attrs, size_t *nattr, size_t *nmatch, const char *attr_str)
72
74
  {
73
75
  const char *start, *scan = attr_str;
74
76
  int has_eq;
@@ -92,9 +94,9 @@ static int filter_def_scan_attrs(
92
94
  (*nmatch)++;
93
95
 
94
96
  if (has_eq)
95
- git_buf_putc(attrs, '=');
96
- git_buf_put(attrs, start, scan - start);
97
- git_buf_putc(attrs, '\0');
97
+ git_str_putc(attrs, '=');
98
+ git_str_put(attrs, start, scan - start);
99
+ git_str_putc(attrs, '\0');
98
100
  }
99
101
  }
100
102
 
@@ -152,7 +154,7 @@ static int filter_registry_insert(
152
154
  {
153
155
  git_filter_def *fdef;
154
156
  size_t nattr = 0, nmatch = 0, alloc_len;
155
- git_buf attrs = GIT_BUF_INIT;
157
+ git_str attrs = GIT_STR_INIT;
156
158
 
157
159
  if (filter_def_scan_attrs(&attrs, &nattr, &nmatch, filter->attributes) < 0)
158
160
  return -1;
@@ -171,7 +173,7 @@ static int filter_registry_insert(
171
173
  fdef->priority = priority;
172
174
  fdef->nattrs = nattr;
173
175
  fdef->nmatches = nmatch;
174
- fdef->attrdata = git_buf_detach(&attrs);
176
+ fdef->attrdata = git_str_detach(&attrs);
175
177
 
176
178
  filter_def_set_attrs(fdef);
177
179
 
@@ -710,7 +712,7 @@ size_t git_filter_list_length(const git_filter_list *fl)
710
712
 
711
713
  struct buf_stream {
712
714
  git_writestream parent;
713
- git_buf *target;
715
+ git_str *target;
714
716
  bool complete;
715
717
  };
716
718
 
@@ -721,7 +723,7 @@ static int buf_stream_write(
721
723
  GIT_ASSERT_ARG(buf_stream);
722
724
  GIT_ASSERT(buf_stream->complete == 0);
723
725
 
724
- return git_buf_put(buf_stream->target, buffer, len);
726
+ return git_str_put(buf_stream->target, buffer, len);
725
727
  }
726
728
 
727
729
  static int buf_stream_close(git_writestream *s)
@@ -740,7 +742,7 @@ static void buf_stream_free(git_writestream *s)
740
742
  GIT_UNUSED(s);
741
743
  }
742
744
 
743
- static void buf_stream_init(struct buf_stream *writer, git_buf *target)
745
+ static void buf_stream_init(struct buf_stream *writer, git_str *target)
744
746
  {
745
747
  memset(writer, 0, sizeof(struct buf_stream));
746
748
 
@@ -749,7 +751,7 @@ static void buf_stream_init(struct buf_stream *writer, git_buf *target)
749
751
  writer->parent.free = buf_stream_free;
750
752
  writer->target = target;
751
753
 
752
- git_buf_clear(target);
754
+ git_str_clear(target);
753
755
  }
754
756
 
755
757
  int git_filter_list_apply_to_buffer(
@@ -757,13 +759,19 @@ int git_filter_list_apply_to_buffer(
757
759
  git_filter_list *filters,
758
760
  const char *in,
759
761
  size_t in_len)
762
+ {
763
+ GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_buffer, filters, in, in_len);
764
+ }
765
+
766
+ int git_filter_list__apply_to_buffer(
767
+ git_str *out,
768
+ git_filter_list *filters,
769
+ const char *in,
770
+ size_t in_len)
760
771
  {
761
772
  struct buf_stream writer;
762
773
  int error;
763
774
 
764
- if ((error = git_buf_sanitize(out)) < 0)
765
- return error;
766
-
767
775
  buf_stream_init(&writer, out);
768
776
 
769
777
  if ((error = git_filter_list_stream_buffer(filters,
@@ -775,23 +783,23 @@ int git_filter_list_apply_to_buffer(
775
783
  }
776
784
 
777
785
  int git_filter_list__convert_buf(
778
- git_buf *out,
786
+ git_str *out,
779
787
  git_filter_list *filters,
780
- git_buf *in)
788
+ git_str *in)
781
789
  {
782
790
  int error;
783
791
 
784
792
  if (!filters || git_filter_list_length(filters) == 0) {
785
- git_buf_swap(out, in);
786
- git_buf_dispose(in);
793
+ git_str_swap(out, in);
794
+ git_str_dispose(in);
787
795
  return 0;
788
796
  }
789
797
 
790
- error = git_filter_list_apply_to_buffer(out, filters,
798
+ error = git_filter_list__apply_to_buffer(out, filters,
791
799
  in->ptr, in->size);
792
800
 
793
801
  if (!error)
794
- git_buf_dispose(in);
802
+ git_str_dispose(in);
795
803
 
796
804
  return error;
797
805
  }
@@ -801,6 +809,15 @@ int git_filter_list_apply_to_file(
801
809
  git_filter_list *filters,
802
810
  git_repository *repo,
803
811
  const char *path)
812
+ {
813
+ GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_file, filters, repo, path);
814
+ }
815
+
816
+ int git_filter_list__apply_to_file(
817
+ git_str *out,
818
+ git_filter_list *filters,
819
+ git_repository *repo,
820
+ const char *path)
804
821
  {
805
822
  struct buf_stream writer;
806
823
  int error;
@@ -815,7 +832,7 @@ int git_filter_list_apply_to_file(
815
832
  return error;
816
833
  }
817
834
 
818
- static int buf_from_blob(git_buf *out, git_blob *blob)
835
+ static int buf_from_blob(git_str *out, git_blob *blob)
819
836
  {
820
837
  git_object_size_t rawsize = git_blob_rawsize(blob);
821
838
 
@@ -824,7 +841,7 @@ static int buf_from_blob(git_buf *out, git_blob *blob)
824
841
  return -1;
825
842
  }
826
843
 
827
- git_buf_attach_notowned(out, git_blob_rawcontent(blob), (size_t)rawsize);
844
+ git_str_attach_notowned(out, git_blob_rawcontent(blob), (size_t)rawsize);
828
845
  return 0;
829
846
  }
830
847
 
@@ -832,6 +849,14 @@ int git_filter_list_apply_to_blob(
832
849
  git_buf *out,
833
850
  git_filter_list *filters,
834
851
  git_blob *blob)
852
+ {
853
+ GIT_BUF_WRAP_PRIVATE(out, git_filter_list__apply_to_blob, filters, blob);
854
+ }
855
+
856
+ int git_filter_list__apply_to_blob(
857
+ git_str *out,
858
+ git_filter_list *filters,
859
+ git_blob *blob)
835
860
  {
836
861
  struct buf_stream writer;
837
862
  int error;
@@ -849,12 +874,13 @@ int git_filter_list_apply_to_blob(
849
874
  struct buffered_stream {
850
875
  git_writestream parent;
851
876
  git_filter *filter;
852
- int (*write_fn)(git_filter *, void **, git_buf *, const git_buf *, const git_filter_source *);
877
+ int (*write_fn)(git_filter *, void **, git_str *, const git_str *, const git_filter_source *);
878
+ int (*legacy_write_fn)(git_filter *, void **, git_buf *, const git_buf *, const git_filter_source *);
853
879
  const git_filter_source *source;
854
880
  void **payload;
855
- git_buf input;
856
- git_buf temp_buf;
857
- git_buf *output;
881
+ git_str input;
882
+ git_str temp_buf;
883
+ git_str *output;
858
884
  git_writestream *target;
859
885
  };
860
886
 
@@ -864,13 +890,13 @@ static int buffered_stream_write(
864
890
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
865
891
  GIT_ASSERT_ARG(buffered_stream);
866
892
 
867
- return git_buf_put(&buffered_stream->input, buffer, len);
893
+ return git_str_put(&buffered_stream->input, buffer, len);
868
894
  }
869
895
 
870
896
  static int buffered_stream_close(git_writestream *s)
871
897
  {
872
898
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
873
- git_buf *writebuf;
899
+ git_str *writebuf;
874
900
  git_error_state error_state = {0};
875
901
  int error;
876
902
 
@@ -886,9 +912,6 @@ static int buffered_stream_close(git_writestream *s)
886
912
  if (error == GIT_PASSTHROUGH) {
887
913
  writebuf = &buffered_stream->input;
888
914
  } else if (error == 0) {
889
- if ((error = git_buf_sanitize(buffered_stream->output)) < 0)
890
- return error;
891
-
892
915
  writebuf = buffered_stream->output;
893
916
  } else {
894
917
  /* close stream before erroring out taking care
@@ -911,8 +934,8 @@ static void buffered_stream_free(git_writestream *s)
911
934
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
912
935
 
913
936
  if (buffered_stream) {
914
- git_buf_dispose(&buffered_stream->input);
915
- git_buf_dispose(&buffered_stream->temp_buf);
937
+ git_str_dispose(&buffered_stream->input);
938
+ git_str_dispose(&buffered_stream->temp_buf);
916
939
  git__free(buffered_stream);
917
940
  }
918
941
  }
@@ -920,8 +943,8 @@ static void buffered_stream_free(git_writestream *s)
920
943
  int git_filter_buffered_stream_new(
921
944
  git_writestream **out,
922
945
  git_filter *filter,
923
- int (*write_fn)(git_filter *, void **, git_buf *, const git_buf *, const git_filter_source *),
924
- git_buf *temp_buf,
946
+ int (*write_fn)(git_filter *, void **, git_str *, const git_str *, const git_filter_source *),
947
+ git_str *temp_buf,
925
948
  void **payload,
926
949
  const git_filter_source *source,
927
950
  git_writestream *target)
@@ -940,12 +963,43 @@ int git_filter_buffered_stream_new(
940
963
  buffered_stream->target = target;
941
964
 
942
965
  if (temp_buf)
943
- git_buf_clear(temp_buf);
966
+ git_str_clear(temp_buf);
944
967
 
945
968
  *out = (git_writestream *)buffered_stream;
946
969
  return 0;
947
970
  }
948
971
 
972
+ #ifndef GIT_DEPRECATE_HARD
973
+ static int buffered_legacy_stream_new(
974
+ git_writestream **out,
975
+ git_filter *filter,
976
+ int (*legacy_write_fn)(git_filter *, void **, git_buf *, const git_buf *, const git_filter_source *),
977
+ git_str *temp_buf,
978
+ void **payload,
979
+ const git_filter_source *source,
980
+ git_writestream *target)
981
+ {
982
+ struct buffered_stream *buffered_stream = git__calloc(1, sizeof(struct buffered_stream));
983
+ GIT_ERROR_CHECK_ALLOC(buffered_stream);
984
+
985
+ buffered_stream->parent.write = buffered_stream_write;
986
+ buffered_stream->parent.close = buffered_stream_close;
987
+ buffered_stream->parent.free = buffered_stream_free;
988
+ buffered_stream->filter = filter;
989
+ buffered_stream->legacy_write_fn = legacy_write_fn;
990
+ buffered_stream->output = temp_buf ? temp_buf : &buffered_stream->temp_buf;
991
+ buffered_stream->payload = payload;
992
+ buffered_stream->source = source;
993
+ buffered_stream->target = target;
994
+
995
+ if (temp_buf)
996
+ git_str_clear(temp_buf);
997
+
998
+ *out = (git_writestream *)buffered_stream;
999
+ return 0;
1000
+ }
1001
+ #endif
1002
+
949
1003
  static int setup_stream(
950
1004
  git_writestream **out,
951
1005
  git_filter_entry *fe,
@@ -961,7 +1015,7 @@ static int setup_stream(
961
1015
  */
962
1016
  if (!fe->filter->stream) {
963
1017
  /* Create a stream that proxies the one-shot apply */
964
- return git_filter_buffered_stream_new(out,
1018
+ return buffered_legacy_stream_new(out,
965
1019
  fe->filter, fe->filter->apply, filters->temp_buf,
966
1020
  &fe->payload, &filters->source, last_stream);
967
1021
  }
@@ -1032,7 +1086,7 @@ int git_filter_list_stream_file(
1032
1086
  git_writestream *target)
1033
1087
  {
1034
1088
  char buf[FILTERIO_BUFSIZE];
1035
- git_buf abspath = GIT_BUF_INIT;
1089
+ git_str abspath = GIT_STR_INIT;
1036
1090
  const char *base = repo ? git_repository_workdir(repo) : NULL;
1037
1091
  git_vector filter_streams = GIT_VECTOR_INIT;
1038
1092
  git_writestream *stream_start;
@@ -1041,8 +1095,8 @@ int git_filter_list_stream_file(
1041
1095
 
1042
1096
  if ((error = stream_list_init(
1043
1097
  &stream_start, &filter_streams, filters, target)) < 0 ||
1044
- (error = git_path_join_unrooted(&abspath, path, base, NULL)) < 0 ||
1045
- (error = git_path_validate_workdir_buf(repo, &abspath)) < 0)
1098
+ (error = git_fs_path_join_unrooted(&abspath, path, base, NULL)) < 0 ||
1099
+ (error = git_path_validate_str_length(repo, &abspath)) < 0)
1046
1100
  goto done;
1047
1101
 
1048
1102
  initialized = 1;
@@ -1067,7 +1121,7 @@ done:
1067
1121
  if (fd >= 0)
1068
1122
  p_close(fd);
1069
1123
  filter_streams_free(&filter_streams);
1070
- git_buf_dispose(&abspath);
1124
+ git_str_dispose(&abspath);
1071
1125
  return error;
1072
1126
  }
1073
1127
 
@@ -1101,7 +1155,7 @@ int git_filter_list_stream_blob(
1101
1155
  git_blob *blob,
1102
1156
  git_writestream *target)
1103
1157
  {
1104
- git_buf in = GIT_BUF_INIT;
1158
+ git_str in = GIT_STR_INIT;
1105
1159
 
1106
1160
  if (buf_from_blob(&in, blob) < 0)
1107
1161
  return -1;
@@ -1125,22 +1179,12 @@ int git_filter_list_stream_data(
1125
1179
  git_buf *data,
1126
1180
  git_writestream *target)
1127
1181
  {
1128
- int error;
1129
-
1130
- if ((error = git_buf_sanitize(data)) < 0)
1131
- return error;
1132
-
1133
1182
  return git_filter_list_stream_buffer(filters, data->ptr, data->size, target);
1134
1183
  }
1135
1184
 
1136
1185
  int git_filter_list_apply_to_data(
1137
1186
  git_buf *tgt, git_filter_list *filters, git_buf *src)
1138
1187
  {
1139
- int error;
1140
-
1141
- if ((error = git_buf_sanitize(src)) < 0)
1142
- return error;
1143
-
1144
1188
  return git_filter_list_apply_to_buffer(tgt, filters, src->ptr, src->size);
1145
1189
  }
1146
1190
 
@@ -19,7 +19,7 @@
19
19
  typedef struct {
20
20
  git_filter_options options;
21
21
  git_attr_session *attr_session;
22
- git_buf *temp_buf;
22
+ git_str *temp_buf;
23
23
  } git_filter_session;
24
24
 
25
25
  #define GIT_FILTER_SESSION_INIT {GIT_FILTER_OPTIONS_INIT, 0}
@@ -36,14 +36,35 @@ extern int git_filter_list__load(
36
36
  git_filter_mode_t mode,
37
37
  git_filter_session *filter_session);
38
38
 
39
+ int git_filter_list__apply_to_buffer(
40
+ git_str *out,
41
+ git_filter_list *filters,
42
+ const char *in,
43
+ size_t in_len);
44
+ int git_filter_list__apply_to_file(
45
+ git_str *out,
46
+ git_filter_list *filters,
47
+ git_repository *repo,
48
+ const char *path);
49
+ int git_filter_list__apply_to_blob(
50
+ git_str *out,
51
+ git_filter_list *filters,
52
+ git_blob *blob);
53
+
39
54
  /*
40
55
  * The given input buffer will be converted to the given output buffer.
41
56
  * The input buffer will be freed (_if_ it was allocated).
42
57
  */
43
58
  extern int git_filter_list__convert_buf(
44
- git_buf *out,
59
+ git_str *out,
60
+ git_filter_list *filters,
61
+ git_str *in);
62
+
63
+ extern int git_filter_list__apply_to_file(
64
+ git_str *out,
45
65
  git_filter_list *filters,
46
- git_buf *in);
66
+ git_repository *repo,
67
+ const char *path);
47
68
 
48
69
  /*
49
70
  * Available filters
@@ -55,8 +76,8 @@ extern git_filter *git_ident_filter_new(void);
55
76
  extern int git_filter_buffered_stream_new(
56
77
  git_writestream **out,
57
78
  git_filter *filter,
58
- int (*write_fn)(git_filter *, void **, git_buf *, const git_buf *, const git_filter_source *),
59
- git_buf *temp_buf,
79
+ int (*write_fn)(git_filter *, void **, git_str *, const git_str *, const git_filter_source *),
80
+ git_str *temp_buf,
60
81
  void **payload,
61
82
  const git_filter_source *source,
62
83
  git_writestream *target);