rugged 1.3.2 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -10,10 +10,11 @@
10
10
  #include "runtime.h"
11
11
  #include "strmap.h"
12
12
  #include "hash.h"
13
+ #include "rand.h"
14
+
13
15
  #include <ctype.h>
14
- #if GIT_WIN32
15
- #include "win32/findfile.h"
16
- #endif
16
+
17
+ #define GIT_FILEMODE_DEFAULT 0100666
17
18
 
18
19
  int git_futils_mkpath2file(const char *file_path, const mode_t mode)
19
20
  {
@@ -22,32 +23,31 @@ int git_futils_mkpath2file(const char *file_path, const mode_t mode)
22
23
  GIT_MKDIR_PATH | GIT_MKDIR_SKIP_LAST | GIT_MKDIR_VERIFY_DIR);
23
24
  }
24
25
 
25
- int git_futils_mktmp(git_buf *path_out, const char *filename, mode_t mode)
26
+ int git_futils_mktmp(git_str *path_out, const char *filename, mode_t mode)
26
27
  {
28
+ const int open_flags = O_RDWR | O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC;
29
+ unsigned int tries = 32;
27
30
  int fd;
28
- mode_t mask;
29
31
 
30
- p_umask(mask = p_umask(0));
32
+ while (tries--) {
33
+ uint64_t rand = git_rand_next();
31
34
 
32
- git_buf_sets(path_out, filename);
33
- git_buf_puts(path_out, "_git2_XXXXXX");
34
-
35
- if (git_buf_oom(path_out))
36
- return -1;
35
+ git_str_sets(path_out, filename);
36
+ git_str_puts(path_out, "_git2_");
37
+ git_str_encode_hexstr(path_out, (void *)&rand, sizeof(uint64_t));
37
38
 
38
- if ((fd = p_mkstemp(path_out->ptr)) < 0) {
39
- git_error_set(GIT_ERROR_OS,
40
- "failed to create temporary file '%s'", path_out->ptr);
41
- return -1;
42
- }
39
+ if (git_str_oom(path_out))
40
+ return -1;
43
41
 
44
- if (p_chmod(path_out->ptr, (mode & ~mask))) {
45
- git_error_set(GIT_ERROR_OS,
46
- "failed to set permissions on file '%s'", path_out->ptr);
47
- return -1;
42
+ /* Note that we open with O_CREAT | O_EXCL */
43
+ if ((fd = p_open(path_out->ptr, open_flags, mode)) >= 0)
44
+ return fd;
48
45
  }
49
46
 
50
- return fd;
47
+ git_error_set(GIT_ERROR_OS,
48
+ "failed to create temporary file '%s'", path_out->ptr);
49
+ git_str_dispose(path_out);
50
+ return -1;
51
51
  }
52
52
 
53
53
  int git_futils_creat_withpath(const char *path, const mode_t dirmode, const mode_t mode)
@@ -99,7 +99,7 @@ int git_futils_open_ro(const char *path)
99
99
  {
100
100
  int fd = p_open(path, O_RDONLY);
101
101
  if (fd < 0)
102
- return git_path_set_error(errno, path, "open");
102
+ return git_fs_path_set_error(errno, path, "open");
103
103
  return fd;
104
104
  }
105
105
 
@@ -107,7 +107,7 @@ int git_futils_truncate(const char *path, int mode)
107
107
  {
108
108
  int fd = p_open(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, mode);
109
109
  if (fd < 0)
110
- return git_path_set_error(errno, path, "open");
110
+ return git_fs_path_set_error(errno, path, "open");
111
111
 
112
112
  close(fd);
113
113
  return 0;
@@ -145,12 +145,12 @@ mode_t git_futils_canonical_mode(mode_t raw_mode)
145
145
  return 0;
146
146
  }
147
147
 
148
- int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
148
+ int git_futils_readbuffer_fd(git_str *buf, git_file fd, size_t len)
149
149
  {
150
150
  ssize_t read_size = 0;
151
151
  size_t alloc_len;
152
152
 
153
- git_buf_clear(buf);
153
+ git_str_clear(buf);
154
154
 
155
155
  if (!git__is_ssizet(len)) {
156
156
  git_error_set(GIT_ERROR_INVALID, "read too large");
@@ -158,15 +158,21 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
158
158
  }
159
159
 
160
160
  GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, len, 1);
161
- if (git_buf_grow(buf, alloc_len) < 0)
161
+ if (git_str_grow(buf, alloc_len) < 0)
162
162
  return -1;
163
163
 
164
164
  /* p_read loops internally to read len bytes */
165
165
  read_size = p_read(fd, buf->ptr, len);
166
166
 
167
- if (read_size != (ssize_t)len) {
167
+ if (read_size < 0) {
168
168
  git_error_set(GIT_ERROR_OS, "failed to read descriptor");
169
- git_buf_dispose(buf);
169
+ git_str_dispose(buf);
170
+ return -1;
171
+ }
172
+
173
+ if ((size_t)read_size != len) {
174
+ git_error_set(GIT_ERROR_FILESYSTEM, "could not read (expected %" PRIuZ " bytes, read %" PRIuZ ")", len, (size_t)read_size);
175
+ git_str_dispose(buf);
170
176
  return -1;
171
177
  }
172
178
 
@@ -176,14 +182,53 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
176
182
  return 0;
177
183
  }
178
184
 
185
+ int git_futils_readbuffer_fd_full(git_str *buf, git_file fd)
186
+ {
187
+ static size_t blocksize = 10240;
188
+ size_t alloc_len = 0, total_size = 0;
189
+ ssize_t read_size = 0;
190
+
191
+ git_str_clear(buf);
192
+
193
+ while (true) {
194
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, blocksize);
195
+
196
+ if (git_str_grow(buf, alloc_len) < 0)
197
+ return -1;
198
+
199
+ /* p_read loops internally to read blocksize bytes */
200
+ read_size = p_read(fd, buf->ptr, blocksize);
201
+
202
+ if (read_size < 0) {
203
+ git_error_set(GIT_ERROR_OS, "failed to read descriptor");
204
+ git_str_dispose(buf);
205
+ return -1;
206
+ }
207
+
208
+ total_size += read_size;
209
+
210
+ if ((size_t)read_size < blocksize) {
211
+ break;
212
+ }
213
+ }
214
+
215
+ buf->ptr[total_size] = '\0';
216
+ buf->size = total_size;
217
+
218
+ return 0;
219
+ }
220
+
179
221
  int git_futils_readbuffer_updated(
180
- git_buf *out, const char *path, git_oid *checksum, int *updated)
222
+ git_str *out,
223
+ const char *path,
224
+ unsigned char checksum[GIT_HASH_SHA1_SIZE],
225
+ int *updated)
181
226
  {
182
227
  int error;
183
228
  git_file fd;
184
229
  struct stat st;
185
- git_buf buf = GIT_BUF_INIT;
186
- git_oid checksum_new;
230
+ git_str buf = GIT_STR_INIT;
231
+ unsigned char checksum_new[GIT_HASH_SHA1_SIZE];
187
232
 
188
233
  GIT_ASSERT_ARG(out);
189
234
  GIT_ASSERT_ARG(path && *path);
@@ -192,7 +237,7 @@ int git_futils_readbuffer_updated(
192
237
  *updated = 0;
193
238
 
194
239
  if (p_stat(path, &st) < 0)
195
- return git_path_set_error(errno, path, "stat");
240
+ return git_fs_path_set_error(errno, path, "stat");
196
241
 
197
242
 
198
243
  if (S_ISDIR(st.st_mode)) {
@@ -216,23 +261,23 @@ int git_futils_readbuffer_updated(
216
261
  p_close(fd);
217
262
 
218
263
  if (checksum) {
219
- if ((error = git_hash_buf(&checksum_new, buf.ptr, buf.size)) < 0) {
220
- git_buf_dispose(&buf);
264
+ if ((error = git_hash_buf(checksum_new, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA1)) < 0) {
265
+ git_str_dispose(&buf);
221
266
  return error;
222
267
  }
223
268
 
224
269
  /*
225
270
  * If we were given a checksum, we only want to use it if it's different
226
271
  */
227
- if (!git_oid__cmp(checksum, &checksum_new)) {
228
- git_buf_dispose(&buf);
272
+ if (!memcmp(checksum, checksum_new, GIT_HASH_SHA1_SIZE)) {
273
+ git_str_dispose(&buf);
229
274
  if (updated)
230
275
  *updated = 0;
231
276
 
232
277
  return 0;
233
278
  }
234
279
 
235
- git_oid_cpy(checksum, &checksum_new);
280
+ memcpy(checksum, checksum_new, GIT_HASH_SHA1_SIZE);
236
281
  }
237
282
 
238
283
  /*
@@ -241,19 +286,19 @@ int git_futils_readbuffer_updated(
241
286
  if (updated != NULL)
242
287
  *updated = 1;
243
288
 
244
- git_buf_swap(out, &buf);
245
- git_buf_dispose(&buf);
289
+ git_str_swap(out, &buf);
290
+ git_str_dispose(&buf);
246
291
 
247
292
  return 0;
248
293
  }
249
294
 
250
- int git_futils_readbuffer(git_buf *buf, const char *path)
295
+ int git_futils_readbuffer(git_str *buf, const char *path)
251
296
  {
252
297
  return git_futils_readbuffer_updated(buf, path, NULL, NULL);
253
298
  }
254
299
 
255
300
  int git_futils_writebuffer(
256
- const git_buf *buf, const char *path, int flags, mode_t mode)
301
+ const git_str *buf, const char *path, int flags, mode_t mode)
257
302
  {
258
303
  int fd, do_fsync = 0, error = 0;
259
304
 
@@ -266,14 +311,14 @@ int git_futils_writebuffer(
266
311
  flags &= ~O_FSYNC;
267
312
 
268
313
  if (!mode)
269
- mode = GIT_FILEMODE_BLOB;
314
+ mode = GIT_FILEMODE_DEFAULT;
270
315
 
271
316
  if ((fd = p_open(path, flags, mode)) < 0) {
272
317
  git_error_set(GIT_ERROR_OS, "could not open '%s' for writing", path);
273
318
  return fd;
274
319
  }
275
320
 
276
- if ((error = p_write(fd, git_buf_cstr(buf), git_buf_len(buf))) < 0) {
321
+ if ((error = p_write(fd, git_str_cstr(buf), git_str_len(buf))) < 0) {
277
322
  git_error_set(GIT_ERROR_OS, "could not write to '%s'", path);
278
323
  (void)p_close(fd);
279
324
  return error;
@@ -415,7 +460,7 @@ GIT_INLINE(int) mkdir_validate_mode(
415
460
  }
416
461
 
417
462
  GIT_INLINE(int) mkdir_canonicalize(
418
- git_buf *path,
463
+ git_str *path,
419
464
  uint32_t flags)
420
465
  {
421
466
  ssize_t root_len;
@@ -426,7 +471,7 @@ GIT_INLINE(int) mkdir_canonicalize(
426
471
  }
427
472
 
428
473
  /* Trim trailing slashes (except the root) */
429
- if ((root_len = git_path_root(path->ptr)) < 0)
474
+ if ((root_len = git_fs_path_root(path->ptr)) < 0)
430
475
  root_len = 0;
431
476
  else
432
477
  root_len++;
@@ -436,18 +481,18 @@ GIT_INLINE(int) mkdir_canonicalize(
436
481
 
437
482
  /* if we are not supposed to made the last element, truncate it */
438
483
  if ((flags & GIT_MKDIR_SKIP_LAST2) != 0) {
439
- git_path_dirname_r(path, path->ptr);
484
+ git_fs_path_dirname_r(path, path->ptr);
440
485
  flags |= GIT_MKDIR_SKIP_LAST;
441
486
  }
442
487
  if ((flags & GIT_MKDIR_SKIP_LAST) != 0) {
443
- git_path_dirname_r(path, path->ptr);
488
+ git_fs_path_dirname_r(path, path->ptr);
444
489
  }
445
490
 
446
491
  /* We were either given the root path (or trimmed it to
447
492
  * the root), we don't have anything to do.
448
493
  */
449
494
  if (path->size <= (size_t)root_len)
450
- git_buf_clear(path);
495
+ git_str_clear(path);
451
496
 
452
497
  return 0;
453
498
  }
@@ -457,20 +502,20 @@ int git_futils_mkdir(
457
502
  mode_t mode,
458
503
  uint32_t flags)
459
504
  {
460
- git_buf make_path = GIT_BUF_INIT, parent_path = GIT_BUF_INIT;
505
+ git_str make_path = GIT_STR_INIT, parent_path = GIT_STR_INIT;
461
506
  const char *relative;
462
507
  struct git_futils_mkdir_options opts = { 0 };
463
508
  struct stat st;
464
509
  size_t depth = 0;
465
510
  int len = 0, root_len, error;
466
511
 
467
- if ((error = git_buf_puts(&make_path, path)) < 0 ||
512
+ if ((error = git_str_puts(&make_path, path)) < 0 ||
468
513
  (error = mkdir_canonicalize(&make_path, flags)) < 0 ||
469
- (error = git_buf_puts(&parent_path, make_path.ptr)) < 0 ||
514
+ (error = git_str_puts(&parent_path, make_path.ptr)) < 0 ||
470
515
  make_path.size == 0)
471
516
  goto done;
472
517
 
473
- root_len = git_path_root(make_path.ptr);
518
+ root_len = git_fs_path_root(make_path.ptr);
474
519
 
475
520
  /* find the first parent directory that exists. this will be used
476
521
  * as the base to dirname_relative.
@@ -489,7 +534,7 @@ int git_futils_mkdir(
489
534
  depth++;
490
535
 
491
536
  /* examine the parent of the current path */
492
- if ((len = git_path_dirname_r(&parent_path, parent_path.ptr)) < 0) {
537
+ if ((len = git_fs_path_dirname_r(&parent_path, parent_path.ptr)) < 0) {
493
538
  error = len;
494
539
  goto done;
495
540
  }
@@ -538,8 +583,8 @@ int git_futils_mkdir(
538
583
  parent_path.size ? parent_path.ptr : NULL, mode, flags, &opts);
539
584
 
540
585
  done:
541
- git_buf_dispose(&make_path);
542
- git_buf_dispose(&parent_path);
586
+ git_str_dispose(&make_path);
587
+ git_str_dispose(&parent_path);
543
588
  return error;
544
589
  }
545
590
 
@@ -555,7 +600,7 @@ int git_futils_mkdir_relative(
555
600
  uint32_t flags,
556
601
  struct git_futils_mkdir_options *opts)
557
602
  {
558
- git_buf make_path = GIT_BUF_INIT;
603
+ git_str make_path = GIT_STR_INIT;
559
604
  ssize_t root = 0, min_root_len;
560
605
  char lastch = '/', *tail;
561
606
  struct stat st;
@@ -566,7 +611,7 @@ int git_futils_mkdir_relative(
566
611
  opts = &empty_opts;
567
612
 
568
613
  /* build path and find "root" where we should start calling mkdir */
569
- if (git_path_join_unrooted(&make_path, relative_path, base, &root) < 0)
614
+ if (git_fs_path_join_unrooted(&make_path, relative_path, base, &root) < 0)
570
615
  return -1;
571
616
 
572
617
  if ((error = mkdir_canonicalize(&make_path, flags)) < 0 ||
@@ -575,10 +620,10 @@ int git_futils_mkdir_relative(
575
620
 
576
621
  /* if we are not supposed to make the whole path, reset root */
577
622
  if ((flags & GIT_MKDIR_PATH) == 0)
578
- root = git_buf_rfind(&make_path, '/');
623
+ root = git_str_rfind(&make_path, '/');
579
624
 
580
625
  /* advance root past drive name or network mount prefix */
581
- min_root_len = git_path_root(make_path.ptr);
626
+ min_root_len = git_fs_path_root(make_path.ptr);
582
627
  if (root < min_root_len)
583
628
  root = min_root_len;
584
629
  while (root >= 0 && make_path.ptr[root] == '/')
@@ -670,7 +715,7 @@ retry_lstat:
670
715
  }
671
716
 
672
717
  done:
673
- git_buf_dispose(&make_path);
718
+ git_str_dispose(&make_path);
674
719
  return error;
675
720
  }
676
721
 
@@ -694,13 +739,13 @@ static int futils__error_cannot_rmdir(const char *path, const char *filemsg)
694
739
  return -1;
695
740
  }
696
741
 
697
- static int futils__rm_first_parent(git_buf *path, const char *ceiling)
742
+ static int futils__rm_first_parent(git_str *path, const char *ceiling)
698
743
  {
699
744
  int error = GIT_ENOTFOUND;
700
745
  struct stat st;
701
746
 
702
747
  while (error == GIT_ENOTFOUND) {
703
- git_buf_rtruncate_at_char(path, '/');
748
+ git_str_rtruncate_at_char(path, '/');
704
749
 
705
750
  if (!path->size || git__prefixcmp(path->ptr, ceiling) != 0)
706
751
  error = 0;
@@ -719,7 +764,7 @@ static int futils__rm_first_parent(git_buf *path, const char *ceiling)
719
764
  return error;
720
765
  }
721
766
 
722
- static int futils__rmdir_recurs_foreach(void *opaque, git_buf *path)
767
+ static int futils__rmdir_recurs_foreach(void *opaque, git_str *path)
723
768
  {
724
769
  int error = 0;
725
770
  futils__rmdir_data *data = opaque;
@@ -741,13 +786,13 @@ static int futils__rmdir_recurs_foreach(void *opaque, git_buf *path)
741
786
  path->ptr, "parent is not directory");
742
787
  }
743
788
  else
744
- error = git_path_set_error(errno, path->ptr, "rmdir");
789
+ error = git_fs_path_set_error(errno, path->ptr, "rmdir");
745
790
  }
746
791
 
747
792
  else if (S_ISDIR(st.st_mode)) {
748
793
  data->depth++;
749
794
 
750
- error = git_path_direach(path, 0, futils__rmdir_recurs_foreach, data);
795
+ error = git_fs_path_direach(path, 0, futils__rmdir_recurs_foreach, data);
751
796
 
752
797
  data->depth--;
753
798
 
@@ -762,13 +807,13 @@ static int futils__rmdir_recurs_foreach(void *opaque, git_buf *path)
762
807
  (errno == ENOTEMPTY || errno == EEXIST || errno == EBUSY))
763
808
  error = 0;
764
809
  else
765
- error = git_path_set_error(errno, path->ptr, "rmdir");
810
+ error = git_fs_path_set_error(errno, path->ptr, "rmdir");
766
811
  }
767
812
  }
768
813
 
769
814
  else if ((data->flags & GIT_RMDIR_REMOVE_FILES) != 0) {
770
815
  if (p_unlink(path->ptr) < 0)
771
- error = git_path_set_error(errno, path->ptr, "remove");
816
+ error = git_fs_path_set_error(errno, path->ptr, "remove");
772
817
  }
773
818
 
774
819
  else if ((data->flags & GIT_RMDIR_SKIP_NONEMPTY) == 0)
@@ -792,11 +837,11 @@ static int futils__rmdir_empty_parent(void *opaque, const char *path)
792
837
  /* do nothing */
793
838
  } else if ((data->flags & GIT_RMDIR_SKIP_NONEMPTY) == 0 &&
794
839
  en == EBUSY) {
795
- error = git_path_set_error(errno, path, "rmdir");
840
+ error = git_fs_path_set_error(errno, path, "rmdir");
796
841
  } else if (en == ENOTEMPTY || en == EEXIST || en == EBUSY) {
797
842
  error = GIT_ITEROVER;
798
843
  } else {
799
- error = git_path_set_error(errno, path, "rmdir");
844
+ error = git_fs_path_set_error(errno, path, "rmdir");
800
845
  }
801
846
  }
802
847
 
@@ -807,11 +852,11 @@ int git_futils_rmdir_r(
807
852
  const char *path, const char *base, uint32_t flags)
808
853
  {
809
854
  int error;
810
- git_buf fullpath = GIT_BUF_INIT;
855
+ git_str fullpath = GIT_STR_INIT;
811
856
  futils__rmdir_data data;
812
857
 
813
858
  /* build path and find "root" where we should start calling mkdir */
814
- if (git_path_join_unrooted(&fullpath, path, base, NULL) < 0)
859
+ if (git_fs_path_join_unrooted(&fullpath, path, base, NULL) < 0)
815
860
  return -1;
816
861
 
817
862
  memset(&data, 0, sizeof(data));
@@ -823,7 +868,7 @@ int git_futils_rmdir_r(
823
868
 
824
869
  /* remove now-empty parents if requested */
825
870
  if (!error && (flags & GIT_RMDIR_EMPTY_PARENTS) != 0)
826
- error = git_path_walk_up(
871
+ error = git_fs_path_walk_up(
827
872
  &fullpath, base, futils__rmdir_empty_parent, &data);
828
873
 
829
874
  if (error == GIT_ITEROVER) {
@@ -831,7 +876,7 @@ int git_futils_rmdir_r(
831
876
  error = 0;
832
877
  }
833
878
 
834
- git_buf_dispose(&fullpath);
879
+ git_str_dispose(&fullpath);
835
880
 
836
881
  return error;
837
882
  }
@@ -850,7 +895,7 @@ int git_futils_fake_symlink(const char *target, const char *path)
850
895
  static int cp_by_fd(int ifd, int ofd, bool close_fd_when_done)
851
896
  {
852
897
  int error = 0;
853
- char buffer[FILEIO_BUFSIZE];
898
+ char buffer[GIT_BUFSIZE_FILEIO];
854
899
  ssize_t len = 0;
855
900
 
856
901
  while (!error && (len = p_read(ifd, buffer, sizeof(buffer))) > 0)
@@ -884,7 +929,7 @@ int git_futils_cp(const char *from, const char *to, mode_t filemode)
884
929
 
885
930
  if ((ofd = p_open(to, O_WRONLY | O_CREAT | O_EXCL, filemode)) < 0) {
886
931
  p_close(ifd);
887
- return git_path_set_error(errno, to, "open for writing");
932
+ return git_fs_path_set_error(errno, to, "open for writing");
888
933
  }
889
934
 
890
935
  return cp_by_fd(ifd, ofd, true);
@@ -900,7 +945,7 @@ int git_futils_touch(const char *path, time_t *when)
900
945
 
901
946
  ret = p_utimes(path, times);
902
947
 
903
- return (ret < 0) ? git_path_set_error(errno, path, "touch") : 0;
948
+ return (ret < 0) ? git_fs_path_set_error(errno, path, "touch") : 0;
904
949
  }
905
950
 
906
951
  static int cp_link(const char *from, const char *to, size_t link_size)
@@ -935,7 +980,7 @@ static int cp_link(const char *from, const char *to, size_t link_size)
935
980
 
936
981
  typedef struct {
937
982
  const char *to_root;
938
- git_buf to;
983
+ git_str to;
939
984
  ssize_t from_prefix;
940
985
  uint32_t flags;
941
986
  uint32_t mkdir_flags;
@@ -944,7 +989,7 @@ typedef struct {
944
989
 
945
990
  #define GIT_CPDIR__MKDIR_DONE_FOR_TO_ROOT (1u << 10)
946
991
 
947
- static int _cp_r_mkdir(cp_r_info *info, git_buf *from)
992
+ static int _cp_r_mkdir(cp_r_info *info, git_str *from)
948
993
  {
949
994
  int error = 0;
950
995
 
@@ -966,7 +1011,7 @@ static int _cp_r_mkdir(cp_r_info *info, git_buf *from)
966
1011
  return error;
967
1012
  }
968
1013
 
969
- static int _cp_r_callback(void *ref, git_buf *from)
1014
+ static int _cp_r_callback(void *ref, git_str *from)
970
1015
  {
971
1016
  int error = 0;
972
1017
  cp_r_info *info = ref;
@@ -974,14 +1019,14 @@ static int _cp_r_callback(void *ref, git_buf *from)
974
1019
  bool exists = false;
975
1020
 
976
1021
  if ((info->flags & GIT_CPDIR_COPY_DOTFILES) == 0 &&
977
- from->ptr[git_path_basename_offset(from)] == '.')
1022
+ from->ptr[git_fs_path_basename_offset(from)] == '.')
978
1023
  return 0;
979
1024
 
980
- if ((error = git_buf_joinpath(
1025
+ if ((error = git_str_joinpath(
981
1026
  &info->to, info->to_root, from->ptr + info->from_prefix)) < 0)
982
1027
  return error;
983
1028
 
984
- if (!(error = git_path_lstat(info->to.ptr, &to_st)))
1029
+ if (!(error = git_fs_path_lstat(info->to.ptr, &to_st)))
985
1030
  exists = true;
986
1031
  else if (error != GIT_ENOTFOUND)
987
1032
  return error;
@@ -990,7 +1035,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
990
1035
  error = 0;
991
1036
  }
992
1037
 
993
- if ((error = git_path_lstat(from->ptr, &from_st)) < 0)
1038
+ if ((error = git_fs_path_lstat(from->ptr, &from_st)) < 0)
994
1039
  return error;
995
1040
 
996
1041
  if (S_ISDIR(from_st.st_mode)) {
@@ -1006,7 +1051,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
1006
1051
 
1007
1052
  /* recurse onto target directory */
1008
1053
  if (!error && (!exists || S_ISDIR(to_st.st_mode)))
1009
- error = git_path_direach(from, 0, _cp_r_callback, info);
1054
+ error = git_fs_path_direach(from, 0, _cp_r_callback, info);
1010
1055
 
1011
1056
  if (oldmode != 0)
1012
1057
  info->dirmode = oldmode;
@@ -1061,10 +1106,10 @@ int git_futils_cp_r(
1061
1106
  mode_t dirmode)
1062
1107
  {
1063
1108
  int error;
1064
- git_buf path = GIT_BUF_INIT;
1109
+ git_str path = GIT_STR_INIT;
1065
1110
  cp_r_info info;
1066
1111
 
1067
- if (git_buf_joinpath(&path, from, "") < 0) /* ensure trailing slash */
1112
+ if (git_str_joinpath(&path, from, "") < 0) /* ensure trailing slash */
1068
1113
  return -1;
1069
1114
 
1070
1115
  memset(&info, 0, sizeof(info));
@@ -1072,7 +1117,7 @@ int git_futils_cp_r(
1072
1117
  info.flags = flags;
1073
1118
  info.dirmode = dirmode;
1074
1119
  info.from_prefix = path.size;
1075
- git_buf_init(&info.to, 0);
1120
+ git_str_init(&info.to, 0);
1076
1121
 
1077
1122
  /* precalculate mkdir flags */
1078
1123
  if ((flags & GIT_CPDIR_CREATE_EMPTY_DIRS) == 0) {
@@ -1090,8 +1135,8 @@ int git_futils_cp_r(
1090
1135
 
1091
1136
  error = _cp_r_callback(&info, &path);
1092
1137
 
1093
- git_buf_dispose(&path);
1094
- git_buf_dispose(&info.to);
1138
+ git_str_dispose(&path);
1139
+ git_str_dispose(&info.to);
1095
1140
 
1096
1141
  return error;
1097
1142
  }
@@ -1179,7 +1224,7 @@ int git_futils_fsync_parent(const char *path)
1179
1224
  char *parent;
1180
1225
  int error;
1181
1226
 
1182
- if ((parent = git_path_dirname(path)) == NULL)
1227
+ if ((parent = git_fs_path_dirname(path)) == NULL)
1183
1228
  return -1;
1184
1229
 
1185
1230
  error = git_futils_fsync_dir(parent);