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
@@ -265,7 +265,7 @@ done:
265
265
  }
266
266
 
267
267
  static int apply_hunks(
268
- git_buf *out,
268
+ git_str *out,
269
269
  const char *source,
270
270
  size_t source_len,
271
271
  git_patch *patch,
@@ -286,7 +286,7 @@ static int apply_hunks(
286
286
  }
287
287
 
288
288
  git_vector_foreach(&image.lines, i, line)
289
- git_buf_put(out, line->content, line->content_len);
289
+ git_str_put(out, line->content, line->content_len);
290
290
 
291
291
  done:
292
292
  patch_image_free(&image);
@@ -295,24 +295,24 @@ done:
295
295
  }
296
296
 
297
297
  static int apply_binary_delta(
298
- git_buf *out,
298
+ git_str *out,
299
299
  const char *source,
300
300
  size_t source_len,
301
301
  git_diff_binary_file *binary_file)
302
302
  {
303
- git_buf inflated = GIT_BUF_INIT;
303
+ git_str inflated = GIT_STR_INIT;
304
304
  int error = 0;
305
305
 
306
306
  /* no diff means identical contents */
307
307
  if (binary_file->datalen == 0)
308
- return git_buf_put(out, source, source_len);
308
+ return git_str_put(out, source, source_len);
309
309
 
310
310
  error = git_zstream_inflatebuf(&inflated,
311
311
  binary_file->data, binary_file->datalen);
312
312
 
313
313
  if (!error && inflated.size != binary_file->inflatedlen) {
314
314
  error = apply_err("inflated delta does not match expected length");
315
- git_buf_dispose(out);
315
+ git_str_dispose(out);
316
316
  }
317
317
 
318
318
  if (error < 0)
@@ -330,7 +330,7 @@ static int apply_binary_delta(
330
330
  out->asize = data_len;
331
331
  }
332
332
  else if (binary_file->type == GIT_DIFF_BINARY_LITERAL) {
333
- git_buf_swap(out, &inflated);
333
+ git_str_swap(out, &inflated);
334
334
  }
335
335
  else {
336
336
  error = apply_err("unknown binary delta type");
@@ -338,17 +338,17 @@ static int apply_binary_delta(
338
338
  }
339
339
 
340
340
  done:
341
- git_buf_dispose(&inflated);
341
+ git_str_dispose(&inflated);
342
342
  return error;
343
343
  }
344
344
 
345
345
  static int apply_binary(
346
- git_buf *out,
346
+ git_str *out,
347
347
  const char *source,
348
348
  size_t source_len,
349
349
  git_patch *patch)
350
350
  {
351
- git_buf reverse = GIT_BUF_INIT;
351
+ git_str reverse = GIT_STR_INIT;
352
352
  int error = 0;
353
353
 
354
354
  if (!patch->binary.contains_data) {
@@ -378,14 +378,14 @@ static int apply_binary(
378
378
 
379
379
  done:
380
380
  if (error < 0)
381
- git_buf_dispose(out);
381
+ git_str_dispose(out);
382
382
 
383
- git_buf_dispose(&reverse);
383
+ git_str_dispose(&reverse);
384
384
  return error;
385
385
  }
386
386
 
387
387
  int git_apply__patch(
388
- git_buf *contents_out,
388
+ git_str *contents_out,
389
389
  char **filename_out,
390
390
  unsigned int *mode_out,
391
391
  const char *source,
@@ -423,13 +423,13 @@ int git_apply__patch(
423
423
  else if (patch->hunks.size)
424
424
  error = apply_hunks(contents_out, source, source_len, patch, &ctx);
425
425
  else
426
- error = git_buf_put(contents_out, source, source_len);
426
+ error = git_str_put(contents_out, source, source_len);
427
427
 
428
428
  if (error)
429
429
  goto done;
430
430
 
431
431
  if (patch->delta->status == GIT_DELTA_DELETED &&
432
- git_buf_len(contents_out) > 0) {
432
+ git_str_len(contents_out) > 0) {
433
433
  error = apply_err("removal patch leaves file contents");
434
434
  goto done;
435
435
  }
@@ -456,7 +456,7 @@ static int apply_one(
456
456
  const git_apply_options *opts)
457
457
  {
458
458
  git_patch *patch = NULL;
459
- git_buf pre_contents = GIT_BUF_INIT, post_contents = GIT_BUF_INIT;
459
+ git_str pre_contents = GIT_STR_INIT, post_contents = GIT_STR_INIT;
460
460
  const git_diff_delta *delta;
461
461
  char *filename = NULL;
462
462
  unsigned int mode;
@@ -579,8 +579,8 @@ static int apply_one(
579
579
  git_strmap_delete(removed_paths, delta->new_file.path);
580
580
 
581
581
  done:
582
- git_buf_dispose(&pre_contents);
583
- git_buf_dispose(&post_contents);
582
+ git_str_dispose(&pre_contents);
583
+ git_str_dispose(&post_contents);
584
584
  git__free(filename);
585
585
  git_patch_free(patch);
586
586
 
@@ -11,10 +11,10 @@
11
11
 
12
12
  #include "git2/patch.h"
13
13
  #include "git2/apply.h"
14
- #include "buffer.h"
14
+ #include "str.h"
15
15
 
16
16
  extern int git_apply__patch(
17
- git_buf *out,
17
+ git_str *out,
18
18
  char **filename,
19
19
  unsigned int *mode,
20
20
  const char *source,
@@ -338,7 +338,7 @@ GIT_INLINE(int) preload_attr_file(
338
338
  }
339
339
 
340
340
  static int system_attr_file(
341
- git_buf *out,
341
+ git_str *out,
342
342
  git_attr_session *attr_session)
343
343
  {
344
344
  int error;
@@ -366,11 +366,11 @@ static int system_attr_file(
366
366
  if (attr_session->sysdir.size == 0)
367
367
  return GIT_ENOTFOUND;
368
368
 
369
- /* We can safely provide a git_buf with no allocation (asize == 0) to
370
- * a consumer. This allows them to treat this as a regular `git_buf`,
371
- * but their call to `git_buf_dispose` will not attempt to free it.
369
+ /* We can safely provide a git_str with no allocation (asize == 0) to
370
+ * a consumer. This allows them to treat this as a regular `git_str`,
371
+ * but their call to `git_str_dispose` will not attempt to free it.
372
372
  */
373
- git_buf_attach_notowned(
373
+ git_str_attach_notowned(
374
374
  out, attr_session->sysdir.ptr, attr_session->sysdir.size);
375
375
  return 0;
376
376
  }
@@ -380,7 +380,7 @@ static int attr_setup(
380
380
  git_attr_session *attr_session,
381
381
  git_attr_options *opts)
382
382
  {
383
- git_buf system = GIT_BUF_INIT, info = GIT_BUF_INIT;
383
+ git_str system = GIT_STR_INIT, info = GIT_STR_INIT;
384
384
  git_attr_file_source index_source = { GIT_ATTR_FILE_SOURCE_INDEX, NULL, GIT_ATTR_FILE, NULL };
385
385
  git_attr_file_source head_source = { GIT_ATTR_FILE_SOURCE_HEAD, NULL, GIT_ATTR_FILE, NULL };
386
386
  git_attr_file_source commit_source = { GIT_ATTR_FILE_SOURCE_COMMIT, NULL, GIT_ATTR_FILE, NULL };
@@ -411,7 +411,7 @@ static int attr_setup(
411
411
  git_repository_attr_cache(repo)->cfg_attr_file)) < 0)
412
412
  goto out;
413
413
 
414
- if ((error = git_repository_item_path(&info, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
414
+ if ((error = git_repository__item_path(&info, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
415
415
  (error = preload_attr_file(repo, attr_session, info.ptr, GIT_ATTR_FILE_INREPO)) < 0) {
416
416
  if (error != GIT_ENOTFOUND)
417
417
  goto out;
@@ -447,8 +447,8 @@ static int attr_setup(
447
447
  attr_session->init_setup = 1;
448
448
 
449
449
  out:
450
- git_buf_dispose(&system);
451
- git_buf_dispose(&info);
450
+ git_str_dispose(&system);
451
+ git_str_dispose(&info);
452
452
 
453
453
  return error;
454
454
  }
@@ -625,11 +625,11 @@ static int collect_attr_files(
625
625
  git_vector *files)
626
626
  {
627
627
  int error = 0;
628
- git_buf dir = GIT_BUF_INIT, attrfile = GIT_BUF_INIT;
628
+ git_str dir = GIT_STR_INIT, attrfile = GIT_STR_INIT;
629
629
  const char *workdir = git_repository_workdir(repo);
630
630
  attr_walk_up_info info = { NULL };
631
631
 
632
- GIT_ASSERT(!git_path_is_absolute(path));
632
+ GIT_ASSERT(!git_fs_path_is_absolute(path));
633
633
 
634
634
  if ((error = attr_setup(repo, attr_session, opts)) < 0)
635
635
  return error;
@@ -637,23 +637,23 @@ static int collect_attr_files(
637
637
  /* Resolve path in a non-bare repo */
638
638
  if (workdir != NULL) {
639
639
  if (!(error = git_repository_workdir_path(&dir, repo, path)))
640
- error = git_path_find_dir(&dir);
640
+ error = git_fs_path_find_dir(&dir);
641
641
  }
642
642
  else {
643
- error = git_path_dirname_r(&dir, path);
643
+ error = git_fs_path_dirname_r(&dir, path);
644
644
  }
645
645
 
646
646
  if (error < 0)
647
647
  goto cleanup;
648
648
 
649
- /* in precendence order highest to lowest:
649
+ /* in precedence order highest to lowest:
650
650
  * - $GIT_DIR/info/attributes
651
651
  * - path components with .gitattributes
652
652
  * - config core.attributesfile
653
653
  * - $GIT_PREFIX/etc/gitattributes
654
654
  */
655
655
 
656
- if ((error = git_repository_item_path(&attrfile, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
656
+ if ((error = git_repository__item_path(&attrfile, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
657
657
  (error = push_attr_file(repo, attr_session, files, attrfile.ptr, GIT_ATTR_FILE_INREPO)) < 0) {
658
658
  if (error != GIT_ENOTFOUND)
659
659
  goto cleanup;
@@ -670,7 +670,7 @@ static int collect_attr_files(
670
670
  if (!strcmp(dir.ptr, "."))
671
671
  error = push_one_attr(&info, "");
672
672
  else
673
- error = git_path_walk_up(&dir, workdir, push_one_attr, &info);
673
+ error = git_fs_path_walk_up(&dir, workdir, push_one_attr, &info);
674
674
 
675
675
  if (error < 0)
676
676
  goto cleanup;
@@ -693,8 +693,8 @@ static int collect_attr_files(
693
693
  cleanup:
694
694
  if (error < 0)
695
695
  release_attr_files(files);
696
- git_buf_dispose(&attrfile);
697
- git_buf_dispose(&dir);
696
+ git_str_dispose(&attrfile);
697
+ git_str_dispose(&dir);
698
698
 
699
699
  return error;
700
700
  }
@@ -117,13 +117,13 @@ int git_attr_file__load(
117
117
  git_tree *tree = NULL;
118
118
  git_tree_entry *tree_entry = NULL;
119
119
  git_blob *blob = NULL;
120
- git_buf content = GIT_BUF_INIT;
120
+ git_str content = GIT_STR_INIT;
121
121
  const char *content_str;
122
122
  git_attr_file *file;
123
123
  struct stat st;
124
124
  bool nonexistent = false;
125
125
  int bom_offset;
126
- git_buf_bom_t bom;
126
+ git_str_bom_t bom;
127
127
  git_oid id;
128
128
  git_object_size_t blobsize;
129
129
 
@@ -143,7 +143,7 @@ int git_attr_file__load(
143
143
  blobsize = git_blob_rawsize(blob);
144
144
 
145
145
  GIT_ERROR_CHECK_BLOBSIZE(blobsize);
146
- git_buf_put(&content, git_blob_rawcontent(blob), (size_t)blobsize);
146
+ git_str_put(&content, git_blob_rawcontent(blob), (size_t)blobsize);
147
147
  break;
148
148
  }
149
149
  case GIT_ATTR_FILE_SOURCE_FILE: {
@@ -198,7 +198,7 @@ int git_attr_file__load(
198
198
  blobsize = git_blob_rawsize(blob);
199
199
 
200
200
  GIT_ERROR_CHECK_BLOBSIZE(blobsize);
201
- if ((error = git_buf_put(&content,
201
+ if ((error = git_str_put(&content,
202
202
  git_blob_rawcontent(blob), (size_t)blobsize)) < 0)
203
203
  goto cleanup;
204
204
 
@@ -213,10 +213,10 @@ int git_attr_file__load(
213
213
  goto cleanup;
214
214
 
215
215
  /* advance over a UTF8 BOM */
216
- content_str = git_buf_cstr(&content);
217
- bom_offset = git_buf_detect_bom(&bom, &content);
216
+ content_str = git_str_cstr(&content);
217
+ bom_offset = git_str_detect_bom(&bom, &content);
218
218
 
219
- if (bom == GIT_BUF_BOM_UTF8)
219
+ if (bom == GIT_STR_BOM_UTF8)
220
220
  content_str += bom_offset;
221
221
 
222
222
  /* store the key of the attr_reader; don't bother with cache
@@ -250,7 +250,7 @@ cleanup:
250
250
  git_tree_entry_free(tree_entry);
251
251
  git_tree_free(tree);
252
252
  git_commit_free(commit);
253
- git_buf_dispose(&content);
253
+ git_str_dispose(&content);
254
254
 
255
255
  return error;
256
256
  }
@@ -345,7 +345,7 @@ int git_attr_file__parse_buffer(
345
345
  int error = 0;
346
346
 
347
347
  /* If subdir file path, convert context for file paths */
348
- if (attrs->entry && git_path_root(attrs->entry->path) < 0 &&
348
+ if (attrs->entry && git_fs_path_root(attrs->entry->path) < 0 &&
349
349
  !git__suffixcmp(attrs->entry->path, "/" GIT_ATTR_FILE))
350
350
  context = attrs->entry->path;
351
351
 
@@ -435,7 +435,7 @@ int git_attr_file__lookup_one(
435
435
 
436
436
  int git_attr_file__load_standalone(git_attr_file **out, const char *path)
437
437
  {
438
- git_buf content = GIT_BUF_INIT;
438
+ git_str content = GIT_STR_INIT;
439
439
  git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_FILE };
440
440
  git_attr_file *file = NULL;
441
441
  int error;
@@ -457,7 +457,7 @@ int git_attr_file__load_standalone(git_attr_file **out, const char *path)
457
457
  out:
458
458
  if (error < 0)
459
459
  git_attr_file__free(file);
460
- git_buf_dispose(&content);
460
+ git_str_dispose(&content);
461
461
 
462
462
  return error;
463
463
  }
@@ -558,9 +558,9 @@ int git_attr_path__init(
558
558
  ssize_t root;
559
559
 
560
560
  /* build full path as best we can */
561
- git_buf_init(&info->full, 0);
561
+ git_str_init(&info->full, 0);
562
562
 
563
- if (git_path_join_unrooted(&info->full, path, base, &root) < 0)
563
+ if (git_fs_path_join_unrooted(&info->full, path, base, &root) < 0)
564
564
  return -1;
565
565
 
566
566
  info->path = info->full.ptr + root;
@@ -596,7 +596,7 @@ int git_attr_path__init(
596
596
 
597
597
  case GIT_DIR_FLAG_UNKNOWN:
598
598
  default:
599
- info->is_dir = (int)git_path_isdir(info->full.ptr);
599
+ info->is_dir = (int)git_fs_path_isdir(info->full.ptr);
600
600
  break;
601
601
  }
602
602
 
@@ -605,7 +605,7 @@ int git_attr_path__init(
605
605
 
606
606
  void git_attr_path__free(git_attr_path *info)
607
607
  {
608
- git_buf_dispose(&info->full);
608
+ git_str_dispose(&info->full);
609
609
  info->path = NULL;
610
610
  info->basename = NULL;
611
611
  }
@@ -1020,8 +1020,8 @@ void git_attr_session__free(git_attr_session *session)
1020
1020
  if (!session)
1021
1021
  return;
1022
1022
 
1023
- git_buf_dispose(&session->sysdir);
1024
- git_buf_dispose(&session->tmp);
1023
+ git_str_dispose(&session->sysdir);
1024
+ git_str_dispose(&session->tmp);
1025
1025
 
1026
1026
  memset(session, 0, sizeof(git_attr_session));
1027
1027
  }
@@ -13,7 +13,7 @@
13
13
  #include "git2/attr.h"
14
14
  #include "vector.h"
15
15
  #include "pool.h"
16
- #include "buffer.h"
16
+ #include "str.h"
17
17
  #include "futils.h"
18
18
 
19
19
  #define GIT_ATTR_FILE ".gitattributes"
@@ -118,7 +118,7 @@ struct git_attr_file_entry {
118
118
  };
119
119
 
120
120
  typedef struct {
121
- git_buf full;
121
+ git_str full;
122
122
  char *path;
123
123
  char *basename;
124
124
  int is_dir;
@@ -132,8 +132,8 @@ typedef struct {
132
132
  int key;
133
133
  unsigned int init_setup:1,
134
134
  init_sysdir:1;
135
- git_buf sysdir;
136
- git_buf tmp;
135
+ git_str sysdir;
136
+ git_str tmp;
137
137
  } git_attr_session;
138
138
 
139
139
  extern int git_attr_session__init(git_attr_session *attr_session, git_repository *repo);
@@ -12,6 +12,7 @@
12
12
  #include "config.h"
13
13
  #include "sysdir.h"
14
14
  #include "ignore.h"
15
+ #include "path.h"
15
16
 
16
17
  GIT_INLINE(int) attr_cache_lock(git_attr_cache *cache)
17
18
  {
@@ -43,11 +44,12 @@ int git_attr_cache__alloc_file_entry(
43
44
  const char *path,
44
45
  git_pool *pool)
45
46
  {
47
+ git_str fullpath_str = GIT_STR_INIT;
46
48
  size_t baselen = 0, pathlen = strlen(path);
47
49
  size_t cachesize = sizeof(git_attr_file_entry) + pathlen + 1;
48
50
  git_attr_file_entry *ce;
49
51
 
50
- if (base != NULL && git_path_root(path) < 0) {
52
+ if (base != NULL && git_fs_path_root(path) < 0) {
51
53
  baselen = strlen(base);
52
54
  cachesize += baselen;
53
55
 
@@ -66,7 +68,10 @@ int git_attr_cache__alloc_file_entry(
66
68
  }
67
69
  memcpy(&ce->fullpath[baselen], path, pathlen);
68
70
 
69
- if (git_path_validate_workdir_with_len(repo, ce->fullpath, pathlen + baselen) < 0)
71
+ fullpath_str.ptr = ce->fullpath;
72
+ fullpath_str.size = pathlen + baselen;
73
+
74
+ if (git_path_validate_str_length(repo, &fullpath_str) < 0)
70
75
  return -1;
71
76
 
72
77
  ce->path = &ce->fullpath[baselen];
@@ -161,7 +166,7 @@ static int attr_cache_lookup(
161
166
  git_attr_file_source *source)
162
167
  {
163
168
  int error = 0;
164
- git_buf path = GIT_BUF_INIT;
169
+ git_str path = GIT_STR_INIT;
165
170
  const char *wd = git_repository_workdir(repo);
166
171
  const char *filename;
167
172
  git_attr_cache *cache = git_repository_attr_cache(repo);
@@ -169,11 +174,11 @@ static int attr_cache_lookup(
169
174
  git_attr_file *file = NULL;
170
175
 
171
176
  /* join base and path as needed */
172
- if (source->base != NULL && git_path_root(source->filename) < 0) {
173
- git_buf *p = attr_session ? &attr_session->tmp : &path;
177
+ if (source->base != NULL && git_fs_path_root(source->filename) < 0) {
178
+ git_str *p = attr_session ? &attr_session->tmp : &path;
174
179
 
175
- if (git_buf_joinpath(p, source->base, source->filename) < 0 ||
176
- git_path_validate_workdir_buf(repo, p) < 0)
180
+ if (git_str_joinpath(p, source->base, source->filename) < 0 ||
181
+ git_path_validate_str_length(repo, p) < 0)
177
182
  return -1;
178
183
 
179
184
  filename = p->ptr;
@@ -203,7 +208,7 @@ cleanup:
203
208
  *out_file = file;
204
209
  *out_entry = entry;
205
210
 
206
- git_buf_dispose(&path);
211
+ git_str_dispose(&path);
207
212
  return error;
208
213
  }
209
214
 
@@ -281,7 +286,7 @@ bool git_attr_cache__is_cached(
281
286
  static int attr_cache__lookup_path(
282
287
  char **out, git_config *cfg, const char *key, const char *fallback)
283
288
  {
284
- git_buf buf = GIT_BUF_INIT;
289
+ git_str buf = GIT_STR_INIT;
285
290
  int error;
286
291
  git_config_entry *entry = NULL;
287
292
 
@@ -296,17 +301,17 @@ static int attr_cache__lookup_path(
296
301
  /* expand leading ~/ as needed */
297
302
  if (cfgval && cfgval[0] == '~' && cfgval[1] == '/') {
298
303
  if (! (error = git_sysdir_expand_global_file(&buf, &cfgval[2])))
299
- *out = git_buf_detach(&buf);
304
+ *out = git_str_detach(&buf);
300
305
  } else if (cfgval) {
301
306
  *out = git__strdup(cfgval);
302
307
  }
303
308
  }
304
309
  else if (!git_sysdir_find_xdg_file(&buf, fallback)) {
305
- *out = git_buf_detach(&buf);
310
+ *out = git_str_detach(&buf);
306
311
  }
307
312
 
308
313
  git_config_entry_free(entry);
309
- git_buf_dispose(&buf);
314
+ git_str_dispose(&buf);
310
315
 
311
316
  return error;
312
317
  }
@@ -393,7 +393,7 @@ static void fill_origin_blob(git_blame__origin *o, mmfile_t *file)
393
393
  memset(file, 0, sizeof(*file));
394
394
  if (o->blob) {
395
395
  file->ptr = (char*)git_blob_rawcontent(o->blob);
396
- file->size = (size_t)git_blob_rawsize(o->blob);
396
+ file->size = (long)git_blob_rawsize(o->blob);
397
397
  }
398
398
  }
399
399
 
@@ -12,6 +12,7 @@
12
12
  #include "git2/repository.h"
13
13
  #include "git2/odb_backend.h"
14
14
 
15
+ #include "buf.h"
15
16
  #include "filebuf.h"
16
17
  #include "filter.h"
17
18
 
@@ -35,12 +36,12 @@ git_object_size_t git_blob_rawsize(const git_blob *blob)
35
36
  return (git_object_size_t)git_odb_object_size(blob->data.odb);
36
37
  }
37
38
 
38
- int git_blob__getbuf(git_buf *buffer, git_blob *blob)
39
+ int git_blob__getbuf(git_str *buffer, git_blob *blob)
39
40
  {
40
41
  git_object_size_t size = git_blob_rawsize(blob);
41
42
 
42
43
  GIT_ERROR_CHECK_BLOBSIZE(size);
43
- return git_buf_set(buffer, git_blob_rawcontent(blob), (size_t)size);
44
+ return git_str_set(buffer, git_blob_rawcontent(blob), (size_t)size);
44
45
  }
45
46
 
46
47
  void git_blob__free(void *_blob)
@@ -142,9 +143,9 @@ static int write_file_filtered(
142
143
  git_repository* repo)
143
144
  {
144
145
  int error;
145
- git_buf tgt = GIT_BUF_INIT;
146
+ git_str tgt = GIT_STR_INIT;
146
147
 
147
- error = git_filter_list_apply_to_file(&tgt, fl, repo, full_path);
148
+ error = git_filter_list__apply_to_file(&tgt, fl, repo, full_path);
148
149
 
149
150
  /* Write the file to disk if it was properly filtered */
150
151
  if (!error) {
@@ -153,7 +154,7 @@ static int write_file_filtered(
153
154
  error = git_odb_write(id, odb, tgt.ptr, tgt.size, GIT_OBJECT_BLOB);
154
155
  }
155
156
 
156
- git_buf_dispose(&tgt);
157
+ git_str_dispose(&tgt);
157
158
  return error;
158
159
  }
159
160
 
@@ -193,7 +194,7 @@ int git_blob__create_from_paths(
193
194
  git_odb *odb = NULL;
194
195
  git_object_size_t size;
195
196
  mode_t mode;
196
- git_buf path = GIT_BUF_INIT;
197
+ git_str path = GIT_STR_INIT;
197
198
 
198
199
  GIT_ASSERT_ARG(hint_path || !try_load_filters);
199
200
 
@@ -204,7 +205,7 @@ int git_blob__create_from_paths(
204
205
  content_path = path.ptr;
205
206
  }
206
207
 
207
- if ((error = git_path_lstat(content_path, &st)) < 0 ||
208
+ if ((error = git_fs_path_lstat(content_path, &st)) < 0 ||
208
209
  (error = git_repository_odb(&odb, repo)) < 0)
209
210
  goto done;
210
211
 
@@ -261,7 +262,7 @@ int git_blob__create_from_paths(
261
262
 
262
263
  done:
263
264
  git_odb_free(odb);
264
- git_buf_dispose(&path);
265
+ git_str_dispose(&path);
265
266
 
266
267
  return error;
267
268
  }
@@ -276,11 +277,11 @@ int git_blob_create_from_disk(
276
277
  git_oid *id, git_repository *repo, const char *path)
277
278
  {
278
279
  int error;
279
- git_buf full_path = GIT_BUF_INIT;
280
+ git_str full_path = GIT_STR_INIT;
280
281
  const char *workdir, *hintpath = NULL;
281
282
 
282
- if ((error = git_path_prettify(&full_path, path, NULL)) < 0) {
283
- git_buf_dispose(&full_path);
283
+ if ((error = git_fs_path_prettify(&full_path, path, NULL)) < 0) {
284
+ git_str_dispose(&full_path);
284
285
  return error;
285
286
  }
286
287
 
@@ -290,9 +291,9 @@ int git_blob_create_from_disk(
290
291
  hintpath = full_path.ptr + strlen(workdir);
291
292
 
292
293
  error = git_blob__create_from_paths(
293
- id, NULL, repo, git_buf_cstr(&full_path), hintpath, 0, !!hintpath);
294
+ id, NULL, repo, git_str_cstr(&full_path), hintpath, 0, !!hintpath);
294
295
 
295
- git_buf_dispose(&full_path);
296
+ git_str_dispose(&full_path);
296
297
  return error;
297
298
  }
298
299
 
@@ -330,7 +331,7 @@ static int blob_writestream_write(git_writestream *_stream, const char *buffer,
330
331
  int git_blob_create_from_stream(git_writestream **out, git_repository *repo, const char *hintpath)
331
332
  {
332
333
  int error;
333
- git_buf path = GIT_BUF_INIT;
334
+ git_str path = GIT_STR_INIT;
334
335
  blob_writestream *stream;
335
336
 
336
337
  GIT_ASSERT_ARG(out);
@@ -349,11 +350,11 @@ int git_blob_create_from_stream(git_writestream **out, git_repository *repo, con
349
350
  stream->parent.close = blob_writestream_close;
350
351
  stream->parent.free = blob_writestream_free;
351
352
 
352
- if ((error = git_repository_item_path(&path, repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0
353
- || (error = git_buf_joinpath(&path, path.ptr, "streamed")) < 0)
353
+ if ((error = git_repository__item_path(&path, repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0
354
+ || (error = git_str_joinpath(&path, path.ptr, "streamed")) < 0)
354
355
  goto cleanup;
355
356
 
356
- if ((error = git_filebuf_open_withsize(&stream->fbuf, git_buf_cstr(&path), GIT_FILEBUF_TEMPORARY,
357
+ if ((error = git_filebuf_open_withsize(&stream->fbuf, git_str_cstr(&path), GIT_FILEBUF_TEMPORARY,
357
358
  0666, 2 * 1024 * 1024)) < 0)
358
359
  goto cleanup;
359
360
 
@@ -363,7 +364,7 @@ cleanup:
363
364
  if (error < 0)
364
365
  blob_writestream_free((git_writestream *) stream);
365
366
 
366
- git_buf_dispose(&path);
367
+ git_str_dispose(&path);
367
368
  return error;
368
369
  }
369
370
 
@@ -391,16 +392,25 @@ cleanup:
391
392
 
392
393
  int git_blob_is_binary(const git_blob *blob)
393
394
  {
394
- git_buf content = GIT_BUF_INIT;
395
+ git_str content = GIT_STR_INIT;
395
396
  git_object_size_t size;
396
397
 
397
398
  GIT_ASSERT_ARG(blob);
398
399
 
399
400
  size = git_blob_rawsize(blob);
400
401
 
401
- git_buf_attach_notowned(&content, git_blob_rawcontent(blob),
402
+ git_str_attach_notowned(&content, git_blob_rawcontent(blob),
402
403
  (size_t)min(size, GIT_FILTER_BYTES_TO_CHECK_NUL));
403
- return git_buf_is_binary(&content);
404
+ return git_str_is_binary(&content);
405
+ }
406
+
407
+ int git_blob_data_is_binary(const char *str, size_t len)
408
+ {
409
+ git_str content = GIT_STR_INIT;
410
+
411
+ git_str_attach_notowned(&content, str, len);
412
+
413
+ return git_str_is_binary(&content);
404
414
  }
405
415
 
406
416
  int git_blob_filter_options_init(
@@ -418,10 +428,10 @@ int git_blob_filter(
418
428
  const char *path,
419
429
  git_blob_filter_options *given_opts)
420
430
  {
421
- int error = 0;
422
- git_filter_list *fl = NULL;
423
431
  git_blob_filter_options opts = GIT_BLOB_FILTER_OPTIONS_INIT;
424
432
  git_filter_options filter_opts = GIT_FILTER_OPTIONS_INIT;
433
+ git_filter_list *fl = NULL;
434
+ int error = 0;
425
435
 
426
436
  GIT_ASSERT_ARG(blob);
427
437
  GIT_ASSERT_ARG(path);
@@ -430,9 +440,6 @@ int git_blob_filter(
430
440
  GIT_ERROR_CHECK_VERSION(
431
441
  given_opts, GIT_BLOB_FILTER_OPTIONS_VERSION, "git_blob_filter_options");
432
442
 
433
- if (git_buf_sanitize(out) < 0)
434
- return -1;
435
-
436
443
  if (given_opts != NULL)
437
444
  memcpy(&opts, given_opts, sizeof(git_blob_filter_options));
438
445