rugged 0.27.7 → 0.27.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -5,7 +5,7 @@
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
7
 
8
- #include "fileops.h"
8
+ #include "futils.h"
9
9
 
10
10
  #include "global.h"
11
11
  #include "strmap.h"
@@ -35,13 +35,13 @@ int git_futils_mktmp(git_buf *path_out, const char *filename, mode_t mode)
35
35
  return -1;
36
36
 
37
37
  if ((fd = p_mkstemp(path_out->ptr)) < 0) {
38
- giterr_set(GITERR_OS,
38
+ git_error_set(GIT_ERROR_OS,
39
39
  "failed to create temporary file '%s'", path_out->ptr);
40
40
  return -1;
41
41
  }
42
42
 
43
43
  if (p_chmod(path_out->ptr, (mode & ~mask))) {
44
- giterr_set(GITERR_OS,
44
+ git_error_set(GIT_ERROR_OS,
45
45
  "failed to set permissions on file '%s'", path_out->ptr);
46
46
  return -1;
47
47
  }
@@ -58,7 +58,7 @@ int git_futils_creat_withpath(const char *path, const mode_t dirmode, const mode
58
58
 
59
59
  fd = p_creat(path, mode);
60
60
  if (fd < 0) {
61
- giterr_set(GITERR_OS, "failed to create file '%s'", path);
61
+ git_error_set(GIT_ERROR_OS, "failed to create file '%s'", path);
62
62
  return -1;
63
63
  }
64
64
 
@@ -72,7 +72,7 @@ int git_futils_creat_locked(const char *path, const mode_t mode)
72
72
 
73
73
  if (fd < 0) {
74
74
  int error = errno;
75
- giterr_set(GITERR_OS, "failed to create locked file '%s'", path);
75
+ git_error_set(GIT_ERROR_OS, "failed to create locked file '%s'", path);
76
76
  switch (error) {
77
77
  case EEXIST:
78
78
  return GIT_ELOCKED;
@@ -112,16 +112,22 @@ int git_futils_truncate(const char *path, int mode)
112
112
  return 0;
113
113
  }
114
114
 
115
- git_off_t git_futils_filesize(git_file fd)
115
+ int git_futils_filesize(uint64_t *out, git_file fd)
116
116
  {
117
117
  struct stat sb;
118
118
 
119
119
  if (p_fstat(fd, &sb)) {
120
- giterr_set(GITERR_OS, "failed to stat file descriptor");
120
+ git_error_set(GIT_ERROR_OS, "failed to stat file descriptor");
121
121
  return -1;
122
122
  }
123
123
 
124
- return sb.st_size;
124
+ if (sb.st_size < 0) {
125
+ git_error_set(GIT_ERROR_INVALID, "invalid file size");
126
+ return -1;
127
+ }
128
+
129
+ *out = sb.st_size;
130
+ return 0;
125
131
  }
126
132
 
127
133
  mode_t git_futils_canonical_mode(mode_t raw_mode)
@@ -146,11 +152,11 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
146
152
  git_buf_clear(buf);
147
153
 
148
154
  if (!git__is_ssizet(len)) {
149
- giterr_set(GITERR_INVALID, "read too large");
155
+ git_error_set(GIT_ERROR_INVALID, "read too large");
150
156
  return -1;
151
157
  }
152
158
 
153
- GITERR_CHECK_ALLOC_ADD(&alloc_len, len, 1);
159
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, len, 1);
154
160
  if (git_buf_grow(buf, alloc_len) < 0)
155
161
  return -1;
156
162
 
@@ -158,7 +164,7 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
158
164
  read_size = p_read(fd, buf->ptr, len);
159
165
 
160
166
  if (read_size != (ssize_t)len) {
161
- giterr_set(GITERR_OS, "failed to read descriptor");
167
+ git_error_set(GIT_ERROR_OS, "failed to read descriptor");
162
168
  git_buf_dispose(buf);
163
169
  return -1;
164
170
  }
@@ -188,12 +194,12 @@ int git_futils_readbuffer_updated(
188
194
 
189
195
 
190
196
  if (S_ISDIR(st.st_mode)) {
191
- giterr_set(GITERR_INVALID, "requested file is a directory");
197
+ git_error_set(GIT_ERROR_INVALID, "requested file is a directory");
192
198
  return GIT_ENOTFOUND;
193
199
  }
194
200
 
195
201
  if (!git__is_sizet(st.st_size+1)) {
196
- giterr_set(GITERR_OS, "invalid regular file stat for '%s'", path);
202
+ git_error_set(GIT_ERROR_OS, "invalid regular file stat for '%s'", path);
197
203
  return -1;
198
204
  }
199
205
 
@@ -261,24 +267,24 @@ int git_futils_writebuffer(
261
267
  mode = GIT_FILEMODE_BLOB;
262
268
 
263
269
  if ((fd = p_open(path, flags, mode)) < 0) {
264
- giterr_set(GITERR_OS, "could not open '%s' for writing", path);
270
+ git_error_set(GIT_ERROR_OS, "could not open '%s' for writing", path);
265
271
  return fd;
266
272
  }
267
273
 
268
274
  if ((error = p_write(fd, git_buf_cstr(buf), git_buf_len(buf))) < 0) {
269
- giterr_set(GITERR_OS, "could not write to '%s'", path);
275
+ git_error_set(GIT_ERROR_OS, "could not write to '%s'", path);
270
276
  (void)p_close(fd);
271
277
  return error;
272
278
  }
273
279
 
274
280
  if (do_fsync && (error = p_fsync(fd)) < 0) {
275
- giterr_set(GITERR_OS, "could not fsync '%s'", path);
281
+ git_error_set(GIT_ERROR_OS, "could not fsync '%s'", path);
276
282
  p_close(fd);
277
283
  return error;
278
284
  }
279
285
 
280
286
  if ((error = p_close(fd)) < 0) {
281
- giterr_set(GITERR_OS, "error while closing '%s'", path);
287
+ git_error_set(GIT_ERROR_OS, "error while closing '%s'", path);
282
288
  return error;
283
289
  }
284
290
 
@@ -294,14 +300,14 @@ int git_futils_mv_withpath(const char *from, const char *to, const mode_t dirmod
294
300
  return -1;
295
301
 
296
302
  if (p_rename(from, to) < 0) {
297
- giterr_set(GITERR_OS, "failed to rename '%s' to '%s'", from, to);
303
+ git_error_set(GIT_ERROR_OS, "failed to rename '%s' to '%s'", from, to);
298
304
  return -1;
299
305
  }
300
306
 
301
307
  return 0;
302
308
  }
303
309
 
304
- int git_futils_mmap_ro(git_map *out, git_file fd, git_off_t begin, size_t len)
310
+ int git_futils_mmap_ro(git_map *out, git_file fd, off64_t begin, size_t len)
305
311
  {
306
312
  return p_mmap(out, len, GIT_PROT_READ, GIT_MAP_SHARED, fd, begin);
307
313
  }
@@ -309,19 +315,17 @@ int git_futils_mmap_ro(git_map *out, git_file fd, git_off_t begin, size_t len)
309
315
  int git_futils_mmap_ro_file(git_map *out, const char *path)
310
316
  {
311
317
  git_file fd = git_futils_open_ro(path);
312
- git_off_t len;
318
+ uint64_t len;
313
319
  int result;
314
320
 
315
321
  if (fd < 0)
316
322
  return fd;
317
323
 
318
- if ((len = git_futils_filesize(fd)) < 0) {
319
- result = -1;
324
+ if ((result = git_futils_filesize(&len, fd)) < 0)
320
325
  goto out;
321
- }
322
326
 
323
327
  if (!git__is_sizet(len)) {
324
- giterr_set(GITERR_OS, "file `%s` too large to mmap", path);
328
+ git_error_set(GIT_ERROR_OS, "file `%s` too large to mmap", path);
325
329
  result = -1;
326
330
  goto out;
327
331
  }
@@ -346,7 +350,7 @@ GIT_INLINE(int) mkdir_validate_dir(
346
350
  {
347
351
  /* with exclusive create, existing dir is an error */
348
352
  if ((flags & GIT_MKDIR_EXCL) != 0) {
349
- giterr_set(GITERR_FILESYSTEM,
353
+ git_error_set(GIT_ERROR_FILESYSTEM,
350
354
  "failed to make directory '%s': directory exists", path);
351
355
  return GIT_EEXISTS;
352
356
  }
@@ -354,7 +358,7 @@ GIT_INLINE(int) mkdir_validate_dir(
354
358
  if ((S_ISREG(st->st_mode) && (flags & GIT_MKDIR_REMOVE_FILES)) ||
355
359
  (S_ISLNK(st->st_mode) && (flags & GIT_MKDIR_REMOVE_SYMLINKS))) {
356
360
  if (p_unlink(path) < 0) {
357
- giterr_set(GITERR_OS, "failed to remove %s '%s'",
361
+ git_error_set(GIT_ERROR_OS, "failed to remove %s '%s'",
358
362
  S_ISLNK(st->st_mode) ? "symlink" : "file", path);
359
363
  return GIT_EEXISTS;
360
364
  }
@@ -362,7 +366,7 @@ GIT_INLINE(int) mkdir_validate_dir(
362
366
  opts->perfdata.mkdir_calls++;
363
367
 
364
368
  if (p_mkdir(path, mode) < 0) {
365
- giterr_set(GITERR_OS, "failed to make directory '%s'", path);
369
+ git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", path);
366
370
  return GIT_EEXISTS;
367
371
  }
368
372
  }
@@ -372,13 +376,13 @@ GIT_INLINE(int) mkdir_validate_dir(
372
376
  opts->perfdata.stat_calls++;
373
377
 
374
378
  if (p_stat(path, st) < 0) {
375
- giterr_set(GITERR_OS, "failed to make directory '%s'", path);
379
+ git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", path);
376
380
  return GIT_EEXISTS;
377
381
  }
378
382
  }
379
383
 
380
384
  else if (!S_ISDIR(st->st_mode)) {
381
- giterr_set(GITERR_FILESYSTEM,
385
+ git_error_set(GIT_ERROR_FILESYSTEM,
382
386
  "failed to make directory '%s': directory exists", path);
383
387
  return GIT_EEXISTS;
384
388
  }
@@ -400,7 +404,7 @@ GIT_INLINE(int) mkdir_validate_mode(
400
404
  opts->perfdata.chmod_calls++;
401
405
 
402
406
  if (p_chmod(path, mode) < 0) {
403
- giterr_set(GITERR_OS, "failed to set permissions on '%s'", path);
407
+ git_error_set(GIT_ERROR_OS, "failed to set permissions on '%s'", path);
404
408
  return -1;
405
409
  }
406
410
  }
@@ -415,7 +419,7 @@ GIT_INLINE(int) mkdir_canonicalize(
415
419
  ssize_t root_len;
416
420
 
417
421
  if (path->size == 0) {
418
- giterr_set(GITERR_OS, "attempt to create empty path");
422
+ git_error_set(GIT_ERROR_OS, "attempt to create empty path");
419
423
  return -1;
420
424
  }
421
425
 
@@ -475,7 +479,8 @@ int git_futils_mkdir(
475
479
  if (error == 0) {
476
480
  break;
477
481
  } else if (errno != ENOENT) {
478
- giterr_set(GITERR_OS, "failed to stat '%s'", parent_path.ptr);
482
+ git_error_set(GIT_ERROR_OS, "failed to stat '%s'", parent_path.ptr);
483
+ error = -1;
479
484
  goto done;
480
485
  }
481
486
 
@@ -489,10 +494,15 @@ int git_futils_mkdir(
489
494
 
490
495
  assert(len);
491
496
 
492
- /* we've walked all the given path's parents and it's either relative
493
- * or rooted. either way, give up and make the entire path.
497
+ /*
498
+ * We've walked all the given path's parents and it's either relative
499
+ * (the parent is simply '.') or rooted (the length is less than or
500
+ * equal to length of the root path). The path may be less than the
501
+ * root path length on Windows, where `C:` == `C:/`.
494
502
  */
495
- if ((len == 1 && parent_path.ptr[0] == '.') || len == root_len+1) {
503
+ if ((len == 1 && parent_path.ptr[0] == '.') ||
504
+ (len == 1 && parent_path.ptr[0] == '/') ||
505
+ len <= root_len) {
496
506
  relative = make_path.ptr;
497
507
  break;
498
508
  }
@@ -602,18 +612,18 @@ int git_futils_mkdir_relative(
602
612
  retry_lstat:
603
613
  if (p_lstat(make_path.ptr, &st) < 0) {
604
614
  if (mkdir_attempted || errno != ENOENT) {
605
- giterr_set(GITERR_OS, "cannot access component in path '%s'", make_path.ptr);
615
+ git_error_set(GIT_ERROR_OS, "cannot access component in path '%s'", make_path.ptr);
606
616
  error = -1;
607
617
  goto done;
608
618
  }
609
619
 
610
- giterr_clear();
620
+ git_error_clear();
611
621
  opts->perfdata.mkdir_calls++;
612
622
  mkdir_attempted = true;
613
623
  if (p_mkdir(make_path.ptr, mode) < 0) {
614
624
  if (errno == EEXIST)
615
625
  goto retry_lstat;
616
- giterr_set(GITERR_OS, "failed to make directory '%s'", make_path.ptr);
626
+ git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", make_path.ptr);
617
627
  error = -1;
618
628
  goto done;
619
629
  }
@@ -632,16 +642,13 @@ retry_lstat:
632
642
  char *cache_path;
633
643
  size_t alloc_size;
634
644
 
635
- GITERR_CHECK_ALLOC_ADD(&alloc_size, make_path.size, 1);
636
- if (!git__is_uint32(alloc_size))
637
- return -1;
638
- cache_path = git_pool_malloc(opts->pool, (uint32_t)alloc_size);
639
- GITERR_CHECK_ALLOC(cache_path);
645
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, make_path.size, 1);
646
+ cache_path = git_pool_malloc(opts->pool, alloc_size);
647
+ GIT_ERROR_CHECK_ALLOC(cache_path);
640
648
 
641
649
  memcpy(cache_path, make_path.ptr, make_path.size + 1);
642
650
 
643
- git_strmap_insert(opts->dir_map, cache_path, cache_path, &error);
644
- if (error < 0)
651
+ if ((error = git_strmap_set(opts->dir_map, cache_path, cache_path)) < 0)
645
652
  goto done;
646
653
  }
647
654
  }
@@ -654,7 +661,7 @@ retry_lstat:
654
661
  opts->perfdata.stat_calls++;
655
662
 
656
663
  if (p_stat(make_path.ptr, &st) < 0 || !S_ISDIR(st.st_mode)) {
657
- giterr_set(GITERR_OS, "path is not a directory '%s'",
664
+ git_error_set(GIT_ERROR_OS, "path is not a directory '%s'",
658
665
  make_path.ptr);
659
666
  error = GIT_ENOTFOUND;
660
667
  }
@@ -677,10 +684,10 @@ typedef struct {
677
684
  static int futils__error_cannot_rmdir(const char *path, const char *filemsg)
678
685
  {
679
686
  if (filemsg)
680
- giterr_set(GITERR_OS, "could not remove directory '%s': %s",
687
+ git_error_set(GIT_ERROR_OS, "could not remove directory '%s': %s",
681
688
  path, filemsg);
682
689
  else
683
- giterr_set(GITERR_OS, "could not remove directory '%s'", path);
690
+ git_error_set(GIT_ERROR_OS, "could not remove directory '%s'", path);
684
691
 
685
692
  return -1;
686
693
  }
@@ -818,7 +825,7 @@ int git_futils_rmdir_r(
818
825
  &fullpath, base, futils__rmdir_empty_parent, &data);
819
826
 
820
827
  if (error == GIT_ITEROVER) {
821
- giterr_clear();
828
+ git_error_clear();
822
829
  error = 0;
823
830
  }
824
831
 
@@ -851,12 +858,12 @@ static int cp_by_fd(int ifd, int ofd, bool close_fd_when_done)
851
858
  error = p_write(ofd, buffer, len);
852
859
 
853
860
  if (len < 0) {
854
- giterr_set(GITERR_OS, "read error while copying file");
861
+ git_error_set(GIT_ERROR_OS, "read error while copying file");
855
862
  error = (int)len;
856
863
  }
857
864
 
858
865
  if (error < 0)
859
- giterr_set(GITERR_OS, "write error while copying file");
866
+ git_error_set(GIT_ERROR_OS, "write error while copying file");
860
867
 
861
868
  if (close_fd_when_done) {
862
869
  p_close(ifd);
@@ -901,20 +908,20 @@ static int cp_link(const char *from, const char *to, size_t link_size)
901
908
  char *link_data;
902
909
  size_t alloc_size;
903
910
 
904
- GITERR_CHECK_ALLOC_ADD(&alloc_size, link_size, 1);
911
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, link_size, 1);
905
912
  link_data = git__malloc(alloc_size);
906
- GITERR_CHECK_ALLOC(link_data);
913
+ GIT_ERROR_CHECK_ALLOC(link_data);
907
914
 
908
915
  read_len = p_readlink(from, link_data, link_size);
909
916
  if (read_len != (ssize_t)link_size) {
910
- giterr_set(GITERR_OS, "failed to read symlink data for '%s'", from);
917
+ git_error_set(GIT_ERROR_OS, "failed to read symlink data for '%s'", from);
911
918
  error = -1;
912
919
  }
913
920
  else {
914
921
  link_data[read_len] = '\0';
915
922
 
916
923
  if (p_symlink(link_data, to) < 0) {
917
- giterr_set(GITERR_OS, "could not symlink '%s' as '%s'",
924
+ git_error_set(GIT_ERROR_OS, "could not symlink '%s' as '%s'",
918
925
  link_data, to);
919
926
  error = -1;
920
927
  }
@@ -977,7 +984,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
977
984
  else if (error != GIT_ENOTFOUND)
978
985
  return error;
979
986
  else {
980
- giterr_clear();
987
+ git_error_clear();
981
988
  error = 0;
982
989
  }
983
990
 
@@ -1010,7 +1017,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
1010
1017
  return 0;
1011
1018
 
1012
1019
  if (p_unlink(info->to.ptr) < 0) {
1013
- giterr_set(GITERR_OS, "cannot overwrite existing file '%s'",
1020
+ git_error_set(GIT_ERROR_OS, "cannot overwrite existing file '%s'",
1014
1021
  info->to.ptr);
1015
1022
  return GIT_EEXISTS;
1016
1023
  }
@@ -1030,7 +1037,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
1030
1037
  /* make symlink or regular file */
1031
1038
  if (info->flags & GIT_CPDIR_LINK_FILES) {
1032
1039
  if ((error = p_link(from->ptr, info->to.ptr)) < 0)
1033
- giterr_set(GITERR_OS, "failed to link '%s'", from->ptr);
1040
+ git_error_set(GIT_ERROR_OS, "failed to link '%s'", from->ptr);
1034
1041
  } else if (S_ISLNK(from_st.st_mode)) {
1035
1042
  error = cp_link(from->ptr, info->to.ptr, (size_t)from_st.st_size);
1036
1043
  } else {
@@ -1103,7 +1110,7 @@ int git_futils_filestamp_check(
1103
1110
  #if defined(GIT_USE_NSEC)
1104
1111
  stamp->mtime.tv_nsec == st.st_mtime_nsec &&
1105
1112
  #endif
1106
- stamp->size == (git_off_t)st.st_size &&
1113
+ stamp->size == (uint64_t)st.st_size &&
1107
1114
  stamp->ino == (unsigned int)st.st_ino)
1108
1115
  return 0;
1109
1116
 
@@ -1111,7 +1118,7 @@ int git_futils_filestamp_check(
1111
1118
  #if defined(GIT_USE_NSEC)
1112
1119
  stamp->mtime.tv_nsec = st.st_mtime_nsec;
1113
1120
  #endif
1114
- stamp->size = (git_off_t)st.st_size;
1121
+ stamp->size = (uint64_t)st.st_size;
1115
1122
  stamp->ino = (unsigned int)st.st_ino;
1116
1123
 
1117
1124
  return 1;
@@ -1139,7 +1146,7 @@ void git_futils_filestamp_set_from_stat(
1139
1146
  #else
1140
1147
  stamp->mtime.tv_nsec = 0;
1141
1148
  #endif
1142
- stamp->size = (git_off_t)st->st_size;
1149
+ stamp->size = (uint64_t)st->st_size;
1143
1150
  stamp->ino = (unsigned int)st->st_ino;
1144
1151
  } else {
1145
1152
  memset(stamp, 0, sizeof(*stamp));
@@ -1155,12 +1162,12 @@ int git_futils_fsync_dir(const char *path)
1155
1162
  int fd, error = -1;
1156
1163
 
1157
1164
  if ((fd = p_open(path, O_RDONLY)) < 0) {
1158
- giterr_set(GITERR_OS, "failed to open directory '%s' for fsync", path);
1165
+ git_error_set(GIT_ERROR_OS, "failed to open directory '%s' for fsync", path);
1159
1166
  return -1;
1160
1167
  }
1161
1168
 
1162
1169
  if ((error = p_fsync(fd)) < 0)
1163
- giterr_set(GITERR_OS, "failed to fsync directory '%s'", path);
1170
+ git_error_set(GIT_ERROR_OS, "failed to fsync directory '%s'", path);
1164
1171
 
1165
1172
  p_close(fd);
1166
1173
  return error;
@@ -4,8 +4,8 @@
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
- #ifndef INCLUDE_fileops_h__
8
- #define INCLUDE_fileops_h__
7
+ #ifndef INCLUDE_futils_h__
8
+ #define INCLUDE_futils_h__
9
9
 
10
10
  #include "common.h"
11
11
 
@@ -255,7 +255,7 @@ extern int git_futils_truncate(const char *path, int mode);
255
255
  /**
256
256
  * Get the filesize in bytes of a file
257
257
  */
258
- extern git_off_t git_futils_filesize(git_file fd);
258
+ extern int git_futils_filesize(uint64_t *out, git_file fd);
259
259
 
260
260
  #define GIT_PERMS_IS_EXEC(MODE) (((MODE) & 0111) != 0)
261
261
  #define GIT_PERMS_CANONICAL(MODE) (GIT_PERMS_IS_EXEC(MODE) ? 0755 : 0644)
@@ -290,7 +290,7 @@ extern mode_t git_futils_canonical_mode(mode_t raw_mode);
290
290
  extern int git_futils_mmap_ro(
291
291
  git_map *out,
292
292
  git_file fd,
293
- git_off_t begin,
293
+ off64_t begin,
294
294
  size_t len);
295
295
 
296
296
  /**
@@ -330,7 +330,7 @@ extern int git_futils_fake_symlink(const char *new, const char *old);
330
330
  */
331
331
  typedef struct {
332
332
  struct timespec mtime;
333
- git_off_t size;
333
+ uint64_t size;
334
334
  unsigned int ino;
335
335
  } git_futils_filestamp;
336
336
 
@@ -340,7 +340,7 @@ typedef struct {
340
340
  * This function updates the file stamp to current data for the given path
341
341
  * and returns 0 if the file is up-to-date relative to the prior setting,
342
342
  * 1 if the file has been changed, or GIT_ENOTFOUND if the file doesn't
343
- * exist. This will not call giterr_set, so you must set the error if you
343
+ * exist. This will not call git_error_set, so you must set the error if you
344
344
  * plan to return an error.
345
345
  *
346
346
  * @param stamp File stamp to be checked
@@ -12,7 +12,7 @@
12
12
  #include "sysdir.h"
13
13
  #include "filter.h"
14
14
  #include "merge_driver.h"
15
- #include "streams/curl.h"
15
+ #include "streams/registry.h"
16
16
  #include "streams/mbedtls.h"
17
17
  #include "streams/openssl.h"
18
18
  #include "thread-utils.h"
@@ -26,9 +26,23 @@
26
26
 
27
27
  git_mutex git__mwindow_mutex;
28
28
 
29
- #define MAX_SHUTDOWN_CB 10
29
+ typedef int (*git_global_init_fn)(void);
30
+
31
+ static git_global_init_fn git__init_callbacks[] = {
32
+ git_allocator_global_init,
33
+ git_hash_global_init,
34
+ git_sysdir_global_init,
35
+ git_filter_global_init,
36
+ git_merge_driver_global_init,
37
+ git_transport_ssh_global_init,
38
+ git_stream_registry_global_init,
39
+ git_openssl_stream_global_init,
40
+ git_mbedtls_stream_global_init,
41
+ git_mwindow_global_init
42
+ };
43
+
44
+ static git_global_shutdown_fn git__shutdown_callbacks[ARRAY_SIZE(git__init_callbacks)];
30
45
 
31
- static git_global_shutdown_fn git__shutdown_callbacks[MAX_SHUTDOWN_CB];
32
46
  static git_atomic git__n_shutdown_callbacks;
33
47
  static git_atomic git__n_inits;
34
48
  char *git__user_agent;
@@ -37,7 +51,7 @@ char *git__ssl_ciphers;
37
51
  void git__on_shutdown(git_global_shutdown_fn callback)
38
52
  {
39
53
  int count = git_atomic_inc(&git__n_shutdown_callbacks);
40
- assert(count <= MAX_SHUTDOWN_CB && count > 0);
54
+ assert(count <= (int) ARRAY_SIZE(git__shutdown_callbacks) && count > 0);
41
55
  git__shutdown_callbacks[count - 1] = callback;
42
56
  }
43
57
 
@@ -52,6 +66,7 @@ static void git__global_state_cleanup(git_global_st *st)
52
66
 
53
67
  static int init_common(void)
54
68
  {
69
+ size_t i;
55
70
  int ret;
56
71
 
57
72
  /* Initialize the CRT debug allocator first, before our first malloc */
@@ -60,17 +75,10 @@ static int init_common(void)
60
75
  git_win32__stack_init();
61
76
  #endif
62
77
 
63
- /* Initialize any other subsystems that have global state */
64
- if ((ret = git_allocator_global_init()) == 0 &&
65
- (ret = git_hash_global_init()) == 0 &&
66
- (ret = git_sysdir_global_init()) == 0 &&
67
- (ret = git_filter_global_init()) == 0 &&
68
- (ret = git_merge_driver_global_init()) == 0 &&
69
- (ret = git_transport_ssh_global_init()) == 0 &&
70
- (ret = git_openssl_stream_global_init()) == 0 &&
71
- (ret = git_curl_stream_global_init()) == 0 &&
72
- (ret = git_mbedtls_stream_global_init()) == 0)
73
- ret = git_mwindow_global_init();
78
+ /* Initialize subsystems that have global state */
79
+ for (i = 0; i < ARRAY_SIZE(git__init_callbacks); i++)
80
+ if ((ret = git__init_callbacks[i]()) != 0)
81
+ break;
74
82
 
75
83
  GIT_MEMORY_BARRIER;
76
84
 
@@ -133,14 +141,21 @@ static void shutdown_common(void)
133
141
  */
134
142
  #if defined(GIT_THREADS) && defined(GIT_WIN32)
135
143
 
136
- static DWORD _tls_index;
144
+ static DWORD _fls_index;
137
145
  static volatile LONG _mutex = 0;
138
146
 
147
+ static void WINAPI fls_free(void *st)
148
+ {
149
+ git__global_state_cleanup(st);
150
+ git__free(st);
151
+ }
152
+
139
153
  static int synchronized_threads_init(void)
140
154
  {
141
155
  int error;
142
156
 
143
- _tls_index = TlsAlloc();
157
+ if ((_fls_index = FlsAlloc(fls_free)) == FLS_OUT_OF_INDEXES)
158
+ return -1;
144
159
 
145
160
  git_threads_init();
146
161
 
@@ -182,9 +197,7 @@ int git_libgit2_shutdown(void)
182
197
  if ((ret = git_atomic_dec(&git__n_inits)) == 0) {
183
198
  shutdown_common();
184
199
 
185
- git__free_tls_data();
186
-
187
- TlsFree(_tls_index);
200
+ FlsFree(_fls_index);
188
201
  git_mutex_free(&git__mwindow_mutex);
189
202
 
190
203
  #if defined(GIT_MSVC_CRTDBG)
@@ -205,7 +218,7 @@ git_global_st *git__global_state(void)
205
218
 
206
219
  assert(git_atomic_get(&git__n_inits) > 0);
207
220
 
208
- if ((ptr = TlsGetValue(_tls_index)) != NULL)
221
+ if ((ptr = FlsGetValue(_fls_index)) != NULL)
209
222
  return ptr;
210
223
 
211
224
  ptr = git__calloc(1, sizeof(git_global_st));
@@ -214,43 +227,10 @@ git_global_st *git__global_state(void)
214
227
 
215
228
  git_buf_init(&ptr->error_buf, 0);
216
229
 
217
- TlsSetValue(_tls_index, ptr);
230
+ FlsSetValue(_fls_index, ptr);
218
231
  return ptr;
219
232
  }
220
233
 
221
- /**
222
- * Free the TLS data associated with this thread.
223
- * This should only be used by the thread as it
224
- * is exiting.
225
- */
226
- void git__free_tls_data(void)
227
- {
228
- void *ptr = TlsGetValue(_tls_index);
229
- if (!ptr)
230
- return;
231
-
232
- git__global_state_cleanup(ptr);
233
- git__free(ptr);
234
- TlsSetValue(_tls_index, NULL);
235
- }
236
-
237
- BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
238
- {
239
- GIT_UNUSED(hInstDll);
240
- GIT_UNUSED(lpvReserved);
241
-
242
- /* This is how Windows lets us know our thread is being shut down */
243
- if (fdwReason == DLL_THREAD_DETACH) {
244
- git__free_tls_data();
245
- }
246
-
247
- /*
248
- * Windows pays attention to this during library loading. We don't do anything
249
- * so we trivially succeed.
250
- */
251
- return TRUE;
252
- }
253
-
254
234
  #elif defined(GIT_THREADS) && defined(_POSIX_THREADS)
255
235
 
256
236
  static pthread_key_t _tls_key;
@@ -35,8 +35,6 @@ typedef void (*git_global_shutdown_fn)(void);
35
35
 
36
36
  extern void git__on_shutdown(git_global_shutdown_fn callback);
37
37
 
38
- extern void git__free_tls_data(void);
39
-
40
38
  extern const char *git_libgit2__user_agent(void);
41
39
  extern const char *git_libgit2__ssl_ciphers(void);
42
40