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
@@ -7,6 +7,8 @@
7
7
  #ifndef INCLUDE_userdiff_h__
8
8
  #define INCLUDE_userdiff_h__
9
9
 
10
+ #include "regexp.h"
11
+
10
12
  /*
11
13
  * This file isolates the built in diff driver function name patterns.
12
14
  * Most of these patterns are taken from Git (with permission from the
@@ -29,7 +31,7 @@ typedef struct {
29
31
  #define PATTERNS(NAME, FN_PATS, WORD_PAT) \
30
32
  { NAME, FN_PATS, WORD_PAT WORD_DEFAULT, 0 }
31
33
  #define IPATTERN(NAME, FN_PATS, WORD_PAT) \
32
- { NAME, FN_PATS, WORD_PAT WORD_DEFAULT, REG_ICASE }
34
+ { NAME, FN_PATS, WORD_PAT WORD_DEFAULT, GIT_REGEXP_ICASE }
33
35
 
34
36
  /*
35
37
  * The table of diff driver patterns
@@ -49,7 +49,7 @@ int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
49
49
  return 0;
50
50
 
51
51
  tgt->strings = git__calloc(src->count, sizeof(char *));
52
- GITERR_CHECK_ALLOC(tgt->strings);
52
+ GIT_ERROR_CHECK_ALLOC(tgt->strings);
53
53
 
54
54
  for (i = 0; i < src->count; ++i) {
55
55
  if (!src->strings[i])
@@ -68,12 +68,6 @@ int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
68
68
  return 0;
69
69
  }
70
70
 
71
- int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int base)
72
- {
73
-
74
- return git__strntol64(result, nptr, (size_t)-1, endptr, base);
75
- }
76
-
77
71
  int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base)
78
72
  {
79
73
  const char *p;
@@ -89,35 +83,55 @@ int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const cha
89
83
  /*
90
84
  * White space
91
85
  */
92
- while (git__isspace(*p))
93
- p++;
86
+ while (nptr_len && git__isspace(*p))
87
+ p++, nptr_len--;
88
+
89
+ if (!nptr_len)
90
+ goto Return;
94
91
 
95
92
  /*
96
93
  * Sign
97
94
  */
98
- if (*p == '-' || *p == '+')
99
- if (*p++ == '-')
95
+ if (*p == '-' || *p == '+') {
96
+ if (*p == '-')
100
97
  neg = 1;
98
+ p++;
99
+ nptr_len--;
100
+ }
101
+
102
+ if (!nptr_len)
103
+ goto Return;
101
104
 
102
105
  /*
103
- * Base
106
+ * Automatically detect the base if none was given to us.
107
+ * Right now, we assume that a number starting with '0x'
108
+ * is hexadecimal and a number starting with '0' is
109
+ * octal.
104
110
  */
105
111
  if (base == 0) {
106
112
  if (*p != '0')
107
113
  base = 10;
108
- else {
114
+ else if (nptr_len > 2 && (p[1] == 'x' || p[1] == 'X'))
115
+ base = 16;
116
+ else
109
117
  base = 8;
110
- if (p[1] == 'x' || p[1] == 'X') {
111
- p += 2;
112
- base = 16;
113
- }
114
- }
115
- } else if (base == 16 && *p == '0') {
116
- if (p[1] == 'x' || p[1] == 'X')
117
- p += 2;
118
- } else if (base < 0 || 36 < base)
118
+ }
119
+
120
+ if (base < 0 || 36 < base)
119
121
  goto Return;
120
122
 
123
+ /*
124
+ * Skip prefix of '0x'-prefixed hexadecimal numbers. There is no
125
+ * need to do the same for '0'-prefixed octal numbers as a
126
+ * leading '0' does not have any impact. Also, if we skip a
127
+ * leading '0' in such a string, then we may end up with no
128
+ * digits left and produce an error later on which isn't one.
129
+ */
130
+ if (base == 16 && nptr_len > 2 && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
131
+ p += 2;
132
+ nptr_len -= 2;
133
+ }
134
+
121
135
  /*
122
136
  * Non-empty sequence of digits
123
137
  */
@@ -132,15 +146,25 @@ int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const cha
132
146
  v = c - 'A' + 10;
133
147
  if (v >= base)
134
148
  break;
135
- nn = n * base + (neg ? -v : v);
136
- if ((!neg && nn < n) || (neg && nn > n))
149
+ v = neg ? -v : v;
150
+ if (n > INT64_MAX / base || n < INT64_MIN / base) {
137
151
  ovfl = 1;
138
- n = nn;
152
+ /* Keep on iterating until the end of this number */
153
+ continue;
154
+ }
155
+ nn = n * base;
156
+ if ((v > 0 && nn > INT64_MAX - v) ||
157
+ (v < 0 && nn < INT64_MIN - v)) {
158
+ ovfl = 1;
159
+ /* Keep on iterating until the end of this number */
160
+ continue;
161
+ }
162
+ n = nn + v;
139
163
  }
140
164
 
141
165
  Return:
142
166
  if (ndig == 0) {
143
- giterr_set(GITERR_INVALID, "failed to convert string to long: not a number");
167
+ git_error_set(GIT_ERROR_INVALID, "failed to convert string to long: not a number");
144
168
  return -1;
145
169
  }
146
170
 
@@ -148,7 +172,7 @@ Return:
148
172
  *endptr = p;
149
173
 
150
174
  if (ovfl) {
151
- giterr_set(GITERR_INVALID, "failed to convert string to long: overflow error");
175
+ git_error_set(GIT_ERROR_INVALID, "failed to convert string to long: overflow error");
152
176
  return -1;
153
177
  }
154
178
 
@@ -156,39 +180,30 @@ Return:
156
180
  return 0;
157
181
  }
158
182
 
159
- int git__strtol32(int32_t *result, const char *nptr, const char **endptr, int base)
160
- {
161
-
162
- return git__strntol32(result, nptr, (size_t)-1, endptr, base);
163
- }
164
-
165
183
  int git__strntol32(int32_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base)
166
184
  {
167
- int error;
185
+ const char *tmp_endptr;
168
186
  int32_t tmp_int;
169
187
  int64_t tmp_long;
188
+ int error;
170
189
 
171
- if ((error = git__strntol64(&tmp_long, nptr, nptr_len, endptr, base)) < 0)
190
+ if ((error = git__strntol64(&tmp_long, nptr, nptr_len, &tmp_endptr, base)) < 0)
172
191
  return error;
173
192
 
174
193
  tmp_int = tmp_long & 0xFFFFFFFF;
175
194
  if (tmp_int != tmp_long) {
176
- giterr_set(GITERR_INVALID, "failed to convert: '%s' is too large", nptr);
195
+ int len = (int)(tmp_endptr - nptr);
196
+ git_error_set(GIT_ERROR_INVALID, "failed to convert: '%.*s' is too large", len, nptr);
177
197
  return -1;
178
198
  }
179
199
 
180
200
  *result = tmp_int;
201
+ if (endptr)
202
+ *endptr = tmp_endptr;
181
203
 
182
204
  return error;
183
205
  }
184
206
 
185
- int git__strcmp(const char *a, const char *b)
186
- {
187
- while (*a && *b && *a == *b)
188
- ++a, ++b;
189
- return (int)(*(const unsigned char *)a) - (int)(*(const unsigned char *)b);
190
- }
191
-
192
207
  int git__strcasecmp(const char *a, const char *b)
193
208
  {
194
209
  while (*a && *b && git__tolower(*a) == git__tolower(*b))
@@ -218,15 +233,6 @@ int git__strcasesort_cmp(const char *a, const char *b)
218
233
  return cmp;
219
234
  }
220
235
 
221
- int git__strncmp(const char *a, const char *b, size_t sz)
222
- {
223
- while (sz && *a && *b && *a == *b)
224
- --sz, ++a, ++b;
225
- if (!sz)
226
- return 0;
227
- return (int)(*(const unsigned char *)a) - (int)(*(const unsigned char *)b);
228
- }
229
-
230
236
  int git__strncasecmp(const char *a, const char *b, size_t sz)
231
237
  {
232
238
  int al, bl;
@@ -279,7 +285,18 @@ GIT_INLINE(int) prefixcmp(const char *str, size_t str_n, const char *prefix, boo
279
285
 
280
286
  int git__prefixcmp(const char *str, const char *prefix)
281
287
  {
282
- return prefixcmp(str, SIZE_MAX, prefix, false);
288
+ unsigned char s, p;
289
+
290
+ while (1) {
291
+ p = *prefix++;
292
+ s = *str++;
293
+
294
+ if (!p)
295
+ return 0;
296
+
297
+ if (s != p)
298
+ return s - p;
299
+ }
283
300
  }
284
301
 
285
302
  int git__prefixncmp(const char *str, size_t str_n, const char *prefix)
@@ -355,6 +372,47 @@ size_t git__linenlen(const char *buffer, size_t buffer_len)
355
372
  return nl ? (size_t)(nl - buffer) + 1 : buffer_len;
356
373
  }
357
374
 
375
+ /*
376
+ * Adapted Not So Naive algorithm from http://www-igm.univ-mlv.fr/~lecroq/string/
377
+ */
378
+ const void * git__memmem(const void *haystack, size_t haystacklen,
379
+ const void *needle, size_t needlelen)
380
+ {
381
+ const char *h, *n;
382
+ size_t j, k, l;
383
+
384
+ if (needlelen > haystacklen || !haystacklen || !needlelen)
385
+ return NULL;
386
+
387
+ h = (const char *) haystack,
388
+ n = (const char *) needle;
389
+
390
+ if (needlelen == 1)
391
+ return memchr(haystack, *n, haystacklen);
392
+
393
+ if (n[0] == n[1]) {
394
+ k = 2;
395
+ l = 1;
396
+ } else {
397
+ k = 1;
398
+ l = 2;
399
+ }
400
+
401
+ j = 0;
402
+ while (j <= haystacklen - needlelen) {
403
+ if (n[1] != h[j + 1]) {
404
+ j += k;
405
+ } else {
406
+ if (memcmp(n + 2, h + j + 2, needlelen - 2) == 0 &&
407
+ n[0] == h[j])
408
+ return h + j;
409
+ j += l;
410
+ }
411
+ }
412
+
413
+ return NULL;
414
+ }
415
+
358
416
  void git__hexdump(const char *buffer, size_t len)
359
417
  {
360
418
  static const size_t LINE_WIDTH = 16;
@@ -647,7 +705,7 @@ size_t git__unescape(char *str)
647
705
  return (pos - str);
648
706
  }
649
707
 
650
- #if defined(HAVE_QSORT_S) || (defined(HAVE_QSORT_R) && defined(BSD))
708
+ #if defined(HAVE_QSORT_S) || defined(HAVE_QSORT_R_BSD)
651
709
  typedef struct {
652
710
  git__sort_r_cmp cmp;
653
711
  void *payload;
@@ -661,43 +719,51 @@ static int GIT_STDLIB_CALL git__qsort_r_glue_cmp(
661
719
  }
662
720
  #endif
663
721
 
664
- void git__qsort_r(
665
- void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload)
722
+
723
+ #if !defined(HAVE_QSORT_R_BSD) && \
724
+ !defined(HAVE_QSORT_R_GNU) && \
725
+ !defined(HAVE_QSORT_S)
726
+ static void swap(uint8_t *a, uint8_t *b, size_t elsize)
666
727
  {
667
- #if defined(HAVE_QSORT_R) && defined(BSD)
668
- git__qsort_r_glue glue = { cmp, payload };
669
- qsort_r(els, nel, elsize, &glue, git__qsort_r_glue_cmp);
670
- #elif defined(HAVE_QSORT_R) && defined(__GLIBC__)
671
- qsort_r(els, nel, elsize, cmp, payload);
672
- #elif defined(HAVE_QSORT_S)
673
- git__qsort_r_glue glue = { cmp, payload };
674
- qsort_s(els, nel, elsize, git__qsort_r_glue_cmp, &glue);
675
- #else
676
- git__insertsort_r(els, nel, elsize, NULL, cmp, payload);
677
- #endif
728
+ char tmp[256];
729
+
730
+ while (elsize) {
731
+ size_t n = elsize < sizeof(tmp) ? elsize : sizeof(tmp);
732
+ memcpy(tmp, a + elsize - n, n);
733
+ memcpy(a + elsize - n, b + elsize - n, n);
734
+ memcpy(b + elsize - n, tmp, n);
735
+ elsize -= n;
736
+ }
678
737
  }
679
738
 
680
- void git__insertsort_r(
681
- void *els, size_t nel, size_t elsize, void *swapel,
739
+ static void insertsort(
740
+ void *els, size_t nel, size_t elsize,
682
741
  git__sort_r_cmp cmp, void *payload)
683
742
  {
684
743
  uint8_t *base = els;
685
744
  uint8_t *end = base + nel * elsize;
686
745
  uint8_t *i, *j;
687
- bool freeswap = !swapel;
688
-
689
- if (freeswap)
690
- swapel = git__malloc(elsize);
691
746
 
692
747
  for (i = base + elsize; i < end; i += elsize)
693
- for (j = i; j > base && cmp(j, j - elsize, payload) < 0; j -= elsize) {
694
- memcpy(swapel, j, elsize);
695
- memcpy(j, j - elsize, elsize);
696
- memcpy(j - elsize, swapel, elsize);
697
- }
748
+ for (j = i; j > base && cmp(j, j - elsize, payload) < 0; j -= elsize)
749
+ swap(j, j - elsize, elsize);
750
+ }
751
+ #endif
698
752
 
699
- if (freeswap)
700
- git__free(swapel);
753
+ void git__qsort_r(
754
+ void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload)
755
+ {
756
+ #if defined(HAVE_QSORT_R_BSD)
757
+ git__qsort_r_glue glue = { cmp, payload };
758
+ qsort_r(els, nel, elsize, &glue, git__qsort_r_glue_cmp);
759
+ #elif defined(HAVE_QSORT_R_GNU)
760
+ qsort_r(els, nel, elsize, cmp, payload);
761
+ #elif defined(HAVE_QSORT_S)
762
+ git__qsort_r_glue glue = { cmp, payload };
763
+ qsort_s(els, nel, elsize, git__qsort_r_glue_cmp, &glue);
764
+ #else
765
+ insertsort(els, nel, elsize, cmp, payload);
766
+ #endif
701
767
  }
702
768
 
703
769
  /*
@@ -744,23 +810,23 @@ static const int8_t utf8proc_utf8class[256] = {
744
810
  4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0
745
811
  };
746
812
 
747
- int git__utf8_charlen(const uint8_t *str, int str_len)
813
+ int git__utf8_charlen(const uint8_t *str, size_t str_len)
748
814
  {
749
- int length, i;
815
+ size_t length, i;
750
816
 
751
817
  length = utf8proc_utf8class[str[0]];
752
818
  if (!length)
753
819
  return -1;
754
820
 
755
- if (str_len >= 0 && length > str_len)
756
- return -str_len;
821
+ if (str_len > 0 && length > str_len)
822
+ return -1;
757
823
 
758
824
  for (i = 1; i < length; i++) {
759
825
  if ((str[i] & 0xC0) != 0x80)
760
- return -i;
826
+ return -1;
761
827
  }
762
828
 
763
- return length;
829
+ return (int)length;
764
830
  }
765
831
 
766
832
  int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst)
@@ -801,11 +867,6 @@ int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst)
801
867
  return length;
802
868
  }
803
869
 
804
- double git_time_monotonic(void)
805
- {
806
- return git__timer();
807
- }
808
-
809
870
  size_t git__utf8_valid_buf_length(const uint8_t *str, size_t str_len)
810
871
  {
811
872
  size_t offset = 0;
@@ -836,7 +897,7 @@ int git__getenv(git_buf *out, const char *name)
836
897
 
837
898
  if ((value_len = GetEnvironmentVariableW(wide_name, NULL, 0)) > 0) {
838
899
  wide_value = git__malloc(value_len * sizeof(wchar_t));
839
- GITERR_CHECK_ALLOC(wide_value);
900
+ GIT_ERROR_CHECK_ALLOC(wide_value);
840
901
 
841
902
  value_len = GetEnvironmentVariableW(wide_name, wide_value, value_len);
842
903
  }
@@ -846,7 +907,7 @@ int git__getenv(git_buf *out, const char *name)
846
907
  else if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
847
908
  error = GIT_ENOTFOUND;
848
909
  else
849
- giterr_set(GITERR_OS, "could not read environment variable '%s'", name);
910
+ git_error_set(GIT_ERROR_OS, "could not read environment variable '%s'", name);
850
911
 
851
912
  git__free(wide_name);
852
913
  git__free(wide_value);
@@ -30,6 +30,17 @@
30
30
  # define max(a,b) ((a) > (b) ? (a) : (b))
31
31
  #endif
32
32
 
33
+ #if defined(__GNUC__)
34
+ # define GIT_CONTAINER_OF(ptr, type, member) \
35
+ __builtin_choose_expr( \
36
+ __builtin_offsetof(type, member) == 0 && \
37
+ __builtin_types_compatible_p(typeof(&((type *) 0)->member), typeof(ptr)), \
38
+ ((type *) (ptr)), \
39
+ (void)0)
40
+ #else
41
+ # define GIT_CONTAINER_OF(ptr, type, member) (type *)(ptr)
42
+ #endif
43
+
33
44
  #define GIT_DATE_RFC2822_SZ 32
34
45
 
35
46
  /**
@@ -58,9 +69,7 @@ GIT_INLINE(int) git__signum(int val)
58
69
  return ((val > 0) - (val < 0));
59
70
  }
60
71
 
61
- extern int git__strtol32(int32_t *n, const char *buff, const char **end_buf, int base);
62
72
  extern int git__strntol32(int32_t *n, const char *buff, size_t buff_len, const char **end_buf, int base);
63
- extern int git__strtol64(int64_t *n, const char *buff, const char **end_buf, int base);
64
73
  extern int git__strntol64(int64_t *n, const char *buff, size_t buff_len, const char **end_buf, int base);
65
74
 
66
75
 
@@ -113,6 +122,9 @@ GIT_INLINE(const void *) git__memrchr(const void *s, int c, size_t n)
113
122
  return NULL;
114
123
  }
115
124
 
125
+ extern const void * git__memmem(const void *haystack, size_t haystacklen,
126
+ const void *needle, size_t needlelen);
127
+
116
128
  typedef int (*git__tsort_cmp)(const void *a, const void *b);
117
129
 
118
130
  extern void git__tsort(void **dst, size_t size, git__tsort_cmp cmp);
@@ -125,10 +137,6 @@ extern void git__tsort_r(
125
137
  extern void git__qsort_r(
126
138
  void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload);
127
139
 
128
- extern void git__insertsort_r(
129
- void *els, size_t nel, size_t elsize, void *swapel,
130
- git__sort_r_cmp cmp, void *payload);
131
-
132
140
  /**
133
141
  * @param position If non-NULL, this will be set to the position where the
134
142
  * element is or would be inserted if not found.
@@ -149,12 +157,13 @@ extern int git__bsearch_r(
149
157
  void *payload,
150
158
  size_t *position);
151
159
 
160
+ #define git__strcmp strcmp
161
+ #define git__strncmp strncmp
162
+
152
163
  extern int git__strcmp_cb(const void *a, const void *b);
153
164
  extern int git__strcasecmp_cb(const void *a, const void *b);
154
165
 
155
- extern int git__strcmp(const char *a, const char *b);
156
166
  extern int git__strcasecmp(const char *a, const char *b);
157
- extern int git__strncmp(const char *a, const char *b, size_t sz);
158
167
  extern int git__strncasecmp(const char *a, const char *b, size_t sz);
159
168
 
160
169
  extern int git__strcasesort_cmp(const char *a, const char *b);
@@ -348,22 +357,9 @@ GIT_INLINE(void) git__memzero(void *data, size_t size)
348
357
 
349
358
  GIT_INLINE(double) git__timer(void)
350
359
  {
351
- /* We need the initial tick count to detect if the tick
352
- * count has rolled over. */
353
- static DWORD initial_tick_count = 0;
354
-
355
- /* GetTickCount returns the number of milliseconds that have
360
+ /* GetTickCount64 returns the number of milliseconds that have
356
361
  * elapsed since the system was started. */
357
- DWORD count = GetTickCount();
358
-
359
- if(initial_tick_count == 0) {
360
- initial_tick_count = count;
361
- } else if (count < initial_tick_count) {
362
- /* The tick count has rolled over - adjust for it. */
363
- count = (0xFFFFFFFF - initial_tick_count) + count;
364
- }
365
-
366
- return (double) count / (double) 1000;
362
+ return (double) GetTickCount64() / (double) 1000;
367
363
  }
368
364
 
369
365
  #elif __APPLE__
@@ -32,8 +32,11 @@ GIT_INLINE(int) resize_vector(git_vector *v, size_t new_size)
32
32
  {
33
33
  void *new_contents;
34
34
 
35
+ if (new_size == 0)
36
+ return 0;
37
+
35
38
  new_contents = git__reallocarray(v->contents, new_size, sizeof(void *));
36
- GITERR_CHECK_ALLOC(new_contents);
39
+ GIT_ERROR_CHECK_ALLOC(new_contents);
37
40
 
38
41
  v->_alloc_size = new_size;
39
42
  v->contents = new_contents;
@@ -50,22 +53,24 @@ int git_vector_size_hint(git_vector *v, size_t size_hint)
50
53
 
51
54
  int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
52
55
  {
53
- size_t bytes;
54
-
55
56
  assert(v && src);
56
57
 
57
- GITERR_CHECK_ALLOC_MULTIPLY(&bytes, src->length, sizeof(void *));
58
-
59
- v->_alloc_size = src->length;
58
+ v->_alloc_size = 0;
59
+ v->contents = NULL;
60
60
  v->_cmp = cmp ? cmp : src->_cmp;
61
61
  v->length = src->length;
62
62
  v->flags = src->flags;
63
63
  if (cmp != src->_cmp)
64
64
  git_vector_set_sorted(v, 0);
65
- v->contents = git__malloc(bytes);
66
- GITERR_CHECK_ALLOC(v->contents);
67
65
 
68
- memcpy(v->contents, src->contents, bytes);
66
+ if (src->length) {
67
+ size_t bytes;
68
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&bytes, src->length, sizeof(void *));
69
+ v->contents = git__malloc(bytes);
70
+ GIT_ERROR_CHECK_ALLOC(v->contents);
71
+ v->_alloc_size = src->length;
72
+ memcpy(v->contents, src->contents, bytes);
73
+ }
69
74
 
70
75
  return 0;
71
76
  }
@@ -337,7 +342,7 @@ int git_vector_insert_null(git_vector *v, size_t idx, size_t insert_len)
337
342
 
338
343
  assert(insert_len > 0 && idx <= v->length);
339
344
 
340
- GITERR_CHECK_ALLOC_ADD(&new_length, v->length, insert_len);
345
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_length, v->length, insert_len);
341
346
 
342
347
  if (new_length > v->_alloc_size && resize_vector(v, new_length) < 0)
343
348
  return -1;