rugged 0.16.0 → 0.17.0b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (392) hide show
  1. data/README.md +373 -243
  2. data/Rakefile +22 -0
  3. data/ext/rugged/extconf.rb +9 -6
  4. data/ext/rugged/rugged.c +123 -31
  5. data/ext/rugged/rugged.h +11 -10
  6. data/ext/rugged/rugged_blob.c +181 -18
  7. data/ext/rugged/rugged_commit.c +196 -18
  8. data/ext/rugged/rugged_config.c +94 -5
  9. data/ext/rugged/rugged_object.c +54 -1
  10. data/ext/rugged/rugged_reference.c +203 -15
  11. data/ext/rugged/{remote.c → rugged_remote.c} +35 -10
  12. data/ext/rugged/rugged_repo.c +323 -81
  13. data/ext/rugged/rugged_revwalk.c +57 -4
  14. data/ext/rugged/rugged_signature.c +3 -3
  15. data/ext/rugged/rugged_tag.c +72 -1
  16. data/ext/rugged/rugged_tree.c +70 -2
  17. data/ext/rugged/vendor/libgit2-dist/deps/regex/config.h +7 -0
  18. data/ext/rugged/vendor/libgit2-dist/deps/regex/regcomp.c +3856 -0
  19. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.c +85 -0
  20. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.h +582 -0
  21. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.c +1744 -0
  22. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.h +810 -0
  23. data/ext/rugged/vendor/libgit2-dist/deps/regex/regexec.c +4369 -0
  24. data/ext/rugged/vendor/libgit2-dist/examples/diff.c +238 -0
  25. data/ext/rugged/vendor/libgit2-dist/examples/general.c +4 -4
  26. data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +101 -85
  27. data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +7 -3
  28. data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +80 -25
  29. data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +6 -6
  30. data/ext/rugged/vendor/libgit2-dist/include/git2/attr.h +224 -0
  31. data/ext/rugged/vendor/libgit2-dist/include/git2/blob.h +59 -5
  32. data/ext/rugged/vendor/libgit2-dist/include/git2/branch.h +114 -7
  33. data/ext/rugged/vendor/libgit2-dist/include/git2/commit.h +14 -7
  34. data/ext/rugged/vendor/libgit2-dist/include/git2/common.h +4 -3
  35. data/ext/rugged/vendor/libgit2-dist/include/git2/config.h +105 -27
  36. data/ext/rugged/vendor/libgit2-dist/include/git2/diff.h +409 -0
  37. data/ext/rugged/vendor/libgit2-dist/include/git2/errors.h +47 -82
  38. data/ext/rugged/vendor/libgit2-dist/include/git2/index.h +25 -10
  39. data/ext/rugged/vendor/libgit2-dist/include/git2/indexer.h +46 -1
  40. data/ext/rugged/vendor/libgit2-dist/include/git2/merge.h +35 -0
  41. data/ext/rugged/vendor/libgit2-dist/include/git2/net.h +1 -1
  42. data/ext/rugged/vendor/libgit2-dist/include/git2/notes.h +139 -0
  43. data/ext/rugged/vendor/libgit2-dist/include/git2/object.h +5 -5
  44. data/ext/rugged/vendor/libgit2-dist/include/git2/odb.h +13 -13
  45. data/ext/rugged/vendor/libgit2-dist/include/git2/odb_backend.h +8 -8
  46. data/ext/rugged/vendor/libgit2-dist/include/git2/oid.h +14 -9
  47. data/ext/rugged/vendor/libgit2-dist/include/git2/reflog.h +5 -5
  48. data/ext/rugged/vendor/libgit2-dist/include/git2/refs.h +37 -17
  49. data/ext/rugged/vendor/libgit2-dist/include/git2/refspec.h +17 -9
  50. data/ext/rugged/vendor/libgit2-dist/include/git2/remote.h +83 -16
  51. data/ext/rugged/vendor/libgit2-dist/include/git2/repository.h +24 -10
  52. data/ext/rugged/vendor/libgit2-dist/include/git2/reset.h +44 -0
  53. data/ext/rugged/vendor/libgit2-dist/include/git2/revparse.h +36 -0
  54. data/ext/rugged/vendor/libgit2-dist/include/git2/revwalk.h +74 -6
  55. data/ext/rugged/vendor/libgit2-dist/include/git2/signature.h +3 -3
  56. data/ext/rugged/vendor/libgit2-dist/include/git2/status.h +120 -19
  57. data/ext/rugged/vendor/libgit2-dist/include/git2/submodule.h +103 -0
  58. data/ext/rugged/vendor/libgit2-dist/include/git2/tag.h +28 -10
  59. data/ext/rugged/vendor/libgit2-dist/include/git2/threads.h +1 -1
  60. data/ext/rugged/vendor/libgit2-dist/include/git2/tree.h +13 -13
  61. data/ext/rugged/vendor/libgit2-dist/include/git2/types.h +16 -2
  62. data/ext/rugged/vendor/libgit2-dist/include/git2/version.h +3 -3
  63. data/ext/rugged/vendor/libgit2-dist/include/git2/windows.h +1 -1
  64. data/ext/rugged/vendor/libgit2-dist/include/git2.h +7 -2
  65. data/ext/rugged/vendor/libgit2-dist/src/attr.c +677 -0
  66. data/ext/rugged/vendor/libgit2-dist/src/attr.h +56 -0
  67. data/ext/rugged/vendor/libgit2-dist/src/attr_file.c +609 -0
  68. data/ext/rugged/vendor/libgit2-dist/src/attr_file.h +145 -0
  69. data/ext/rugged/vendor/libgit2-dist/src/blob.c +213 -60
  70. data/ext/rugged/vendor/libgit2-dist/src/blob.h +2 -1
  71. data/ext/rugged/vendor/libgit2-dist/src/branch.c +208 -0
  72. data/ext/rugged/vendor/libgit2-dist/src/branch.h +17 -0
  73. data/ext/rugged/vendor/libgit2-dist/src/bswap.h +1 -1
  74. data/ext/rugged/vendor/libgit2-dist/src/buffer.c +395 -46
  75. data/ext/rugged/vendor/libgit2-dist/src/buffer.h +112 -9
  76. data/ext/rugged/vendor/libgit2-dist/src/cache.c +37 -49
  77. data/ext/rugged/vendor/libgit2-dist/src/cache.h +7 -17
  78. data/ext/rugged/vendor/libgit2-dist/src/cc-compat.h +18 -16
  79. data/ext/rugged/vendor/libgit2-dist/src/commit.c +56 -90
  80. data/ext/rugged/vendor/libgit2-dist/src/commit.h +1 -1
  81. data/ext/rugged/vendor/libgit2-dist/src/common.h +12 -5
  82. data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.c +1 -1
  83. data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.h +3 -3
  84. data/ext/rugged/vendor/libgit2-dist/src/config.c +247 -158
  85. data/ext/rugged/vendor/libgit2-dist/src/config.h +10 -1
  86. data/ext/rugged/vendor/libgit2-dist/src/config_cache.c +94 -0
  87. data/ext/rugged/vendor/libgit2-dist/src/config_file.c +606 -496
  88. data/ext/rugged/vendor/libgit2-dist/src/config_file.h +31 -0
  89. data/ext/rugged/vendor/libgit2-dist/src/crlf.c +228 -0
  90. data/ext/rugged/vendor/libgit2-dist/src/date.c +876 -0
  91. data/ext/rugged/vendor/libgit2-dist/src/delta-apply.c +15 -9
  92. data/ext/rugged/vendor/libgit2-dist/src/delta-apply.h +2 -2
  93. data/ext/rugged/vendor/libgit2-dist/src/diff.c +814 -0
  94. data/ext/rugged/vendor/libgit2-dist/src/diff.h +43 -0
  95. data/ext/rugged/vendor/libgit2-dist/src/diff_output.c +794 -0
  96. data/ext/rugged/vendor/libgit2-dist/src/errors.c +89 -74
  97. data/ext/rugged/vendor/libgit2-dist/src/fetch.c +94 -66
  98. data/ext/rugged/vendor/libgit2-dist/src/fetch.h +5 -4
  99. data/ext/rugged/vendor/libgit2-dist/src/filebuf.c +157 -100
  100. data/ext/rugged/vendor/libgit2-dist/src/filebuf.h +22 -8
  101. data/ext/rugged/vendor/libgit2-dist/src/fileops.c +330 -206
  102. data/ext/rugged/vendor/libgit2-dist/src/fileops.h +82 -51
  103. data/ext/rugged/vendor/libgit2-dist/src/filter.c +165 -0
  104. data/ext/rugged/vendor/libgit2-dist/src/filter.h +119 -0
  105. data/ext/rugged/vendor/libgit2-dist/src/global.c +4 -4
  106. data/ext/rugged/vendor/libgit2-dist/src/global.h +4 -1
  107. data/ext/rugged/vendor/libgit2-dist/src/hash.c +1 -1
  108. data/ext/rugged/vendor/libgit2-dist/src/hash.h +1 -1
  109. data/ext/rugged/vendor/libgit2-dist/src/ignore.c +203 -0
  110. data/ext/rugged/vendor/libgit2-dist/src/ignore.h +38 -0
  111. data/ext/rugged/vendor/libgit2-dist/src/index.c +220 -169
  112. data/ext/rugged/vendor/libgit2-dist/src/index.h +5 -1
  113. data/ext/rugged/vendor/libgit2-dist/src/indexer.c +601 -102
  114. data/ext/rugged/vendor/libgit2-dist/src/iterator.c +748 -0
  115. data/ext/rugged/vendor/libgit2-dist/src/iterator.h +151 -0
  116. data/ext/rugged/vendor/libgit2-dist/src/khash.h +608 -0
  117. data/ext/rugged/vendor/libgit2-dist/src/map.h +6 -1
  118. data/ext/rugged/vendor/libgit2-dist/src/message.c +61 -0
  119. data/ext/rugged/vendor/libgit2-dist/src/message.h +14 -0
  120. data/ext/rugged/vendor/libgit2-dist/src/mwindow.c +27 -29
  121. data/ext/rugged/vendor/libgit2-dist/src/mwindow.h +4 -4
  122. data/ext/rugged/vendor/libgit2-dist/src/netops.c +375 -56
  123. data/ext/rugged/vendor/libgit2-dist/src/netops.h +12 -9
  124. data/ext/rugged/vendor/libgit2-dist/src/notes.c +548 -0
  125. data/ext/rugged/vendor/libgit2-dist/src/notes.h +28 -0
  126. data/ext/rugged/vendor/libgit2-dist/src/object.c +59 -21
  127. data/ext/rugged/vendor/libgit2-dist/src/odb.c +212 -175
  128. data/ext/rugged/vendor/libgit2-dist/src/odb.h +39 -2
  129. data/ext/rugged/vendor/libgit2-dist/src/odb_loose.c +238 -241
  130. data/ext/rugged/vendor/libgit2-dist/src/odb_pack.c +94 -106
  131. data/ext/rugged/vendor/libgit2-dist/src/oid.c +59 -60
  132. data/ext/rugged/vendor/libgit2-dist/src/oidmap.h +42 -0
  133. data/ext/rugged/vendor/libgit2-dist/src/pack.c +198 -170
  134. data/ext/rugged/vendor/libgit2-dist/src/pack.h +16 -9
  135. data/ext/rugged/vendor/libgit2-dist/src/path.c +496 -106
  136. data/ext/rugged/vendor/libgit2-dist/src/path.h +214 -20
  137. data/ext/rugged/vendor/libgit2-dist/src/pkt.c +88 -159
  138. data/ext/rugged/vendor/libgit2-dist/src/pkt.h +9 -5
  139. data/ext/rugged/vendor/libgit2-dist/src/pool.c +294 -0
  140. data/ext/rugged/vendor/libgit2-dist/src/pool.h +125 -0
  141. data/ext/rugged/vendor/libgit2-dist/src/posix.c +38 -16
  142. data/ext/rugged/vendor/libgit2-dist/src/posix.h +20 -2
  143. data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.c +1 -1
  144. data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.h +1 -1
  145. data/ext/rugged/vendor/libgit2-dist/src/pqueue.c +7 -7
  146. data/ext/rugged/vendor/libgit2-dist/src/pqueue.h +1 -1
  147. data/ext/rugged/vendor/libgit2-dist/src/protocol.c +21 -13
  148. data/ext/rugged/vendor/libgit2-dist/src/protocol.h +1 -1
  149. data/ext/rugged/vendor/libgit2-dist/src/reflog.c +125 -103
  150. data/ext/rugged/vendor/libgit2-dist/src/reflog.h +1 -1
  151. data/ext/rugged/vendor/libgit2-dist/src/refs.c +713 -640
  152. data/ext/rugged/vendor/libgit2-dist/src/refs.h +27 -3
  153. data/ext/rugged/vendor/libgit2-dist/src/refspec.c +51 -17
  154. data/ext/rugged/vendor/libgit2-dist/src/refspec.h +13 -1
  155. data/ext/rugged/vendor/libgit2-dist/src/remote.c +307 -119
  156. data/ext/rugged/vendor/libgit2-dist/src/remote.h +3 -2
  157. data/ext/rugged/vendor/libgit2-dist/src/repository.c +593 -442
  158. data/ext/rugged/vendor/libgit2-dist/src/repository.h +80 -2
  159. data/ext/rugged/vendor/libgit2-dist/src/reset.c +103 -0
  160. data/ext/rugged/vendor/libgit2-dist/src/revparse.c +753 -0
  161. data/ext/rugged/vendor/libgit2-dist/src/revwalk.c +434 -158
  162. data/ext/rugged/vendor/libgit2-dist/src/sha1.c +3 -3
  163. data/ext/rugged/vendor/libgit2-dist/src/sha1.h +2 -2
  164. data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.c +3 -2
  165. data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.h +1 -1
  166. data/ext/rugged/vendor/libgit2-dist/src/signature.c +69 -80
  167. data/ext/rugged/vendor/libgit2-dist/src/signature.h +1 -1
  168. data/ext/rugged/vendor/libgit2-dist/src/status.c +184 -638
  169. data/ext/rugged/vendor/libgit2-dist/src/strmap.h +64 -0
  170. data/ext/rugged/vendor/libgit2-dist/src/submodule.c +387 -0
  171. data/ext/rugged/vendor/libgit2-dist/src/tag.c +162 -137
  172. data/ext/rugged/vendor/libgit2-dist/src/tag.h +2 -1
  173. data/ext/rugged/vendor/libgit2-dist/src/thread-utils.c +1 -1
  174. data/ext/rugged/vendor/libgit2-dist/src/thread-utils.h +8 -8
  175. data/ext/rugged/vendor/libgit2-dist/src/transport.c +31 -19
  176. data/ext/rugged/vendor/libgit2-dist/src/transport.h +31 -11
  177. data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +168 -193
  178. data/ext/rugged/vendor/libgit2-dist/src/transports/http.c +192 -241
  179. data/ext/rugged/vendor/libgit2-dist/src/transports/local.c +92 -86
  180. data/ext/rugged/vendor/libgit2-dist/src/tree-cache.c +32 -49
  181. data/ext/rugged/vendor/libgit2-dist/src/tree-cache.h +1 -1
  182. data/ext/rugged/vendor/libgit2-dist/src/tree.c +172 -145
  183. data/ext/rugged/vendor/libgit2-dist/src/tree.h +16 -2
  184. data/ext/rugged/vendor/libgit2-dist/src/tsort.c +16 -14
  185. data/ext/rugged/vendor/libgit2-dist/src/unix/map.c +8 -24
  186. data/ext/rugged/vendor/libgit2-dist/src/unix/posix.h +9 -3
  187. data/ext/rugged/vendor/libgit2-dist/src/util.c +94 -38
  188. data/ext/rugged/vendor/libgit2-dist/src/util.h +119 -13
  189. data/ext/rugged/vendor/libgit2-dist/src/vector.c +84 -31
  190. data/ext/rugged/vendor/libgit2-dist/src/vector.h +37 -4
  191. data/ext/rugged/vendor/libgit2-dist/src/win32/dir.c +81 -41
  192. data/ext/rugged/vendor/libgit2-dist/src/{dir.h → win32/dir.h} +4 -9
  193. data/ext/rugged/vendor/libgit2-dist/src/win32/map.c +19 -35
  194. data/ext/rugged/vendor/libgit2-dist/src/win32/mingw-compat.h +1 -1
  195. data/ext/rugged/vendor/libgit2-dist/src/win32/msvc-compat.h +5 -1
  196. data/ext/rugged/vendor/libgit2-dist/src/win32/posix.h +10 -8
  197. data/ext/rugged/vendor/libgit2-dist/src/win32/posix_w32.c +262 -118
  198. data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.c +12 -9
  199. data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.h +1 -1
  200. data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.c +30 -26
  201. data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.h +2 -1
  202. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiff.h +135 -0
  203. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.c +572 -0
  204. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.h +63 -0
  205. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.c +253 -0
  206. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.h +36 -0
  207. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xhistogram.c +371 -0
  208. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xinclude.h +46 -0
  209. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmacros.h +54 -0
  210. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmerge.c +619 -0
  211. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xpatience.c +358 -0
  212. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.c +483 -0
  213. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.h +34 -0
  214. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xtypes.h +67 -0
  215. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.c +419 -0
  216. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.h +49 -0
  217. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +43 -0
  218. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +226 -0
  219. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +108 -0
  220. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +262 -0
  221. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +273 -0
  222. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/buf/basic.c +5 -5
  223. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +181 -0
  224. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +55 -0
  225. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +44 -0
  226. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +350 -0
  227. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +65 -0
  228. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +140 -0
  229. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/add.c +3 -3
  230. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +151 -0
  231. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/new.c +5 -5
  232. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/read.c +44 -32
  233. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +61 -0
  234. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/write.c +20 -5
  235. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +613 -0
  236. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/dirent.c +39 -26
  237. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +115 -0
  238. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +60 -0
  239. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/filebuf.c +4 -18
  240. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +22 -0
  241. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/oid.c +6 -6
  242. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +420 -0
  243. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +85 -0
  244. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +68 -0
  245. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/string.c +1 -1
  246. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +102 -0
  247. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/strtol.c +1 -1
  248. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +191 -0
  249. data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +15 -0
  250. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +254 -0
  251. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +104 -0
  252. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +47 -0
  253. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +92 -0
  254. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +572 -0
  255. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +99 -0
  256. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +210 -0
  257. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +543 -0
  258. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +46 -0
  259. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/index/rename.c +2 -12
  260. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +246 -0
  261. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +33 -0
  262. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +137 -0
  263. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +183 -0
  264. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +133 -0
  265. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +57 -0
  266. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +125 -0
  267. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +87 -0
  268. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +69 -0
  269. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +126 -0
  270. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +63 -0
  271. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +171 -0
  272. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/chars.c +3 -14
  273. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/compare.c +4 -4
  274. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/convert.c +10 -10
  275. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/data.h +0 -0
  276. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/fromstr.c +1 -1
  277. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/hash.c +21 -17
  278. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/short.c +1 -1
  279. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/size.c +1 -1
  280. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/type2string.c +14 -14
  281. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +455 -0
  282. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +56 -0
  283. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +130 -0
  284. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +192 -0
  285. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/tree/frompath.c +22 -16
  286. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +75 -0
  287. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +84 -0
  288. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose.c +1 -1
  289. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose_data.h +0 -0
  290. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +24 -0
  291. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/pack_data.h +0 -0
  292. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/packed.c +1 -1
  293. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/sorting.c +1 -1
  294. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +113 -0
  295. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +91 -0
  296. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +78 -0
  297. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +72 -0
  298. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +17 -0
  299. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +149 -0
  300. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +85 -0
  301. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +53 -0
  302. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +36 -0
  303. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +42 -0
  304. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +200 -0
  305. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +136 -0
  306. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +67 -0
  307. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +194 -0
  308. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +123 -0
  309. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +339 -0
  310. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +174 -0
  311. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +42 -0
  312. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +142 -0
  313. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/repo/getters.c +19 -1
  314. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +235 -0
  315. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +282 -0
  316. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +80 -0
  317. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +47 -0
  318. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +10 -0
  319. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +6 -0
  320. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +102 -0
  321. data/ext/rugged/vendor/libgit2-dist/{tests/t05-revwalk.c → tests-clar/revwalk/basic.c} +85 -44
  322. data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +148 -0
  323. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +133 -0
  324. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/status/single.c +2 -11
  325. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +202 -0
  326. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +49 -0
  327. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +33 -0
  328. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +112 -0
  329. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +649 -0
  330. data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +20 -0
  331. data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
  332. data/lib/rugged/commit.rb +35 -0
  333. data/lib/rugged/object.rb +7 -0
  334. data/lib/rugged/reference.rb +9 -0
  335. data/lib/rugged/repository.rb +99 -3
  336. data/lib/rugged/tag.rb +22 -0
  337. data/lib/rugged/tree.rb +8 -0
  338. data/lib/rugged/version.rb +1 -1
  339. data/lib/rugged.rb +4 -1
  340. data/test/blob_test.rb +2 -2
  341. data/test/commit_test.rb +27 -13
  342. data/test/config_test.rb +44 -0
  343. data/test/coverage/HEAD.json +1 -1
  344. data/test/fixtures/testrepo.git/config +2 -0
  345. data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
  346. data/test/lib_test.rb +7 -0
  347. data/test/object_test.rb +3 -3
  348. data/test/reference_test.rb +46 -8
  349. data/test/remote_test.rb +8 -2
  350. data/test/repo_pack_test.rb +3 -3
  351. data/test/repo_test.rb +79 -11
  352. data/test/tag_test.rb +9 -2
  353. data/test/test_helper.rb +21 -0
  354. data/test/tree_test.rb +18 -6
  355. metadata +205 -81
  356. data/ext/rugged/vendor/libgit2-dist/include/git2/zlib.h +0 -40
  357. data/ext/rugged/vendor/libgit2-dist/src/hashtable.c +0 -243
  358. data/ext/rugged/vendor/libgit2-dist/src/hashtable.h +0 -80
  359. data/ext/rugged/vendor/libgit2-dist/tests/t00-core.c +0 -628
  360. data/ext/rugged/vendor/libgit2-dist/tests/t01-data.h +0 -322
  361. data/ext/rugged/vendor/libgit2-dist/tests/t01-rawobj.c +0 -638
  362. data/ext/rugged/vendor/libgit2-dist/tests/t03-data.h +0 -344
  363. data/ext/rugged/vendor/libgit2-dist/tests/t03-objwrite.c +0 -255
  364. data/ext/rugged/vendor/libgit2-dist/tests/t04-commit.c +0 -788
  365. data/ext/rugged/vendor/libgit2-dist/tests/t06-index.c +0 -219
  366. data/ext/rugged/vendor/libgit2-dist/tests/t07-hashtable.c +0 -192
  367. data/ext/rugged/vendor/libgit2-dist/tests/t08-tag.c +0 -357
  368. data/ext/rugged/vendor/libgit2-dist/tests/t09-tree.c +0 -221
  369. data/ext/rugged/vendor/libgit2-dist/tests/t10-refs.c +0 -1294
  370. data/ext/rugged/vendor/libgit2-dist/tests/t12-repo.c +0 -174
  371. data/ext/rugged/vendor/libgit2-dist/tests/t13-threads.c +0 -41
  372. data/ext/rugged/vendor/libgit2-dist/tests/t17-bufs.c +0 -61
  373. data/ext/rugged/vendor/libgit2-dist/tests/t18-status.c +0 -448
  374. data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.c +0 -310
  375. data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.h +0 -83
  376. data/ext/rugged/vendor/libgit2-dist/tests/test_lib.c +0 -198
  377. data/ext/rugged/vendor/libgit2-dist/tests/test_lib.h +0 -54
  378. data/ext/rugged/vendor/libgit2-dist/tests/test_main.c +0 -89
  379. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay.h +0 -187
  380. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_libgit2.h +0 -28
  381. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_main.c +0 -1073
  382. data/ext/rugged/vendor/libgit2-dist/tests-clay/config/stress.c +0 -39
  383. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/path.c +0 -139
  384. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/rmdir.c +0 -50
  385. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/vector.c +0 -66
  386. data/ext/rugged/vendor/libgit2-dist/tests-clay/network/remotes.c +0 -50
  387. data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/init.c +0 -104
  388. data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/open.c +0 -54
  389. data/ext/rugged/vendor/libgit2-dist/tests-clay/status/status_data.h +0 -48
  390. data/ext/rugged/vendor/libgit2-dist/tests-clay/status/worktree.c +0 -124
  391. data/lib/rugged/objects.rb +0 -45
  392. data/test/fixtures/testrepo.git/refs/heads/new_name +0 -1
@@ -0,0 +1,810 @@
1
+ /* Extended regular expression matching and search library.
2
+ Copyright (C) 2002-2005, 2007, 2008, 2010 Free Software Foundation, Inc.
3
+ This file is part of the GNU C Library.
4
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
5
+
6
+ The GNU C Library is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU Lesser General Public
8
+ License as published by the Free Software Foundation; either
9
+ version 2.1 of the License, or (at your option) any later version.
10
+
11
+ The GNU C Library is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public
17
+ License along with the GNU C Library; if not, write to the Free
18
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19
+ 02111-1307 USA. */
20
+
21
+ #ifndef _REGEX_INTERNAL_H
22
+ #define _REGEX_INTERNAL_H 1
23
+
24
+ #include <assert.h>
25
+ #include <ctype.h>
26
+ #include <stdio.h>
27
+ #include <stdlib.h>
28
+ #include <string.h>
29
+
30
+ #if defined HAVE_LANGINFO_H || defined HAVE_LANGINFO_CODESET || defined _LIBC
31
+ # include <langinfo.h>
32
+ #endif
33
+ #if defined HAVE_LOCALE_H || defined _LIBC
34
+ # include <locale.h>
35
+ #endif
36
+ #if defined HAVE_WCHAR_H || defined _LIBC
37
+ # include <wchar.h>
38
+ #endif /* HAVE_WCHAR_H || _LIBC */
39
+ #if defined HAVE_WCTYPE_H || defined _LIBC
40
+ # include <wctype.h>
41
+ #endif /* HAVE_WCTYPE_H || _LIBC */
42
+ #if defined HAVE_STDBOOL_H || defined _LIBC
43
+ # include <stdbool.h>
44
+ #endif /* HAVE_STDBOOL_H || _LIBC */
45
+ #if !defined(ZOS_USS)
46
+ #if defined HAVE_STDINT_H || defined _LIBC
47
+ # include <stdint.h>
48
+ #endif /* HAVE_STDINT_H || _LIBC */
49
+ #endif /* !ZOS_USS */
50
+ #if defined _LIBC
51
+ # include <bits/libc-lock.h>
52
+ #else
53
+ # define __libc_lock_define(CLASS,NAME)
54
+ # define __libc_lock_init(NAME) do { } while (0)
55
+ # define __libc_lock_lock(NAME) do { } while (0)
56
+ # define __libc_lock_unlock(NAME) do { } while (0)
57
+ #endif
58
+
59
+ #ifndef GAWK
60
+ /* In case that the system doesn't have isblank(). */
61
+ #if !defined _LIBC && !defined HAVE_ISBLANK && !defined isblank
62
+ # define isblank(ch) ((ch) == ' ' || (ch) == '\t')
63
+ #endif
64
+ #else /* GAWK */
65
+ /*
66
+ * This is a freaking mess. On glibc systems you have to define
67
+ * a magic constant to get isblank() out of <ctype.h>, since it's
68
+ * a C99 function. To heck with all that and borrow a page from
69
+ * dfa.c's book.
70
+ */
71
+
72
+ static int
73
+ is_blank (int c)
74
+ {
75
+ return (c == ' ' || c == '\t');
76
+ }
77
+ #endif /* GAWK */
78
+
79
+ #ifdef _LIBC
80
+ # ifndef _RE_DEFINE_LOCALE_FUNCTIONS
81
+ # define _RE_DEFINE_LOCALE_FUNCTIONS 1
82
+ # include <locale/localeinfo.h>
83
+ # include <locale/elem-hash.h>
84
+ # include <locale/coll-lookup.h>
85
+ # endif
86
+ #endif
87
+
88
+ /* This is for other GNU distributions with internationalized messages. */
89
+ #if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
90
+ # include <libintl.h>
91
+ # ifdef _LIBC
92
+ # undef gettext
93
+ # define gettext(msgid) \
94
+ INTUSE(__dcgettext) (_libc_intl_domainname, msgid, LC_MESSAGES)
95
+ # endif
96
+ #else
97
+ # define gettext(msgid) (msgid)
98
+ #endif
99
+
100
+ #ifndef gettext_noop
101
+ /* This define is so xgettext can find the internationalizable
102
+ strings. */
103
+ # define gettext_noop(String) String
104
+ #endif
105
+
106
+ /* For loser systems without the definition. */
107
+ #ifndef SIZE_MAX
108
+ # define SIZE_MAX ((size_t) -1)
109
+ #endif
110
+
111
+ #ifndef NO_MBSUPPORT
112
+ #include "mbsupport.h" /* gawk */
113
+ #endif
114
+ #ifndef MB_CUR_MAX
115
+ #define MB_CUR_MAX 1
116
+ #endif
117
+
118
+ #if (defined MBS_SUPPORT) || _LIBC
119
+ # define RE_ENABLE_I18N
120
+ #endif
121
+
122
+ #if __GNUC__ >= 3
123
+ # define BE(expr, val) __builtin_expect (expr, val)
124
+ #else
125
+ # define BE(expr, val) (expr)
126
+ # ifdef inline
127
+ # undef inline
128
+ # endif
129
+ # define inline
130
+ #endif
131
+
132
+ /* Number of single byte character. */
133
+ #define SBC_MAX 256
134
+
135
+ #define COLL_ELEM_LEN_MAX 8
136
+
137
+ /* The character which represents newline. */
138
+ #define NEWLINE_CHAR '\n'
139
+ #define WIDE_NEWLINE_CHAR L'\n'
140
+
141
+ /* Rename to standard API for using out of glibc. */
142
+ #ifndef _LIBC
143
+ # ifdef __wctype
144
+ # undef __wctype
145
+ # endif
146
+ # define __wctype wctype
147
+ # ifdef __iswctype
148
+ # undef __iswctype
149
+ # endif
150
+ # define __iswctype iswctype
151
+ # define __btowc btowc
152
+ # define __mbrtowc mbrtowc
153
+ #undef __mempcpy /* GAWK */
154
+ # define __mempcpy mempcpy
155
+ # define __wcrtomb wcrtomb
156
+ # define __regfree regfree
157
+ # define attribute_hidden
158
+ #endif /* not _LIBC */
159
+
160
+ #ifdef __GNUC__
161
+ # define __attribute(arg) __attribute__ (arg)
162
+ #else
163
+ # define __attribute(arg)
164
+ #endif
165
+
166
+ extern const char __re_error_msgid[] attribute_hidden;
167
+ extern const size_t __re_error_msgid_idx[] attribute_hidden;
168
+
169
+ /* An integer used to represent a set of bits. It must be unsigned,
170
+ and must be at least as wide as unsigned int. */
171
+ typedef unsigned long int bitset_word_t;
172
+ /* All bits set in a bitset_word_t. */
173
+ #define BITSET_WORD_MAX ULONG_MAX
174
+ /* Number of bits in a bitset_word_t. */
175
+ #define BITSET_WORD_BITS (sizeof (bitset_word_t) * CHAR_BIT)
176
+ /* Number of bitset_word_t in a bit_set. */
177
+ #define BITSET_WORDS (SBC_MAX / BITSET_WORD_BITS)
178
+ typedef bitset_word_t bitset_t[BITSET_WORDS];
179
+ typedef bitset_word_t *re_bitset_ptr_t;
180
+ typedef const bitset_word_t *re_const_bitset_ptr_t;
181
+
182
+ #define bitset_set(set,i) \
183
+ (set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS)
184
+ #define bitset_clear(set,i) \
185
+ (set[i / BITSET_WORD_BITS] &= ~((bitset_word_t) 1 << i % BITSET_WORD_BITS))
186
+ #define bitset_contain(set,i) \
187
+ (set[i / BITSET_WORD_BITS] & ((bitset_word_t) 1 << i % BITSET_WORD_BITS))
188
+ #define bitset_empty(set) memset (set, '\0', sizeof (bitset_t))
189
+ #define bitset_set_all(set) memset (set, '\xff', sizeof (bitset_t))
190
+ #define bitset_copy(dest,src) memcpy (dest, src, sizeof (bitset_t))
191
+
192
+ #define PREV_WORD_CONSTRAINT 0x0001
193
+ #define PREV_NOTWORD_CONSTRAINT 0x0002
194
+ #define NEXT_WORD_CONSTRAINT 0x0004
195
+ #define NEXT_NOTWORD_CONSTRAINT 0x0008
196
+ #define PREV_NEWLINE_CONSTRAINT 0x0010
197
+ #define NEXT_NEWLINE_CONSTRAINT 0x0020
198
+ #define PREV_BEGBUF_CONSTRAINT 0x0040
199
+ #define NEXT_ENDBUF_CONSTRAINT 0x0080
200
+ #define WORD_DELIM_CONSTRAINT 0x0100
201
+ #define NOT_WORD_DELIM_CONSTRAINT 0x0200
202
+
203
+ typedef enum
204
+ {
205
+ INSIDE_WORD = PREV_WORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
206
+ WORD_FIRST = PREV_NOTWORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
207
+ WORD_LAST = PREV_WORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
208
+ INSIDE_NOTWORD = PREV_NOTWORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
209
+ LINE_FIRST = PREV_NEWLINE_CONSTRAINT,
210
+ LINE_LAST = NEXT_NEWLINE_CONSTRAINT,
211
+ BUF_FIRST = PREV_BEGBUF_CONSTRAINT,
212
+ BUF_LAST = NEXT_ENDBUF_CONSTRAINT,
213
+ WORD_DELIM = WORD_DELIM_CONSTRAINT,
214
+ NOT_WORD_DELIM = NOT_WORD_DELIM_CONSTRAINT
215
+ } re_context_type;
216
+
217
+ typedef struct
218
+ {
219
+ int alloc;
220
+ int nelem;
221
+ int *elems;
222
+ } re_node_set;
223
+
224
+ typedef enum
225
+ {
226
+ NON_TYPE = 0,
227
+
228
+ /* Node type, These are used by token, node, tree. */
229
+ CHARACTER = 1,
230
+ END_OF_RE = 2,
231
+ SIMPLE_BRACKET = 3,
232
+ OP_BACK_REF = 4,
233
+ OP_PERIOD = 5,
234
+ #ifdef RE_ENABLE_I18N
235
+ COMPLEX_BRACKET = 6,
236
+ OP_UTF8_PERIOD = 7,
237
+ #endif /* RE_ENABLE_I18N */
238
+
239
+ /* We define EPSILON_BIT as a macro so that OP_OPEN_SUBEXP is used
240
+ when the debugger shows values of this enum type. */
241
+ #define EPSILON_BIT 8
242
+ OP_OPEN_SUBEXP = EPSILON_BIT | 0,
243
+ OP_CLOSE_SUBEXP = EPSILON_BIT | 1,
244
+ OP_ALT = EPSILON_BIT | 2,
245
+ OP_DUP_ASTERISK = EPSILON_BIT | 3,
246
+ ANCHOR = EPSILON_BIT | 4,
247
+
248
+ /* Tree type, these are used only by tree. */
249
+ CONCAT = 16,
250
+ SUBEXP = 17,
251
+
252
+ /* Token type, these are used only by token. */
253
+ OP_DUP_PLUS = 18,
254
+ OP_DUP_QUESTION,
255
+ OP_OPEN_BRACKET,
256
+ OP_CLOSE_BRACKET,
257
+ OP_CHARSET_RANGE,
258
+ OP_OPEN_DUP_NUM,
259
+ OP_CLOSE_DUP_NUM,
260
+ OP_NON_MATCH_LIST,
261
+ OP_OPEN_COLL_ELEM,
262
+ OP_CLOSE_COLL_ELEM,
263
+ OP_OPEN_EQUIV_CLASS,
264
+ OP_CLOSE_EQUIV_CLASS,
265
+ OP_OPEN_CHAR_CLASS,
266
+ OP_CLOSE_CHAR_CLASS,
267
+ OP_WORD,
268
+ OP_NOTWORD,
269
+ OP_SPACE,
270
+ OP_NOTSPACE,
271
+ BACK_SLASH
272
+
273
+ } re_token_type_t;
274
+
275
+ #ifdef RE_ENABLE_I18N
276
+ typedef struct
277
+ {
278
+ /* Multibyte characters. */
279
+ wchar_t *mbchars;
280
+
281
+ /* Collating symbols. */
282
+ # ifdef _LIBC
283
+ int32_t *coll_syms;
284
+ # endif
285
+
286
+ /* Equivalence classes. */
287
+ # ifdef _LIBC
288
+ int32_t *equiv_classes;
289
+ # endif
290
+
291
+ /* Range expressions. */
292
+ # ifdef _LIBC
293
+ uint32_t *range_starts;
294
+ uint32_t *range_ends;
295
+ # else /* not _LIBC */
296
+ wchar_t *range_starts;
297
+ wchar_t *range_ends;
298
+ # endif /* not _LIBC */
299
+
300
+ /* Character classes. */
301
+ wctype_t *char_classes;
302
+
303
+ /* If this character set is the non-matching list. */
304
+ unsigned int non_match : 1;
305
+
306
+ /* # of multibyte characters. */
307
+ int nmbchars;
308
+
309
+ /* # of collating symbols. */
310
+ int ncoll_syms;
311
+
312
+ /* # of equivalence classes. */
313
+ int nequiv_classes;
314
+
315
+ /* # of range expressions. */
316
+ int nranges;
317
+
318
+ /* # of character classes. */
319
+ int nchar_classes;
320
+ } re_charset_t;
321
+ #endif /* RE_ENABLE_I18N */
322
+
323
+ typedef struct
324
+ {
325
+ union
326
+ {
327
+ unsigned char c; /* for CHARACTER */
328
+ re_bitset_ptr_t sbcset; /* for SIMPLE_BRACKET */
329
+ #ifdef RE_ENABLE_I18N
330
+ re_charset_t *mbcset; /* for COMPLEX_BRACKET */
331
+ #endif /* RE_ENABLE_I18N */
332
+ int idx; /* for BACK_REF */
333
+ re_context_type ctx_type; /* for ANCHOR */
334
+ } opr;
335
+ #if __GNUC__ >= 2
336
+ re_token_type_t type : 8;
337
+ #else
338
+ re_token_type_t type;
339
+ #endif
340
+ unsigned int constraint : 10; /* context constraint */
341
+ unsigned int duplicated : 1;
342
+ unsigned int opt_subexp : 1;
343
+ #ifdef RE_ENABLE_I18N
344
+ unsigned int accept_mb : 1;
345
+ /* These 2 bits can be moved into the union if needed (e.g. if running out
346
+ of bits; move opr.c to opr.c.c and move the flags to opr.c.flags). */
347
+ unsigned int mb_partial : 1;
348
+ #endif
349
+ unsigned int word_char : 1;
350
+ } re_token_t;
351
+
352
+ #define IS_EPSILON_NODE(type) ((type) & EPSILON_BIT)
353
+
354
+ struct re_string_t
355
+ {
356
+ /* Indicate the raw buffer which is the original string passed as an
357
+ argument of regexec(), re_search(), etc.. */
358
+ const unsigned char *raw_mbs;
359
+ /* Store the multibyte string. In case of "case insensitive mode" like
360
+ REG_ICASE, upper cases of the string are stored, otherwise MBS points
361
+ the same address that RAW_MBS points. */
362
+ unsigned char *mbs;
363
+ #ifdef RE_ENABLE_I18N
364
+ /* Store the wide character string which is corresponding to MBS. */
365
+ wint_t *wcs;
366
+ int *offsets;
367
+ mbstate_t cur_state;
368
+ #endif
369
+ /* Index in RAW_MBS. Each character mbs[i] corresponds to
370
+ raw_mbs[raw_mbs_idx + i]. */
371
+ int raw_mbs_idx;
372
+ /* The length of the valid characters in the buffers. */
373
+ int valid_len;
374
+ /* The corresponding number of bytes in raw_mbs array. */
375
+ int valid_raw_len;
376
+ /* The length of the buffers MBS and WCS. */
377
+ int bufs_len;
378
+ /* The index in MBS, which is updated by re_string_fetch_byte. */
379
+ int cur_idx;
380
+ /* length of RAW_MBS array. */
381
+ int raw_len;
382
+ /* This is RAW_LEN - RAW_MBS_IDX + VALID_LEN - VALID_RAW_LEN. */
383
+ int len;
384
+ /* End of the buffer may be shorter than its length in the cases such
385
+ as re_match_2, re_search_2. Then, we use STOP for end of the buffer
386
+ instead of LEN. */
387
+ int raw_stop;
388
+ /* This is RAW_STOP - RAW_MBS_IDX adjusted through OFFSETS. */
389
+ int stop;
390
+
391
+ /* The context of mbs[0]. We store the context independently, since
392
+ the context of mbs[0] may be different from raw_mbs[0], which is
393
+ the beginning of the input string. */
394
+ unsigned int tip_context;
395
+ /* The translation passed as a part of an argument of re_compile_pattern. */
396
+ RE_TRANSLATE_TYPE trans;
397
+ /* Copy of re_dfa_t's word_char. */
398
+ re_const_bitset_ptr_t word_char;
399
+ /* 1 if REG_ICASE. */
400
+ unsigned char icase;
401
+ unsigned char is_utf8;
402
+ unsigned char map_notascii;
403
+ unsigned char mbs_allocated;
404
+ unsigned char offsets_needed;
405
+ unsigned char newline_anchor;
406
+ unsigned char word_ops_used;
407
+ int mb_cur_max;
408
+ };
409
+ typedef struct re_string_t re_string_t;
410
+
411
+
412
+ struct re_dfa_t;
413
+ typedef struct re_dfa_t re_dfa_t;
414
+
415
+ #ifndef _LIBC
416
+ # ifdef __i386__
417
+ # define internal_function __attribute ((regparm (3), stdcall))
418
+ # else
419
+ # define internal_function
420
+ # endif
421
+ #endif
422
+
423
+ #ifndef NOT_IN_libc
424
+ static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
425
+ int new_buf_len)
426
+ internal_function;
427
+ # ifdef RE_ENABLE_I18N
428
+ static void build_wcs_buffer (re_string_t *pstr) internal_function;
429
+ static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr)
430
+ internal_function;
431
+ # endif /* RE_ENABLE_I18N */
432
+ static void build_upper_buffer (re_string_t *pstr) internal_function;
433
+ static void re_string_translate_buffer (re_string_t *pstr) internal_function;
434
+ static unsigned int re_string_context_at (const re_string_t *input, int idx,
435
+ int eflags)
436
+ internal_function __attribute ((pure));
437
+ #endif
438
+ #define re_string_peek_byte(pstr, offset) \
439
+ ((pstr)->mbs[(pstr)->cur_idx + offset])
440
+ #define re_string_fetch_byte(pstr) \
441
+ ((pstr)->mbs[(pstr)->cur_idx++])
442
+ #define re_string_first_byte(pstr, idx) \
443
+ ((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
444
+ #define re_string_is_single_byte_char(pstr, idx) \
445
+ ((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) + 1 \
446
+ || (pstr)->wcs[(idx) + 1] != WEOF))
447
+ #define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
448
+ #define re_string_cur_idx(pstr) ((pstr)->cur_idx)
449
+ #define re_string_get_buffer(pstr) ((pstr)->mbs)
450
+ #define re_string_length(pstr) ((pstr)->len)
451
+ #define re_string_byte_at(pstr,idx) ((pstr)->mbs[idx])
452
+ #define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
453
+ #define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
454
+
455
+ #ifndef _LIBC
456
+ # if HAVE_ALLOCA
457
+ # if (_MSC_VER)
458
+ # include <malloc.h>
459
+ # define __libc_use_alloca(n) 0
460
+ # else
461
+ # include <alloca.h>
462
+ /* The OS usually guarantees only one guard page at the bottom of the stack,
463
+ and a page size can be as small as 4096 bytes. So we cannot safely
464
+ allocate anything larger than 4096 bytes. Also care for the possibility
465
+ of a few compiler-allocated temporary stack slots. */
466
+ # define __libc_use_alloca(n) ((n) < 4032)
467
+ # endif
468
+ # else
469
+ /* alloca is implemented with malloc, so just use malloc. */
470
+ # define __libc_use_alloca(n) 0
471
+ # endif
472
+ #endif
473
+
474
+ #define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t)))
475
+ /* SunOS 4.1.x realloc doesn't accept null pointers: pre-Standard C. Sigh. */
476
+ #define re_realloc(p,t,n) ((p != NULL) ? (t *) realloc (p,(n)*sizeof(t)) : (t *) calloc(n,sizeof(t)))
477
+ #define re_free(p) free (p)
478
+
479
+ struct bin_tree_t
480
+ {
481
+ struct bin_tree_t *parent;
482
+ struct bin_tree_t *left;
483
+ struct bin_tree_t *right;
484
+ struct bin_tree_t *first;
485
+ struct bin_tree_t *next;
486
+
487
+ re_token_t token;
488
+
489
+ /* `node_idx' is the index in dfa->nodes, if `type' == 0.
490
+ Otherwise `type' indicate the type of this node. */
491
+ int node_idx;
492
+ };
493
+ typedef struct bin_tree_t bin_tree_t;
494
+
495
+ #define BIN_TREE_STORAGE_SIZE \
496
+ ((1024 - sizeof (void *)) / sizeof (bin_tree_t))
497
+
498
+ struct bin_tree_storage_t
499
+ {
500
+ struct bin_tree_storage_t *next;
501
+ bin_tree_t data[BIN_TREE_STORAGE_SIZE];
502
+ };
503
+ typedef struct bin_tree_storage_t bin_tree_storage_t;
504
+
505
+ #define CONTEXT_WORD 1
506
+ #define CONTEXT_NEWLINE (CONTEXT_WORD << 1)
507
+ #define CONTEXT_BEGBUF (CONTEXT_NEWLINE << 1)
508
+ #define CONTEXT_ENDBUF (CONTEXT_BEGBUF << 1)
509
+
510
+ #define IS_WORD_CONTEXT(c) ((c) & CONTEXT_WORD)
511
+ #define IS_NEWLINE_CONTEXT(c) ((c) & CONTEXT_NEWLINE)
512
+ #define IS_BEGBUF_CONTEXT(c) ((c) & CONTEXT_BEGBUF)
513
+ #define IS_ENDBUF_CONTEXT(c) ((c) & CONTEXT_ENDBUF)
514
+ #define IS_ORDINARY_CONTEXT(c) ((c) == 0)
515
+
516
+ #define IS_WORD_CHAR(ch) (isalnum (ch) || (ch) == '_')
517
+ #define IS_NEWLINE(ch) ((ch) == NEWLINE_CHAR)
518
+ #define IS_WIDE_WORD_CHAR(ch) (iswalnum (ch) || (ch) == L'_')
519
+ #define IS_WIDE_NEWLINE(ch) ((ch) == WIDE_NEWLINE_CHAR)
520
+
521
+ #define NOT_SATISFY_PREV_CONSTRAINT(constraint,context) \
522
+ ((((constraint) & PREV_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
523
+ || ((constraint & PREV_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
524
+ || ((constraint & PREV_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context))\
525
+ || ((constraint & PREV_BEGBUF_CONSTRAINT) && !IS_BEGBUF_CONTEXT (context)))
526
+
527
+ #define NOT_SATISFY_NEXT_CONSTRAINT(constraint,context) \
528
+ ((((constraint) & NEXT_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
529
+ || (((constraint) & NEXT_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
530
+ || (((constraint) & NEXT_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context)) \
531
+ || (((constraint) & NEXT_ENDBUF_CONSTRAINT) && !IS_ENDBUF_CONTEXT (context)))
532
+
533
+ struct re_dfastate_t
534
+ {
535
+ unsigned int hash;
536
+ re_node_set nodes;
537
+ re_node_set non_eps_nodes;
538
+ re_node_set inveclosure;
539
+ re_node_set *entrance_nodes;
540
+ struct re_dfastate_t **trtable, **word_trtable;
541
+ unsigned int context : 4;
542
+ unsigned int halt : 1;
543
+ /* If this state can accept `multi byte'.
544
+ Note that we refer to multibyte characters, and multi character
545
+ collating elements as `multi byte'. */
546
+ unsigned int accept_mb : 1;
547
+ /* If this state has backreference node(s). */
548
+ unsigned int has_backref : 1;
549
+ unsigned int has_constraint : 1;
550
+ };
551
+ typedef struct re_dfastate_t re_dfastate_t;
552
+
553
+ struct re_state_table_entry
554
+ {
555
+ int num;
556
+ int alloc;
557
+ re_dfastate_t **array;
558
+ };
559
+
560
+ /* Array type used in re_sub_match_last_t and re_sub_match_top_t. */
561
+
562
+ typedef struct
563
+ {
564
+ int next_idx;
565
+ int alloc;
566
+ re_dfastate_t **array;
567
+ } state_array_t;
568
+
569
+ /* Store information about the node NODE whose type is OP_CLOSE_SUBEXP. */
570
+
571
+ typedef struct
572
+ {
573
+ int node;
574
+ int str_idx; /* The position NODE match at. */
575
+ state_array_t path;
576
+ } re_sub_match_last_t;
577
+
578
+ /* Store information about the node NODE whose type is OP_OPEN_SUBEXP.
579
+ And information about the node, whose type is OP_CLOSE_SUBEXP,
580
+ corresponding to NODE is stored in LASTS. */
581
+
582
+ typedef struct
583
+ {
584
+ int str_idx;
585
+ int node;
586
+ state_array_t *path;
587
+ int alasts; /* Allocation size of LASTS. */
588
+ int nlasts; /* The number of LASTS. */
589
+ re_sub_match_last_t **lasts;
590
+ } re_sub_match_top_t;
591
+
592
+ struct re_backref_cache_entry
593
+ {
594
+ int node;
595
+ int str_idx;
596
+ int subexp_from;
597
+ int subexp_to;
598
+ char more;
599
+ char unused;
600
+ unsigned short int eps_reachable_subexps_map;
601
+ };
602
+
603
+ typedef struct
604
+ {
605
+ /* The string object corresponding to the input string. */
606
+ re_string_t input;
607
+ #if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
608
+ const re_dfa_t *const dfa;
609
+ #else
610
+ const re_dfa_t *dfa;
611
+ #endif
612
+ /* EFLAGS of the argument of regexec. */
613
+ int eflags;
614
+ /* Where the matching ends. */
615
+ int match_last;
616
+ int last_node;
617
+ /* The state log used by the matcher. */
618
+ re_dfastate_t **state_log;
619
+ int state_log_top;
620
+ /* Back reference cache. */
621
+ int nbkref_ents;
622
+ int abkref_ents;
623
+ struct re_backref_cache_entry *bkref_ents;
624
+ int max_mb_elem_len;
625
+ int nsub_tops;
626
+ int asub_tops;
627
+ re_sub_match_top_t **sub_tops;
628
+ } re_match_context_t;
629
+
630
+ typedef struct
631
+ {
632
+ re_dfastate_t **sifted_states;
633
+ re_dfastate_t **limited_states;
634
+ int last_node;
635
+ int last_str_idx;
636
+ re_node_set limits;
637
+ } re_sift_context_t;
638
+
639
+ struct re_fail_stack_ent_t
640
+ {
641
+ int idx;
642
+ int node;
643
+ regmatch_t *regs;
644
+ re_node_set eps_via_nodes;
645
+ };
646
+
647
+ struct re_fail_stack_t
648
+ {
649
+ int num;
650
+ int alloc;
651
+ struct re_fail_stack_ent_t *stack;
652
+ };
653
+
654
+ struct re_dfa_t
655
+ {
656
+ re_token_t *nodes;
657
+ size_t nodes_alloc;
658
+ size_t nodes_len;
659
+ int *nexts;
660
+ int *org_indices;
661
+ re_node_set *edests;
662
+ re_node_set *eclosures;
663
+ re_node_set *inveclosures;
664
+ struct re_state_table_entry *state_table;
665
+ re_dfastate_t *init_state;
666
+ re_dfastate_t *init_state_word;
667
+ re_dfastate_t *init_state_nl;
668
+ re_dfastate_t *init_state_begbuf;
669
+ bin_tree_t *str_tree;
670
+ bin_tree_storage_t *str_tree_storage;
671
+ re_bitset_ptr_t sb_char;
672
+ int str_tree_storage_idx;
673
+
674
+ /* number of subexpressions `re_nsub' is in regex_t. */
675
+ unsigned int state_hash_mask;
676
+ int init_node;
677
+ int nbackref; /* The number of backreference in this dfa. */
678
+
679
+ /* Bitmap expressing which backreference is used. */
680
+ bitset_word_t used_bkref_map;
681
+ bitset_word_t completed_bkref_map;
682
+
683
+ unsigned int has_plural_match : 1;
684
+ /* If this dfa has "multibyte node", which is a backreference or
685
+ a node which can accept multibyte character or multi character
686
+ collating element. */
687
+ unsigned int has_mb_node : 1;
688
+ unsigned int is_utf8 : 1;
689
+ unsigned int map_notascii : 1;
690
+ unsigned int word_ops_used : 1;
691
+ int mb_cur_max;
692
+ bitset_t word_char;
693
+ reg_syntax_t syntax;
694
+ int *subexp_map;
695
+ #ifdef DEBUG
696
+ char* re_str;
697
+ #endif
698
+ #if defined _LIBC
699
+ __libc_lock_define (, lock)
700
+ #endif
701
+ };
702
+
703
+ #define re_node_set_init_empty(set) memset (set, '\0', sizeof (re_node_set))
704
+ #define re_node_set_remove(set,id) \
705
+ (re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
706
+ #define re_node_set_empty(p) ((p)->nelem = 0)
707
+ #define re_node_set_free(set) re_free ((set)->elems)
708
+
709
+
710
+ typedef enum
711
+ {
712
+ SB_CHAR,
713
+ MB_CHAR,
714
+ EQUIV_CLASS,
715
+ COLL_SYM,
716
+ CHAR_CLASS
717
+ } bracket_elem_type;
718
+
719
+ typedef struct
720
+ {
721
+ bracket_elem_type type;
722
+ union
723
+ {
724
+ unsigned char ch;
725
+ unsigned char *name;
726
+ wchar_t wch;
727
+ } opr;
728
+ } bracket_elem_t;
729
+
730
+
731
+ /* Inline functions for bitset operation. */
732
+ static inline void
733
+ bitset_not (bitset_t set)
734
+ {
735
+ int bitset_i;
736
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
737
+ set[bitset_i] = ~set[bitset_i];
738
+ }
739
+
740
+ static inline void
741
+ bitset_merge (bitset_t dest, const bitset_t src)
742
+ {
743
+ int bitset_i;
744
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
745
+ dest[bitset_i] |= src[bitset_i];
746
+ }
747
+
748
+ static inline void
749
+ bitset_mask (bitset_t dest, const bitset_t src)
750
+ {
751
+ int bitset_i;
752
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
753
+ dest[bitset_i] &= src[bitset_i];
754
+ }
755
+
756
+ #ifdef RE_ENABLE_I18N
757
+ /* Inline functions for re_string. */
758
+ static inline int
759
+ internal_function __attribute ((pure))
760
+ re_string_char_size_at (const re_string_t *pstr, int idx)
761
+ {
762
+ int byte_idx;
763
+ if (pstr->mb_cur_max == 1)
764
+ return 1;
765
+ for (byte_idx = 1; idx + byte_idx < pstr->valid_len; ++byte_idx)
766
+ if (pstr->wcs[idx + byte_idx] != WEOF)
767
+ break;
768
+ return byte_idx;
769
+ }
770
+
771
+ static inline wint_t
772
+ internal_function __attribute ((pure))
773
+ re_string_wchar_at (const re_string_t *pstr, int idx)
774
+ {
775
+ if (pstr->mb_cur_max == 1)
776
+ return (wint_t) pstr->mbs[idx];
777
+ return (wint_t) pstr->wcs[idx];
778
+ }
779
+
780
+ # ifndef NOT_IN_libc
781
+ static int
782
+ internal_function __attribute ((pure))
783
+ re_string_elem_size_at (const re_string_t *pstr, int idx)
784
+ {
785
+ # ifdef _LIBC
786
+ const unsigned char *p, *extra;
787
+ const int32_t *table, *indirect;
788
+ int32_t tmp;
789
+ # include <locale/weight.h>
790
+ uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
791
+
792
+ if (nrules != 0)
793
+ {
794
+ table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
795
+ extra = (const unsigned char *)
796
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
797
+ indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
798
+ _NL_COLLATE_INDIRECTMB);
799
+ p = pstr->mbs + idx;
800
+ tmp = findidx (&p);
801
+ return p - pstr->mbs - idx;
802
+ }
803
+ else
804
+ # endif /* _LIBC */
805
+ return 1;
806
+ }
807
+ # endif
808
+ #endif /* RE_ENABLE_I18N */
809
+
810
+ #endif /* _REGEX_INTERNAL_H */