rugged 0.16.0 → 0.17.0b1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +373 -243
- data/Rakefile +22 -0
- data/ext/rugged/extconf.rb +9 -6
- data/ext/rugged/rugged.c +123 -31
- data/ext/rugged/rugged.h +11 -10
- data/ext/rugged/rugged_blob.c +181 -18
- data/ext/rugged/rugged_commit.c +196 -18
- data/ext/rugged/rugged_config.c +94 -5
- data/ext/rugged/rugged_object.c +54 -1
- data/ext/rugged/rugged_reference.c +203 -15
- data/ext/rugged/{remote.c → rugged_remote.c} +35 -10
- data/ext/rugged/rugged_repo.c +323 -81
- data/ext/rugged/rugged_revwalk.c +57 -4
- data/ext/rugged/rugged_signature.c +3 -3
- data/ext/rugged/rugged_tag.c +72 -1
- data/ext/rugged/rugged_tree.c +70 -2
- data/ext/rugged/vendor/libgit2-dist/deps/regex/config.h +7 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regcomp.c +3856 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.h +582 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.c +1744 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.h +810 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regexec.c +4369 -0
- data/ext/rugged/vendor/libgit2-dist/examples/diff.c +238 -0
- data/ext/rugged/vendor/libgit2-dist/examples/general.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +101 -85
- data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +7 -3
- data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +80 -25
- data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +6 -6
- data/ext/rugged/vendor/libgit2-dist/include/git2/attr.h +224 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/blob.h +59 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/branch.h +114 -7
- data/ext/rugged/vendor/libgit2-dist/include/git2/commit.h +14 -7
- data/ext/rugged/vendor/libgit2-dist/include/git2/common.h +4 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/config.h +105 -27
- data/ext/rugged/vendor/libgit2-dist/include/git2/diff.h +409 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/errors.h +47 -82
- data/ext/rugged/vendor/libgit2-dist/include/git2/index.h +25 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/indexer.h +46 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/merge.h +35 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/net.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/notes.h +139 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/object.h +5 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/odb.h +13 -13
- data/ext/rugged/vendor/libgit2-dist/include/git2/odb_backend.h +8 -8
- data/ext/rugged/vendor/libgit2-dist/include/git2/oid.h +14 -9
- data/ext/rugged/vendor/libgit2-dist/include/git2/reflog.h +5 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/refs.h +37 -17
- data/ext/rugged/vendor/libgit2-dist/include/git2/refspec.h +17 -9
- data/ext/rugged/vendor/libgit2-dist/include/git2/remote.h +83 -16
- data/ext/rugged/vendor/libgit2-dist/include/git2/repository.h +24 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/reset.h +44 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/revparse.h +36 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/revwalk.h +74 -6
- data/ext/rugged/vendor/libgit2-dist/include/git2/signature.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/status.h +120 -19
- data/ext/rugged/vendor/libgit2-dist/include/git2/submodule.h +103 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/tag.h +28 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/threads.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/tree.h +13 -13
- data/ext/rugged/vendor/libgit2-dist/include/git2/types.h +16 -2
- data/ext/rugged/vendor/libgit2-dist/include/git2/version.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/windows.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2.h +7 -2
- data/ext/rugged/vendor/libgit2-dist/src/attr.c +677 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr.h +56 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr_file.c +609 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr_file.h +145 -0
- data/ext/rugged/vendor/libgit2-dist/src/blob.c +213 -60
- data/ext/rugged/vendor/libgit2-dist/src/blob.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/branch.c +208 -0
- data/ext/rugged/vendor/libgit2-dist/src/branch.h +17 -0
- data/ext/rugged/vendor/libgit2-dist/src/bswap.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/buffer.c +395 -46
- data/ext/rugged/vendor/libgit2-dist/src/buffer.h +112 -9
- data/ext/rugged/vendor/libgit2-dist/src/cache.c +37 -49
- data/ext/rugged/vendor/libgit2-dist/src/cache.h +7 -17
- data/ext/rugged/vendor/libgit2-dist/src/cc-compat.h +18 -16
- data/ext/rugged/vendor/libgit2-dist/src/commit.c +56 -90
- data/ext/rugged/vendor/libgit2-dist/src/commit.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/common.h +12 -5
- data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/src/config.c +247 -158
- data/ext/rugged/vendor/libgit2-dist/src/config.h +10 -1
- data/ext/rugged/vendor/libgit2-dist/src/config_cache.c +94 -0
- data/ext/rugged/vendor/libgit2-dist/src/config_file.c +606 -496
- data/ext/rugged/vendor/libgit2-dist/src/config_file.h +31 -0
- data/ext/rugged/vendor/libgit2-dist/src/crlf.c +228 -0
- data/ext/rugged/vendor/libgit2-dist/src/date.c +876 -0
- data/ext/rugged/vendor/libgit2-dist/src/delta-apply.c +15 -9
- data/ext/rugged/vendor/libgit2-dist/src/delta-apply.h +2 -2
- data/ext/rugged/vendor/libgit2-dist/src/diff.c +814 -0
- data/ext/rugged/vendor/libgit2-dist/src/diff.h +43 -0
- data/ext/rugged/vendor/libgit2-dist/src/diff_output.c +794 -0
- data/ext/rugged/vendor/libgit2-dist/src/errors.c +89 -74
- data/ext/rugged/vendor/libgit2-dist/src/fetch.c +94 -66
- data/ext/rugged/vendor/libgit2-dist/src/fetch.h +5 -4
- data/ext/rugged/vendor/libgit2-dist/src/filebuf.c +157 -100
- data/ext/rugged/vendor/libgit2-dist/src/filebuf.h +22 -8
- data/ext/rugged/vendor/libgit2-dist/src/fileops.c +330 -206
- data/ext/rugged/vendor/libgit2-dist/src/fileops.h +82 -51
- data/ext/rugged/vendor/libgit2-dist/src/filter.c +165 -0
- data/ext/rugged/vendor/libgit2-dist/src/filter.h +119 -0
- data/ext/rugged/vendor/libgit2-dist/src/global.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/src/global.h +4 -1
- data/ext/rugged/vendor/libgit2-dist/src/hash.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/hash.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/ignore.c +203 -0
- data/ext/rugged/vendor/libgit2-dist/src/ignore.h +38 -0
- data/ext/rugged/vendor/libgit2-dist/src/index.c +220 -169
- data/ext/rugged/vendor/libgit2-dist/src/index.h +5 -1
- data/ext/rugged/vendor/libgit2-dist/src/indexer.c +601 -102
- data/ext/rugged/vendor/libgit2-dist/src/iterator.c +748 -0
- data/ext/rugged/vendor/libgit2-dist/src/iterator.h +151 -0
- data/ext/rugged/vendor/libgit2-dist/src/khash.h +608 -0
- data/ext/rugged/vendor/libgit2-dist/src/map.h +6 -1
- data/ext/rugged/vendor/libgit2-dist/src/message.c +61 -0
- data/ext/rugged/vendor/libgit2-dist/src/message.h +14 -0
- data/ext/rugged/vendor/libgit2-dist/src/mwindow.c +27 -29
- data/ext/rugged/vendor/libgit2-dist/src/mwindow.h +4 -4
- data/ext/rugged/vendor/libgit2-dist/src/netops.c +375 -56
- data/ext/rugged/vendor/libgit2-dist/src/netops.h +12 -9
- data/ext/rugged/vendor/libgit2-dist/src/notes.c +548 -0
- data/ext/rugged/vendor/libgit2-dist/src/notes.h +28 -0
- data/ext/rugged/vendor/libgit2-dist/src/object.c +59 -21
- data/ext/rugged/vendor/libgit2-dist/src/odb.c +212 -175
- data/ext/rugged/vendor/libgit2-dist/src/odb.h +39 -2
- data/ext/rugged/vendor/libgit2-dist/src/odb_loose.c +238 -241
- data/ext/rugged/vendor/libgit2-dist/src/odb_pack.c +94 -106
- data/ext/rugged/vendor/libgit2-dist/src/oid.c +59 -60
- data/ext/rugged/vendor/libgit2-dist/src/oidmap.h +42 -0
- data/ext/rugged/vendor/libgit2-dist/src/pack.c +198 -170
- data/ext/rugged/vendor/libgit2-dist/src/pack.h +16 -9
- data/ext/rugged/vendor/libgit2-dist/src/path.c +496 -106
- data/ext/rugged/vendor/libgit2-dist/src/path.h +214 -20
- data/ext/rugged/vendor/libgit2-dist/src/pkt.c +88 -159
- data/ext/rugged/vendor/libgit2-dist/src/pkt.h +9 -5
- data/ext/rugged/vendor/libgit2-dist/src/pool.c +294 -0
- data/ext/rugged/vendor/libgit2-dist/src/pool.h +125 -0
- data/ext/rugged/vendor/libgit2-dist/src/posix.c +38 -16
- data/ext/rugged/vendor/libgit2-dist/src/posix.h +20 -2
- data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/pqueue.c +7 -7
- data/ext/rugged/vendor/libgit2-dist/src/pqueue.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/protocol.c +21 -13
- data/ext/rugged/vendor/libgit2-dist/src/protocol.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/reflog.c +125 -103
- data/ext/rugged/vendor/libgit2-dist/src/reflog.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/refs.c +713 -640
- data/ext/rugged/vendor/libgit2-dist/src/refs.h +27 -3
- data/ext/rugged/vendor/libgit2-dist/src/refspec.c +51 -17
- data/ext/rugged/vendor/libgit2-dist/src/refspec.h +13 -1
- data/ext/rugged/vendor/libgit2-dist/src/remote.c +307 -119
- data/ext/rugged/vendor/libgit2-dist/src/remote.h +3 -2
- data/ext/rugged/vendor/libgit2-dist/src/repository.c +593 -442
- data/ext/rugged/vendor/libgit2-dist/src/repository.h +80 -2
- data/ext/rugged/vendor/libgit2-dist/src/reset.c +103 -0
- data/ext/rugged/vendor/libgit2-dist/src/revparse.c +753 -0
- data/ext/rugged/vendor/libgit2-dist/src/revwalk.c +434 -158
- data/ext/rugged/vendor/libgit2-dist/src/sha1.c +3 -3
- data/ext/rugged/vendor/libgit2-dist/src/sha1.h +2 -2
- data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.c +3 -2
- data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/signature.c +69 -80
- data/ext/rugged/vendor/libgit2-dist/src/signature.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/status.c +184 -638
- data/ext/rugged/vendor/libgit2-dist/src/strmap.h +64 -0
- data/ext/rugged/vendor/libgit2-dist/src/submodule.c +387 -0
- data/ext/rugged/vendor/libgit2-dist/src/tag.c +162 -137
- data/ext/rugged/vendor/libgit2-dist/src/tag.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/thread-utils.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/thread-utils.h +8 -8
- data/ext/rugged/vendor/libgit2-dist/src/transport.c +31 -19
- data/ext/rugged/vendor/libgit2-dist/src/transport.h +31 -11
- data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +168 -193
- data/ext/rugged/vendor/libgit2-dist/src/transports/http.c +192 -241
- data/ext/rugged/vendor/libgit2-dist/src/transports/local.c +92 -86
- data/ext/rugged/vendor/libgit2-dist/src/tree-cache.c +32 -49
- data/ext/rugged/vendor/libgit2-dist/src/tree-cache.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/tree.c +172 -145
- data/ext/rugged/vendor/libgit2-dist/src/tree.h +16 -2
- data/ext/rugged/vendor/libgit2-dist/src/tsort.c +16 -14
- data/ext/rugged/vendor/libgit2-dist/src/unix/map.c +8 -24
- data/ext/rugged/vendor/libgit2-dist/src/unix/posix.h +9 -3
- data/ext/rugged/vendor/libgit2-dist/src/util.c +94 -38
- data/ext/rugged/vendor/libgit2-dist/src/util.h +119 -13
- data/ext/rugged/vendor/libgit2-dist/src/vector.c +84 -31
- data/ext/rugged/vendor/libgit2-dist/src/vector.h +37 -4
- data/ext/rugged/vendor/libgit2-dist/src/win32/dir.c +81 -41
- data/ext/rugged/vendor/libgit2-dist/src/{dir.h → win32/dir.h} +4 -9
- data/ext/rugged/vendor/libgit2-dist/src/win32/map.c +19 -35
- data/ext/rugged/vendor/libgit2-dist/src/win32/mingw-compat.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/msvc-compat.h +5 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/posix.h +10 -8
- data/ext/rugged/vendor/libgit2-dist/src/win32/posix_w32.c +262 -118
- data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.c +12 -9
- data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.c +30 -26
- data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiff.h +135 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.c +572 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.h +63 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.c +253 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.h +36 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xhistogram.c +371 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xinclude.h +46 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmacros.h +54 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmerge.c +619 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xpatience.c +358 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.c +483 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.h +34 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xtypes.h +67 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.c +419 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.h +49 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +43 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +226 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +108 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +262 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +273 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/buf/basic.c +5 -5
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +181 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +55 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +44 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +350 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +65 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +140 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/add.c +3 -3
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +151 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/new.c +5 -5
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/read.c +44 -32
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +61 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/write.c +20 -5
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +613 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/dirent.c +39 -26
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +115 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +60 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/filebuf.c +4 -18
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +22 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/oid.c +6 -6
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +420 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +68 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/string.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +102 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/strtol.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +191 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +15 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +254 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +104 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +47 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +92 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +572 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +99 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +210 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +543 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +46 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/index/rename.c +2 -12
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +246 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +33 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +137 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +183 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +133 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +57 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +125 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +87 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +69 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +126 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +63 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +171 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/chars.c +3 -14
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/compare.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/convert.c +10 -10
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/fromstr.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/hash.c +21 -17
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/short.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/size.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/type2string.c +14 -14
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +455 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +56 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +130 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +192 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/tree/frompath.c +22 -16
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +75 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +84 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose_data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +24 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/pack_data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/packed.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/sorting.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +113 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +91 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +78 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +72 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +17 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +149 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +53 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +36 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +42 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +200 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +136 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +67 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +194 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +123 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +339 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +174 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +42 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +142 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/repo/getters.c +19 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +235 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +282 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +80 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +47 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +10 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +6 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +102 -0
- data/ext/rugged/vendor/libgit2-dist/{tests/t05-revwalk.c → tests-clar/revwalk/basic.c} +85 -44
- data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +148 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +133 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/status/single.c +2 -11
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +202 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +49 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +33 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +112 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +649 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +20 -0
- data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
- data/lib/rugged/commit.rb +35 -0
- data/lib/rugged/object.rb +7 -0
- data/lib/rugged/reference.rb +9 -0
- data/lib/rugged/repository.rb +99 -3
- data/lib/rugged/tag.rb +22 -0
- data/lib/rugged/tree.rb +8 -0
- data/lib/rugged/version.rb +1 -1
- data/lib/rugged.rb +4 -1
- data/test/blob_test.rb +2 -2
- data/test/commit_test.rb +27 -13
- data/test/config_test.rb +44 -0
- data/test/coverage/HEAD.json +1 -1
- data/test/fixtures/testrepo.git/config +2 -0
- data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
- data/test/lib_test.rb +7 -0
- data/test/object_test.rb +3 -3
- data/test/reference_test.rb +46 -8
- data/test/remote_test.rb +8 -2
- data/test/repo_pack_test.rb +3 -3
- data/test/repo_test.rb +79 -11
- data/test/tag_test.rb +9 -2
- data/test/test_helper.rb +21 -0
- data/test/tree_test.rb +18 -6
- metadata +205 -81
- data/ext/rugged/vendor/libgit2-dist/include/git2/zlib.h +0 -40
- data/ext/rugged/vendor/libgit2-dist/src/hashtable.c +0 -243
- data/ext/rugged/vendor/libgit2-dist/src/hashtable.h +0 -80
- data/ext/rugged/vendor/libgit2-dist/tests/t00-core.c +0 -628
- data/ext/rugged/vendor/libgit2-dist/tests/t01-data.h +0 -322
- data/ext/rugged/vendor/libgit2-dist/tests/t01-rawobj.c +0 -638
- data/ext/rugged/vendor/libgit2-dist/tests/t03-data.h +0 -344
- data/ext/rugged/vendor/libgit2-dist/tests/t03-objwrite.c +0 -255
- data/ext/rugged/vendor/libgit2-dist/tests/t04-commit.c +0 -788
- data/ext/rugged/vendor/libgit2-dist/tests/t06-index.c +0 -219
- data/ext/rugged/vendor/libgit2-dist/tests/t07-hashtable.c +0 -192
- data/ext/rugged/vendor/libgit2-dist/tests/t08-tag.c +0 -357
- data/ext/rugged/vendor/libgit2-dist/tests/t09-tree.c +0 -221
- data/ext/rugged/vendor/libgit2-dist/tests/t10-refs.c +0 -1294
- data/ext/rugged/vendor/libgit2-dist/tests/t12-repo.c +0 -174
- data/ext/rugged/vendor/libgit2-dist/tests/t13-threads.c +0 -41
- data/ext/rugged/vendor/libgit2-dist/tests/t17-bufs.c +0 -61
- data/ext/rugged/vendor/libgit2-dist/tests/t18-status.c +0 -448
- data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.c +0 -310
- data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.h +0 -83
- data/ext/rugged/vendor/libgit2-dist/tests/test_lib.c +0 -198
- data/ext/rugged/vendor/libgit2-dist/tests/test_lib.h +0 -54
- data/ext/rugged/vendor/libgit2-dist/tests/test_main.c +0 -89
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay.h +0 -187
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_libgit2.h +0 -28
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_main.c +0 -1073
- data/ext/rugged/vendor/libgit2-dist/tests-clay/config/stress.c +0 -39
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/path.c +0 -139
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/rmdir.c +0 -50
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/vector.c +0 -66
- data/ext/rugged/vendor/libgit2-dist/tests-clay/network/remotes.c +0 -50
- data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/init.c +0 -104
- data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/open.c +0 -54
- data/ext/rugged/vendor/libgit2-dist/tests-clay/status/status_data.h +0 -48
- data/ext/rugged/vendor/libgit2-dist/tests-clay/status/worktree.c +0 -124
- data/lib/rugged/objects.rb +0 -45
- data/test/fixtures/testrepo.git/refs/heads/new_name +0 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright (C) 2009-
|
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,
|
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
|
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
|
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,
|
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
|
168
|
-
const
|
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
|
172
|
-
const
|
173
|
-
const
|
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,
|
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-
|
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
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
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
|
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-
|
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
|
-
#
|
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-
|
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
|
34
|
+
int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
|
35
35
|
{
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
return
|
44
|
-
|
45
|
-
|
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 (
|
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
|
-
|
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
|
-
|
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
|
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
|
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)) <
|
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
|
-
|
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
|
-
|
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
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
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
|
-
|
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-
|
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
|
-
|
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
|
-
|
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
|
-
|
109
|
-
|
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__ */
|