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
@@ -9,10 +9,10 @@
9
9
 
10
10
  #include "git2/errors.h"
11
11
 
12
- #include "util.h"
13
- #include "posix.h"
14
12
  #include "refs.h"
13
+ #include "util.h"
15
14
  #include "vector.h"
15
+ #include "wildmatch.h"
16
16
 
17
17
  int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
18
18
  {
@@ -43,11 +43,11 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
43
43
  if (!is_fetch && rhs == lhs && rhs[1] == '\0') {
44
44
  refspec->matching = 1;
45
45
  refspec->string = git__strdup(input);
46
- GITERR_CHECK_ALLOC(refspec->string);
46
+ GIT_ERROR_CHECK_ALLOC(refspec->string);
47
47
  refspec->src = git__strdup("");
48
- GITERR_CHECK_ALLOC(refspec->src);
48
+ GIT_ERROR_CHECK_ALLOC(refspec->src);
49
49
  refspec->dst = git__strdup("");
50
- GITERR_CHECK_ALLOC(refspec->dst);
50
+ GIT_ERROR_CHECK_ALLOC(refspec->dst);
51
51
  return 0;
52
52
  }
53
53
 
@@ -69,8 +69,9 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
69
69
 
70
70
  refspec->pattern = is_glob;
71
71
  refspec->src = git__strndup(lhs, llen);
72
- flags = GIT_REF_FORMAT_ALLOW_ONELEVEL | GIT_REF_FORMAT_REFSPEC_SHORTHAND
73
- | (is_glob ? GIT_REF_FORMAT_REFSPEC_PATTERN : 0);
72
+ flags = GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL |
73
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND |
74
+ (is_glob ? GIT_REFERENCE_FORMAT_REFSPEC_PATTERN : 0);
74
75
 
75
76
  if (is_fetch) {
76
77
  /*
@@ -131,18 +132,18 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
131
132
  /* if the RHS is empty, then it's a copy of the LHS */
132
133
  if (!refspec->dst) {
133
134
  refspec->dst = git__strdup(refspec->src);
134
- GITERR_CHECK_ALLOC(refspec->dst);
135
+ GIT_ERROR_CHECK_ALLOC(refspec->dst);
135
136
  }
136
137
  }
137
138
 
138
139
  refspec->string = git__strdup(input);
139
- GITERR_CHECK_ALLOC(refspec->string);
140
+ GIT_ERROR_CHECK_ALLOC(refspec->string);
140
141
 
141
142
  return 0;
142
143
 
143
144
  invalid:
144
- giterr_set(
145
- GITERR_INVALID,
145
+ git_error_set(
146
+ GIT_ERROR_INVALID,
146
147
  "'%s' is not a valid refspec.", input);
147
148
  git_refspec__dispose(refspec);
148
149
  return -1;
@@ -168,7 +169,7 @@ int git_refspec_parse(git_refspec **out_refspec, const char *input, int is_fetch
168
169
  *out_refspec = NULL;
169
170
 
170
171
  refspec = git__malloc(sizeof(git_refspec));
171
- GITERR_CHECK_ALLOC(refspec);
172
+ GIT_ERROR_CHECK_ALLOC(refspec);
172
173
 
173
174
  if (git_refspec__parse(refspec, input, !!is_fetch) != 0) {
174
175
  git__free(refspec);
@@ -212,7 +213,7 @@ int git_refspec_src_matches(const git_refspec *refspec, const char *refname)
212
213
  if (refspec == NULL || refspec->src == NULL)
213
214
  return false;
214
215
 
215
- return (p_fnmatch(refspec->src, refname, 0) == 0);
216
+ return (wildmatch(refspec->src, refname, 0) == 0);
216
217
  }
217
218
 
218
219
  int git_refspec_dst_matches(const git_refspec *refspec, const char *refname)
@@ -220,14 +221,13 @@ int git_refspec_dst_matches(const git_refspec *refspec, const char *refname)
220
221
  if (refspec == NULL || refspec->dst == NULL)
221
222
  return false;
222
223
 
223
- return (p_fnmatch(refspec->dst, refname, 0) == 0);
224
+ return (wildmatch(refspec->dst, refname, 0) == 0);
224
225
  }
225
226
 
226
227
  static int refspec_transform(
227
228
  git_buf *out, const char *from, const char *to, const char *name)
228
229
  {
229
230
  const char *from_star, *to_star;
230
- const char *name_slash, *from_slash;
231
231
  size_t replacement_len, star_offset;
232
232
 
233
233
  git_buf_sanitize(out);
@@ -250,17 +250,11 @@ static int refspec_transform(
250
250
  /* the first half is copied over */
251
251
  git_buf_put(out, to, to_star - to);
252
252
 
253
- /* then we copy over the replacement, from the star's offset to the next slash in 'name' */
254
- name_slash = strchr(name + star_offset, '/');
255
- if (!name_slash)
256
- name_slash = strrchr(name, '\0');
257
-
258
- /* if there is no slash after the star in 'from', we want to copy everything over */
259
- from_slash = strchr(from + star_offset, '/');
260
- if (!from_slash)
261
- name_slash = strrchr(name, '\0');
262
-
263
- replacement_len = (name_slash - name) - star_offset;
253
+ /*
254
+ * Copy over the name, but exclude the trailing part in "from" starting
255
+ * after the glob
256
+ */
257
+ replacement_len = strlen(name + star_offset) - strlen(from_star + 1);
264
258
  git_buf_put(out, name + star_offset, replacement_len);
265
259
 
266
260
  return git_buf_puts(out, to_star + 1);
@@ -272,7 +266,7 @@ int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *nam
272
266
  git_buf_sanitize(out);
273
267
 
274
268
  if (!git_refspec_src_matches(spec, name)) {
275
- giterr_set(GITERR_INVALID, "ref '%s' doesn't match the source", name);
269
+ git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the source", name);
276
270
  return -1;
277
271
  }
278
272
 
@@ -288,7 +282,7 @@ int git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *na
288
282
  git_buf_sanitize(out);
289
283
 
290
284
  if (!git_refspec_dst_matches(spec, name)) {
291
- giterr_set(GITERR_INVALID, "ref '%s' doesn't match the destination", name);
285
+ git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the destination", name);
292
286
  return -1;
293
287
  }
294
288
 
@@ -341,7 +335,7 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
341
335
  assert(out && spec && refs);
342
336
 
343
337
  cur = git__calloc(1, sizeof(git_refspec));
344
- GITERR_CHECK_ALLOC(cur);
338
+ GIT_ERROR_CHECK_ALLOC(cur);
345
339
 
346
340
  cur->force = spec->force;
347
341
  cur->push = spec->push;
@@ -354,7 +348,7 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
354
348
  for (j = 0; formatters[j]; j++) {
355
349
  git_buf_clear(&buf);
356
350
  git_buf_printf(&buf, formatters[j], spec->src);
357
- GITERR_CHECK_ALLOC_BUF(&buf);
351
+ GIT_ERROR_CHECK_ALLOC_BUF(&buf);
358
352
 
359
353
  key.name = (char *) git_buf_cstr(&buf);
360
354
  if (!git_vector_search(&pos, refs, &key)) {
@@ -367,7 +361,7 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
367
361
  /* No shorthands found, copy over the name */
368
362
  if (cur->src == NULL && spec->src != NULL) {
369
363
  cur->src = git__strdup(spec->src);
370
- GITERR_CHECK_ALLOC(cur->src);
364
+ GIT_ERROR_CHECK_ALLOC(cur->src);
371
365
  }
372
366
 
373
367
  if (spec->dst && git__prefixcmp(spec->dst, GIT_REFS_DIR)) {
@@ -379,7 +373,7 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
379
373
  }
380
374
 
381
375
  git_buf_puts(&buf, spec->dst);
382
- GITERR_CHECK_ALLOC_BUF(&buf);
376
+ GIT_ERROR_CHECK_ALLOC_BUF(&buf);
383
377
 
384
378
  cur->dst = git_buf_detach(&buf);
385
379
  }
@@ -388,7 +382,7 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
388
382
 
389
383
  if (cur->dst == NULL && spec->dst != NULL) {
390
384
  cur->dst = git__strdup(spec->dst);
391
- GITERR_CHECK_ALLOC(cur->dst);
385
+ GIT_ERROR_CHECK_ALLOC(cur->dst);
392
386
  }
393
387
 
394
388
  return git_vector_insert(out, cur);
@@ -0,0 +1,221 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #include "regexp.h"
9
+
10
+ #if defined(GIT_REGEX_BUILTIN) || defined(GIT_REGEX_PCRE)
11
+
12
+ int git_regexp_compile(git_regexp *r, const char *pattern, int flags)
13
+ {
14
+ int erroffset, cflags = 0;
15
+ const char *error;
16
+
17
+ if (flags & GIT_REGEXP_ICASE)
18
+ cflags |= PCRE_CASELESS;
19
+
20
+ if ((*r = pcre_compile(pattern, cflags, &error, &erroffset, NULL)) == NULL) {
21
+ git_error_set_str(GIT_ERROR_REGEX, error);
22
+ return GIT_EINVALIDSPEC;
23
+ }
24
+
25
+ return 0;
26
+ }
27
+
28
+ void git_regexp_dispose(git_regexp *r)
29
+ {
30
+ pcre_free(*r);
31
+ *r = NULL;
32
+ }
33
+
34
+ int git_regexp_match(const git_regexp *r, const char *string)
35
+ {
36
+ int error;
37
+ if ((error = pcre_exec(*r, NULL, string, (int) strlen(string), 0, 0, NULL, 0)) < 0)
38
+ return (error == PCRE_ERROR_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
39
+ return 0;
40
+ }
41
+
42
+ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches, git_regmatch *matches)
43
+ {
44
+ int static_ovec[9], *ovec;
45
+ int error;
46
+ size_t i;
47
+
48
+ /* The ovec array always needs to be a mutiple of three */
49
+ if (nmatches <= ARRAY_SIZE(static_ovec) / 3)
50
+ ovec = static_ovec;
51
+ else
52
+ ovec = git__calloc(nmatches * 3, sizeof(*ovec));
53
+ GIT_ERROR_CHECK_ALLOC(ovec);
54
+
55
+ if ((error = pcre_exec(*r, NULL, string, (int) strlen(string), 0, 0, ovec, (int) nmatches * 3)) < 0)
56
+ goto out;
57
+
58
+ if (error == 0)
59
+ error = (int) nmatches;
60
+
61
+ for (i = 0; i < (unsigned int) error; i++) {
62
+ matches[i].start = (ovec[i * 2] < 0) ? -1 : ovec[i * 2];
63
+ matches[i].end = (ovec[i * 2 + 1] < 0) ? -1 : ovec[i * 2 + 1];
64
+ }
65
+ for (i = (unsigned int) error; i < nmatches; i++)
66
+ matches[i].start = matches[i].end = -1;
67
+
68
+ out:
69
+ if (nmatches > ARRAY_SIZE(static_ovec) / 3)
70
+ git__free(ovec);
71
+ if (error < 0)
72
+ return (error == PCRE_ERROR_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
73
+ return 0;
74
+ }
75
+
76
+ #elif defined(GIT_REGEX_PCRE2)
77
+
78
+ int git_regexp_compile(git_regexp *r, const char *pattern, int flags)
79
+ {
80
+ unsigned char errmsg[1024];
81
+ PCRE2_SIZE erroff;
82
+ int error, cflags = 0;
83
+
84
+ if (flags & GIT_REGEXP_ICASE)
85
+ cflags |= PCRE2_CASELESS;
86
+
87
+ if ((*r = pcre2_compile((const unsigned char *) pattern, PCRE2_ZERO_TERMINATED,
88
+ cflags, &error, &erroff, NULL)) == NULL) {
89
+ pcre2_get_error_message(error, errmsg, sizeof(errmsg));
90
+ git_error_set_str(GIT_ERROR_REGEX, (char *) errmsg);
91
+ return GIT_EINVALIDSPEC;
92
+ }
93
+
94
+ return 0;
95
+ }
96
+
97
+ void git_regexp_dispose(git_regexp *r)
98
+ {
99
+ pcre2_code_free(*r);
100
+ *r = NULL;
101
+ }
102
+
103
+ int git_regexp_match(const git_regexp *r, const char *string)
104
+ {
105
+ pcre2_match_data *data;
106
+ int error;
107
+
108
+ data = pcre2_match_data_create(1, NULL);
109
+ GIT_ERROR_CHECK_ALLOC(data);
110
+
111
+ if ((error = pcre2_match(*r, (const unsigned char *) string, strlen(string),
112
+ 0, 0, data, NULL)) < 0)
113
+ return (error == PCRE2_ERROR_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
114
+
115
+ pcre2_match_data_free(data);
116
+ return 0;
117
+ }
118
+
119
+ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches, git_regmatch *matches)
120
+ {
121
+ pcre2_match_data *data = NULL;
122
+ PCRE2_SIZE *ovec;
123
+ int error;
124
+ size_t i;
125
+
126
+ if ((data = pcre2_match_data_create(nmatches, NULL)) == NULL) {
127
+ git_error_set_oom();
128
+ goto out;
129
+ }
130
+
131
+ if ((error = pcre2_match(*r, (const unsigned char *) string, strlen(string),
132
+ 0, 0, data, NULL)) < 0)
133
+ goto out;
134
+
135
+ if (error == 0 || (unsigned int) error > nmatches)
136
+ error = nmatches;
137
+ ovec = pcre2_get_ovector_pointer(data);
138
+
139
+ for (i = 0; i < (unsigned int) error; i++) {
140
+ matches[i].start = (ovec[i * 2] == PCRE2_UNSET) ? -1 : (ssize_t) ovec[i * 2];
141
+ matches[i].end = (ovec[i * 2 + 1] == PCRE2_UNSET) ? -1 : (ssize_t) ovec[i * 2 + 1];
142
+ }
143
+ for (i = (unsigned int) error; i < nmatches; i++)
144
+ matches[i].start = matches[i].end = -1;
145
+
146
+ out:
147
+ pcre2_match_data_free(data);
148
+ if (error < 0)
149
+ return (error == PCRE2_ERROR_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
150
+ return 0;
151
+ }
152
+
153
+ #elif defined(GIT_REGEX_REGCOMP) || defined(GIT_REGEX_REGCOMP_L)
154
+
155
+ #if defined(GIT_REGEX_REGCOMP_L)
156
+ # include <xlocale.h>
157
+ #endif
158
+
159
+ int git_regexp_compile(git_regexp *r, const char *pattern, int flags)
160
+ {
161
+ int cflags = REG_EXTENDED, error;
162
+ char errmsg[1024];
163
+
164
+ if (flags & GIT_REGEXP_ICASE)
165
+ cflags |= REG_ICASE;
166
+
167
+ # if defined(GIT_REGEX_REGCOMP)
168
+ if ((error = regcomp(r, pattern, cflags)) != 0)
169
+ # else
170
+ if ((error = regcomp_l(r, pattern, cflags, (locale_t) 0)) != 0)
171
+ # endif
172
+ {
173
+ regerror(error, r, errmsg, sizeof(errmsg));
174
+ git_error_set_str(GIT_ERROR_REGEX, errmsg);
175
+ return GIT_EINVALIDSPEC;
176
+ }
177
+
178
+ return 0;
179
+ }
180
+
181
+ void git_regexp_dispose(git_regexp *r)
182
+ {
183
+ regfree(r);
184
+ }
185
+
186
+ int git_regexp_match(const git_regexp *r, const char *string)
187
+ {
188
+ int error;
189
+ if ((error = regexec(r, string, 0, NULL, 0)) != 0)
190
+ return (error == REG_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
191
+ return 0;
192
+ }
193
+
194
+ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches, git_regmatch *matches)
195
+ {
196
+ regmatch_t static_m[3], *m;
197
+ int error;
198
+ size_t i;
199
+
200
+ if (nmatches <= ARRAY_SIZE(static_m))
201
+ m = static_m;
202
+ else
203
+ m = git__calloc(nmatches, sizeof(*m));
204
+
205
+ if ((error = regexec(r, string, nmatches, m, 0)) != 0)
206
+ goto out;
207
+
208
+ for (i = 0; i < nmatches; i++) {
209
+ matches[i].start = (m[i].rm_so < 0) ? -1 : m[i].rm_so;
210
+ matches[i].end = (m[i].rm_eo < 0) ? -1 : m[i].rm_eo;
211
+ }
212
+
213
+ out:
214
+ if (nmatches > ARRAY_SIZE(static_m))
215
+ git__free(m);
216
+ if (error)
217
+ return (error == REG_NOMATCH) ? GIT_ENOTFOUND : GIT_EINVALIDSPEC;
218
+ return 0;
219
+ }
220
+
221
+ #endif
@@ -0,0 +1,97 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #ifndef INCLUDE_regexp_h__
9
+ #define INCLUDE_regexp_h__
10
+
11
+ #include "common.h"
12
+
13
+ #if defined(GIT_REGEX_BUILTIN) || defined(GIT_REGEX_PCRE)
14
+ # include "pcre.h"
15
+ typedef pcre *git_regexp;
16
+ # define GIT_REGEX_INIT NULL
17
+ #elif defined(GIT_REGEX_PCRE2)
18
+ # define PCRE2_CODE_UNIT_WIDTH 8
19
+ # include <pcre2.h>
20
+ typedef pcre2_code *git_regexp;
21
+ # define GIT_REGEX_INIT NULL
22
+ #elif defined(GIT_REGEX_REGCOMP) || defined(GIT_REGEX_REGCOMP_L)
23
+ # include <regex.h>
24
+ typedef regex_t git_regexp;
25
+ # define GIT_REGEX_INIT { 0 }
26
+ #else
27
+ # error "No regex backend"
28
+ #endif
29
+
30
+ /** Options supported by @git_regexp_compile. */
31
+ typedef enum {
32
+ /** Enable case-insensitive matching */
33
+ GIT_REGEXP_ICASE = (1 << 0)
34
+ } git_regexp_flags_t;
35
+
36
+ /** Structure containing information about regular expression matching groups */
37
+ typedef struct {
38
+ /** Start of the given match. -1 if the group didn't match anything */
39
+ ssize_t start;
40
+ /** End of the given match. -1 if the group didn't match anything */
41
+ ssize_t end;
42
+ } git_regmatch;
43
+
44
+ /**
45
+ * Compile a regular expression. The compiled expression needs to
46
+ * be cleaned up afterwards with `git_regexp_dispose`.
47
+ *
48
+ * @param r Pointer to the storage where to initialize the regular expression.
49
+ * @param pattern The pattern that shall be compiled.
50
+ * @param flags Flags to alter how the pattern shall be handled.
51
+ * 0 for defaults, otherwise see @git_regexp_flags_t.
52
+ * @return 0 on success, otherwise a negative return value.
53
+ */
54
+ int git_regexp_compile(git_regexp *r, const char *pattern, int flags);
55
+
56
+ /**
57
+ * Free memory associated with the regular expression
58
+ *
59
+ * @param r The regular expression structure to dispose.
60
+ */
61
+ void git_regexp_dispose(git_regexp *r);
62
+
63
+ /**
64
+ * Test whether a given string matches a compiled regular
65
+ * expression.
66
+ *
67
+ * @param r Compiled regular expression.
68
+ * @param string String to match against the regular expression.
69
+ * @return 0 if the string matches, a negative error code
70
+ * otherwise. GIT_ENOTFOUND if no match was found,
71
+ * GIT_EINVALIDSPEC if the regular expression matching
72
+ * was invalid.
73
+ */
74
+ int git_regexp_match(const git_regexp *r, const char *string);
75
+
76
+ /**
77
+ * Search for matches inside of a given string.
78
+ *
79
+ * Given a regular expression with capturing groups, this
80
+ * function will populate provided @git_regmatch structures with
81
+ * offsets for each of the given matches. Non-matching groups
82
+ * will have start and end values of the respective @git_regmatch
83
+ * structure set to -1.
84
+ *
85
+ * @param r Compiled regular expression.
86
+ * @param string String to match against the regular expression.
87
+ * @param nmatches Number of @git_regmatch structures provided by
88
+ * the user.
89
+ * @param matches Pointer to an array of @git_regmatch structures.
90
+ * @return 0 if the string matches, a negative error code
91
+ * otherwise. GIT_ENOTFOUND if no match was found,
92
+ * GIT_EINVALIDSPEC if the regular expression matching
93
+ * was invalid.
94
+ */
95
+ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches, git_regmatch *matches);
96
+
97
+ #endif