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
@@ -11,7 +11,7 @@
11
11
 
12
12
  #include "git2/submodule.h"
13
13
  #include "git2/repository.h"
14
- #include "fileops.h"
14
+ #include "futils.h"
15
15
 
16
16
  /* Notes:
17
17
  *
@@ -57,12 +57,12 @@ static int get_passwd_home(git_buf *out, uid_t uid)
57
57
  } while (error == ERANGE && buflen <= 8192);
58
58
 
59
59
  if (error) {
60
- giterr_set(GITERR_OS, "failed to get passwd entry");
60
+ git_error_set(GIT_ERROR_OS, "failed to get passwd entry");
61
61
  goto out;
62
62
  }
63
63
 
64
64
  if (!pwdptr) {
65
- giterr_set(GITERR_OS, "no passwd entry found for user");
65
+ git_error_set(GIT_ERROR_OS, "no passwd entry found for user");
66
66
  goto out;
67
67
  }
68
68
 
@@ -82,21 +82,31 @@ static int git_sysdir_guess_global_dirs(git_buf *out)
82
82
  #else
83
83
  int error;
84
84
  uid_t uid, euid;
85
+ const char *sandbox_id;
85
86
 
86
87
  uid = getuid();
87
88
  euid = geteuid();
88
89
 
90
+ /**
91
+ * If APP_SANDBOX_CONTAINER_ID is set, we are running in a
92
+ * sandboxed environment on macOS.
93
+ */
94
+ sandbox_id = getenv("APP_SANDBOX_CONTAINER_ID");
95
+
89
96
  /*
90
97
  * In case we are running setuid, use the configuration
91
98
  * of the effective user.
99
+ *
100
+ * If we are running in a sandboxed environment on macOS,
101
+ * we have to get the HOME dir from the password entry file.
92
102
  */
93
- if (uid == euid)
103
+ if (!sandbox_id && uid == euid)
94
104
  error = git__getenv(out, "HOME");
95
105
  else
96
106
  error = get_passwd_home(out, euid);
97
107
 
98
108
  if (error == GIT_ENOTFOUND) {
99
- giterr_clear();
109
+ git_error_clear();
100
110
  error = 0;
101
111
  }
102
112
 
@@ -132,7 +142,7 @@ static int git_sysdir_guess_xdg_dirs(git_buf *out)
132
142
  }
133
143
 
134
144
  if (error == GIT_ENOTFOUND) {
135
- giterr_clear();
145
+ git_error_clear();
136
146
  error = 0;
137
147
  }
138
148
 
@@ -189,7 +199,7 @@ static int git_sysdir_check_selector(git_sysdir_t which)
189
199
  if (which < ARRAY_SIZE(git_sysdir__dirs))
190
200
  return 0;
191
201
 
192
- giterr_set(GITERR_INVALID, "config directory selector out of range");
202
+ git_error_set(GIT_ERROR_INVALID, "config directory selector out of range");
193
203
  return -1;
194
204
  }
195
205
 
@@ -200,7 +210,7 @@ int git_sysdir_get(const git_buf **out, git_sysdir_t which)
200
210
 
201
211
  *out = NULL;
202
212
 
203
- GITERR_CHECK_ERROR(git_sysdir_check_selector(which));
213
+ GIT_ERROR_CHECK_ERROR(git_sysdir_check_selector(which));
204
214
 
205
215
  *out = &git_sysdir__dirs[which].buf;
206
216
  return 0;
@@ -213,11 +223,11 @@ int git_sysdir_get_str(
213
223
  {
214
224
  const git_buf *path = NULL;
215
225
 
216
- GITERR_CHECK_ERROR(git_sysdir_check_selector(which));
217
- GITERR_CHECK_ERROR(git_sysdir_get(&path, which));
226
+ GIT_ERROR_CHECK_ERROR(git_sysdir_check_selector(which));
227
+ GIT_ERROR_CHECK_ERROR(git_sysdir_get(&path, which));
218
228
 
219
229
  if (!out || path->size >= outlen) {
220
- giterr_set(GITERR_NOMEMORY, "buffer is too short for the path");
230
+ git_error_set(GIT_ERROR_NOMEMORY, "buffer is too short for the path");
221
231
  return GIT_EBUFS;
222
232
  }
223
233
 
@@ -232,7 +242,7 @@ int git_sysdir_set(git_sysdir_t which, const char *search_path)
232
242
  const char *expand_path = NULL;
233
243
  git_buf merge = GIT_BUF_INIT;
234
244
 
235
- GITERR_CHECK_ERROR(git_sysdir_check_selector(which));
245
+ GIT_ERROR_CHECK_ERROR(git_sysdir_check_selector(which));
236
246
 
237
247
  if (search_path != NULL)
238
248
  expand_path = strstr(search_path, PATH_MAGIC);
@@ -281,7 +291,7 @@ static int git_sysdir_find_in_dirlist(
281
291
  const char *scan, *next = NULL;
282
292
  const git_buf *syspath;
283
293
 
284
- GITERR_CHECK_ERROR(git_sysdir_get(&syspath, which));
294
+ GIT_ERROR_CHECK_ERROR(git_sysdir_get(&syspath, which));
285
295
  if (!syspath || !git_buf_len(syspath))
286
296
  goto done;
287
297
 
@@ -298,9 +308,9 @@ static int git_sysdir_find_in_dirlist(
298
308
  if (!len)
299
309
  continue;
300
310
 
301
- GITERR_CHECK_ERROR(git_buf_set(path, scan, len));
311
+ GIT_ERROR_CHECK_ERROR(git_buf_set(path, scan, len));
302
312
  if (name)
303
- GITERR_CHECK_ERROR(git_buf_joinpath(path, path->ptr, name));
313
+ GIT_ERROR_CHECK_ERROR(git_buf_joinpath(path, path->ptr, name));
304
314
 
305
315
  if (git_path_exists(path->ptr))
306
316
  return 0;
@@ -308,7 +318,7 @@ static int git_sysdir_find_in_dirlist(
308
318
 
309
319
  done:
310
320
  git_buf_dispose(path);
311
- giterr_set(GITERR_OS, "the %s file '%s' doesn't exist", label, name);
321
+ git_error_set(GIT_ERROR_OS, "the %s file '%s' doesn't exist", label, name);
312
322
  return GIT_ENOTFOUND;
313
323
  }
314
324
 
@@ -10,6 +10,7 @@
10
10
  #include "commit.h"
11
11
  #include "signature.h"
12
12
  #include "message.h"
13
+ #include "wildmatch.h"
13
14
  #include "git2/object.h"
14
15
  #include "git2/repository.h"
15
16
  #include "git2/signature.h"
@@ -36,7 +37,7 @@ const git_oid *git_tag_target_id(const git_tag *t)
36
37
  return &t->target;
37
38
  }
38
39
 
39
- git_otype git_tag_target_type(const git_tag *t)
40
+ git_object_t git_tag_target_type(const git_tag *t)
40
41
  {
41
42
  assert(t);
42
43
  return t->type;
@@ -61,7 +62,7 @@ const char *git_tag_message(const git_tag *t)
61
62
 
62
63
  static int tag_error(const char *str)
63
64
  {
64
- giterr_set(GITERR_TAG, "failed to parse tag: %s", str);
65
+ git_error_set(GIT_ERROR_TAG, "failed to parse tag: %s", str);
65
66
  return -1;
66
67
  }
67
68
 
@@ -70,10 +71,9 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
70
71
  static const char *tag_types[] = {
71
72
  NULL, "commit\n", "tree\n", "blob\n", "tag\n"
72
73
  };
73
-
74
- unsigned int i;
75
74
  size_t text_len, alloc_len;
76
- char *search;
75
+ const char *search;
76
+ unsigned int i;
77
77
 
78
78
  if (git_oid__parse(&tag->target, &buffer, buffer_end, "object ") < 0)
79
79
  return tag_error("object field invalid");
@@ -85,7 +85,7 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
85
85
  return tag_error("type field not found");
86
86
  buffer += 5;
87
87
 
88
- tag->type = GIT_OBJ_BAD;
88
+ tag->type = GIT_OBJECT_INVALID;
89
89
 
90
90
  for (i = 1; i < ARRAY_SIZE(tag_types); ++i) {
91
91
  size_t type_length = strlen(tag_types[i]);
@@ -100,7 +100,7 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
100
100
  }
101
101
  }
102
102
 
103
- if (tag->type == GIT_OBJ_BAD)
103
+ if (tag->type == GIT_OBJECT_INVALID)
104
104
  return tag_error("invalid object type");
105
105
 
106
106
  if (buffer + 4 >= buffer_end)
@@ -117,9 +117,9 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
117
117
 
118
118
  text_len = search - buffer;
119
119
 
120
- GITERR_CHECK_ALLOC_ADD(&alloc_len, text_len, 1);
120
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, text_len, 1);
121
121
  tag->tag_name = git__malloc(alloc_len);
122
- GITERR_CHECK_ALLOC(tag->tag_name);
122
+ GIT_ERROR_CHECK_ALLOC(tag->tag_name);
123
123
 
124
124
  memcpy(tag->tag_name, buffer, text_len);
125
125
  tag->tag_name[text_len] = '\0';
@@ -129,7 +129,7 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
129
129
  tag->tagger = NULL;
130
130
  if (buffer < buffer_end && *buffer != '\n') {
131
131
  tag->tagger = git__malloc(sizeof(git_signature));
132
- GITERR_CHECK_ALLOC(tag->tagger);
132
+ GIT_ERROR_CHECK_ALLOC(tag->tagger);
133
133
 
134
134
  if (git_signature__parse(tag->tagger, &buffer, buffer_end, "tagger ", '\n') < 0)
135
135
  return -1;
@@ -138,8 +138,9 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
138
138
  tag->message = NULL;
139
139
  if (buffer < buffer_end) {
140
140
  /* If we're not at the end of the header, search for it */
141
- if( *buffer != '\n' ) {
142
- search = strstr(buffer, "\n\n");
141
+ if(*buffer != '\n') {
142
+ search = git__memmem(buffer, buffer_end - buffer,
143
+ "\n\n", 2);
143
144
  if (search)
144
145
  buffer = search + 1;
145
146
  else
@@ -148,9 +149,9 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
148
149
 
149
150
  text_len = buffer_end - ++buffer;
150
151
 
151
- GITERR_CHECK_ALLOC_ADD(&alloc_len, text_len, 1);
152
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, text_len, 1);
152
153
  tag->message = git__malloc(alloc_len);
153
- GITERR_CHECK_ALLOC(tag->message);
154
+ GIT_ERROR_CHECK_ALLOC(tag->message);
154
155
 
155
156
  memcpy(tag->message, buffer, text_len);
156
157
  tag->message[text_len] = '\0';
@@ -159,6 +160,11 @@ static int tag_parse(git_tag *tag, const char *buffer, const char *buffer_end)
159
160
  return 0;
160
161
  }
161
162
 
163
+ int git_tag__parse_raw(void *_tag, const char *data, size_t size)
164
+ {
165
+ return tag_parse(_tag, data, data + size);
166
+ }
167
+
162
168
  int git_tag__parse(void *_tag, git_odb_object *odb_obj)
163
169
  {
164
170
  git_tag *tag = _tag;
@@ -226,7 +232,7 @@ static int write_tag_annotation(
226
232
  if (git_repository_odb__weakptr(&odb, repo) < 0)
227
233
  goto on_error;
228
234
 
229
- if (git_odb_write(oid, odb, tag.ptr, tag.size, GIT_OBJ_TAG) < 0)
235
+ if (git_odb_write(oid, odb, tag.ptr, tag.size, GIT_OBJECT_TAG) < 0)
230
236
  goto on_error;
231
237
 
232
238
  git_buf_dispose(&tag);
@@ -234,7 +240,7 @@ static int write_tag_annotation(
234
240
 
235
241
  on_error:
236
242
  git_buf_dispose(&tag);
237
- giterr_set(GITERR_OBJECT, "failed to create tag annotation");
243
+ git_error_set(GIT_ERROR_OBJECT, "failed to create tag annotation");
238
244
  return -1;
239
245
  }
240
246
 
@@ -257,7 +263,7 @@ static int git_tag_create__internal(
257
263
  assert(!create_tag_annotation || (tagger && message));
258
264
 
259
265
  if (git_object_owner(target) != repo) {
260
- giterr_set(GITERR_INVALID, "the given target does not belong to this repository");
266
+ git_error_set(GIT_ERROR_INVALID, "the given target does not belong to this repository");
261
267
  return -1;
262
268
  }
263
269
 
@@ -269,7 +275,7 @@ static int git_tag_create__internal(
269
275
  * reference unless overwriting has explicitly been requested **/
270
276
  if (error == 0 && !allow_ref_overwrite) {
271
277
  git_buf_dispose(&ref_name);
272
- giterr_set(GITERR_TAG, "tag already exists");
278
+ git_error_set(GIT_ERROR_TAG, "tag already exists");
273
279
  return GIT_EEXISTS;
274
280
  }
275
281
 
@@ -322,7 +328,7 @@ int git_tag_create_lightweight(
322
328
  return git_tag_create__internal(oid, repo, tag_name, target, NULL, NULL, allow_ref_overwrite, 0);
323
329
  }
324
330
 
325
- int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *buffer, int allow_ref_overwrite)
331
+ int git_tag_create_from_buffer(git_oid *oid, git_repository *repo, const char *buffer, int allow_ref_overwrite)
326
332
  {
327
333
  git_tag tag;
328
334
  int error;
@@ -349,7 +355,7 @@ int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *bu
349
355
  goto on_error;
350
356
 
351
357
  if (tag.type != target_obj->cached.type) {
352
- giterr_set(GITERR_TAG, "the type for the given target is invalid");
358
+ git_error_set(GIT_ERROR_TAG, "the type for the given target is invalid");
353
359
  goto on_error;
354
360
  }
355
361
 
@@ -366,13 +372,13 @@ int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *bu
366
372
  /** Ensure the tag name doesn't conflict with an already existing
367
373
  * reference unless overwriting has explicitly been requested **/
368
374
  if (error == 0 && !allow_ref_overwrite) {
369
- giterr_set(GITERR_TAG, "tag already exists");
375
+ git_error_set(GIT_ERROR_TAG, "tag already exists");
370
376
  return GIT_EEXISTS;
371
377
  }
372
378
 
373
379
  /* write the buffer */
374
380
  if ((error = git_odb_open_wstream(
375
- &stream, odb, strlen(buffer), GIT_OBJ_TAG)) < 0)
381
+ &stream, odb, strlen(buffer), GIT_OBJECT_TAG)) < 0)
376
382
  return error;
377
383
 
378
384
  if (!(error = git_odb_stream_write(stream, buffer, strlen(buffer))))
@@ -438,7 +444,7 @@ static int tags_cb(const char *ref, void *data)
438
444
 
439
445
  if (!(error = git_reference_name_to_id(&oid, d->repo, ref))) {
440
446
  if ((error = d->cb(ref, &oid, d->cb_data)) != 0)
441
- giterr_set_after_callback_function(error, "git_tag_foreach");
447
+ git_error_set_after_callback_function(error, "git_tag_foreach");
442
448
  }
443
449
 
444
450
  return error;
@@ -470,10 +476,10 @@ static int tag_list_cb(const char *tag_name, git_oid *oid, void *data)
470
476
  GIT_UNUSED(oid);
471
477
 
472
478
  if (!*filter->pattern ||
473
- p_fnmatch(filter->pattern, tag_name + GIT_REFS_TAGS_DIR_LEN, 0) == 0)
479
+ wildmatch(filter->pattern, tag_name + GIT_REFS_TAGS_DIR_LEN, 0) == 0)
474
480
  {
475
481
  char *matched = git__strdup(tag_name + GIT_REFS_TAGS_DIR_LEN);
476
- GITERR_CHECK_ALLOC(matched);
482
+ GIT_ERROR_CHECK_ALLOC(matched);
477
483
 
478
484
  return git_vector_insert(filter->taglist, matched);
479
485
  }
@@ -513,5 +519,12 @@ int git_tag_list(git_strarray *tag_names, git_repository *repo)
513
519
 
514
520
  int git_tag_peel(git_object **tag_target, const git_tag *tag)
515
521
  {
516
- return git_object_peel(tag_target, (const git_object *)tag, GIT_OBJ_ANY);
522
+ return git_object_peel(tag_target, (const git_object *)tag, GIT_OBJECT_ANY);
523
+ }
524
+
525
+ /* Deprecated Functions */
526
+
527
+ int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *buffer, int allow_ref_overwrite)
528
+ {
529
+ return git_tag_create_from_buffer(oid, repo, buffer, allow_ref_overwrite);
517
530
  }
@@ -17,7 +17,7 @@ struct git_tag {
17
17
  git_object object;
18
18
 
19
19
  git_oid target;
20
- git_otype type;
20
+ git_object_t type;
21
21
 
22
22
  char *tag_name;
23
23
  git_signature *tagger;
@@ -26,5 +26,6 @@ struct git_tag {
26
26
 
27
27
  void git_tag__free(void *tag);
28
28
  int git_tag__parse(void *tag, git_odb_object *obj);
29
+ int git_tag__parse_raw(void *tag, const char *data, size_t size);
29
30
 
30
31
  #endif
@@ -17,7 +17,7 @@ struct git_trace_data git_trace__data = {0};
17
17
 
18
18
  #endif
19
19
 
20
- int git_trace_set(git_trace_level_t level, git_trace_callback callback)
20
+ int git_trace_set(git_trace_level_t level, git_trace_cb callback)
21
21
  {
22
22
  #ifdef GIT_TRACE
23
23
  assert(level == 0 || callback != NULL);
@@ -31,7 +31,7 @@ int git_trace_set(git_trace_level_t level, git_trace_callback callback)
31
31
  GIT_UNUSED(level);
32
32
  GIT_UNUSED(callback);
33
33
 
34
- giterr_set(GITERR_INVALID,
34
+ git_error_set(GIT_ERROR_INVALID,
35
35
  "this version of libgit2 was not built with tracing.");
36
36
  return -1;
37
37
  #endif
@@ -16,7 +16,7 @@
16
16
 
17
17
  struct git_trace_data {
18
18
  git_trace_level_t level;
19
- git_trace_callback callback;
19
+ git_trace_cb callback;
20
20
  };
21
21
 
22
22
  extern struct git_trace_data git_trace__data;
@@ -25,7 +25,7 @@ GIT_INLINE(void) git_trace__write_fmt(
25
25
  git_trace_level_t level,
26
26
  const char *fmt, ...)
27
27
  {
28
- git_trace_callback callback = git_trace__data.callback;
28
+ git_trace_cb callback = git_trace__data.callback;
29
29
  git_buf message = GIT_BUF_INIT;
30
30
  va_list ap;
31
31
 
@@ -42,15 +42,19 @@ static const char *next_line(const char *str)
42
42
  }
43
43
 
44
44
  /*
45
- * Return the position of the start of the last line. If len is 0, return -1.
45
+ * Return the position of the start of the last line. If len is 0, return 0.
46
46
  */
47
- static int last_line(const char *buf, size_t len)
47
+ static bool last_line(size_t *out, const char *buf, size_t len)
48
48
  {
49
- int i;
49
+ size_t i;
50
+
51
+ *out = 0;
52
+
50
53
  if (len == 0)
51
- return -1;
54
+ return false;
52
55
  if (len == 1)
53
- return 0;
56
+ return true;
57
+
54
58
  /*
55
59
  * Skip the last character (in addition to the null terminator),
56
60
  * because if the last character is a newline, it is considered as part
@@ -58,31 +62,37 @@ static int last_line(const char *buf, size_t len)
58
62
  */
59
63
  i = len - 2;
60
64
 
61
- for (; i >= 0; i--) {
62
- if (buf[i] == '\n')
63
- return i + 1;
65
+ for (; i > 0; i--) {
66
+ if (buf[i] == '\n') {
67
+ *out = i + 1;
68
+ return true;
69
+ }
64
70
  }
65
- return 0;
71
+ return true;
66
72
  }
67
73
 
68
74
  /*
69
75
  * If the given line is of the form
70
- * "<token><optional whitespace><separator>..." or "<separator>...", return the
71
- * location of the separator. Otherwise, return -1. The optional whitespace
72
- * is allowed there primarily to allow things like "Bug #43" where <token> is
73
- * "Bug" and <separator> is "#".
76
+ * "<token><optional whitespace><separator>..." or "<separator>...", sets out
77
+ * to the location of the separator and returns true. Otherwise, returns
78
+ * false. The optional whitespace is allowed there primarily to allow things
79
+ * like "Bug #43" where <token> is "Bug" and <separator> is "#".
74
80
  *
75
- * The separator-starts-line case (in which this function returns 0) is
76
- * distinguished from the non-well-formed-line case (in which this function
77
- * returns -1) because some callers of this function need such a distinction.
81
+ * The separator-starts-line case (in which this function returns true and
82
+ * sets out to 0) is distinguished from the non-well-formed-line case (in
83
+ * which this function returns false) because some callers of this function
84
+ * need such a distinction.
78
85
  */
79
- static int find_separator(const char *line, const char *separators)
86
+ static bool find_separator(size_t *out, const char *line, const char *separators)
80
87
  {
81
88
  int whitespace_found = 0;
82
89
  const char *c;
83
90
  for (c = line; *c; c++) {
84
- if (strchr(separators, *c))
85
- return c - line;
91
+ if (strchr(separators, *c)) {
92
+ *out = c - line;
93
+ return true;
94
+ }
95
+
86
96
  if (!whitespace_found && (isalnum(*c) || *c == '-'))
87
97
  continue;
88
98
  if (c != line && (*c == ' ' || *c == '\t')) {
@@ -91,7 +101,7 @@ static int find_separator(const char *line, const char *separators)
91
101
  }
92
102
  break;
93
103
  }
94
- return -1;
104
+ return false;
95
105
  }
96
106
 
97
107
  /*
@@ -104,10 +114,9 @@ static int find_separator(const char *line, const char *separators)
104
114
  * Returns the number of bytes from the tail to ignore, to be fed as
105
115
  * the second parameter to append_signoff().
106
116
  */
107
- static int ignore_non_trailer(const char *buf, size_t len)
117
+ static size_t ignore_non_trailer(const char *buf, size_t len)
108
118
  {
109
- int boc = 0;
110
- size_t bol = 0;
119
+ size_t boc = 0, bol = 0;
111
120
  int in_old_conflicts_block = 0;
112
121
  size_t cutoff = len;
113
122
 
@@ -144,7 +153,7 @@ static int ignore_non_trailer(const char *buf, size_t len)
144
153
  * Return the position of the start of the patch or the length of str if there
145
154
  * is no patch in the message.
146
155
  */
147
- static int find_patch_start(const char *str)
156
+ static size_t find_patch_start(const char *str)
148
157
  {
149
158
  const char *s;
150
159
 
@@ -160,10 +169,11 @@ static int find_patch_start(const char *str)
160
169
  * Return the position of the first trailer line or len if there are no
161
170
  * trailers.
162
171
  */
163
- static int find_trailer_start(const char *buf, size_t len)
172
+ static size_t find_trailer_start(const char *buf, size_t len)
164
173
  {
165
174
  const char *s;
166
- int end_of_title, l, only_spaces = 1;
175
+ size_t end_of_title, l;
176
+ int only_spaces = 1;
167
177
  int recognized_prefix = 0, trailer_lines = 0, non_trailer_lines = 0;
168
178
  /*
169
179
  * Number of possible continuation lines encountered. This will be
@@ -189,12 +199,11 @@ static int find_trailer_start(const char *buf, size_t len)
189
199
  * trailers, or (ii) contains at least one Git-generated trailer and
190
200
  * consists of at least 25% trailers.
191
201
  */
192
- for (l = last_line(buf, len);
193
- l >= end_of_title;
194
- l = last_line(buf, l)) {
202
+ l = len;
203
+ while (last_line(&l, buf, l) && l >= end_of_title) {
195
204
  const char *bol = buf + l;
196
205
  const char *const *p;
197
- int separator_pos;
206
+ size_t separator_pos = 0;
198
207
 
199
208
  if (bol[0] == COMMENT_LINE_CHAR) {
200
209
  non_trailer_lines += possible_continuation_lines;
@@ -223,7 +232,7 @@ static int find_trailer_start(const char *buf, size_t len)
223
232
  }
224
233
  }
225
234
 
226
- separator_pos = find_separator(bol, TRAILER_SEPARATORS);
235
+ find_separator(&separator_pos, bol, TRAILER_SEPARATORS);
227
236
  if (separator_pos >= 1 && !isspace(bol[0])) {
228
237
  trailer_lines++;
229
238
  possible_continuation_lines = 0;
@@ -244,7 +253,7 @@ continue_outer_loop:
244
253
  }
245
254
 
246
255
  /* Return the position of the end of the trailers. */
247
- static int find_trailer_end(const char *buf, size_t len)
256
+ static size_t find_trailer_end(const char *buf, size_t len)
248
257
  {
249
258
  return len - ignore_non_trailer(buf, len);
250
259
  }
@@ -258,6 +267,9 @@ static char *extract_trailer_block(const char *message, size_t* len)
258
267
  size_t trailer_len = trailer_end - trailer_start;
259
268
 
260
269
  char *buffer = git__malloc(trailer_len + 1);
270
+ if (buffer == NULL)
271
+ return NULL;
272
+
261
273
  memcpy(buffer, message + trailer_start, trailer_len);
262
274
  buffer[trailer_len] = 0;
263
275
 
@@ -293,6 +305,8 @@ int git_message_trailers(git_message_trailer_array *trailer_arr, const char *mes
293
305
 
294
306
  size_t trailer_len;
295
307
  char *trailer = extract_trailer_block(message, &trailer_len);
308
+ if (trailer == NULL)
309
+ return -1;
296
310
 
297
311
  for (ptr = trailer;;) {
298
312
  switch (state) {