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
@@ -0,0 +1,669 @@
1
+ /*************************************************
2
+ * Perl-Compatible Regular Expressions *
3
+ *************************************************/
4
+
5
+ /* PCRE is a library of functions to support regular expressions whose syntax
6
+ and semantics are as close as possible to those of the Perl 5 language.
7
+
8
+ Written by Philip Hazel
9
+ Copyright (c) 1997-2012 University of Cambridge
10
+
11
+ -----------------------------------------------------------------------------
12
+ Redistribution and use in source and binary forms, with or without
13
+ modification, are permitted provided that the following conditions are met:
14
+
15
+ * Redistributions of source code must retain the above copyright notice,
16
+ this list of conditions and the following disclaimer.
17
+
18
+ * Redistributions in binary form must reproduce the above copyright
19
+ notice, this list of conditions and the following disclaimer in the
20
+ documentation and/or other materials provided with the distribution.
21
+
22
+ * Neither the name of the University of Cambridge nor the names of its
23
+ contributors may be used to endorse or promote products derived from
24
+ this software without specific prior written permission.
25
+
26
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36
+ POSSIBILITY OF SUCH DAMAGE.
37
+ -----------------------------------------------------------------------------
38
+ */
39
+
40
+
41
+ /* This module contains some convenience functions for extracting substrings
42
+ from the subject string after a regex match has succeeded. The original idea
43
+ for these functions came from Scott Wimer. */
44
+
45
+
46
+ #ifdef HAVE_CONFIG_H
47
+ #include "config.h"
48
+ #endif
49
+
50
+ #include "pcre_internal.h"
51
+
52
+
53
+ /*************************************************
54
+ * Find number for named string *
55
+ *************************************************/
56
+
57
+ /* This function is used by the get_first_set() function below, as well
58
+ as being generally available. It assumes that names are unique.
59
+
60
+ Arguments:
61
+ code the compiled regex
62
+ stringname the name whose number is required
63
+
64
+ Returns: the number of the named parentheses, or a negative number
65
+ (PCRE_ERROR_NOSUBSTRING) if not found
66
+ */
67
+
68
+ #if defined COMPILE_PCRE8
69
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
70
+ pcre_get_stringnumber(const pcre *code, const char *stringname)
71
+ #elif defined COMPILE_PCRE16
72
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
73
+ pcre16_get_stringnumber(const pcre16 *code, PCRE_SPTR16 stringname)
74
+ #elif defined COMPILE_PCRE32
75
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
76
+ pcre32_get_stringnumber(const pcre32 *code, PCRE_SPTR32 stringname)
77
+ #endif
78
+ {
79
+ int rc;
80
+ int entrysize;
81
+ int top, bot;
82
+ pcre_uchar *nametable;
83
+
84
+ #ifdef COMPILE_PCRE8
85
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
86
+ return rc;
87
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
88
+
89
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
90
+ return rc;
91
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
92
+ return rc;
93
+ #endif
94
+ #ifdef COMPILE_PCRE16
95
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
96
+ return rc;
97
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
98
+
99
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
100
+ return rc;
101
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
102
+ return rc;
103
+ #endif
104
+ #ifdef COMPILE_PCRE32
105
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
106
+ return rc;
107
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
108
+
109
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
110
+ return rc;
111
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
112
+ return rc;
113
+ #endif
114
+
115
+ bot = 0;
116
+ while (top > bot)
117
+ {
118
+ int mid = (top + bot) / 2;
119
+ pcre_uchar *entry = nametable + entrysize*mid;
120
+ int c = STRCMP_UC_UC((pcre_uchar *)stringname,
121
+ (pcre_uchar *)(entry + IMM2_SIZE));
122
+ if (c == 0) return GET2(entry, 0);
123
+ if (c > 0) bot = mid + 1; else top = mid;
124
+ }
125
+
126
+ return PCRE_ERROR_NOSUBSTRING;
127
+ }
128
+
129
+
130
+
131
+ /*************************************************
132
+ * Find (multiple) entries for named string *
133
+ *************************************************/
134
+
135
+ /* This is used by the get_first_set() function below, as well as being
136
+ generally available. It is used when duplicated names are permitted.
137
+
138
+ Arguments:
139
+ code the compiled regex
140
+ stringname the name whose entries required
141
+ firstptr where to put the pointer to the first entry
142
+ lastptr where to put the pointer to the last entry
143
+
144
+ Returns: the length of each entry, or a negative number
145
+ (PCRE_ERROR_NOSUBSTRING) if not found
146
+ */
147
+
148
+ #if defined COMPILE_PCRE8
149
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
150
+ pcre_get_stringtable_entries(const pcre *code, const char *stringname,
151
+ char **firstptr, char **lastptr)
152
+ #elif defined COMPILE_PCRE16
153
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
154
+ pcre16_get_stringtable_entries(const pcre16 *code, PCRE_SPTR16 stringname,
155
+ PCRE_UCHAR16 **firstptr, PCRE_UCHAR16 **lastptr)
156
+ #elif defined COMPILE_PCRE32
157
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
158
+ pcre32_get_stringtable_entries(const pcre32 *code, PCRE_SPTR32 stringname,
159
+ PCRE_UCHAR32 **firstptr, PCRE_UCHAR32 **lastptr)
160
+ #endif
161
+ {
162
+ int rc;
163
+ int entrysize;
164
+ int top, bot;
165
+ pcre_uchar *nametable, *lastentry;
166
+
167
+ #ifdef COMPILE_PCRE8
168
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
169
+ return rc;
170
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
171
+
172
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
173
+ return rc;
174
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
175
+ return rc;
176
+ #endif
177
+ #ifdef COMPILE_PCRE16
178
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
179
+ return rc;
180
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
181
+
182
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
183
+ return rc;
184
+ if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
185
+ return rc;
186
+ #endif
187
+ #ifdef COMPILE_PCRE32
188
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
189
+ return rc;
190
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
191
+
192
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
193
+ return rc;
194
+ if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
195
+ return rc;
196
+ #endif
197
+
198
+ lastentry = nametable + entrysize * (top - 1);
199
+ bot = 0;
200
+ while (top > bot)
201
+ {
202
+ int mid = (top + bot) / 2;
203
+ pcre_uchar *entry = nametable + entrysize*mid;
204
+ int c = STRCMP_UC_UC((pcre_uchar *)stringname,
205
+ (pcre_uchar *)(entry + IMM2_SIZE));
206
+ if (c == 0)
207
+ {
208
+ pcre_uchar *first = entry;
209
+ pcre_uchar *last = entry;
210
+ while (first > nametable)
211
+ {
212
+ if (STRCMP_UC_UC((pcre_uchar *)stringname,
213
+ (pcre_uchar *)(first - entrysize + IMM2_SIZE)) != 0) break;
214
+ first -= entrysize;
215
+ }
216
+ while (last < lastentry)
217
+ {
218
+ if (STRCMP_UC_UC((pcre_uchar *)stringname,
219
+ (pcre_uchar *)(last + entrysize + IMM2_SIZE)) != 0) break;
220
+ last += entrysize;
221
+ }
222
+ #if defined COMPILE_PCRE8
223
+ *firstptr = (char *)first;
224
+ *lastptr = (char *)last;
225
+ #elif defined COMPILE_PCRE16
226
+ *firstptr = (PCRE_UCHAR16 *)first;
227
+ *lastptr = (PCRE_UCHAR16 *)last;
228
+ #elif defined COMPILE_PCRE32
229
+ *firstptr = (PCRE_UCHAR32 *)first;
230
+ *lastptr = (PCRE_UCHAR32 *)last;
231
+ #endif
232
+ return entrysize;
233
+ }
234
+ if (c > 0) bot = mid + 1; else top = mid;
235
+ }
236
+
237
+ return PCRE_ERROR_NOSUBSTRING;
238
+ }
239
+
240
+
241
+
242
+ /*************************************************
243
+ * Find first set of multiple named strings *
244
+ *************************************************/
245
+
246
+ /* This function allows for duplicate names in the table of named substrings.
247
+ It returns the number of the first one that was set in a pattern match.
248
+
249
+ Arguments:
250
+ code the compiled regex
251
+ stringname the name of the capturing substring
252
+ ovector the vector of matched substrings
253
+ stringcount number of captured substrings
254
+
255
+ Returns: the number of the first that is set,
256
+ or the number of the last one if none are set,
257
+ or a negative number on error
258
+ */
259
+
260
+ #if defined COMPILE_PCRE8
261
+ static int
262
+ get_first_set(const pcre *code, const char *stringname, int *ovector,
263
+ int stringcount)
264
+ #elif defined COMPILE_PCRE16
265
+ static int
266
+ get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector,
267
+ int stringcount)
268
+ #elif defined COMPILE_PCRE32
269
+ static int
270
+ get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector,
271
+ int stringcount)
272
+ #endif
273
+ {
274
+ const REAL_PCRE *re = (const REAL_PCRE *)code;
275
+ int entrysize;
276
+ pcre_uchar *entry;
277
+ #if defined COMPILE_PCRE8
278
+ char *first, *last;
279
+ #elif defined COMPILE_PCRE16
280
+ PCRE_UCHAR16 *first, *last;
281
+ #elif defined COMPILE_PCRE32
282
+ PCRE_UCHAR32 *first, *last;
283
+ #endif
284
+
285
+ #if defined COMPILE_PCRE8
286
+ if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0)
287
+ return pcre_get_stringnumber(code, stringname);
288
+ entrysize = pcre_get_stringtable_entries(code, stringname, &first, &last);
289
+ #elif defined COMPILE_PCRE16
290
+ if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0)
291
+ return pcre16_get_stringnumber(code, stringname);
292
+ entrysize = pcre16_get_stringtable_entries(code, stringname, &first, &last);
293
+ #elif defined COMPILE_PCRE32
294
+ if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0)
295
+ return pcre32_get_stringnumber(code, stringname);
296
+ entrysize = pcre32_get_stringtable_entries(code, stringname, &first, &last);
297
+ #endif
298
+ if (entrysize <= 0) return entrysize;
299
+ for (entry = (pcre_uchar *)first; entry <= (pcre_uchar *)last; entry += entrysize)
300
+ {
301
+ int n = GET2(entry, 0);
302
+ if (n < stringcount && ovector[n*2] >= 0) return n;
303
+ }
304
+ return GET2(entry, 0);
305
+ }
306
+
307
+
308
+
309
+
310
+ /*************************************************
311
+ * Copy captured string to given buffer *
312
+ *************************************************/
313
+
314
+ /* This function copies a single captured substring into a given buffer.
315
+ Note that we use memcpy() rather than strncpy() in case there are binary zeros
316
+ in the string.
317
+
318
+ Arguments:
319
+ subject the subject string that was matched
320
+ ovector pointer to the offsets table
321
+ stringcount the number of substrings that were captured
322
+ (i.e. the yield of the pcre_exec call, unless
323
+ that was zero, in which case it should be 1/3
324
+ of the offset table size)
325
+ stringnumber the number of the required substring
326
+ buffer where to put the substring
327
+ size the size of the buffer
328
+
329
+ Returns: if successful:
330
+ the length of the copied string, not including the zero
331
+ that is put on the end; can be zero
332
+ if not successful:
333
+ PCRE_ERROR_NOMEMORY (-6) buffer too small
334
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
335
+ */
336
+
337
+ #if defined COMPILE_PCRE8
338
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
339
+ pcre_copy_substring(const char *subject, int *ovector, int stringcount,
340
+ int stringnumber, char *buffer, int size)
341
+ #elif defined COMPILE_PCRE16
342
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
343
+ pcre16_copy_substring(PCRE_SPTR16 subject, int *ovector, int stringcount,
344
+ int stringnumber, PCRE_UCHAR16 *buffer, int size)
345
+ #elif defined COMPILE_PCRE32
346
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
347
+ pcre32_copy_substring(PCRE_SPTR32 subject, int *ovector, int stringcount,
348
+ int stringnumber, PCRE_UCHAR32 *buffer, int size)
349
+ #endif
350
+ {
351
+ int yield;
352
+ if (stringnumber < 0 || stringnumber >= stringcount)
353
+ return PCRE_ERROR_NOSUBSTRING;
354
+ stringnumber *= 2;
355
+ yield = ovector[stringnumber+1] - ovector[stringnumber];
356
+ if (size < yield + 1) return PCRE_ERROR_NOMEMORY;
357
+ memcpy(buffer, subject + ovector[stringnumber], IN_UCHARS(yield));
358
+ buffer[yield] = 0;
359
+ return yield;
360
+ }
361
+
362
+
363
+
364
+ /*************************************************
365
+ * Copy named captured string to given buffer *
366
+ *************************************************/
367
+
368
+ /* This function copies a single captured substring into a given buffer,
369
+ identifying it by name. If the regex permits duplicate names, the first
370
+ substring that is set is chosen.
371
+
372
+ Arguments:
373
+ code the compiled regex
374
+ subject the subject string that was matched
375
+ ovector pointer to the offsets table
376
+ stringcount the number of substrings that were captured
377
+ (i.e. the yield of the pcre_exec call, unless
378
+ that was zero, in which case it should be 1/3
379
+ of the offset table size)
380
+ stringname the name of the required substring
381
+ buffer where to put the substring
382
+ size the size of the buffer
383
+
384
+ Returns: if successful:
385
+ the length of the copied string, not including the zero
386
+ that is put on the end; can be zero
387
+ if not successful:
388
+ PCRE_ERROR_NOMEMORY (-6) buffer too small
389
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
390
+ */
391
+
392
+ #if defined COMPILE_PCRE8
393
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
394
+ pcre_copy_named_substring(const pcre *code, const char *subject,
395
+ int *ovector, int stringcount, const char *stringname,
396
+ char *buffer, int size)
397
+ #elif defined COMPILE_PCRE16
398
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
399
+ pcre16_copy_named_substring(const pcre16 *code, PCRE_SPTR16 subject,
400
+ int *ovector, int stringcount, PCRE_SPTR16 stringname,
401
+ PCRE_UCHAR16 *buffer, int size)
402
+ #elif defined COMPILE_PCRE32
403
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
404
+ pcre32_copy_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
405
+ int *ovector, int stringcount, PCRE_SPTR32 stringname,
406
+ PCRE_UCHAR32 *buffer, int size)
407
+ #endif
408
+ {
409
+ int n = get_first_set(code, stringname, ovector, stringcount);
410
+ if (n <= 0) return n;
411
+ #if defined COMPILE_PCRE8
412
+ return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);
413
+ #elif defined COMPILE_PCRE16
414
+ return pcre16_copy_substring(subject, ovector, stringcount, n, buffer, size);
415
+ #elif defined COMPILE_PCRE32
416
+ return pcre32_copy_substring(subject, ovector, stringcount, n, buffer, size);
417
+ #endif
418
+ }
419
+
420
+
421
+
422
+ /*************************************************
423
+ * Copy all captured strings to new store *
424
+ *************************************************/
425
+
426
+ /* This function gets one chunk of store and builds a list of pointers and all
427
+ of the captured substrings in it. A NULL pointer is put on the end of the list.
428
+
429
+ Arguments:
430
+ subject the subject string that was matched
431
+ ovector pointer to the offsets table
432
+ stringcount the number of substrings that were captured
433
+ (i.e. the yield of the pcre_exec call, unless
434
+ that was zero, in which case it should be 1/3
435
+ of the offset table size)
436
+ listptr set to point to the list of pointers
437
+
438
+ Returns: if successful: 0
439
+ if not successful:
440
+ PCRE_ERROR_NOMEMORY (-6) failed to get store
441
+ */
442
+
443
+ #if defined COMPILE_PCRE8
444
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
445
+ pcre_get_substring_list(const char *subject, int *ovector, int stringcount,
446
+ const char ***listptr)
447
+ #elif defined COMPILE_PCRE16
448
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
449
+ pcre16_get_substring_list(PCRE_SPTR16 subject, int *ovector, int stringcount,
450
+ PCRE_SPTR16 **listptr)
451
+ #elif defined COMPILE_PCRE32
452
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
453
+ pcre32_get_substring_list(PCRE_SPTR32 subject, int *ovector, int stringcount,
454
+ PCRE_SPTR32 **listptr)
455
+ #endif
456
+ {
457
+ int i;
458
+ int size = sizeof(pcre_uchar *);
459
+ int double_count = stringcount * 2;
460
+ pcre_uchar **stringlist;
461
+ pcre_uchar *p;
462
+
463
+ for (i = 0; i < double_count; i += 2)
464
+ {
465
+ size += sizeof(pcre_uchar *) + IN_UCHARS(1);
466
+ if (ovector[i+1] > ovector[i]) size += IN_UCHARS(ovector[i+1] - ovector[i]);
467
+ }
468
+
469
+ stringlist = (pcre_uchar **)(PUBL(malloc))(size);
470
+ if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
471
+
472
+ #if defined COMPILE_PCRE8
473
+ *listptr = (const char **)stringlist;
474
+ #elif defined COMPILE_PCRE16
475
+ *listptr = (PCRE_SPTR16 *)stringlist;
476
+ #elif defined COMPILE_PCRE32
477
+ *listptr = (PCRE_SPTR32 *)stringlist;
478
+ #endif
479
+ p = (pcre_uchar *)(stringlist + stringcount + 1);
480
+
481
+ for (i = 0; i < double_count; i += 2)
482
+ {
483
+ int len = (ovector[i+1] > ovector[i])? (ovector[i+1] - ovector[i]) : 0;
484
+ memcpy(p, subject + ovector[i], IN_UCHARS(len));
485
+ *stringlist++ = p;
486
+ p += len;
487
+ *p++ = 0;
488
+ }
489
+
490
+ *stringlist = NULL;
491
+ return 0;
492
+ }
493
+
494
+
495
+
496
+ /*************************************************
497
+ * Free store obtained by get_substring_list *
498
+ *************************************************/
499
+
500
+ /* This function exists for the benefit of people calling PCRE from non-C
501
+ programs that can call its functions, but not free() or (PUBL(free))()
502
+ directly.
503
+
504
+ Argument: the result of a previous pcre_get_substring_list()
505
+ Returns: nothing
506
+ */
507
+
508
+ #if defined COMPILE_PCRE8
509
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
510
+ pcre_free_substring_list(const char **pointer)
511
+ #elif defined COMPILE_PCRE16
512
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
513
+ pcre16_free_substring_list(PCRE_SPTR16 *pointer)
514
+ #elif defined COMPILE_PCRE32
515
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
516
+ pcre32_free_substring_list(PCRE_SPTR32 *pointer)
517
+ #endif
518
+ {
519
+ (PUBL(free))((void *)pointer);
520
+ }
521
+
522
+
523
+
524
+ /*************************************************
525
+ * Copy captured string to new store *
526
+ *************************************************/
527
+
528
+ /* This function copies a single captured substring into a piece of new
529
+ store
530
+
531
+ Arguments:
532
+ subject the subject string that was matched
533
+ ovector pointer to the offsets table
534
+ stringcount the number of substrings that were captured
535
+ (i.e. the yield of the pcre_exec call, unless
536
+ that was zero, in which case it should be 1/3
537
+ of the offset table size)
538
+ stringnumber the number of the required substring
539
+ stringptr where to put a pointer to the substring
540
+
541
+ Returns: if successful:
542
+ the length of the string, not including the zero that
543
+ is put on the end; can be zero
544
+ if not successful:
545
+ PCRE_ERROR_NOMEMORY (-6) failed to get store
546
+ PCRE_ERROR_NOSUBSTRING (-7) substring not present
547
+ */
548
+
549
+ #if defined COMPILE_PCRE8
550
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
551
+ pcre_get_substring(const char *subject, int *ovector, int stringcount,
552
+ int stringnumber, const char **stringptr)
553
+ #elif defined COMPILE_PCRE16
554
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
555
+ pcre16_get_substring(PCRE_SPTR16 subject, int *ovector, int stringcount,
556
+ int stringnumber, PCRE_SPTR16 *stringptr)
557
+ #elif defined COMPILE_PCRE32
558
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
559
+ pcre32_get_substring(PCRE_SPTR32 subject, int *ovector, int stringcount,
560
+ int stringnumber, PCRE_SPTR32 *stringptr)
561
+ #endif
562
+ {
563
+ int yield;
564
+ pcre_uchar *substring;
565
+ if (stringnumber < 0 || stringnumber >= stringcount)
566
+ return PCRE_ERROR_NOSUBSTRING;
567
+ stringnumber *= 2;
568
+ yield = ovector[stringnumber+1] - ovector[stringnumber];
569
+ substring = (pcre_uchar *)(PUBL(malloc))(IN_UCHARS(yield + 1));
570
+ if (substring == NULL) return PCRE_ERROR_NOMEMORY;
571
+ memcpy(substring, subject + ovector[stringnumber], IN_UCHARS(yield));
572
+ substring[yield] = 0;
573
+ #if defined COMPILE_PCRE8
574
+ *stringptr = (const char *)substring;
575
+ #elif defined COMPILE_PCRE16
576
+ *stringptr = (PCRE_SPTR16)substring;
577
+ #elif defined COMPILE_PCRE32
578
+ *stringptr = (PCRE_SPTR32)substring;
579
+ #endif
580
+ return yield;
581
+ }
582
+
583
+
584
+
585
+ /*************************************************
586
+ * Copy named captured string to new store *
587
+ *************************************************/
588
+
589
+ /* This function copies a single captured substring, identified by name, into
590
+ new store. If the regex permits duplicate names, the first substring that is
591
+ set is chosen.
592
+
593
+ Arguments:
594
+ code the compiled regex
595
+ subject the subject string that was matched
596
+ ovector pointer to the offsets table
597
+ stringcount the number of substrings that were captured
598
+ (i.e. the yield of the pcre_exec call, unless
599
+ that was zero, in which case it should be 1/3
600
+ of the offset table size)
601
+ stringname the name of the required substring
602
+ stringptr where to put the pointer
603
+
604
+ Returns: if successful:
605
+ the length of the copied string, not including the zero
606
+ that is put on the end; can be zero
607
+ if not successful:
608
+ PCRE_ERROR_NOMEMORY (-6) couldn't get memory
609
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
610
+ */
611
+
612
+ #if defined COMPILE_PCRE8
613
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
614
+ pcre_get_named_substring(const pcre *code, const char *subject,
615
+ int *ovector, int stringcount, const char *stringname,
616
+ const char **stringptr)
617
+ #elif defined COMPILE_PCRE16
618
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
619
+ pcre16_get_named_substring(const pcre16 *code, PCRE_SPTR16 subject,
620
+ int *ovector, int stringcount, PCRE_SPTR16 stringname,
621
+ PCRE_SPTR16 *stringptr)
622
+ #elif defined COMPILE_PCRE32
623
+ PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
624
+ pcre32_get_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
625
+ int *ovector, int stringcount, PCRE_SPTR32 stringname,
626
+ PCRE_SPTR32 *stringptr)
627
+ #endif
628
+ {
629
+ int n = get_first_set(code, stringname, ovector, stringcount);
630
+ if (n <= 0) return n;
631
+ #if defined COMPILE_PCRE8
632
+ return pcre_get_substring(subject, ovector, stringcount, n, stringptr);
633
+ #elif defined COMPILE_PCRE16
634
+ return pcre16_get_substring(subject, ovector, stringcount, n, stringptr);
635
+ #elif defined COMPILE_PCRE32
636
+ return pcre32_get_substring(subject, ovector, stringcount, n, stringptr);
637
+ #endif
638
+ }
639
+
640
+
641
+
642
+
643
+ /*************************************************
644
+ * Free store obtained by get_substring *
645
+ *************************************************/
646
+
647
+ /* This function exists for the benefit of people calling PCRE from non-C
648
+ programs that can call its functions, but not free() or (PUBL(free))()
649
+ directly.
650
+
651
+ Argument: the result of a previous pcre_get_substring()
652
+ Returns: nothing
653
+ */
654
+
655
+ #if defined COMPILE_PCRE8
656
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
657
+ pcre_free_substring(const char *pointer)
658
+ #elif defined COMPILE_PCRE16
659
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
660
+ pcre16_free_substring(PCRE_SPTR16 pointer)
661
+ #elif defined COMPILE_PCRE32
662
+ PCRE_EXP_DEFN void PCRE_CALL_CONVENTION
663
+ pcre32_free_substring(PCRE_SPTR32 pointer)
664
+ #endif
665
+ {
666
+ (PUBL(free))((void *)pointer);
667
+ }
668
+
669
+ /* End of pcre_get.c */