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
@@ -12,74 +12,64 @@
12
12
  #include "git2/index.h"
13
13
  #include "git2/sys/filter.h"
14
14
 
15
- #include "fileops.h"
15
+ #include "futils.h"
16
16
  #include "hash.h"
17
17
  #include "filter.h"
18
18
  #include "buf_text.h"
19
19
  #include "repository.h"
20
20
 
21
+ typedef enum {
22
+ GIT_CRLF_UNDEFINED,
23
+ GIT_CRLF_BINARY,
24
+ GIT_CRLF_TEXT,
25
+ GIT_CRLF_TEXT_INPUT,
26
+ GIT_CRLF_TEXT_CRLF,
27
+ GIT_CRLF_AUTO,
28
+ GIT_CRLF_AUTO_INPUT,
29
+ GIT_CRLF_AUTO_CRLF,
30
+ } git_crlf_t;
31
+
21
32
  struct crlf_attrs {
22
- int crlf_action;
23
- int eol;
33
+ int attr_action; /* the .gitattributes setting */
34
+ int crlf_action; /* the core.autocrlf setting */
35
+
24
36
  int auto_crlf;
25
37
  int safe_crlf;
38
+ int core_eol;
26
39
  };
27
40
 
28
41
  struct crlf_filter {
29
42
  git_filter f;
30
43
  };
31
44
 
32
- static int check_crlf(const char *value)
45
+ static git_crlf_t check_crlf(const char *value)
33
46
  {
34
- if (GIT_ATTR_TRUE(value))
47
+ if (GIT_ATTR_IS_TRUE(value))
35
48
  return GIT_CRLF_TEXT;
36
-
37
- if (GIT_ATTR_FALSE(value))
49
+ else if (GIT_ATTR_IS_FALSE(value))
38
50
  return GIT_CRLF_BINARY;
39
-
40
- if (GIT_ATTR_UNSPECIFIED(value))
41
- return GIT_CRLF_GUESS;
42
-
43
- if (strcmp(value, "input") == 0)
44
- return GIT_CRLF_INPUT;
45
-
46
- if (strcmp(value, "auto") == 0)
51
+ else if (GIT_ATTR_IS_UNSPECIFIED(value))
52
+ ;
53
+ else if (strcmp(value, "input") == 0)
54
+ return GIT_CRLF_TEXT_INPUT;
55
+ else if (strcmp(value, "auto") == 0)
47
56
  return GIT_CRLF_AUTO;
48
57
 
49
- return GIT_CRLF_GUESS;
58
+ return GIT_CRLF_UNDEFINED;
50
59
  }
51
60
 
52
- static int check_eol(const char *value)
61
+ static git_configmap_value check_eol(const char *value)
53
62
  {
54
- if (GIT_ATTR_UNSPECIFIED(value))
55
- return GIT_EOL_UNSET;
56
-
57
- if (strcmp(value, "lf") == 0)
63
+ if (GIT_ATTR_IS_UNSPECIFIED(value))
64
+ ;
65
+ else if (strcmp(value, "lf") == 0)
58
66
  return GIT_EOL_LF;
59
-
60
- if (strcmp(value, "crlf") == 0)
67
+ else if (strcmp(value, "crlf") == 0)
61
68
  return GIT_EOL_CRLF;
62
69
 
63
70
  return GIT_EOL_UNSET;
64
71
  }
65
72
 
66
- static int crlf_input_action(struct crlf_attrs *ca)
67
- {
68
- if (ca->crlf_action == GIT_CRLF_BINARY)
69
- return GIT_CRLF_BINARY;
70
-
71
- if (ca->eol == GIT_EOL_LF)
72
- return GIT_CRLF_INPUT;
73
-
74
- if (ca->crlf_action == GIT_CRLF_AUTO)
75
- return GIT_CRLF_AUTO;
76
-
77
- if (ca->eol == GIT_EOL_CRLF)
78
- return GIT_CRLF_CRLF;
79
-
80
- return ca->crlf_action;
81
- }
82
-
83
73
  static int has_cr_in_index(const git_filter_source *src)
84
74
  {
85
75
  git_repository *repo = git_filter_source_repo(src);
@@ -88,14 +78,14 @@ static int has_cr_in_index(const git_filter_source *src)
88
78
  const git_index_entry *entry;
89
79
  git_blob *blob;
90
80
  const void *blobcontent;
91
- git_off_t blobsize;
81
+ git_object_size_t blobsize;
92
82
  bool found_cr;
93
83
 
94
84
  if (!path)
95
85
  return false;
96
86
 
97
87
  if (git_repository_index__weakptr(&index, repo) < 0) {
98
- giterr_clear();
88
+ git_error_clear();
99
89
  return false;
100
90
  }
101
91
 
@@ -122,147 +112,168 @@ static int has_cr_in_index(const git_filter_source *src)
122
112
  return found_cr;
123
113
  }
124
114
 
125
- static int crlf_apply_to_odb(
126
- struct crlf_attrs *ca,
127
- git_buf *to,
128
- const git_buf *from,
129
- const git_filter_source *src)
115
+ static int text_eol_is_crlf(struct crlf_attrs *ca)
130
116
  {
131
- /* Empty file? Nothing to do */
132
- if (!git_buf_len(from))
117
+ if (ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
118
+ return 1;
119
+ else if (ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
133
120
  return 0;
134
121
 
135
- /* Heuristics to see if we can skip the conversion.
136
- * Straight from Core Git.
137
- */
138
- if (ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_GUESS) {
139
- git_buf_text_stats stats;
122
+ if (ca->core_eol == GIT_EOL_CRLF)
123
+ return 1;
124
+ if (ca->core_eol == GIT_EOL_UNSET && GIT_EOL_NATIVE == GIT_EOL_CRLF)
125
+ return 1;
140
126
 
141
- /* Check heuristics for binary vs text - returns true if binary */
142
- if (git_buf_text_gather_stats(&stats, from, false))
143
- return GIT_PASSTHROUGH;
127
+ return 0;
128
+ }
144
129
 
145
- /* If there are no CR characters to filter out, then just pass */
146
- if (!stats.cr)
147
- return GIT_PASSTHROUGH;
130
+ static git_configmap_value output_eol(struct crlf_attrs *ca)
131
+ {
132
+ switch (ca->crlf_action) {
133
+ case GIT_CRLF_BINARY:
134
+ return GIT_EOL_UNSET;
135
+ case GIT_CRLF_TEXT_CRLF:
136
+ return GIT_EOL_CRLF;
137
+ case GIT_CRLF_TEXT_INPUT:
138
+ return GIT_EOL_LF;
139
+ case GIT_CRLF_UNDEFINED:
140
+ case GIT_CRLF_AUTO_CRLF:
141
+ return GIT_EOL_CRLF;
142
+ case GIT_CRLF_AUTO_INPUT:
143
+ return GIT_EOL_LF;
144
+ case GIT_CRLF_TEXT:
145
+ case GIT_CRLF_AUTO:
146
+ return text_eol_is_crlf(ca) ? GIT_EOL_CRLF : GIT_EOL_LF;
147
+ }
148
+
149
+ /* TODO: warn when available */
150
+ return ca->core_eol;
151
+ }
152
+
153
+ GIT_INLINE(int) check_safecrlf(
154
+ struct crlf_attrs *ca,
155
+ const git_filter_source *src,
156
+ git_buf_text_stats *stats)
157
+ {
158
+ const char *filename = git_filter_source_path(src);
159
+
160
+ if (!ca->safe_crlf)
161
+ return 0;
162
+
163
+ if (output_eol(ca) == GIT_EOL_LF) {
164
+ /*
165
+ * CRLFs would not be restored by checkout:
166
+ * check if we'd remove CRLFs
167
+ */
168
+ if (stats->crlf) {
169
+ if (ca->safe_crlf == GIT_SAFE_CRLF_WARN) {
170
+ /* TODO: issue a warning when available */
171
+ } else {
172
+ if (filename && *filename)
173
+ git_error_set(
174
+ GIT_ERROR_FILTER, "CRLF would be replaced by LF in '%s'",
175
+ filename);
176
+ else
177
+ git_error_set(
178
+ GIT_ERROR_FILTER, "CRLF would be replaced by LF");
148
179
 
149
- /* If safecrlf is enabled, sanity-check the result. */
150
- if (stats.cr != stats.crlf || stats.lf != stats.crlf) {
151
- switch (ca->safe_crlf) {
152
- case GIT_SAFE_CRLF_FAIL:
153
- giterr_set(
154
- GITERR_FILTER, "LF would be replaced by CRLF in '%s'",
155
- git_filter_source_path(src));
156
180
  return -1;
157
- case GIT_SAFE_CRLF_WARN:
158
- /* TODO: issue warning when warning API is available */;
159
- break;
160
- default:
161
- break;
162
181
  }
163
182
  }
164
-
183
+ } else if (output_eol(ca) == GIT_EOL_CRLF) {
165
184
  /*
166
- * We're currently not going to even try to convert stuff
167
- * that has bare CR characters. Does anybody do that crazy
168
- * stuff?
185
+ * CRLFs would be added by checkout:
186
+ * check if we have "naked" LFs
169
187
  */
170
- if (stats.cr != stats.crlf)
171
- return GIT_PASSTHROUGH;
188
+ if (stats->crlf != stats->lf) {
189
+ if (ca->safe_crlf == GIT_SAFE_CRLF_WARN) {
190
+ /* TODO: issue a warning when available */
191
+ } else {
192
+ if (filename && *filename)
193
+ git_error_set(
194
+ GIT_ERROR_FILTER, "LF would be replaced by CRLF in '%s'",
195
+ filename);
196
+ else
197
+ git_error_set(
198
+ GIT_ERROR_FILTER, "LF would be replaced by CRLF");
172
199
 
173
- if (ca->crlf_action == GIT_CRLF_GUESS) {
174
- /*
175
- * If the file in the index has any CR in it, do not convert.
176
- * This is the new safer autocrlf handling.
177
- */
178
- if (has_cr_in_index(src))
179
- return GIT_PASSTHROUGH;
200
+ return -1;
201
+ }
180
202
  }
181
-
182
- if (!stats.cr)
183
- return GIT_PASSTHROUGH;
184
203
  }
185
204
 
186
- /* Actually drop the carriage returns */
187
- return git_buf_text_crlf_to_lf(to, from);
205
+ return 0;
188
206
  }
189
207
 
190
- static const char *line_ending(struct crlf_attrs *ca)
208
+ static int crlf_apply_to_odb(
209
+ struct crlf_attrs *ca,
210
+ git_buf *to,
211
+ const git_buf *from,
212
+ const git_filter_source *src)
191
213
  {
192
- switch (ca->crlf_action) {
193
- case GIT_CRLF_BINARY:
194
- case GIT_CRLF_INPUT:
195
- return "\n";
214
+ git_buf_text_stats stats;
215
+ bool is_binary;
216
+ int error;
196
217
 
197
- case GIT_CRLF_CRLF:
198
- return "\r\n";
218
+ /* Binary attribute? Empty file? Nothing to do */
219
+ if (ca->crlf_action == GIT_CRLF_BINARY || !git_buf_len(from))
220
+ return GIT_PASSTHROUGH;
199
221
 
200
- case GIT_CRLF_GUESS:
201
- if (ca->auto_crlf == GIT_AUTO_CRLF_FALSE)
202
- return "\n";
203
- break;
222
+ is_binary = git_buf_text_gather_stats(&stats, from, false);
204
223
 
205
- case GIT_CRLF_AUTO:
206
- if (ca->eol == GIT_EOL_CRLF)
207
- return "\r\n";
208
- case GIT_CRLF_TEXT:
209
- break;
224
+ /* Heuristics to see if we can skip the conversion.
225
+ * Straight from Core Git.
226
+ */
227
+ if (ca->crlf_action == GIT_CRLF_AUTO ||
228
+ ca->crlf_action == GIT_CRLF_AUTO_INPUT ||
229
+ ca->crlf_action == GIT_CRLF_AUTO_CRLF) {
210
230
 
211
- default:
212
- goto line_ending_error;
231
+ if (is_binary)
232
+ return GIT_PASSTHROUGH;
233
+
234
+ /*
235
+ * If the file in the index has any CR in it, do not convert.
236
+ * This is the new safer autocrlf handling.
237
+ */
238
+ if (has_cr_in_index(src))
239
+ return GIT_PASSTHROUGH;
213
240
  }
214
241
 
215
- if (ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
216
- return "\r\n";
217
- else if (ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
218
- return "\n";
219
- else if (ca->eol == GIT_EOL_UNSET)
220
- return GIT_EOL_NATIVE == GIT_EOL_CRLF ? "\r\n" : "\n";
221
- else if (ca->eol == GIT_EOL_LF)
222
- return "\n";
223
- else if (ca->eol == GIT_EOL_CRLF)
224
- return "\r\n";
225
-
226
- line_ending_error:
227
- giterr_set(GITERR_INVALID, "invalid input to line ending filter");
228
- return NULL;
242
+ if ((error = check_safecrlf(ca, src, &stats)) < 0)
243
+ return error;
244
+
245
+ /* If there are no CR characters to filter out, then just pass */
246
+ if (!stats.crlf)
247
+ return GIT_PASSTHROUGH;
248
+
249
+ /* Actually drop the carriage returns */
250
+ return git_buf_text_crlf_to_lf(to, from);
229
251
  }
230
252
 
231
253
  static int crlf_apply_to_workdir(
232
- struct crlf_attrs *ca, git_buf *to, const git_buf *from)
254
+ struct crlf_attrs *ca,
255
+ git_buf *to,
256
+ const git_buf *from)
233
257
  {
234
258
  git_buf_text_stats stats;
235
- const char *workdir_ending = NULL;
236
259
  bool is_binary;
237
260
 
238
261
  /* Empty file? Nothing to do. */
239
- if (git_buf_len(from) == 0)
240
- return 0;
241
-
242
- /* Determine proper line ending */
243
- workdir_ending = line_ending(ca);
244
- if (!workdir_ending)
245
- return -1;
246
-
247
- /* only LF->CRLF conversion is supported, do nothing on LF platforms */
248
- if (strcmp(workdir_ending, "\r\n") != 0)
262
+ if (git_buf_len(from) == 0 || output_eol(ca) != GIT_EOL_CRLF)
249
263
  return GIT_PASSTHROUGH;
250
264
 
251
- /* If there are no LFs, or all LFs are part of a CRLF, nothing to do */
252
265
  is_binary = git_buf_text_gather_stats(&stats, from, false);
253
266
 
267
+ /* If there are no LFs, or all LFs are part of a CRLF, nothing to do */
254
268
  if (stats.lf == 0 || stats.lf == stats.crlf)
255
269
  return GIT_PASSTHROUGH;
256
270
 
257
271
  if (ca->crlf_action == GIT_CRLF_AUTO ||
258
- ca->crlf_action == GIT_CRLF_GUESS) {
272
+ ca->crlf_action == GIT_CRLF_AUTO_INPUT ||
273
+ ca->crlf_action == GIT_CRLF_AUTO_CRLF) {
259
274
 
260
275
  /* If we have any existing CR or CRLF line endings, do nothing */
261
- if (stats.cr > 0 && stats.crlf > 0)
262
- return GIT_PASSTHROUGH;
263
-
264
- /* If we have bare CR characters, do nothing */
265
- if (stats.cr != stats.crlf)
276
+ if (stats.cr > 0)
266
277
  return GIT_PASSTHROUGH;
267
278
 
268
279
  /* Don't filter binary files */
@@ -273,87 +284,99 @@ static int crlf_apply_to_workdir(
273
284
  return git_buf_text_lf_to_crlf(to, from);
274
285
  }
275
286
 
276
- static int crlf_check(
277
- git_filter *self,
278
- void **payload, /* points to NULL ptr on entry, may be set */
279
- const git_filter_source *src,
280
- const char **attr_values)
287
+ static int convert_attrs(
288
+ struct crlf_attrs *ca,
289
+ const char **attr_values,
290
+ const git_filter_source *src)
281
291
  {
282
292
  int error;
283
- struct crlf_attrs ca;
284
293
 
285
- GIT_UNUSED(self);
294
+ memset(ca, 0, sizeof(struct crlf_attrs));
295
+
296
+ if ((error = git_repository__configmap_lookup(&ca->auto_crlf,
297
+ git_filter_source_repo(src), GIT_CONFIGMAP_AUTO_CRLF)) < 0 ||
298
+ (error = git_repository__configmap_lookup(&ca->safe_crlf,
299
+ git_filter_source_repo(src), GIT_CONFIGMAP_SAFE_CRLF)) < 0 ||
300
+ (error = git_repository__configmap_lookup(&ca->core_eol,
301
+ git_filter_source_repo(src), GIT_CONFIGMAP_EOL)) < 0)
302
+ return error;
303
+
304
+ /* downgrade FAIL to WARN if ALLOW_UNSAFE option is used */
305
+ if ((git_filter_source_flags(src) & GIT_FILTER_ALLOW_UNSAFE) &&
306
+ ca->safe_crlf == GIT_SAFE_CRLF_FAIL)
307
+ ca->safe_crlf = GIT_SAFE_CRLF_WARN;
308
+
309
+ if (attr_values) {
310
+ /* load the text attribute */
311
+ ca->crlf_action = check_crlf(attr_values[2]); /* text */
312
+
313
+ if (ca->crlf_action == GIT_CRLF_UNDEFINED)
314
+ ca->crlf_action = check_crlf(attr_values[0]); /* crlf */
315
+
316
+ if (ca->crlf_action != GIT_CRLF_BINARY) {
317
+ /* load the eol attribute */
318
+ int eol_attr = check_eol(attr_values[1]);
319
+
320
+ if (ca->crlf_action == GIT_CRLF_AUTO && eol_attr == GIT_EOL_LF)
321
+ ca->crlf_action = GIT_CRLF_AUTO_INPUT;
322
+ else if (ca->crlf_action == GIT_CRLF_AUTO && eol_attr == GIT_EOL_CRLF)
323
+ ca->crlf_action = GIT_CRLF_AUTO_CRLF;
324
+ else if (eol_attr == GIT_EOL_LF)
325
+ ca->crlf_action = GIT_CRLF_TEXT_INPUT;
326
+ else if (eol_attr == GIT_EOL_CRLF)
327
+ ca->crlf_action = GIT_CRLF_TEXT_CRLF;
328
+ }
286
329
 
287
- if (!attr_values) {
288
- ca.crlf_action = GIT_CRLF_GUESS;
289
- ca.eol = GIT_EOL_UNSET;
330
+ ca->attr_action = ca->crlf_action;
290
331
  } else {
291
- ca.crlf_action = check_crlf(attr_values[2]); /* text */
292
- if (ca.crlf_action == GIT_CRLF_GUESS)
293
- ca.crlf_action = check_crlf(attr_values[0]); /* clrf */
294
- ca.eol = check_eol(attr_values[1]); /* eol */
332
+ ca->crlf_action = GIT_CRLF_UNDEFINED;
295
333
  }
296
- ca.auto_crlf = GIT_AUTO_CRLF_DEFAULT;
297
- ca.safe_crlf = GIT_SAFE_CRLF_DEFAULT;
298
334
 
299
- /*
300
- * Use the core Git logic to see if we should perform CRLF for this file
301
- * based on its attributes & the value of `core.autocrlf`
302
- */
303
- ca.crlf_action = crlf_input_action(&ca);
335
+ if (ca->crlf_action == GIT_CRLF_TEXT)
336
+ ca->crlf_action = text_eol_is_crlf(ca) ? GIT_CRLF_TEXT_CRLF : GIT_CRLF_TEXT_INPUT;
337
+ if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_FALSE)
338
+ ca->crlf_action = GIT_CRLF_BINARY;
339
+ if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
340
+ ca->crlf_action = GIT_CRLF_AUTO_CRLF;
341
+ if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
342
+ ca->crlf_action = GIT_CRLF_AUTO_INPUT;
304
343
 
305
- if (ca.crlf_action == GIT_CRLF_BINARY)
306
- return GIT_PASSTHROUGH;
307
-
308
- if (ca.crlf_action == GIT_CRLF_GUESS ||
309
- ((ca.crlf_action == GIT_CRLF_AUTO ||
310
- ca.crlf_action == GIT_CRLF_TEXT) &&
311
- git_filter_source_mode(src) == GIT_FILTER_SMUDGE)) {
312
-
313
- error = git_repository__cvar(
314
- &ca.auto_crlf, git_filter_source_repo(src), GIT_CVAR_AUTO_CRLF);
315
- if (error < 0)
316
- return error;
344
+ return 0;
345
+ }
317
346
 
318
- if (ca.crlf_action == GIT_CRLF_GUESS &&
319
- ca.auto_crlf == GIT_AUTO_CRLF_FALSE)
320
- return GIT_PASSTHROUGH;
347
+ static int crlf_check(
348
+ git_filter *self,
349
+ void **payload, /* points to NULL ptr on entry, may be set */
350
+ const git_filter_source *src,
351
+ const char **attr_values)
352
+ {
353
+ struct crlf_attrs ca;
321
354
 
322
- if (ca.auto_crlf == GIT_AUTO_CRLF_INPUT &&
323
- ca.eol != GIT_EOL_CRLF &&
324
- git_filter_source_mode(src) == GIT_FILTER_SMUDGE)
325
- return GIT_PASSTHROUGH;
326
- }
355
+ GIT_UNUSED(self);
327
356
 
328
- if (git_filter_source_mode(src) == GIT_FILTER_CLEAN) {
329
- error = git_repository__cvar(
330
- &ca.safe_crlf, git_filter_source_repo(src), GIT_CVAR_SAFE_CRLF);
331
- if (error < 0)
332
- return error;
357
+ convert_attrs(&ca, attr_values, src);
333
358
 
334
- /* downgrade FAIL to WARN if ALLOW_UNSAFE option is used */
335
- if ((git_filter_source_flags(src) & GIT_FILTER_ALLOW_UNSAFE) &&
336
- ca.safe_crlf == GIT_SAFE_CRLF_FAIL)
337
- ca.safe_crlf = GIT_SAFE_CRLF_WARN;
338
- }
359
+ if (ca.crlf_action == GIT_CRLF_BINARY)
360
+ return GIT_PASSTHROUGH;
339
361
 
340
362
  *payload = git__malloc(sizeof(ca));
341
- GITERR_CHECK_ALLOC(*payload);
363
+ GIT_ERROR_CHECK_ALLOC(*payload);
342
364
  memcpy(*payload, &ca, sizeof(ca));
343
365
 
344
366
  return 0;
345
367
  }
346
368
 
347
369
  static int crlf_apply(
348
- git_filter *self,
349
- void **payload, /* may be read and/or set */
350
- git_buf *to,
370
+ git_filter *self,
371
+ void **payload, /* may be read and/or set */
372
+ git_buf *to,
351
373
  const git_buf *from,
352
374
  const git_filter_source *src)
353
375
  {
354
376
  /* initialize payload in case `check` was bypassed */
355
377
  if (!*payload) {
356
378
  int error = crlf_check(self, payload, src, NULL);
379
+
357
380
  if (error < 0)
358
381
  return error;
359
382
  }
@@ -124,21 +124,21 @@ static int lookup_index_alloc(
124
124
  {
125
125
  size_t entries_len, hash_len, index_len;
126
126
 
127
- GITERR_CHECK_ALLOC_MULTIPLY(&entries_len, entries, sizeof(struct index_entry));
128
- GITERR_CHECK_ALLOC_MULTIPLY(&hash_len, hash_count, sizeof(struct index_entry *));
127
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&entries_len, entries, sizeof(struct index_entry));
128
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&hash_len, hash_count, sizeof(struct index_entry *));
129
129
 
130
- GITERR_CHECK_ALLOC_ADD(&index_len, sizeof(struct git_delta_index), entries_len);
131
- GITERR_CHECK_ALLOC_ADD(&index_len, index_len, hash_len);
130
+ GIT_ERROR_CHECK_ALLOC_ADD(&index_len, sizeof(struct git_delta_index), entries_len);
131
+ GIT_ERROR_CHECK_ALLOC_ADD(&index_len, index_len, hash_len);
132
132
 
133
133
  if (!git__is_ulong(index_len)) {
134
- giterr_set(GITERR_NOMEMORY, "overly large delta");
134
+ git_error_set(GIT_ERROR_NOMEMORY, "overly large delta");
135
135
  return -1;
136
136
  }
137
137
 
138
138
  *out = git__malloc(index_len);
139
- GITERR_CHECK_ALLOC(*out);
139
+ GIT_ERROR_CHECK_ALLOC(*out);
140
140
 
141
- *out_len = index_len;
141
+ *out_len = (unsigned long)index_len;
142
142
  return 0;
143
143
  }
144
144
 
@@ -286,15 +286,22 @@ int git_delta_create_from_index(
286
286
  if (!trg_buf || !trg_size)
287
287
  return 0;
288
288
 
289
+ if (index->src_size > UINT_MAX ||
290
+ trg_size > UINT_MAX ||
291
+ max_size > (UINT_MAX - MAX_OP_SIZE - 1)) {
292
+ git_error_set(GIT_ERROR_INVALID, "buffer sizes too large for delta processing");
293
+ return -1;
294
+ }
295
+
289
296
  bufpos = 0;
290
297
  bufsize = 8192;
291
298
  if (max_size && bufsize >= max_size)
292
299
  bufsize = (unsigned int)(max_size + MAX_OP_SIZE + 1);
293
300
  buf = git__malloc(bufsize);
294
- GITERR_CHECK_ALLOC(buf);
301
+ GIT_ERROR_CHECK_ALLOC(buf);
295
302
 
296
303
  /* store reference buffer size */
297
- i = index->src_size;
304
+ i = (unsigned int)index->src_size;
298
305
  while (i >= 0x80) {
299
306
  buf[bufpos++] = i | 0x80;
300
307
  i >>= 7;
@@ -302,7 +309,7 @@ int git_delta_create_from_index(
302
309
  buf[bufpos++] = i;
303
310
 
304
311
  /* store target buffer size */
305
- i = trg_size;
312
+ i = (unsigned int)trg_size;
306
313
  while (i >= 0x80) {
307
314
  buf[bufpos++] = i | 0x80;
308
315
  i >>= 7;
@@ -423,7 +430,7 @@ int git_delta_create_from_index(
423
430
  void *tmp = buf;
424
431
  bufsize = bufsize * 3 / 2;
425
432
  if (max_size && bufsize >= max_size)
426
- bufsize = max_size + MAX_OP_SIZE + 1;
433
+ bufsize = (unsigned int)(max_size + MAX_OP_SIZE + 1);
427
434
  if (max_size && bufpos > max_size)
428
435
  break;
429
436
  buf = git__realloc(buf, bufsize);
@@ -438,7 +445,7 @@ int git_delta_create_from_index(
438
445
  buf[bufpos - inscnt - 1] = inscnt;
439
446
 
440
447
  if (max_size && bufpos > max_size) {
441
- giterr_set(GITERR_NOMEMORY, "delta would be larger than maximum size");
448
+ git_error_set(GIT_ERROR_NOMEMORY, "delta would be larger than maximum size");
442
449
  git__free(buf);
443
450
  return GIT_EBUFS;
444
451
  }
@@ -466,7 +473,7 @@ static int hdr_sz(
466
473
 
467
474
  do {
468
475
  if (d == end) {
469
- giterr_set(GITERR_INVALID, "truncated delta");
476
+ git_error_set(GIT_ERROR_INVALID, "truncated delta");
470
477
  return -1;
471
478
  }
472
479
 
@@ -545,18 +552,18 @@ int git_delta_apply(
545
552
  * base object, resulting in data corruption or segfault.
546
553
  */
547
554
  if ((hdr_sz(&base_sz, &delta, delta_end) < 0) || (base_sz != base_len)) {
548
- giterr_set(GITERR_INVALID, "failed to apply delta: base size does not match given data");
555
+ git_error_set(GIT_ERROR_INVALID, "failed to apply delta: base size does not match given data");
549
556
  return -1;
550
557
  }
551
558
 
552
559
  if (hdr_sz(&res_sz, &delta, delta_end) < 0) {
553
- giterr_set(GITERR_INVALID, "failed to apply delta: base size does not match given data");
560
+ git_error_set(GIT_ERROR_INVALID, "failed to apply delta: base size does not match given data");
554
561
  return -1;
555
562
  }
556
563
 
557
- GITERR_CHECK_ALLOC_ADD(&alloc_sz, res_sz, 1);
564
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_sz, res_sz, 1);
558
565
  res_dp = git__malloc(alloc_sz);
559
- GITERR_CHECK_ALLOC(res_dp);
566
+ GIT_ERROR_CHECK_ALLOC(res_dp);
560
567
 
561
568
  res_dp[res_sz] = '\0';
562
569
  *out = res_dp;
@@ -616,6 +623,6 @@ fail:
616
623
  *out = NULL;
617
624
  *out_len = 0;
618
625
 
619
- giterr_set(GITERR_INVALID, "failed to apply delta");
626
+ git_error_set(GIT_ERROR_INVALID, "failed to apply delta");
620
627
  return -1;
621
628
  }