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
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2011 the libgit2 contributors
2
+ * Copyright (C) 2009-2012 the libgit2 contributors
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -30,8 +30,10 @@ static int binsearch(void **dst, const void *x, size_t size, cmp_ptr_t cmp)
30
30
  int l, c, r;
31
31
  void *lx, *cx;
32
32
 
33
+ assert(size > 0);
34
+
33
35
  l = 0;
34
- r = size - 1;
36
+ r = (int)size - 1;
35
37
  c = r >> 1;
36
38
  lx = dst[l];
37
39
 
@@ -84,7 +86,7 @@ static void bisort(void **dst, size_t start, size_t size, cmp_ptr_t cmp)
84
86
  /* Else we need to find the right place, shift everything over, and squeeze in */
85
87
  x = dst[i];
86
88
  location = binsearch(dst, x, i, cmp);
87
- for (j = i - 1; j >= location; j--) {
89
+ for (j = (int)i - 1; j >= location; j--) {
88
90
  dst[j + 1] = dst[j];
89
91
  }
90
92
  dst[location] = x;
@@ -104,7 +106,7 @@ struct tsort_store {
104
106
  void **storage;
105
107
  };
106
108
 
107
- static void reverse_elements(void **dst, int start, int end)
109
+ static void reverse_elements(void **dst, ssize_t start, ssize_t end)
108
110
  {
109
111
  while (start < end) {
110
112
  void *tmp = dst[start];
@@ -116,7 +118,7 @@ static void reverse_elements(void **dst, int start, int end)
116
118
  }
117
119
  }
118
120
 
119
- static int count_run(void **dst, ssize_t start, ssize_t size, struct tsort_store *store)
121
+ static ssize_t count_run(void **dst, ssize_t start, ssize_t size, struct tsort_store *store)
120
122
  {
121
123
  ssize_t curr = start + 2;
122
124
 
@@ -148,7 +150,7 @@ static int count_run(void **dst, ssize_t start, ssize_t size, struct tsort_store
148
150
  }
149
151
  }
150
152
 
151
- static int compute_minrun(size_t n)
153
+ static size_t compute_minrun(size_t n)
152
154
  {
153
155
  int r = 0;
154
156
  while (n >= 64) {
@@ -158,19 +160,19 @@ static int compute_minrun(size_t n)
158
160
  return n + r;
159
161
  }
160
162
 
161
- static int check_invariant(struct tsort_run *stack, int stack_curr)
163
+ static int check_invariant(struct tsort_run *stack, ssize_t stack_curr)
162
164
  {
163
165
  if (stack_curr < 2)
164
166
  return 1;
165
167
 
166
168
  else if (stack_curr == 2) {
167
- const int A = stack[stack_curr - 2].length;
168
- const int B = stack[stack_curr - 1].length;
169
+ const ssize_t A = stack[stack_curr - 2].length;
170
+ const ssize_t B = stack[stack_curr - 1].length;
169
171
  return (A > B);
170
172
  } else {
171
- const int A = stack[stack_curr - 3].length;
172
- const int B = stack[stack_curr - 2].length;
173
- const int C = stack[stack_curr - 1].length;
173
+ const ssize_t A = stack[stack_curr - 3].length;
174
+ const ssize_t B = stack[stack_curr - 2].length;
175
+ const ssize_t C = stack[stack_curr - 1].length;
174
176
  return !((A <= B + C) || (B <= C));
175
177
  }
176
178
  }
@@ -195,7 +197,7 @@ static int resize(struct tsort_store *store, size_t new_size)
195
197
  return 0;
196
198
  }
197
199
 
198
- static void merge(void **dst, const struct tsort_run *stack, int stack_curr, struct tsort_store *store)
200
+ static void merge(void **dst, const struct tsort_run *stack, ssize_t stack_curr, struct tsort_store *store)
199
201
  {
200
202
  const ssize_t A = stack[stack_curr - 2].length;
201
203
  const ssize_t B = stack[stack_curr - 1].length;
@@ -343,7 +345,7 @@ void git__tsort(void **dst, size_t size, cmp_ptr_t cmp)
343
345
  }
344
346
 
345
347
  /* compute the minimum run length */
346
- minrun = compute_minrun(size);
348
+ minrun = (ssize_t)compute_minrun(size);
347
349
 
348
350
  /* temporary storage for merges */
349
351
  store->alloc = 0;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2011 the libgit2 contributors
2
+ * Copyright (C) 2009-2012 the libgit2 contributors
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -17,12 +17,7 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offs
17
17
  int mprot = 0;
18
18
  int mflag = 0;
19
19
 
20
- assert((out != NULL) && (len > 0));
21
-
22
- if ((out == NULL) || (len == 0)) {
23
- errno = EINVAL;
24
- return git__throw(GIT_ERROR, "Failed to mmap. No map or zero length");
25
- }
20
+ GIT_MMAP_VALIDATE(out, len, prot, flags);
26
21
 
27
22
  out->data = NULL;
28
23
  out->len = 0;
@@ -31,39 +26,28 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offs
31
26
  mprot = PROT_WRITE;
32
27
  else if (prot & GIT_PROT_READ)
33
28
  mprot = PROT_READ;
34
- else {
35
- errno = EINVAL;
36
- return git__throw(GIT_ERROR, "Failed to mmap. Invalid protection parameters");
37
- }
38
29
 
39
30
  if ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED)
40
31
  mflag = MAP_SHARED;
41
32
  else if ((flags & GIT_MAP_TYPE) == GIT_MAP_PRIVATE)
42
33
  mflag = MAP_PRIVATE;
43
34
 
44
- if (flags & GIT_MAP_FIXED) {
45
- errno = EINVAL;
46
- return git__throw(GIT_ERROR, "Failed to mmap. FIXED not set");
35
+ out->data = mmap(NULL, len, mprot, mflag, fd, offset);
36
+ if (!out->data || out->data == MAP_FAILED) {
37
+ giterr_set(GITERR_OS, "Failed to mmap. Could not write data");
38
+ return -1;
47
39
  }
48
40
 
49
- out->data = mmap(NULL, len, mprot, mflag, fd, offset);
50
- if (!out->data || out->data == MAP_FAILED)
51
- return git__throw(GIT_EOSERR, "Failed to mmap. Could not write data");
52
41
  out->len = len;
53
42
 
54
- return GIT_SUCCESS;
43
+ return 0;
55
44
  }
56
45
 
57
46
  int p_munmap(git_map *map)
58
47
  {
59
48
  assert(map != NULL);
60
-
61
- if (!map)
62
- return git__throw(GIT_ERROR, "Failed to munmap. Map does not exist");
63
-
64
49
  munmap(map->data, map->len);
65
-
66
- return GIT_SUCCESS;
50
+ return 0;
67
51
  }
68
52
 
69
53
  #endif
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2011 the libgit2 contributors
2
+ * Copyright (C) 2009-2012 the libgit2 contributors
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -7,7 +7,14 @@
7
7
  #ifndef INCLUDE_posix__w32_h__
8
8
  #define INCLUDE_posix__w32_h__
9
9
 
10
- #include <fnmatch.h>
10
+ #ifndef __sun
11
+ # include <fnmatch.h>
12
+ # define p_fnmatch(p, s, f) fnmatch(p, s, f)
13
+ #else
14
+ # include "compat/fnmatch.h"
15
+ #endif
16
+
17
+ #include <stdio.h>
11
18
 
12
19
  #define p_lstat(p,b) lstat(p,b)
13
20
  #define p_readlink(a, b, c) readlink(a, b, c)
@@ -16,7 +23,6 @@
16
23
  #define p_mkdir(p,m) mkdir(p, m)
17
24
  #define p_fsync(fd) fsync(fd)
18
25
  #define p_realpath(p, po) realpath(p, po)
19
- #define p_fnmatch(p, s, f) fnmatch(p, s, f)
20
26
  #define p_vsnprintf(b, c, f, a) vsnprintf(b, c, f, a)
21
27
  #define p_snprintf(b, c, f, ...) snprintf(b, c, f, __VA_ARGS__)
22
28
  #define p_mkstemp(p) mkstemp(p)
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2011 the libgit2 contributors
2
+ * Copyright (C) 2009-2012 the libgit2 contributors
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -31,19 +31,33 @@ void git_strarray_free(git_strarray *array)
31
31
  git__free(array->strings);
32
32
  }
33
33
 
34
- int git__fnmatch(const char *pattern, const char *name, int flags)
34
+ int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
35
35
  {
36
- int ret;
37
-
38
- ret = p_fnmatch(pattern, name, flags);
39
- switch (ret) {
40
- case 0:
41
- return GIT_SUCCESS;
42
- case FNM_NOMATCH:
43
- return GIT_ENOMATCH;
44
- default:
45
- return git__throw(GIT_EOSERR, "Error trying to match path");
36
+ size_t i;
37
+
38
+ assert(tgt && src);
39
+
40
+ memset(tgt, 0, sizeof(*tgt));
41
+
42
+ if (!src->count)
43
+ return 0;
44
+
45
+ tgt->strings = git__calloc(src->count, sizeof(char *));
46
+ GITERR_CHECK_ALLOC(tgt->strings);
47
+
48
+ for (i = 0; i < src->count; ++i) {
49
+ tgt->strings[tgt->count] = git__strdup(src->strings[i]);
50
+
51
+ if (!tgt->strings[tgt->count]) {
52
+ git_strarray_free(tgt);
53
+ memset(tgt, 0, sizeof(*tgt));
54
+ return -1;
55
+ }
56
+
57
+ tgt->count++;
46
58
  }
59
+
60
+ return 0;
47
61
  }
48
62
 
49
63
  int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int base)
@@ -61,7 +75,7 @@ int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int ba
61
75
  /*
62
76
  * White space
63
77
  */
64
- while (isspace(*p))
78
+ while (git__isspace(*p))
65
79
  p++;
66
80
 
67
81
  /*
@@ -111,34 +125,40 @@ int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int ba
111
125
  }
112
126
 
113
127
  Return:
114
- if (ndig == 0)
115
- return git__throw(GIT_ENOTNUM, "Failed to convert string to long. Not a number");
128
+ if (ndig == 0) {
129
+ giterr_set(GITERR_INVALID, "Failed to convert string to long. Not a number");
130
+ return -1;
131
+ }
116
132
 
117
133
  if (endptr)
118
134
  *endptr = p;
119
135
 
120
- if (ovfl)
121
- return git__throw(GIT_EOVERFLOW, "Failed to convert string to long. Overflow error");
136
+ if (ovfl) {
137
+ giterr_set(GITERR_INVALID, "Failed to convert string to long. Overflow error");
138
+ return -1;
139
+ }
122
140
 
123
141
  *result = neg ? -n : n;
124
- return GIT_SUCCESS;
142
+ return 0;
125
143
  }
126
144
 
127
145
  int git__strtol32(int32_t *result, const char *nptr, const char **endptr, int base)
128
146
  {
129
- int error = GIT_SUCCESS;
147
+ int error;
130
148
  int32_t tmp_int;
131
149
  int64_t tmp_long;
132
150
 
133
- if ((error = git__strtol64(&tmp_long, nptr, endptr, base)) < GIT_SUCCESS)
151
+ if ((error = git__strtol64(&tmp_long, nptr, endptr, base)) < 0)
134
152
  return error;
135
153
 
136
154
  tmp_int = tmp_long & 0xFFFFFFFF;
137
- if (tmp_int != tmp_long)
138
- return git__throw(GIT_EOVERFLOW, "Failed to convert. '%s' is too large", nptr);
155
+ if (tmp_int != tmp_long) {
156
+ giterr_set(GITERR_INVALID, "Failed to convert. '%s' is too large", nptr);
157
+ return -1;
158
+ }
139
159
 
140
160
  *result = tmp_int;
141
-
161
+
142
162
  return error;
143
163
  }
144
164
 
@@ -159,7 +179,7 @@ void git__strtolower(char *str)
159
179
  int git__prefixcmp(const char *str, const char *prefix)
160
180
  {
161
181
  for (;;) {
162
- char p = *(prefix++), s;
182
+ unsigned char p = *(prefix++), s;
163
183
  if (!p)
164
184
  return 0;
165
185
  if ((s = *(str++)) != p)
@@ -348,22 +368,34 @@ uint32_t git__hash(const void *key, int len, uint32_t seed)
348
368
  * Copyright (c) 1990 Regents of the University of California.
349
369
  * All rights reserved.
350
370
  */
351
- void **git__bsearch(const void *key, void **base, size_t nmemb, int (*compar)(const void *, const void *))
371
+ int git__bsearch(
372
+ void **array,
373
+ size_t array_len,
374
+ const void *key,
375
+ int (*compare)(const void *, const void *),
376
+ size_t *position)
352
377
  {
353
- int lim, cmp;
354
- void **p;
355
-
356
- for (lim = nmemb; lim != 0; lim >>= 1) {
357
- p = base + (lim >> 1);
358
- cmp = (*compar)(key, *p);
359
- if (cmp > 0) { /* key > p: move right */
360
- base = p + 1;
361
- lim--;
362
- } else if (cmp == 0) {
363
- return (void **)p;
364
- } /* else move left */
378
+ unsigned int lim;
379
+ int cmp = -1;
380
+ void **part, **base = array;
381
+
382
+ for (lim = (unsigned int)array_len; lim != 0; lim >>= 1) {
383
+ part = base + (lim >> 1);
384
+ cmp = (*compare)(key, *part);
385
+ if (cmp == 0) {
386
+ base = part;
387
+ break;
365
388
  }
366
- return NULL;
389
+ if (cmp > 0) { /* key > p; take right partition */
390
+ base = part + 1;
391
+ lim--;
392
+ } /* else take left partition */
393
+ }
394
+
395
+ if (position)
396
+ *position = (base - array);
397
+
398
+ return (cmp == 0) ? 0 : -1;
367
399
  }
368
400
 
369
401
  /**
@@ -379,3 +411,27 @@ int git__strcmp_cb(const void *a, const void *b)
379
411
 
380
412
  return strcmp(stra, strb);
381
413
  }
414
+
415
+ int git__parse_bool(int *out, const char *value)
416
+ {
417
+ /* A missing value means true */
418
+ if (value == NULL) {
419
+ *out = 1;
420
+ return 0;
421
+ }
422
+
423
+ if (!strcasecmp(value, "true") ||
424
+ !strcasecmp(value, "yes") ||
425
+ !strcasecmp(value, "on")) {
426
+ *out = 1;
427
+ return 0;
428
+ }
429
+ if (!strcasecmp(value, "false") ||
430
+ !strcasecmp(value, "no") ||
431
+ !strcasecmp(value, "off")) {
432
+ *out = 0;
433
+ return 0;
434
+ }
435
+
436
+ return -1;
437
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2011 the libgit2 contributors
2
+ * Copyright (C) 2009-2012 the libgit2 contributors
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -22,24 +22,21 @@
22
22
  GIT_INLINE(void *) git__malloc(size_t len)
23
23
  {
24
24
  void *ptr = malloc(len);
25
- if (!ptr)
26
- git__throw(GIT_ENOMEM, "Out of memory. Failed to allocate %d bytes.", (int)len);
25
+ if (!ptr) giterr_set_oom();
27
26
  return ptr;
28
27
  }
29
28
 
30
29
  GIT_INLINE(void *) git__calloc(size_t nelem, size_t elsize)
31
30
  {
32
31
  void *ptr = calloc(nelem, elsize);
33
- if (!ptr)
34
- git__throw(GIT_ENOMEM, "Out of memory. Failed to allocate %d bytes.", (int)elsize);
32
+ if (!ptr) giterr_set_oom();
35
33
  return ptr;
36
34
  }
37
35
 
38
36
  GIT_INLINE(char *) git__strdup(const char *str)
39
37
  {
40
38
  char *ptr = strdup(str);
41
- if (!ptr)
42
- git__throw(GIT_ENOMEM, "Out of memory. Failed to duplicate string");
39
+ if (!ptr) giterr_set_oom();
43
40
  return ptr;
44
41
  }
45
42
 
@@ -54,7 +51,7 @@ GIT_INLINE(char *) git__strndup(const char *str, size_t n)
54
51
 
55
52
  ptr = (char*)malloc(length + 1);
56
53
  if (!ptr) {
57
- git__throw(GIT_ENOMEM, "Out of memory. Failed to duplicate string");
54
+ giterr_set_oom();
58
55
  return NULL;
59
56
  }
60
57
 
@@ -67,8 +64,7 @@ GIT_INLINE(char *) git__strndup(const char *str, size_t n)
67
64
  GIT_INLINE(void *) git__realloc(void *ptr, size_t size)
68
65
  {
69
66
  void *new_ptr = realloc(ptr, size);
70
- if (!new_ptr)
71
- git__throw(GIT_ENOMEM, "Out of memory. Failed to allocate %d bytes.", (int)size);
67
+ if (!new_ptr) giterr_set_oom();
72
68
  return new_ptr;
73
69
  }
74
70
 
@@ -102,11 +98,26 @@ extern char *git__strtok(char **end, const char *sep);
102
98
  extern void git__strntolower(char *str, size_t len);
103
99
  extern void git__strtolower(char *str);
104
100
 
105
- extern int git__fnmatch(const char *pattern, const char *name, int flags);
101
+ GIT_INLINE(const char *) git__next_line(const char *s)
102
+ {
103
+ while (*s && *s != '\n') s++;
104
+ while (*s == '\n' || *s == '\r') s++;
105
+ return s;
106
+ }
106
107
 
107
108
  extern void git__tsort(void **dst, size_t size, int (*cmp)(const void *, const void *));
108
- extern void **git__bsearch(const void *key, void **base, size_t nmemb,
109
- int (*compar)(const void *, const void *));
109
+
110
+ /**
111
+ * @param position If non-NULL, this will be set to the position where the
112
+ * element is or would be inserted if not found.
113
+ * @return pos (>=0) if found or -1 if not found
114
+ */
115
+ extern int git__bsearch(
116
+ void **array,
117
+ size_t array_len,
118
+ const void *key,
119
+ int (*compare)(const void *, const void *),
120
+ size_t *position);
110
121
 
111
122
  extern int git__strcmp_cb(const void *a, const void *b);
112
123
 
@@ -133,5 +144,100 @@ typedef void (*git_refcount_freeptr)(void *r);
133
144
 
134
145
  #define GIT_REFCOUNT_OWNER(r) (((git_refcount *)(r))->owner)
135
146
 
147
+ static signed char from_hex[] = {
148
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 00 */
149
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 10 */
150
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 20 */
151
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, /* 30 */
152
+ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 40 */
153
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 50 */
154
+ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 60 */
155
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 70 */
156
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 80 */
157
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 90 */
158
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* a0 */
159
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* b0 */
160
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* c0 */
161
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* d0 */
162
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* e0 */
163
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* f0 */
164
+ };
165
+
166
+ GIT_INLINE(int) git__fromhex(char h)
167
+ {
168
+ return from_hex[(unsigned char) h];
169
+ }
170
+
171
+ GIT_INLINE(int) git__ishex(const char *str)
172
+ {
173
+ unsigned i;
174
+ for (i=0; i<strlen(str); i++)
175
+ if (git__fromhex(str[i]) < 0)
176
+ return 0;
177
+ return 1;
178
+ }
179
+
180
+ GIT_INLINE(size_t) git__size_t_bitmask(size_t v)
181
+ {
182
+ v--;
183
+ v |= v >> 1;
184
+ v |= v >> 2;
185
+ v |= v >> 4;
186
+ v |= v >> 8;
187
+ v |= v >> 16;
188
+
189
+ return v;
190
+ }
191
+
192
+ GIT_INLINE(size_t) git__size_t_powerof2(size_t v)
193
+ {
194
+ return git__size_t_bitmask(v) + 1;
195
+ }
196
+
197
+ GIT_INLINE(bool) git__isupper(int c)
198
+ {
199
+ return (c >= 'A' && c <= 'Z');
200
+ }
201
+
202
+ GIT_INLINE(bool) git__isalpha(int c)
203
+ {
204
+ return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
205
+ }
206
+
207
+ GIT_INLINE(bool) git__isspace(int c)
208
+ {
209
+ return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == '\v');
210
+ }
211
+
212
+ GIT_INLINE(int) git__time_cmp(const git_time *a, const git_time *b)
213
+ {
214
+ /* Adjust for time zones. Times are in seconds, offsets are in minutes. */
215
+ git_time_t adjusted_a = a->time + ((b->offset - a->offset) * 60);
216
+ return (int)(adjusted_a - b->time);
217
+ }
218
+
219
+ GIT_INLINE(bool) git__iswildcard(int c)
220
+ {
221
+ return (c == '*' || c == '?' || c == '[');
222
+ }
223
+
224
+ /*
225
+ * Parse a string value as a boolean, just like Core Git
226
+ * does.
227
+ *
228
+ * Valid values for true are: 'true', 'yes', 'on'
229
+ * Valid values for false are: 'false', 'no', 'off'
230
+ */
231
+ extern int git__parse_bool(int *out, const char *value);
232
+
233
+ /*
234
+ * Parse a string into a value as a git_time_t.
235
+ *
236
+ * Sample valid input:
237
+ * - "yesterday"
238
+ * - "July 17, 2003"
239
+ * - "2003-7-17 08:23"
240
+ */
241
+ int git__date_parse(git_time_t *out, const char *date);
136
242
 
137
243
  #endif /* INCLUDE_util_h__ */