From 0a3f1b175898dfc65ac6bc25920f048f8e9fc01b Mon Sep 17 00:00:00 2001 From: Vladimir Parfinenko Date: Thu, 1 Dec 2016 16:34:24 +0700 Subject: [PATCH] Prettify sources, build process and some features --- .gitignore | 3 + .gitmodules | 3 + GitAutoComp.vcxproj | 121 - GitAutoComp.vcxproj.filters | 541 ---- GitAutoComp_en.hlf | 48 - GitAutoComp_ru.hlf | 48 - LICENSE | 23 + README.md | 51 + RefsDialog.cpp | 58 - RefsDialog.h | 6 - SampleMacro.lua | 6 + build.bat | 65 + demo.gif | Bin 0 -> 48879 bytes far3sdk/README | 44 + far3sdk/common.filters | 47 + far3sdk/common.props | 160 + far3sdk/include/DlgBuilder.hpp | 1071 ++++++ far3sdk/include/PluginSettings.hpp | 124 + far3sdk/include/SimpleString.hpp | 176 + far3sdk/include/farcolor.hpp | 219 ++ far3sdk/include/farversion.hpp | 80 + far3sdk/include/plugin.hpp | 2868 +++++++++++++++++ far3sdk/vc_crt_fix/vc_crt_fix.asm | 69 + far3sdk/vc_crt_fix/vc_crt_fix_impl.cpp | 217 ++ far3sdk/vc_crt_fix/vc_crt_fix_ulink.cpp | 63 + libgit2 | 1 + libgit2/include/git2.h | 65 - libgit2/include/git2/annotated_commit.h | 116 - libgit2/include/git2/attr.h | 245 -- libgit2/include/git2/blame.h | 212 -- libgit2/include/git2/blob.h | 221 -- libgit2/include/git2/branch.h | 280 -- libgit2/include/git2/buffer.h | 128 - libgit2/include/git2/checkout.h | 365 --- libgit2/include/git2/cherrypick.h | 90 - libgit2/include/git2/clone.h | 207 -- libgit2/include/git2/commit.h | 399 --- libgit2/include/git2/common.h | 287 -- libgit2/include/git2/config.h | 728 ----- libgit2/include/git2/cred_helpers.h | 53 - libgit2/include/git2/describe.h | 163 - libgit2/include/git2/diff.h | 1352 -------- libgit2/include/git2/errors.h | 148 - libgit2/include/git2/filter.h | 217 -- libgit2/include/git2/global.h | 44 - libgit2/include/git2/graph.h | 55 - libgit2/include/git2/ignore.h | 78 - libgit2/include/git2/index.h | 786 ----- libgit2/include/git2/indexer.h | 76 - libgit2/include/git2/inttypes.h | 309 -- libgit2/include/git2/merge.h | 573 ---- libgit2/include/git2/message.h | 44 - libgit2/include/git2/net.h | 59 - libgit2/include/git2/notes.h | 217 -- libgit2/include/git2/object.h | 242 -- libgit2/include/git2/odb.h | 495 --- libgit2/include/git2/odb_backend.h | 134 - libgit2/include/git2/oid.h | 269 -- libgit2/include/git2/oidarray.h | 40 - libgit2/include/git2/pack.h | 240 -- libgit2/include/git2/patch.h | 274 -- libgit2/include/git2/pathspec.h | 263 -- libgit2/include/git2/rebase.h | 320 -- libgit2/include/git2/refdb.h | 68 - libgit2/include/git2/reflog.h | 170 - libgit2/include/git2/refs.h | 735 ----- libgit2/include/git2/refspec.h | 104 - libgit2/include/git2/remote.h | 811 ----- libgit2/include/git2/repository.h | 756 ----- libgit2/include/git2/reset.h | 111 - libgit2/include/git2/revert.h | 89 - libgit2/include/git2/revparse.h | 113 - libgit2/include/git2/revwalk.h | 297 -- libgit2/include/git2/signature.h | 90 - libgit2/include/git2/stash.h | 257 -- libgit2/include/git2/status.h | 370 --- libgit2/include/git2/stdint.h | 247 -- libgit2/include/git2/strarray.h | 60 - libgit2/include/git2/submodule.h | 637 ---- libgit2/include/git2/sys/commit.h | 80 - libgit2/include/git2/sys/config.h | 127 - libgit2/include/git2/sys/diff.h | 94 - libgit2/include/git2/sys/filter.h | 321 -- libgit2/include/git2/sys/hashsig.h | 106 - libgit2/include/git2/sys/index.h | 177 - libgit2/include/git2/sys/mempack.h | 85 - libgit2/include/git2/sys/odb_backend.h | 112 - libgit2/include/git2/sys/openssl.h | 38 - libgit2/include/git2/sys/refdb_backend.h | 218 -- libgit2/include/git2/sys/reflog.h | 21 - libgit2/include/git2/sys/refs.h | 49 - libgit2/include/git2/sys/repository.h | 140 - libgit2/include/git2/sys/stream.h | 57 - libgit2/include/git2/sys/transport.h | 381 --- libgit2/include/git2/tag.h | 352 -- libgit2/include/git2/trace.h | 67 - libgit2/include/git2/transaction.h | 111 - libgit2/include/git2/transport.h | 342 -- libgit2/include/git2/tree.h | 415 --- libgit2/include/git2/types.h | 436 --- libgit2/include/git2/version.h | 18 - libgit2/lib/Win32/git2.dll | Bin 829952 -> 0 bytes libgit2/lib/Win32/git2.lib | Bin 172718 -> 0 bytes libgit2/lib/x64/git2.dll | Bin 1099776 -> 0 bytes libgit2/lib/x64/git2.lib | Bin 169022 -> 0 bytes CmdLine.cpp => src/CmdLine.cpp | 10 +- CmdLine.hpp => src/CmdLine.hpp | 0 GitAutoComp.cpp => src/GitAutocomplete.cpp | 16 +- GitAutoComp.hpp => src/GitAutocomplete.hpp | 0 GitAutoComp.rc => src/GitAutocomplete.rc | 2 +- GitAutoComp.sln => src/GitAutocomplete.sln | 14 +- src/GitAutocomplete.vcxproj | 60 + src/GitAutocomplete.vcxproj.filters | 4 + .../GitAutocompleteLng.hpp | 0 .../GitAutocompleteW.vc.def | 2 - src/GitAutocomplete_en.hlf | 53 + .../GitAutocomplete_en.lng | 2 +- src/GitAutocomplete_ru.hlf | 53 + .../GitAutocomplete_ru.lng | 2 +- guid.hpp => src/Guid.hpp | 5 +- Logic.cpp => src/Logic.cpp | 50 +- Logic.hpp => src/Logic.hpp | 1 + src/RefsDialog.cpp | 157 + src/RefsDialog.h | 6 + Trie.cpp => src/Trie.cpp | 0 Trie.hpp => src/Trie.hpp | 0 Utils.cpp => src/Utils.cpp | 2 +- Utils.hpp => src/Utils.hpp | 0 version.hpp => src/Version.hpp | 8 +- 129 files changed, 5688 insertions(+), 19327 deletions(-) create mode 100644 .gitignore create mode 100644 .gitmodules delete mode 100644 GitAutoComp.vcxproj delete mode 100644 GitAutoComp.vcxproj.filters delete mode 100644 GitAutoComp_en.hlf delete mode 100644 GitAutoComp_ru.hlf create mode 100644 LICENSE create mode 100644 README.md delete mode 100644 RefsDialog.cpp delete mode 100644 RefsDialog.h create mode 100644 SampleMacro.lua create mode 100644 build.bat create mode 100644 demo.gif create mode 100644 far3sdk/README create mode 100644 far3sdk/common.filters create mode 100644 far3sdk/common.props create mode 100644 far3sdk/include/DlgBuilder.hpp create mode 100644 far3sdk/include/PluginSettings.hpp create mode 100644 far3sdk/include/SimpleString.hpp create mode 100644 far3sdk/include/farcolor.hpp create mode 100644 far3sdk/include/farversion.hpp create mode 100644 far3sdk/include/plugin.hpp create mode 100644 far3sdk/vc_crt_fix/vc_crt_fix.asm create mode 100644 far3sdk/vc_crt_fix/vc_crt_fix_impl.cpp create mode 100644 far3sdk/vc_crt_fix/vc_crt_fix_ulink.cpp create mode 160000 libgit2 delete mode 100644 libgit2/include/git2.h delete mode 100644 libgit2/include/git2/annotated_commit.h delete mode 100644 libgit2/include/git2/attr.h delete mode 100644 libgit2/include/git2/blame.h delete mode 100644 libgit2/include/git2/blob.h delete mode 100644 libgit2/include/git2/branch.h delete mode 100644 libgit2/include/git2/buffer.h delete mode 100644 libgit2/include/git2/checkout.h delete mode 100644 libgit2/include/git2/cherrypick.h delete mode 100644 libgit2/include/git2/clone.h delete mode 100644 libgit2/include/git2/commit.h delete mode 100644 libgit2/include/git2/common.h delete mode 100644 libgit2/include/git2/config.h delete mode 100644 libgit2/include/git2/cred_helpers.h delete mode 100644 libgit2/include/git2/describe.h delete mode 100644 libgit2/include/git2/diff.h delete mode 100644 libgit2/include/git2/errors.h delete mode 100644 libgit2/include/git2/filter.h delete mode 100644 libgit2/include/git2/global.h delete mode 100644 libgit2/include/git2/graph.h delete mode 100644 libgit2/include/git2/ignore.h delete mode 100644 libgit2/include/git2/index.h delete mode 100644 libgit2/include/git2/indexer.h delete mode 100644 libgit2/include/git2/inttypes.h delete mode 100644 libgit2/include/git2/merge.h delete mode 100644 libgit2/include/git2/message.h delete mode 100644 libgit2/include/git2/net.h delete mode 100644 libgit2/include/git2/notes.h delete mode 100644 libgit2/include/git2/object.h delete mode 100644 libgit2/include/git2/odb.h delete mode 100644 libgit2/include/git2/odb_backend.h delete mode 100644 libgit2/include/git2/oid.h delete mode 100644 libgit2/include/git2/oidarray.h delete mode 100644 libgit2/include/git2/pack.h delete mode 100644 libgit2/include/git2/patch.h delete mode 100644 libgit2/include/git2/pathspec.h delete mode 100644 libgit2/include/git2/rebase.h delete mode 100644 libgit2/include/git2/refdb.h delete mode 100644 libgit2/include/git2/reflog.h delete mode 100644 libgit2/include/git2/refs.h delete mode 100644 libgit2/include/git2/refspec.h delete mode 100644 libgit2/include/git2/remote.h delete mode 100644 libgit2/include/git2/repository.h delete mode 100644 libgit2/include/git2/reset.h delete mode 100644 libgit2/include/git2/revert.h delete mode 100644 libgit2/include/git2/revparse.h delete mode 100644 libgit2/include/git2/revwalk.h delete mode 100644 libgit2/include/git2/signature.h delete mode 100644 libgit2/include/git2/stash.h delete mode 100644 libgit2/include/git2/status.h delete mode 100644 libgit2/include/git2/stdint.h delete mode 100644 libgit2/include/git2/strarray.h delete mode 100644 libgit2/include/git2/submodule.h delete mode 100644 libgit2/include/git2/sys/commit.h delete mode 100644 libgit2/include/git2/sys/config.h delete mode 100644 libgit2/include/git2/sys/diff.h delete mode 100644 libgit2/include/git2/sys/filter.h delete mode 100644 libgit2/include/git2/sys/hashsig.h delete mode 100644 libgit2/include/git2/sys/index.h delete mode 100644 libgit2/include/git2/sys/mempack.h delete mode 100644 libgit2/include/git2/sys/odb_backend.h delete mode 100644 libgit2/include/git2/sys/openssl.h delete mode 100644 libgit2/include/git2/sys/refdb_backend.h delete mode 100644 libgit2/include/git2/sys/reflog.h delete mode 100644 libgit2/include/git2/sys/refs.h delete mode 100644 libgit2/include/git2/sys/repository.h delete mode 100644 libgit2/include/git2/sys/stream.h delete mode 100644 libgit2/include/git2/sys/transport.h delete mode 100644 libgit2/include/git2/tag.h delete mode 100644 libgit2/include/git2/trace.h delete mode 100644 libgit2/include/git2/transaction.h delete mode 100644 libgit2/include/git2/transport.h delete mode 100644 libgit2/include/git2/tree.h delete mode 100644 libgit2/include/git2/types.h delete mode 100644 libgit2/include/git2/version.h delete mode 100644 libgit2/lib/Win32/git2.dll delete mode 100644 libgit2/lib/Win32/git2.lib delete mode 100644 libgit2/lib/x64/git2.dll delete mode 100644 libgit2/lib/x64/git2.lib rename CmdLine.cpp => src/CmdLine.cpp (91%) rename CmdLine.hpp => src/CmdLine.hpp (100%) rename GitAutoComp.cpp => src/GitAutocomplete.cpp (90%) rename GitAutoComp.hpp => src/GitAutocomplete.hpp (100%) rename GitAutoComp.rc => src/GitAutocomplete.rc (94%) rename GitAutoComp.sln => src/GitAutocomplete.sln (61%) create mode 100644 src/GitAutocomplete.vcxproj create mode 100644 src/GitAutocomplete.vcxproj.filters rename GitAutoCompLng.hpp => src/GitAutocompleteLng.hpp (100%) rename GitAutoCompW.vc.def => src/GitAutocompleteW.vc.def (54%) create mode 100644 src/GitAutocomplete_en.hlf rename GitAutoComp_en.lng => src/GitAutocomplete_en.lng (82%) create mode 100644 src/GitAutocomplete_ru.hlf rename GitAutoComp_ru.lng => src/GitAutocomplete_ru.lng (84%) rename guid.hpp => src/Guid.hpp (63%) rename Logic.cpp => src/Logic.cpp (72%) rename Logic.hpp => src/Logic.hpp (87%) create mode 100644 src/RefsDialog.cpp create mode 100644 src/RefsDialog.h rename Trie.cpp => src/Trie.cpp (100%) rename Trie.hpp => src/Trie.hpp (100%) rename Utils.cpp => src/Utils.cpp (94%) rename Utils.hpp => src/Utils.hpp (100%) rename version.hpp => src/Version.hpp (70%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4b2d87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/dist/ +/build/ + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3a95da8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libgit2"] + path = libgit2 + url = git@github.com:libgit2/libgit2.git diff --git a/GitAutoComp.vcxproj b/GitAutoComp.vcxproj deleted file mode 100644 index 026af57..0000000 --- a/GitAutoComp.vcxproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - gitautocomp - {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1} - DynamicLibrary - plugins\$(ProjectName) - - - - - - - - - - - - - - - - - - - - $(ProjectDir)libgit2\include - - - $(ProjectDir)libgit2\lib\$(Platform) - git2.lib - - - - - - - - - - - - - $(ProjectDir)libgit2\include - - - $(ProjectDir)libgit2\lib\$(Platform) - git2.lib - - - - - - - - - - - - - $(ProjectDir)libgit2\include - - - $(ProjectDir)libgit2\lib\$(Platform) - git2.lib - - - - - - - - - - - - - $(ProjectDir)libgit2\include - - - $(ProjectDir)libgit2\lib\$(Platform) - git2.lib - - - - - - - - - - - - - - - - Copy libgit2 - xcopy /y "$(ProjectDir)libgit2\lib\$(Platform)\git2.dll" "$(OutDir)" - - - diff --git a/GitAutoComp.vcxproj.filters b/GitAutoComp.vcxproj.filters deleted file mode 100644 index 48cc60b..0000000 --- a/GitAutoComp.vcxproj.filters +++ /dev/null @@ -1,541 +0,0 @@ - - - - - - Source Files - - - - - - Source Files - - - - - - Source Files - - - - - - Source Files - - - - - - - Source Files - - - - - - - Source Files - - - - - - - Source Files - - - - - - - Source Files - - - - - - - Source Files - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - Source Files - - - - - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - Header Files - - - - - - - Header Files - - - - - - - Header Files - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Header Files - - - - - - - - - Header Files - - - - - - - - - Header Files - - - - - - - - - Header Files - - - - - - - - - Header Files - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - Header Files - - - - - - - - - - - - Source Files - - - - - Language Files - - - Help Files - - - \ No newline at end of file diff --git a/GitAutoComp_en.hlf b/GitAutoComp_en.hlf deleted file mode 100644 index 15d5ac6..0000000 --- a/GitAutoComp_en.hlf +++ /dev/null @@ -1,48 +0,0 @@ -.Language=English,English (English) -.PluginContents=GitAutoComp - -@Contents -$^#Git AutoComplete# - This plugin completes names of Git branches and tags in the command line. - - Let's assume that you have branches: - - #master# - #foo/bar# - #foo/baz# - #origin/foo/qux# - - The plugin completes: - - #m# -> #master# - #fo# -> #foo/# - - And even this (punctuation and upper case are treated like anchors): - - #f/q# -> #foo/qux# - - If there is no more single completion (e.g. #foo/#) the plugin shows dialog with the list of all possible references. - - See also: ~Configuring~@Config@ the plugin - - -@Config -$^#Configuring Git AutoComplete# - There are following options: - - #Show dialog# Show dialog with the list of all possible references. - #with references# Otherwise they are suggested right in the command line. - - #Complete remote references# Complete remote references (e.g. "origin/foo") - #by their short name# by their short name without remote name prefix (e.g. "foo"). - - Note that you can override these options for the single plugin invocation via macro command: - - #Plugin.Call("89DF1D5B-F5BB-415B-993D-D34C5FFE049F", "Option 1", "Option 2", ...)# - - Option names (enabled/disabled variant): - - #SuggestionsDialog# / #InlineSuggestions# - #ShortRemoteName# / #FullRemoteName# - - See also: ~Contents~@Contents@ diff --git a/GitAutoComp_ru.hlf b/GitAutoComp_ru.hlf deleted file mode 100644 index d5e1738..0000000 --- a/GitAutoComp_ru.hlf +++ /dev/null @@ -1,48 +0,0 @@ -.Language=Russian,Russian (Русский) -.PluginContents=GitAutoComp - -@Contents -$^#Git Авто.Доп.# - Этот плагин дополняет имена Git веток и тегов в командной строке. - - Предположим у вас есть ветки: - - #master# - #foo/bar# - #foo/baz# - #origin/foo/qux# - - Плагин дополнит: - - #m# -> #master# - #fo# -> #foo/# - - И даже так (пунктуация и прописные буквы играют роль якорей): - - #f/q# -> #foo/qux# - - Если не существует однозначного дополнения (например, #foo/#), то плагин показывает диалог со списком всех возможных ссылок. - - См. также: ~Настройка плагина~@Config@ - - -@Config -$^#Настройка Git Авто.Доп.# - Присутствуют следующие опции: - - #Показывать диалог# Показывать диалог со списком всех возможных ссылок. - #со ссылками# Иначе они подставляются прямо в командной строке. - - #Дополнять имена удаленных ссылок# Дополнять имена удаленных ссылок (например, "origin/foo") - #по их короткому имени# по их короткому имени без имени удаленного сервера (например, "foo"). - - Эти опции можно переопределять для одиночного запуска плагина с помощью макрокоманды: - - #Plugin.Call("89DF1D5B-F5BB-415B-993D-D34C5FFE049F", "Опция 1", "Опция 2", ...)# - - Имена опций (включенный/выключенный вариант): - - #SuggestionsDialog# / #InlineSuggestions# - #ShortRemoteName# / #FullRemoteName# - - См. также: ~Содержание~@Contents@ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..735f285 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2016 Excelsior LLC, http://www.excelsior-usa.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d525d2a --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +About Git Autocomplete +====================== + +This [Far Manager](http://farmanager.com/) plugin enables you to quckly substitute names of Git references (branches and tags) into the command line using autocompletion and selection: + +![Demo](demo.gif) + +For plugin settings, see configuration (`F9` - `Options` - `Plugins configuration` - `Git Autocomplete`) and help (`F1`). + +Download and install +==================== + +To install the plugin, download [the latest distribution](https://github.com/excelsior-oss/far-git-autocomplete/releases/latest) and unzip it into the `%FARPROFILE%` directory. + +This shall place: + +* the plugin itself - in the `Plugins` directory (both x86 and x64 versions), +* a sample macro command - in the `Macros\scripts` directory. + +A macro command is required for invoking the plugin with a hotkey. The default one is `Ctrl+G`. +You can create additional macro commands to invoke the plugin with different settings; see help for details. + +Building from source +==================== + +To build the plugin and dependent [libgit2 library](https://libgit2.github.com/), you will need: + +* Git +* CMake +* Microsoft Visual Studio 2015 or higher +* zip + +Download the sources: + + git clone https://github.com/excelsior-oss/far-git-autocomplete.git --recursive + +And build everything using "MSBuild Command Prompt for VS2015": + + cd far-git-autocomplete + build.bat + +The plugin will be in the `dist` directory. + +Credits +======= + +The plugin was originally developed by [Vladimir Parfinenko](https://github.com/cypok) and [Ivan Kireev](https://github.com/ivan2804) during the fifth annual [Excelsior Hack Day](https://www.excelsior-usa.com/blog/news/hack-day-i/). + +Released under the MIT/X11 license, see LICENSE. + +Copyright © 2016 [Excelsior LLC](https://www.excelsior-usa.com) diff --git a/RefsDialog.cpp b/RefsDialog.cpp deleted file mode 100644 index 08a559e..0000000 --- a/RefsDialog.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "RefsDialog.h" - -#include -#include - -#include -#include -#include "GitAutoComp.hpp" -#include "guid.hpp" -#include "GitAutoCompLng.hpp" -#include "Utils.hpp" - -using namespace std; - -string ShowRefsDialog(vector &suitableRefs) { - assert(!suitableRefs.empty()); - - size_t refsCount = suitableRefs.size(); - wchar_t **list = new wchar_t*[refsCount]; - for (size_t i = 0; i < refsCount; ++i) { - wstring wstr = mb2w(suitableRefs[i]); - list[i] = wcsdup(wstr.c_str()); - } - int selected = 0; - - SMALL_RECT farRect; - Info.AdvControl(&MainGuid, ACTL_GETFARRECT, 0, &farRect); - *logFile << "Far rect (l, t, r, b) = (" << farRect.Left << ", " << farRect.Top << ", " << farRect.Right << ", " << farRect.Bottom << ")" << endl; - int listBoxMaxWidth = (farRect.Right - farRect.Left + 1) - 18; - int listBoxMaxHeight = (farRect.Bottom - farRect.Top + 1) - 10; - - int maxRefLength = (int)(*max_element(suitableRefs.begin(), suitableRefs.end(), [](string x, string y) -> bool { - return x.length() < y.length(); - })).length(); - - - PluginDialogBuilder Builder(Info, MainGuid, DialogGuid, MTitle, L"Contents", nullptr, nullptr, FDLG_KEEPCONSOLETITLE); - Builder.AddListBox(&selected, - min(listBoxMaxWidth, maxRefLength + 3), min(listBoxMaxHeight, (int)refsCount - 1), - (const wchar_t**)list, refsCount, DIF_LISTNOBOX); - - string result; - if (Builder.ShowDialog()) { - *logFile << "Dialog succeeded. Selected = " << selected << endl; - assert(0 <= selected && selected < refsCount); - result = w2mb(wstring(list[selected])); - } else { - *logFile << "Dialog failed." << endl; - result = ""; - } - - for (size_t i = 0; i < refsCount; ++i) { - free(list[i]); - } - delete[] list; - - return result; -} \ No newline at end of file diff --git a/RefsDialog.h b/RefsDialog.h deleted file mode 100644 index 26ff224..0000000 --- a/RefsDialog.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include -#include - -std::string ShowRefsDialog(std::vector &suitableRefs); \ No newline at end of file diff --git a/SampleMacro.lua b/SampleMacro.lua new file mode 100644 index 0000000..8be2849 --- /dev/null +++ b/SampleMacro.lua @@ -0,0 +1,6 @@ +Macro { + description="Git Autocomplete"; + area="Shell"; key="CtrlG"; + flags=""; + code="Plugin.Call(\"89DF1D5B-F5BB-415B-993D-D34C5FFE049F\")"; +} diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..b36a50e --- /dev/null +++ b/build.bat @@ -0,0 +1,65 @@ +REM Building libgit2 + +pushd libgit2 + +mkdir build_32 +pushd build_32 + +cmake -DBUILD_CLAR=OFF -DLIBGIT2_FILENAME=git2_32 -G "Visual Studio 14" .. +cmake --build . --config Release +cmake --build . --config Debug + +popd + +mkdir build_64 +pushd build_64 + +cmake -DBUILD_CLAR=OFF -DLIBGIT2_FILENAME=git2_64 -G "Visual Studio 14 Win64" .. +cmake --build . --config Release +cmake --build . --config Debug + +popd + +popd + + +REM Building plugin + +pushd src + +msbuild /p:Configuration=Debug /p:Platform=Win32 +msbuild /p:Configuration=Release /p:Platform=Win32 +msbuild /p:Configuration=Debug /p:Platform=x64 +msbuild /p:Configuration=Release /p:Platform=x64 + +popd + + +REM Building distribs + +mkdir dist +pushd dist + +call :build_dist 32 ..\build\product\Release.Win32.v14.0 +call :build_dist 64 ..\build\product\Release.x64.v14.0 + +pushd 32 && zip -r ..\GitAutocomplete-32.zip . && popd +pushd 64 && zip -r ..\GitAutocomplete-64.zip . && popd +pushd universal && zip -r ..\GitAutocomplete-universal.zip . && popd + +popd + +goto :EOF + +:build_dist +set BITNESS=%1 +set BUILD_DIR=%2 + +xcopy /i %BUILD_DIR%\plugins\GitAutocomplete %BITNESS%\Plugins\GitAutocomplete +del %BITNESS%\Plugins\GitAutocomplete\*.map +del %BITNESS%\Plugins\GitAutocomplete\*.pdb +xcopy ..\SampleMacro.lua %BITNESS%\Macros\scripts\ +ren %BITNESS%\Macros\scripts\SampleMacro.lua GitAutocomplete.lua +xcopy /i /e /y %BITNESS% universal + +goto :EOF diff --git a/demo.gif b/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..09dfac2e85f5e58b8907468cab0c3be17505a9ff GIT binary patch literal 48879 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\plugins\common\unicode + +* vc_crt_fix directory contains files \plugins\common\vc_crt_fix* + +* common.filters and common.props are copied from \_build\vc\config + with our patches + + +These sources are distributed under the following license: + +Copyright (c) 1996 Eugene Roshal +Copyright (c) 2000 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +EXCEPTION: +Far Manager plugins that use only the following header files from this +distribution (none or any): farcolor.hpp, plugin.hpp, farcolorW.pas and +pluginW.pas; can be distributed under any other possible license with no +implications from the above license on them. diff --git a/far3sdk/common.filters b/far3sdk/common.filters new file mode 100644 index 0000000..eafafd5 --- /dev/null +++ b/far3sdk/common.filters @@ -0,0 +1,47 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {0329377-fe44-4d7b-833d-cbd2efecd35a} + lng + + + {9b8726bd-d9c1-416c-8039-5e686cf23409} + hlf + + + + + + Source Files + + + Header Files + + + Resource Files + + + Language Files + + + Help Files + + + Source Files + + + + \ No newline at end of file diff --git a/far3sdk/common.props b/far3sdk/common.props new file mode 100644 index 0000000..7238ca8 --- /dev/null +++ b/far3sdk/common.props @@ -0,0 +1,160 @@ + + + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + $(Configuration).$(Platform).v$(VisualStudioVersion)\$(OutDir) + $(ProjectDir)..\build\ + + + $(ProjectName) + Win32Proj + Unicode + v100 + v110 + v120 + v140 + $(OutputsRoot)product\$(CurPath)\ + $(OutputsRoot)intermediate\$(CurPath)\ + false + false + false + + + + + + + + $(ProjectDir)..\far3sdk\include;%(AdditionalIncludeDirectories) + NOMINMAX;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions) + Level3 + /J + true + + + + + /Zc:threadSafeInit- %(AdditionalOptions) + + + kernel32.lib;user32.lib;gdi32.lib;advapi32.lib;shell32.lib;ole32.lib;uuid.lib;mpr.lib;netapi32.lib;version.lib;oleaut32.lib;wbemuuid.lib;Rpcrt4.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + true + Windows + + $(ProjectName)W.vc.def + $(IntDir)$(ProjectName).lib + + + $(ProjectDir)..\far3sdk\include;%(AdditionalIncludeDirectories) + + + + + + Disabled + false + DEBUG;%(PreprocessorDefinitions) + true + MultiThreadedDebug + ProgramDatabase + + + true + + + + + + + + MaxSpeed + true + true + NDEBUG;%(PreprocessorDefinitions) + false + MultiThreaded + false + true + true + + + UseLinkTimeCodeGeneration + + + + + + NoExtensions + + + + + Fixing subsystem version + editbin /nologo /subsystem:console,5.0 /osversion:5.0 $(OutDir)$(TargetName)$(TargetExt) > nul + + + + + + + + + + Fixing subsystem version + editbin /nologo /subsystem:console,5.2 /osversion:5.2 $(OutDir)$(TargetName)$(TargetExt) > nul + + + + + + + + %(Identity) + true + + + true + + + + + + + %(Identity) + copy %(Identity) $(OutDir) > nul + $(OutDir)%(Identity);%(Outputs) + + + %(Identity) + copy %(Identity) $(OutDir) > nul + $(OutDir)%(Identity);%(Outputs) + + + %(Identity) + copy %(Identity) $(OutDir) > nul + $(OutDir)%(Identity);%(Outputs) + + + + + diff --git a/far3sdk/include/DlgBuilder.hpp b/far3sdk/include/DlgBuilder.hpp new file mode 100644 index 0000000..90f349e --- /dev/null +++ b/far3sdk/include/DlgBuilder.hpp @@ -0,0 +1,1071 @@ +#ifndef DLGBUILDER_HPP_E8B6F5CA_37A9_403A_A3F0_9ED7271B2BA7 +#define DLGBUILDER_HPP_E8B6F5CA_37A9_403A_A3F0_9ED7271B2BA7 +#pragma once + +/* +DlgBuilder.hpp + +Dynamic construction of dialogs for FAR Manager 3.0 build 4765 +*/ +/* +Copyright © 2009 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef __cplusplus +#error C++ only +#endif + +// Элемент выпадающего списка в диалоге. +struct DialogBuilderListItem +{ + // Строчка из LNG-файла, которая будет показана в диалоге. + int MessageId; + + // Значение, которое будет записано в поле Value при выборе этой строчки. + int ItemValue; +}; + +template +struct DialogItemBinding +{ + int BeforeLabelID; + int AfterLabelID; + + DialogItemBinding() + : BeforeLabelID(-1), AfterLabelID(-1) + { + } + + virtual ~DialogItemBinding() + { + }; + + virtual void SaveValue(T *Item, int RadioGroupIndex) + { + } +}; + +template +struct CheckBoxBinding: public DialogItemBinding +{ + private: + BOOL *Value; + int Mask; + + public: + CheckBoxBinding(int *aValue, int aMask) : Value(aValue), Mask(aMask) { } + + virtual void SaveValue(T *Item, int RadioGroupIndex) override + { + if (!Mask) + { + *Value = Item->Selected; + } + else + { + if (Item->Selected) + *Value |= Mask; + else + *Value &= ~Mask; + } + } +}; + +template +struct RadioButtonBinding: public DialogItemBinding +{ + private: + int *Value; + + public: + RadioButtonBinding(int *aValue) : Value(aValue) { } + + virtual void SaveValue(T *Item, int RadioGroupIndex) override + { + if (Item->Selected) + *Value = RadioGroupIndex; + } +}; + +/* +Класс для динамического построения диалогов. Автоматически вычисляет положение и размер +для добавляемых контролов, а также размер самого диалога. Автоматически записывает выбранные +значения в указанное место после закрытия диалога по OK. + +По умолчанию каждый контрол размещается в новой строке диалога. Ширина для текстовых строк, +checkbox и radio button вычисляется автоматически, для других элементов передаётся явно. +Есть также возможность добавить статический текст слева или справа от контрола, при помощи +методов AddTextBefore и AddTextAfter. + +Поддерживается также возможность расположения контролов в две колонки. Используется следующим +образом: +- StartColumns() +- добавляются контролы для первой колонки +- ColumnBreak() +- добавляются контролы для второй колонки +- EndColumns() + +Поддерживается также возможность расположения контролов внутри бокса. Используется следующим +образом: +- StartSingleBox() +- добавляются контролы +- EndSingleBox() + +Базовая версия класса используется как внутри кода Far, так и в плагинах. +*/ + +template +class DialogBuilderBase +{ + protected: + T *m_DialogItems; + DialogItemBinding **m_Bindings; + int m_DialogItemsCount; + int m_DialogItemsAllocated; + int m_NextY; + int m_Indent; + int m_SingleBoxIndex; + int m_FirstButtonID; + int m_CancelButtonID; + int m_ColumnStartIndex; + int m_ColumnBreakIndex; + int m_ColumnStartY; + int m_ColumnEndY; + intptr_t m_ColumnMinWidth; + + static const int SECOND_COLUMN = -2; + + void ReallocDialogItems() + { + // реаллокация инвалидирует указатели на DialogItemEx, возвращённые из + // AddDialogItem и аналогичных методов, поэтому размер массива подбираем такой, + // чтобы все нормальные диалоги помещались без реаллокации + // TODO хорошо бы, чтобы они вообще не инвалидировались + m_DialogItemsAllocated += 64; + if (!m_DialogItems) + { + m_DialogItems = new T[m_DialogItemsAllocated]; + m_Bindings = new DialogItemBinding * [m_DialogItemsAllocated]; + } + else + { + T *NewDialogItems = new T[m_DialogItemsAllocated]; + DialogItemBinding **NewBindings = new DialogItemBinding * [m_DialogItemsAllocated]; + for(int i=0; iType = Type; + m_Bindings [Index] = nullptr; + return Item; + } + + void SetNextY(T *Item) + { + Item->X1 = 5 + m_Indent; + Item->Y1 = Item->Y2 = m_NextY++; + } + + intptr_t ItemWidth(const T &Item) + { + switch(Item.Type) + { + case DI_TEXT: + return TextWidth(Item); + + case DI_CHECKBOX: + case DI_RADIOBUTTON: + case DI_BUTTON: + return TextWidth(Item) + 4; + + case DI_EDIT: + case DI_FIXEDIT: + case DI_COMBOBOX: + case DI_LISTBOX: + case DI_PSWEDIT: + { + intptr_t Width = Item.X2 - Item.X1 + 1; + // стрелка history занимает дополнительное место, но раньше она рисовалась поверх рамки??? + if (Item.Flags & DIF_HISTORY) + Width++; + return Width; + } + + default: + break; + } + return 0; + } + + void AddBorder(const wchar_t *TitleText) + { + T *Title = AddDialogItem(DI_DOUBLEBOX, TitleText); + Title->X1 = 3; + Title->Y1 = 1; + } + + void UpdateBorderSize() + { + T *Title = &m_DialogItems[0]; + intptr_t MaxWidth = MaxTextWidth(); + intptr_t MaxHeight = 0; + Title->X2 = Title->X1 + MaxWidth + 3; + + for (int i=1; iX2; + } + else if (m_DialogItems[i].Type == DI_TEXT && (m_DialogItems[i].Flags & DIF_CENTERTEXT)) + {//BUGBUG: two columns items are not supported + m_DialogItems[i].X2 = m_DialogItems[i].X1 + MaxWidth - 1; + } + + if (m_DialogItems[i].Y2 > MaxHeight) + { + MaxHeight = m_DialogItems[i].Y2; + } + } + + Title->X2 += m_Indent; + Title->Y2 = MaxHeight + 1; + m_Indent = 0; + } + + intptr_t MaxTextWidth() + { + intptr_t MaxWidth = 0; + for(int i=1; i *Binding) + { + m_Bindings [m_DialogItemsCount-1] = Binding; + } + + int GetItemID(T *Item) const + { + int Index = static_cast(Item - m_DialogItems); + if (Index >= 0 && Index < m_DialogItemsCount) + return Index; + return -1; + } + + DialogItemBinding *FindBinding(T *Item) + { + int Index = static_cast(Item - m_DialogItems); + if (Index >= 0 && Index < m_DialogItemsCount) + return m_Bindings [Index]; + return nullptr; + } + + void SaveValues() + { + int RadioGroupIndex = 0; + for(int i=0; iSaveValue(&m_DialogItems [i], RadioGroupIndex); + } + } + + virtual const wchar_t *GetLangString(int MessageID) + { + return nullptr; + } + + virtual intptr_t DoShowDialog() + { + return -1; + } + + virtual DialogItemBinding *CreateCheckBoxBinding(int *Value, int Mask) + { + return nullptr; + } + + virtual DialogItemBinding *CreateRadioButtonBinding(int *Value) + { + return nullptr; + } + + DialogBuilderBase() + : m_DialogItems(nullptr), m_Bindings(nullptr), m_DialogItemsCount(0), m_DialogItemsAllocated(0), m_NextY(2), m_Indent(0), m_SingleBoxIndex(-1), + m_FirstButtonID(-1), m_CancelButtonID(-1), + m_ColumnStartIndex(-1), m_ColumnBreakIndex(-1), m_ColumnStartY(-1), m_ColumnEndY(-1), m_ColumnMinWidth(0) + { + } + + virtual ~DialogBuilderBase() + { + for(int i=0; iFlags |= DIF_3STATE; + SetNextY(Item); + Item->X2 = Item->X1 + ItemWidth(*Item); + if (!Mask) + Item->Selected = *Value; + else + Item->Selected = (*Value & Mask) != 0; + SetLastItemBinding(CreateCheckBoxBinding(Value, Mask)); + return Item; + } + + // Добавляет группу радиокнопок. + void AddRadioButtons(int *Value, int OptionCount, const int MessageIDs[], bool FocusOnSelected=false) + { + for(int i=0; iX2 = Item->X1 + ItemWidth(*Item); + if (!i) + Item->Flags |= DIF_GROUP; + if (*Value == i) + { + Item->Selected = TRUE; + if (FocusOnSelected) + Item->Flags |= DIF_FOCUS; + } + SetLastItemBinding(CreateRadioButtonBinding(Value)); + } + } + + // Добавляет поле типа DI_FIXEDIT для редактирования указанного числового значения. + virtual T *AddIntEditField(int *Value, int Width) + { + return nullptr; + } + + virtual T *AddUIntEditField(unsigned int *Value, int Width) + { + return nullptr; + } + + // Добавляет указанную текстовую строку слева от элемента RelativeTo. + T *AddTextBefore(T *RelativeTo, int LabelId) + { + T *Item = AddDialogItem(DI_TEXT, GetLangString(LabelId)); + Item->Y1 = Item->Y2 = RelativeTo->Y1; + Item->X1 = 5 + m_Indent; + Item->X2 = Item->X1 + ItemWidth(*Item) - 1; + + intptr_t RelativeToWidth = RelativeTo->X2 - RelativeTo->X1; + RelativeTo->X1 = Item->X2 + 2; + RelativeTo->X2 = RelativeTo->X1 + RelativeToWidth; + + DialogItemBinding *Binding = FindBinding(RelativeTo); + if (Binding) + Binding->BeforeLabelID = GetItemID(Item); + + return Item; + } + + // Добавляет указанную текстовую строку справа от элемента RelativeTo. + T *AddTextAfter(T *RelativeTo, const wchar_t* Label, int skip=1) + { + T *Item = AddDialogItem(DI_TEXT, Label); + Item->Y1 = Item->Y2 = RelativeTo->Y1; + Item->X1 = RelativeTo->X1 + ItemWidth(*RelativeTo) + skip; + + DialogItemBinding *Binding = FindBinding(RelativeTo); + if (Binding) + Binding->AfterLabelID = GetItemID(Item); + + return Item; + } + + T *AddTextAfter(T *RelativeTo, int LabelId, int skip=1) + { + return AddTextAfter(RelativeTo, GetLangString(LabelId), skip); + } + + // Добавляет кнопку справа от элемента RelativeTo. + T *AddButtonAfter(T *RelativeTo, int LabelId) + { + T *Item = AddDialogItem(DI_BUTTON, GetLangString(LabelId)); + Item->Y1 = Item->Y2 = RelativeTo->Y1; + Item->X1 = RelativeTo->X1 + ItemWidth(*RelativeTo) - 1 + 2; + + DialogItemBinding *Binding = FindBinding(RelativeTo); + if (Binding) + Binding->AfterLabelID = GetItemID(Item); + + return Item; + } + + // Начинает располагать поля диалога в две колонки. + void StartColumns() + { + m_ColumnStartIndex = m_DialogItemsCount; + m_ColumnStartY = m_NextY; + } + + // Завершает колонку полей в диалоге и переходит к следующей колонке. + void ColumnBreak() + { + m_ColumnBreakIndex = m_DialogItemsCount; + m_ColumnEndY = m_NextY; + m_NextY = m_ColumnStartY; + } + + // Завершает расположение полей диалога в две колонки. + void EndColumns() + { + for(int i=m_ColumnStartIndex; i m_ColumnMinWidth) + m_ColumnMinWidth = Width; + if (i >= m_ColumnBreakIndex) + { + m_DialogItems [i].X1 = SECOND_COLUMN; + m_DialogItems [i].X2 = SECOND_COLUMN + Width; + } + } + + m_ColumnStartIndex = -1; + m_ColumnBreakIndex = -1; + if (m_NextY < m_ColumnEndY) + { + m_NextY = m_ColumnEndY; + } + } + + // Начинает располагать поля диалога внутри single box + void StartSingleBox(int MessageId=-1, bool LeftAlign=false) + { + T *SingleBox = AddDialogItem(DI_SINGLEBOX, MessageId == -1 ? L"" : GetLangString(MessageId)); + SingleBox->Flags = LeftAlign ? DIF_LEFTTEXT : DIF_NONE; + SingleBox->X1 = 5; + SingleBox->Y1 = m_NextY++; + m_Indent = 2; + m_SingleBoxIndex = m_DialogItemsCount - 1; + } + + // Завершает расположение полей диалога внутри single box + void EndSingleBox() + { + if (m_SingleBoxIndex != -1) + { + m_DialogItems[m_SingleBoxIndex].Y2 = m_NextY++; + m_Indent = 0; + m_SingleBoxIndex = -1; + } + } + + // Добавляет пустую строку. + void AddEmptyLine() + { + m_NextY++; + } + + // Добавляет сепаратор. + void AddSeparator(int MessageId=-1) + { + return AddSeparator(MessageId == -1 ? L"" : GetLangString(MessageId)); + } + + void AddSeparator(const wchar_t* Text) + { + T *Separator = AddDialogItem(DI_TEXT, Text); + Separator->Flags = DIF_SEPARATOR; + Separator->X1 = -1; + Separator->Y1 = Separator->Y2 = m_NextY++; + } + + // Добавляет сепаратор, кнопки OK и Cancel. + void AddOKCancel(int OKMessageId, int CancelMessageId, int ExtraMessageId = -1, bool Separator=true) + { + if (Separator) + AddSeparator(); + + int MsgIDs[] = { OKMessageId, CancelMessageId, ExtraMessageId }; + int NumButtons = (ExtraMessageId != -1) ? 3 : (CancelMessageId != -1? 2 : 1); + + AddButtons(NumButtons, MsgIDs, 0, 1); + } + + // Добавляет линейку кнопок. + void AddButtons(int ButtonCount, const int* MessageIDs, int defaultButtonIndex = 0, int cancelButtonIndex = -1) + { + int LineY = m_NextY++; + T *PrevButton = nullptr; + + for (int i = 0; i < ButtonCount; i++) + { + T *NewButton = AddDialogItem(DI_BUTTON, GetLangString(MessageIDs[i])); + NewButton->Flags = DIF_CENTERGROUP; + NewButton->Y1 = NewButton->Y2 = LineY; + if (PrevButton) + { + NewButton->X1 = PrevButton->X2 + 1; + } + else + { + NewButton->X1 = 2 + m_Indent; + m_FirstButtonID = m_DialogItemsCount - 1; + } + NewButton->X2 = NewButton->X1 + ItemWidth(*NewButton); + + if (defaultButtonIndex == i) + { + NewButton->Flags |= DIF_DEFAULTBUTTON; + } + if (cancelButtonIndex == i) + m_CancelButtonID = m_DialogItemsCount - 1; + + PrevButton = NewButton; + } + } + + intptr_t ShowDialogEx() + { + UpdateBorderSize(); + UpdateSecondColumnPosition(); + intptr_t Result = DoShowDialog(); + if (Result >= 0 && Result != m_CancelButtonID) + { + SaveValues(); + } + + if (m_FirstButtonID >= 0 && Result >= m_FirstButtonID) + { + Result -= m_FirstButtonID; + } + return Result; + } + + bool ShowDialog() + { + intptr_t Result = ShowDialogEx(); + return Result >= 0 && (m_CancelButtonID < 0 || Result + m_FirstButtonID != m_CancelButtonID); + } + +}; + +class PluginDialogBuilder; + +class DialogAPIBinding: public DialogItemBinding +{ +protected: + const PluginStartupInfo &Info; + HANDLE *DialogHandle; + int ID; + + DialogAPIBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID) + : Info(aInfo), DialogHandle(aHandle), ID(aID) + { + } +}; + +class PluginCheckBoxBinding: public DialogAPIBinding +{ + int *Value; + int Mask; + +public: + PluginCheckBoxBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, int *aValue, int aMask) + : DialogAPIBinding(aInfo, aHandle, aID), + Value(aValue), Mask(aMask) + { + } + + virtual void SaveValue(FarDialogItem *Item, int RadioGroupIndex) override + { + int Selected = static_cast(Info.SendDlgMessage(*DialogHandle, DM_GETCHECK, ID, nullptr)); + if (!Mask) + { + *Value = Selected; + } + else + { + if (Selected) + *Value |= Mask; + else + *Value &= ~Mask; + } + } +}; + +class PluginRadioButtonBinding: public DialogAPIBinding +{ + private: + int *Value; + + public: + PluginRadioButtonBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, int *aValue) + : DialogAPIBinding(aInfo, aHandle, aID), + Value(aValue) + { + } + + virtual void SaveValue(FarDialogItem *Item, int RadioGroupIndex) override + { + if (Info.SendDlgMessage(*DialogHandle, DM_GETCHECK, ID, nullptr)) + *Value = RadioGroupIndex; + } +}; + +class PluginEditFieldBinding: public DialogAPIBinding +{ +private: + wchar_t *Value; + int MaxSize; + +public: + PluginEditFieldBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, wchar_t *aValue, int aMaxSize) + : DialogAPIBinding(aInfo, aHandle, aID), Value(aValue), MaxSize(aMaxSize) + { + } + + virtual void SaveValue(FarDialogItem *Item, int RadioGroupIndex) override + { + const wchar_t *DataPtr = reinterpret_cast(Info.SendDlgMessage(*DialogHandle, DM_GETCONSTTEXTPTR, ID, nullptr)); + lstrcpynW(Value, DataPtr, MaxSize); + } +}; + +class PluginIntEditFieldBinding: public DialogAPIBinding +{ +private: + int *Value; + wchar_t Buffer[32]; + wchar_t Mask[32]; + +public: + PluginIntEditFieldBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, int *aValue, int Width) + : DialogAPIBinding(aInfo, aHandle, aID), + Value(aValue) + { + memset(Buffer, 0, sizeof(Buffer)); + aInfo.FSF->sprintf(Buffer, L"%u", *aValue); + int MaskWidth = Width < 31 ? Width : 31; + for(int i=1; i(Info.SendDlgMessage(*DialogHandle, DM_GETCONSTTEXTPTR, ID, nullptr)); + *Value = Info.FSF->atoi(DataPtr); + } + + wchar_t *GetBuffer() + { + return Buffer; + } + + const wchar_t *GetMask() const + { + return Mask; + } +}; + +class PluginUIntEditFieldBinding: public DialogAPIBinding +{ +private: + unsigned int *Value; + wchar_t Buffer[32]; + wchar_t Mask[32]; + +public: + PluginUIntEditFieldBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, unsigned int *aValue, int Width) + : DialogAPIBinding(aInfo, aHandle, aID), + Value(aValue) + { + memset(Buffer, 0, sizeof(Buffer)); + aInfo.FSF->sprintf(Buffer, L"%u", *aValue); + int MaskWidth = Width < 31 ? Width : 31; + for(int i=1; i(Info.SendDlgMessage(*DialogHandle, DM_GETCONSTTEXTPTR, ID, nullptr)); + *Value = static_cast(Info.FSF->atoi64(DataPtr)); + } + + wchar_t *GetBuffer() + { + return Buffer; + } + + const wchar_t *GetMask() const + { + return Mask; + } +}; + +class PluginListControlBinding : public DialogAPIBinding +{ +private: + int *SelectedIndex; + wchar_t *TextBuf; + FarList *List; + +public: + PluginListControlBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, int *aValue, wchar_t *aText, FarList *aList) + : DialogAPIBinding(aInfo, aHandle, aID), SelectedIndex(aValue), TextBuf(aText), List(aList) + { + } + + PluginListControlBinding(const PluginStartupInfo &aInfo, HANDLE *aHandle, int aID, int *aValue, FarList *aList) + : DialogAPIBinding(aInfo, aHandle, aID), SelectedIndex(aValue), TextBuf(nullptr), List(aList) + { + } + + ~PluginListControlBinding() + { + if (List) + { + delete[] List->Items; + } + delete List; + } + + virtual void SaveValue(FarDialogItem *Item, int RadioGroupIndex) override + { + if (SelectedIndex) + { + *SelectedIndex = static_cast(Info.SendDlgMessage(*DialogHandle, DM_LISTGETCURPOS, ID, nullptr)); + } + if (TextBuf) + { + FarDialogItemData fdid = {sizeof(FarDialogItemData), 0, TextBuf}; + Info.SendDlgMessage(*DialogHandle, DM_GETTEXT, ID, &fdid); + } + } +}; + +/* +Версия класса для динамического построения диалогов, используемая в плагинах к Far. +*/ +class PluginDialogBuilder: public DialogBuilderBase +{ + protected: + const PluginStartupInfo &Info; + HANDLE DialogHandle; + const wchar_t *HelpTopic; + GUID PluginId; + GUID Id; + FARWINDOWPROC DlgProc; + void* UserParam; + FARDIALOGFLAGS Flags; + + virtual void InitDialogItem(FarDialogItem *Item, const wchar_t *Text) override + { + memset(Item, 0, sizeof(FarDialogItem)); + Item->Data = Text; + } + + virtual int TextWidth(const FarDialogItem &Item) override + { + return lstrlenW(Item.Data); + } + + virtual const wchar_t *GetLangString(int MessageID) override + { + return Info.GetMsg(&PluginId, MessageID); + } + + virtual intptr_t DoShowDialog() override + { + intptr_t Width = m_DialogItems[0].X2+4; + intptr_t Height = m_DialogItems[0].Y2+2; + DialogHandle = Info.DialogInit(&PluginId, &Id, -1, -1, Width, Height, HelpTopic, m_DialogItems, m_DialogItemsCount, 0, Flags, DlgProc, UserParam); + return Info.DialogRun(DialogHandle); + } + + virtual DialogItemBinding *CreateCheckBoxBinding(int *Value, int Mask) override + { + return new PluginCheckBoxBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, Mask); + } + + virtual DialogItemBinding *CreateRadioButtonBinding(BOOL *Value) override + { + return new PluginRadioButtonBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value); + } + + FarDialogItem *AddListControl(FARDIALOGITEMTYPES Type, int *SelectedItem, wchar_t *Text, int Width, int Height, const wchar_t* ItemsText [], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + FarDialogItem *Item = AddDialogItem(Type, Text ? Text : L""); + SetNextY(Item); + Item->X2 = Item->X1 + Width; + Item->Y2 = Item->Y2 + Height; + Item->Flags |= ItemFlags; + + m_NextY += Height; + + FarListItem *ListItems = nullptr; + if (ItemsText) + { + ListItems = new FarListItem[ItemCount]; + for(size_t i=0; i(i)) ? LIF_SELECTED : 0; + } + } + FarList *List = new FarList; + List->StructSize = sizeof(FarList); + List->Items = ListItems; + List->ItemsNumber = ListItems ? ItemCount : 0; + Item->ListItems = List; + + SetLastItemBinding(new PluginListControlBinding(Info, &DialogHandle, m_DialogItemsCount - 1, SelectedItem, Text, List)); + return Item; + } + + FarDialogItem *AddListControl(FARDIALOGITEMTYPES Type, int *SelectedItem, wchar_t *Text, int Width, int Height, const int MessageIDs [], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + const wchar_t** ItemsText = nullptr; + if (MessageIDs) + { + ItemsText = new const wchar_t*[ItemCount]; + for (size_t i = 0; i < ItemCount; i++) + { + ItemsText[i] = GetLangString(MessageIDs[i]); + } + } + + FarDialogItem* result = AddListControl(Type, SelectedItem, Text, Width, Height, ItemsText, ItemCount, ItemFlags); + + delete [] ItemsText; + + return result; + } + +public: + PluginDialogBuilder(const PluginStartupInfo &aInfo, const GUID &aPluginId, const GUID &aId, int TitleMessageID, const wchar_t *aHelpTopic, FARWINDOWPROC aDlgProc=nullptr, void* aUserParam=nullptr, FARDIALOGFLAGS aFlags = FDLG_NONE) + : Info(aInfo), DialogHandle(nullptr), HelpTopic(aHelpTopic), PluginId(aPluginId), Id(aId), DlgProc(aDlgProc), UserParam(aUserParam), Flags(aFlags) + { + AddBorder(PluginDialogBuilder::GetLangString(TitleMessageID)); + } + + PluginDialogBuilder(const PluginStartupInfo &aInfo, const GUID &aPluginId, const GUID &aId, const wchar_t *TitleMessage, const wchar_t *aHelpTopic, FARWINDOWPROC aDlgProc=nullptr, void* aUserParam=nullptr, FARDIALOGFLAGS aFlags = FDLG_NONE) + : Info(aInfo), DialogHandle(nullptr), HelpTopic(aHelpTopic), PluginId(aPluginId), Id(aId), DlgProc(aDlgProc), UserParam(aUserParam), Flags(aFlags) + { + AddBorder(TitleMessage); + } + + ~PluginDialogBuilder() + { + Info.DialogFree(DialogHandle); + } + + virtual FarDialogItem *AddIntEditField(int *Value, int Width) override + { + FarDialogItem *Item = AddDialogItem(DI_FIXEDIT, L""); + Item->Flags |= DIF_MASKEDIT; + PluginIntEditFieldBinding *Binding; + Binding = new PluginIntEditFieldBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, Width); + Item->Data = Binding->GetBuffer(); + Item->Mask = Binding->GetMask(); + SetNextY(Item); + Item->X2 = Item->X1 + Width - 1; + SetLastItemBinding(Binding); + return Item; + } + + virtual FarDialogItem *AddUIntEditField(unsigned int *Value, int Width) override + { + FarDialogItem *Item = AddDialogItem(DI_FIXEDIT, L""); + Item->Flags |= DIF_MASKEDIT; + PluginUIntEditFieldBinding *Binding; + Binding = new PluginUIntEditFieldBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, Width); + Item->Data = Binding->GetBuffer(); + Item->Mask = Binding->GetMask(); + SetNextY(Item); + Item->X2 = Item->X1 + Width - 1; + SetLastItemBinding(Binding); + return Item; + } + + FarDialogItem *AddEditField(wchar_t *Value, int MaxSize, int Width, const wchar_t *HistoryID = nullptr, bool UseLastHistory = false) + { + FarDialogItem *Item = AddDialogItem(DI_EDIT, Value); + SetNextY(Item); + Item->X2 = Item->X1 + Width - 1; + if (HistoryID) + { + Item->History = HistoryID; + Item->Flags |= DIF_HISTORY; + if (UseLastHistory) + Item->Flags |= DIF_USELASTHISTORY; + } + + SetLastItemBinding(new PluginEditFieldBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, MaxSize)); + return Item; + } + + FarDialogItem *AddPasswordField(wchar_t *Value, int MaxSize, int Width) + { + FarDialogItem *Item = AddDialogItem(DI_PSWEDIT, Value); + SetNextY(Item); + Item->X2 = Item->X1 + Width - 1; + + SetLastItemBinding(new PluginEditFieldBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, MaxSize)); + return Item; + } + + FarDialogItem *AddFixEditField(wchar_t *Value, int MaxSize, int Width, const wchar_t *Mask = nullptr) + { + FarDialogItem *Item = AddDialogItem(DI_FIXEDIT, Value); + SetNextY(Item); + Item->X2 = Item->X1 + Width - 1; + if (Mask) + { + Item->Mask = Mask; + Item->Flags |= DIF_MASKEDIT; + } + + SetLastItemBinding(new PluginEditFieldBinding(Info, &DialogHandle, m_DialogItemsCount-1, Value, MaxSize)); + return Item; + } + + FarDialogItem *AddComboBox(int *SelectedItem, wchar_t *Text, int Width, const wchar_t* ItemsText[], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + return AddListControl(DI_COMBOBOX, SelectedItem, Text, Width, 0, ItemsText, ItemCount, ItemFlags); + } + + FarDialogItem *AddComboBox(int *SelectedItem, wchar_t *Text, int Width, const int MessageIDs[], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + return AddListControl(DI_COMBOBOX, SelectedItem, Text, Width, 0, MessageIDs, ItemCount, ItemFlags); + } + + FarDialogItem *AddListBox(int *SelectedItem, int Width, int Height, const wchar_t* ItemsText[], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + return AddListControl(DI_LISTBOX, SelectedItem, nullptr, Width, Height, ItemsText, ItemCount, ItemFlags); + } + + FarDialogItem *AddListBox(int *SelectedItem, int Width, int Height, const int MessageIDs[], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags) + { + return AddListControl(DI_LISTBOX, SelectedItem, nullptr, Width, Height, MessageIDs, ItemCount, ItemFlags); + } +}; + +#endif // DLGBUILDER_HPP_E8B6F5CA_37A9_403A_A3F0_9ED7271B2BA7 diff --git a/far3sdk/include/PluginSettings.hpp b/far3sdk/include/PluginSettings.hpp new file mode 100644 index 0000000..e033894 --- /dev/null +++ b/far3sdk/include/PluginSettings.hpp @@ -0,0 +1,124 @@ +#ifndef __PLUGINSETTINGS_HPP__ +#define __PLUGINSETTINGS_HPP__ + +#include "plugin.hpp" + +class PluginSettings +{ + HANDLE handle; + FARAPISETTINGSCONTROL SettingsControl; + +public: + + PluginSettings(const GUID &guid, FARAPISETTINGSCONTROL SettingsControl) + { + this->SettingsControl = SettingsControl; + handle = INVALID_HANDLE_VALUE; + + FarSettingsCreate settings={sizeof(FarSettingsCreate),guid,handle}; + if (SettingsControl(INVALID_HANDLE_VALUE,SCTL_CREATE,0,&settings)) + handle = settings.Handle; + } + + ~PluginSettings() + { + SettingsControl(handle,SCTL_FREE,0,0); + } + + int CreateSubKey(size_t Root, const wchar_t *Name) + { + FarSettingsValue value={sizeof(FarSettingsValue),Root,Name}; + return (int)SettingsControl(handle,SCTL_CREATESUBKEY,0,&value); + } + + int OpenSubKey(size_t Root, const wchar_t *Name) + { + FarSettingsValue value={sizeof(FarSettingsValue),Root,Name}; + return (int)SettingsControl(handle,SCTL_OPENSUBKEY,0,&value); + } + + bool DeleteSubKey(size_t Root) + { + FarSettingsValue value={sizeof(FarSettingsValue),Root,nullptr}; + return (int)SettingsControl(handle,SCTL_DELETE,0,&value) ? true : false; + } + + bool DeleteValue(size_t Root, const wchar_t *Name) + { + FarSettingsValue value={sizeof(FarSettingsValue),Root,Name}; + return (int)SettingsControl(handle,SCTL_DELETE,0,&value) ? true : false; + } + + const wchar_t *Get(size_t Root, const wchar_t *Name, const wchar_t *Default) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_STRING}; + if (SettingsControl(handle,SCTL_GET,0,&item)) + { + return item.String; + } + return Default; + } + + void Get(size_t Root, const wchar_t *Name, wchar_t *Value, size_t Size, const wchar_t *Default) + { + lstrcpyn(Value, Get(Root,Name,Default), (int)Size); + } + + unsigned __int64 Get(size_t Root, const wchar_t *Name, unsigned __int64 Default) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_QWORD}; + if (SettingsControl(handle,SCTL_GET,0,&item)) + { + return item.Number; + } + return Default; + } + + __int64 Get(size_t Root, const wchar_t *Name, __int64 Default) { return (__int64)Get(Root,Name,(unsigned __int64)Default); } + int Get(size_t Root, const wchar_t *Name, int Default) { return (int)Get(Root,Name,(unsigned __int64)Default); } + unsigned int Get(size_t Root, const wchar_t *Name, unsigned int Default) { return (unsigned int)Get(Root,Name,(unsigned __int64)Default); } + DWORD Get(size_t Root, const wchar_t *Name, DWORD Default) { return (DWORD)Get(Root,Name,(unsigned __int64)Default); } + bool Get(size_t Root, const wchar_t *Name, bool Default) { return Get(Root,Name,Default?1ull:0ull)?true:false; } + + size_t Get(size_t Root, const wchar_t *Name, void *Value, size_t Size) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_DATA}; + if (SettingsControl(handle,SCTL_GET,0,&item)) + { + Size = (item.Data.Size>Size)?Size:item.Data.Size; + memcpy(Value,item.Data.Data,Size); + return Size; + } + return 0; + } + + bool Set(size_t Root, const wchar_t *Name, const wchar_t *Value) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_STRING}; + item.String=Value; + return SettingsControl(handle,SCTL_SET,0,&item)!=FALSE; + } + + bool Set(size_t Root, const wchar_t *Name, unsigned __int64 Value) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_QWORD}; + item.Number=Value; + return SettingsControl(handle,SCTL_SET,0,&item)!=FALSE; + } + + bool Set(size_t Root, const wchar_t *Name, __int64 Value) { return Set(Root,Name,(unsigned __int64)Value); } + bool Set(size_t Root, const wchar_t *Name, int Value) { return Set(Root,Name,(unsigned __int64)Value); } + bool Set(size_t Root, const wchar_t *Name, unsigned int Value) { return Set(Root,Name,(unsigned __int64)Value); } + bool Set(size_t Root, const wchar_t *Name, DWORD Value) { return Set(Root,Name,(unsigned __int64)Value); } + bool Set(size_t Root, const wchar_t *Name, bool Value) { return Set(Root,Name,Value?1ull:0ull); } + + bool Set(size_t Root, const wchar_t *Name, const void *Value, size_t Size) + { + FarSettingsItem item={sizeof(FarSettingsItem),Root,Name,FST_DATA}; + item.Data.Size=Size; + item.Data.Data=Value; + return SettingsControl(handle,SCTL_SET,0,&item)!=FALSE; + } +}; + +#endif diff --git a/far3sdk/include/SimpleString.hpp b/far3sdk/include/SimpleString.hpp new file mode 100644 index 0000000..443d6b7 --- /dev/null +++ b/far3sdk/include/SimpleString.hpp @@ -0,0 +1,176 @@ +#pragma once +#include + +#define __SIMPLE_STRING_USED + +#define __DEF_DELTA 20 + +typedef class SimpleString +{ + private: + wchar_t *m_str; + size_t m_len; + size_t m_size; + + void Alloc(size_t size) + { + if (size <= __DEF_DELTA) + m_size = __DEF_DELTA; + else if (size%__DEF_DELTA > 0) + m_size = (size/__DEF_DELTA + 1) * __DEF_DELTA; + else + m_size = size; + m_str = (wchar_t *)realloc(m_str,m_size*sizeof(wchar_t)); + } + + public: + + SimpleString() : m_str(NULL), m_len(0), m_size(0) { Alloc(__DEF_DELTA); } + SimpleString(const SimpleString &strCopy) : m_str(NULL), m_len(0), m_size(0) { Alloc(strCopy.Len()+1); Copy(strCopy); } + SimpleString(const wchar_t *data) : m_str(NULL), m_len(0), m_size(0) { size_t l = lstrlen(data?data:L""); Alloc(l+1); Copy(data, l); } + SimpleString(const wchar_t *data, size_t len) : m_str(NULL), m_len(0), m_size(0) { Alloc(len+1); Copy(data, len); } + explicit SimpleString(size_t size) : m_str(NULL), m_len(0), m_size(0) { Alloc(size); } + + ~SimpleString() { free(m_str); } + + void Inflate(size_t size) + { + if (size <= m_size) + return; + + if (size >= __DEF_DELTA << 3) + size = size << 1; + else + size = (size/__DEF_DELTA + 1) * __DEF_DELTA; + + Alloc(size); + } + + wchar_t *GetBuf(size_t size = (size_t)-1) { Inflate(size == (size_t)-1 ? m_size : size); return m_str; } + void ReleaseBuf(size_t len = (size_t)-1) { (len == (size_t)-1) ? SetLen(lstrlen(m_str)) : (len >= m_size ? SetLen(m_size-1) : SetLen(len)); } + + size_t Len() const { return m_len; } + size_t SetLen(size_t len) { if (len < m_size) { m_len = len; m_str[m_len] = 0; } return m_len; } + + size_t Size() const { return m_size; } + + wchar_t At(size_t index) const { return m_str[index]; } + + bool IsEmpty() const { return !m_len; } + + int __cdecl Format(const wchar_t * format, ...) + { + wchar_t *buffer = nullptr; + size_t Size = MAX_PATH; + int retValue = -1; + va_list argptr; + va_start(argptr, format); + + do + { + Size <<= 1; + wchar_t *tmpbuffer = (wchar_t*)realloc(buffer, Size*sizeof(wchar_t)); + + if (!tmpbuffer) + { + va_end(argptr); + free(buffer); + return retValue; + } + + buffer = tmpbuffer; + //_vsnwprintf '\0' . + // _vsnwprintf -1. + buffer[Size-1] = 0; + retValue = _vsnwprintf(buffer, Size-1, format, argptr); + } + while (retValue == -1); + + va_end(argptr); + Copy(buffer); + free(buffer); + return retValue; + } + + SimpleString& Replace(size_t Pos, size_t Len, const wchar_t* Data, size_t DataLen) + { + // Pos & Len must be valid + // Data and *this must not intersect (but Data can be located entirely within *this) + + if (!Len && !DataLen) + return *this; + + size_t NewLength = m_len + DataLen - Len; + + if (NewLength) + { + if (Data >= m_str && Data + DataLen <= m_str + m_len) + { + // copy data from self + SimpleString TmpStr(Data, DataLen); + Inflate(NewLength + 1); + wmemmove(m_str + Pos + DataLen, m_str + Pos + Len, m_len - Pos - Len); + wmemcpy(m_str + Pos, TmpStr.CPtr(), TmpStr.Len()); + } + else + { + Inflate(NewLength + 1); + wmemmove(m_str + Pos + DataLen, m_str + Pos + Len, m_len - Pos - Len); + wmemcpy(m_str + Pos, Data, DataLen); + } + } + + SetLen(NewLength); + + return *this; + } + + SimpleString& Replace(size_t Pos, size_t Len, const SimpleString& Str) { return Replace(Pos, Len, Str.CPtr(), Str.Len()); } + SimpleString& Replace(size_t Pos, size_t Len, const wchar_t* Str) { return Replace(Pos, Len, Str, lstrlen(Str?Str:L"")); } + SimpleString& Replace(size_t Pos, size_t Len, wchar_t Ch) { return Replace(Pos, Len, &Ch, 1); } + + SimpleString& Append(const wchar_t* Str, size_t StrLen) { return Replace(Len(), 0, Str, StrLen); } + SimpleString& Append(const SimpleString& Str) { return Append(Str.CPtr(), Str.Len()); } + SimpleString& Append(const wchar_t* Str) { return Append(Str, lstrlen(Str?Str:L"")); } + SimpleString& Append(wchar_t Ch) { return Append(&Ch, 1); } + + SimpleString& Insert(size_t Pos, const wchar_t* Str, size_t StrLen) { return Replace(Pos, 0, Str, StrLen); } + SimpleString& Insert(size_t Pos, const SimpleString& Str) { return Insert(Pos, Str.CPtr(), Str.Len()); } + SimpleString& Insert(size_t Pos, const wchar_t* Str) { return Insert(Pos, Str, lstrlen(Str?Str:L"")); } + SimpleString& Insert(size_t Pos, wchar_t Ch) { return Insert(Pos, &Ch, 1); } + + SimpleString& Copy(const wchar_t *Str, size_t StrLen) { return Replace(0, Len(), Str, StrLen); } + SimpleString& Copy(const wchar_t *Str) { return Copy(Str, lstrlen(Str?Str:L"")); } + SimpleString& Copy(wchar_t Ch) { return Copy(&Ch, 1); } + SimpleString& Copy(const SimpleString &Str) { return Copy(Str.CPtr(), Str.Len()); } + + SimpleString& Remove(size_t Pos, size_t Len = 1) { return Replace(Pos, Len, nullptr, 0); } + SimpleString& LShift(size_t nShiftCount, size_t nStartPos=0) { return Remove(nStartPos, nShiftCount); } + + SimpleString& Clear() { m_len = 0; *m_str = 0; return *this; } + + const wchar_t *CPtr() const { return m_str; } + operator const wchar_t *() const { return m_str; } + + const SimpleString& operator=(const SimpleString &strCopy) { return Copy(strCopy); } + const SimpleString& operator=(const wchar_t *lpwszData) { return Copy(lpwszData); } + const SimpleString& operator=(wchar_t chData) { return Copy(chData); } + + const SimpleString& operator+=(const SimpleString &strAdd) { return Append(strAdd); } + const SimpleString& operator+=(const wchar_t *lpwszAdd) { return Append(lpwszAdd); } + const SimpleString& operator+=(wchar_t chAdd) { return Append(chAdd); } + + friend const SimpleString operator+(const SimpleString &strSrc1, const SimpleString &strSrc2); + friend const SimpleString operator+(const SimpleString &strSrc1, const wchar_t *lpwszSrc2); + +} string; + +const SimpleString operator+(const SimpleString &strSrc1, const SimpleString &strSrc2) +{ + return SimpleString(strSrc1).Append(strSrc2); +} + +const SimpleString operator+(const SimpleString &strSrc1, const wchar_t *lpwszSrc2) +{ + return SimpleString(strSrc1).Append(lpwszSrc2); +} diff --git a/far3sdk/include/farcolor.hpp b/far3sdk/include/farcolor.hpp new file mode 100644 index 0000000..fe8ba91 --- /dev/null +++ b/far3sdk/include/farcolor.hpp @@ -0,0 +1,219 @@ +#ifndef FARCOLOR_HPP_57151931_4591_44A5_92CF_8E51D1FBC57E +#define FARCOLOR_HPP_57151931_4591_44A5_92CF_8E51D1FBC57E +#pragma once + +/* +farcolor.hpp + +Colors Index for FAR Manager 3.0 build 4765 +*/ +/* +Copyright © 1996 Eugene Roshal +Copyright © 2000 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +EXCEPTION: +Far Manager plugins that use this header file can be distributed under any +other possible license with no implications from the above license on them. +*/ + + + +enum PaletteColors +{ + COL_MENUTEXT, + COL_MENUSELECTEDTEXT, + COL_MENUHIGHLIGHT, + COL_MENUSELECTEDHIGHLIGHT, + COL_MENUBOX, + COL_MENUTITLE, + + COL_HMENUTEXT, + COL_HMENUSELECTEDTEXT, + COL_HMENUHIGHLIGHT, + COL_HMENUSELECTEDHIGHLIGHT, + + COL_PANELTEXT, + COL_PANELSELECTEDTEXT, + COL_PANELHIGHLIGHTTEXT, + COL_PANELINFOTEXT, + COL_PANELCURSOR, + COL_PANELSELECTEDCURSOR, + COL_PANELTITLE, + COL_PANELSELECTEDTITLE, + COL_PANELCOLUMNTITLE, + COL_PANELTOTALINFO, + COL_PANELSELECTEDINFO, + + COL_DIALOGTEXT, + COL_DIALOGHIGHLIGHTTEXT, + COL_DIALOGBOX, + COL_DIALOGBOXTITLE, + COL_DIALOGHIGHLIGHTBOXTITLE, + COL_DIALOGEDIT, + COL_DIALOGBUTTON, + COL_DIALOGSELECTEDBUTTON, + COL_DIALOGHIGHLIGHTBUTTON, + COL_DIALOGHIGHLIGHTSELECTEDBUTTON, + + COL_DIALOGLISTTEXT, + COL_DIALOGLISTSELECTEDTEXT, + COL_DIALOGLISTHIGHLIGHT, + COL_DIALOGLISTSELECTEDHIGHLIGHT, + + COL_WARNDIALOGTEXT, + COL_WARNDIALOGHIGHLIGHTTEXT, + COL_WARNDIALOGBOX, + COL_WARNDIALOGBOXTITLE, + COL_WARNDIALOGHIGHLIGHTBOXTITLE, + COL_WARNDIALOGEDIT, + COL_WARNDIALOGBUTTON, + COL_WARNDIALOGSELECTEDBUTTON, + COL_WARNDIALOGHIGHLIGHTBUTTON, + COL_WARNDIALOGHIGHLIGHTSELECTEDBUTTON, + + COL_KEYBARNUM, + COL_KEYBARTEXT, + COL_KEYBARBACKGROUND, + + COL_COMMANDLINE, + + COL_CLOCK, + + COL_VIEWERTEXT, + COL_VIEWERSELECTEDTEXT, + COL_VIEWERSTATUS, + + COL_EDITORTEXT, + COL_EDITORSELECTEDTEXT, + COL_EDITORSTATUS, + + COL_HELPTEXT, + COL_HELPHIGHLIGHTTEXT, + COL_HELPTOPIC, + COL_HELPSELECTEDTOPIC, + COL_HELPBOX, + COL_HELPBOXTITLE, + + COL_PANELDRAGTEXT, + COL_DIALOGEDITUNCHANGED, + COL_PANELSCROLLBAR, + COL_HELPSCROLLBAR, + COL_PANELBOX, + COL_PANELSCREENSNUMBER, + COL_DIALOGEDITSELECTED, + COL_COMMANDLINESELECTED, + COL_VIEWERARROWS, + + COL_DIALOGLISTSCROLLBAR, + COL_MENUSCROLLBAR, + COL_VIEWERSCROLLBAR, + COL_COMMANDLINEPREFIX, + COL_DIALOGDISABLED, + COL_DIALOGEDITDISABLED, + COL_DIALOGLISTDISABLED, + COL_WARNDIALOGDISABLED, + COL_WARNDIALOGEDITDISABLED, + COL_WARNDIALOGLISTDISABLED, + + COL_MENUDISABLEDTEXT, + + COL_EDITORCLOCK, + COL_VIEWERCLOCK, + + COL_DIALOGLISTTITLE, + COL_DIALOGLISTBOX, + + COL_WARNDIALOGEDITSELECTED, + COL_WARNDIALOGEDITUNCHANGED, + + COL_DIALOGCOMBOTEXT, + COL_DIALOGCOMBOSELECTEDTEXT, + COL_DIALOGCOMBOHIGHLIGHT, + COL_DIALOGCOMBOSELECTEDHIGHLIGHT, + COL_DIALOGCOMBOBOX, + COL_DIALOGCOMBOTITLE, + COL_DIALOGCOMBODISABLED, + COL_DIALOGCOMBOSCROLLBAR, + + COL_WARNDIALOGLISTTEXT, + COL_WARNDIALOGLISTSELECTEDTEXT, + COL_WARNDIALOGLISTHIGHLIGHT, + COL_WARNDIALOGLISTSELECTEDHIGHLIGHT, + COL_WARNDIALOGLISTBOX, + COL_WARNDIALOGLISTTITLE, + COL_WARNDIALOGLISTSCROLLBAR, + + COL_WARNDIALOGCOMBOTEXT, + COL_WARNDIALOGCOMBOSELECTEDTEXT, + COL_WARNDIALOGCOMBOHIGHLIGHT, + COL_WARNDIALOGCOMBOSELECTEDHIGHLIGHT, + COL_WARNDIALOGCOMBOBOX, + COL_WARNDIALOGCOMBOTITLE, + COL_WARNDIALOGCOMBODISABLED, + COL_WARNDIALOGCOMBOSCROLLBAR, + + COL_DIALOGLISTARROWS, + COL_DIALOGLISTARROWSDISABLED, + COL_DIALOGLISTARROWSSELECTED, + COL_DIALOGCOMBOARROWS, + COL_DIALOGCOMBOARROWSDISABLED, + COL_DIALOGCOMBOARROWSSELECTED, + COL_WARNDIALOGLISTARROWS, + COL_WARNDIALOGLISTARROWSDISABLED, + COL_WARNDIALOGLISTARROWSSELECTED, + COL_WARNDIALOGCOMBOARROWS, + COL_WARNDIALOGCOMBOARROWSDISABLED, + COL_WARNDIALOGCOMBOARROWSSELECTED, + COL_MENUARROWS, + COL_MENUARROWSDISABLED, + COL_MENUARROWSSELECTED, + COL_COMMANDLINEUSERSCREEN, + COL_EDITORSCROLLBAR, + + COL_MENUGRAYTEXT, + COL_MENUSELECTEDGRAYTEXT, + COL_DIALOGCOMBOGRAY, + COL_DIALOGCOMBOSELECTEDGRAYTEXT, + COL_DIALOGLISTGRAY, + COL_DIALOGLISTSELECTEDGRAYTEXT, + COL_WARNDIALOGCOMBOGRAY, + COL_WARNDIALOGCOMBOSELECTEDGRAYTEXT, + COL_WARNDIALOGLISTGRAY, + COL_WARNDIALOGLISTSELECTEDGRAYTEXT, + + COL_DIALOGDEFAULTBUTTON, + COL_DIALOGSELECTEDDEFAULTBUTTON, + COL_DIALOGHIGHLIGHTDEFAULTBUTTON, + COL_DIALOGHIGHLIGHTSELECTEDDEFAULTBUTTON, + COL_WARNDIALOGDEFAULTBUTTON, + COL_WARNDIALOGSELECTEDDEFAULTBUTTON, + COL_WARNDIALOGHIGHLIGHTDEFAULTBUTTON, + COL_WARNDIALOGHIGHLIGHTSELECTEDDEFAULTBUTTON, + + COL_LASTPALETTECOLOR +}; + +#endif // FARCOLOR_HPP_57151931_4591_44A5_92CF_8E51D1FBC57E diff --git a/far3sdk/include/farversion.hpp b/far3sdk/include/farversion.hpp new file mode 100644 index 0000000..928ab70 --- /dev/null +++ b/far3sdk/include/farversion.hpp @@ -0,0 +1,80 @@ +#ifndef __FARVERSION_HPP__ +#define __FARVERSION_HPP__ +#include "plugin.hpp" + +#define FAR_MAJOR_VER FARMANAGERVERSION_MAJOR +#define FAR_MINOR_VER FARMANAGERVERSION_MINOR +#define FAR_BUILD FARMANAGERVERSION_BUILD +#define FARCOMPANYNAME L"Eugene Roshal & Far Group" +#define FARGROUPCOPYRIGHT(start_year) "Copyright " start_year "-2016 Far Group" +#define FARCOPYRIGHT L"Copyright Eugene Roshal 1996-2000, " FARGROUPCOPYRIGHT("2000") +#define FARPRODUCTNAME L"Far Manager" + +#define FULLMAKEPRODUCTVERSION(major, minor, build) #major "." #minor " build " #build +#define MAKEPRODUCTVERSION(major, minor, build) FULLMAKEPRODUCTVERSION(major, minor, build) + +#define FARPRODUCTVERSION MAKEPRODUCTVERSION(FAR_MAJOR_VER, FAR_MINOR_VER, FAR_BUILD) + +#define fullgenericpluginrc(major, minor, build, desc, name, filename, copyright, pmajor, pminor, pbuild, pname) \ +1 VERSIONINFO \ +FILEVERSION major, minor, build, 0 \ +PRODUCTVERSION pmajor, pminor, pbuild, 0 \ +FILEOS 4 \ +FILETYPE 2 \ +{ \ + BLOCK "StringFileInfo" \ + { \ + BLOCK "000004E4" \ + { \ + VALUE "CompanyName", FARCOMPANYNAME "\000\000" \ + VALUE "FileDescription", desc "\000" \ + VALUE "FileVersion", MAKEPRODUCTVERSION(major, minor, build) "\000" \ + VALUE "InternalName", name "\000" \ + VALUE "LegalCopyright", copyright "\000\000" \ + VALUE "OriginalFilename", filename "\000" \ + VALUE "ProductName", pname "\000"\ + VALUE "ProductVersion", MAKEPRODUCTVERSION(pmajor, pminor, pbuild) "\000" \ + } \ +\ + } \ +\ + BLOCK "VarFileInfo" \ + { \ + VALUE "Translation", 0, 0x4e4 \ + } \ +\ +} + +#define genericpluginrc(build, desc, name, filename) fullgenericpluginrc(FAR_MAJOR_VER, FAR_MINOR_VER, build, desc, name, filename, FARCOPYRIGHT, FAR_MAJOR_VER, FAR_MINOR_VER, FAR_BUILD, FARPRODUCTNAME) + +#define fullgenericpluginrc_nobuild(major, minor, desc, name, filename, copyright, pmajor, pminor, pbuild, pname) \ +1 VERSIONINFO \ +FILEVERSION major, minor, 0, 0 \ +PRODUCTVERSION pmajor, pminor, pbuild, 0 \ +FILEOS 4 \ +FILETYPE 2 \ +{ \ + BLOCK "StringFileInfo" \ + { \ + BLOCK "000004E4" \ + { \ + VALUE "CompanyName", FARCOMPANYNAME "\000\000" \ + VALUE "FileDescription", desc "\000" \ + VALUE "FileVersion", #major "." #minor "\000" \ + VALUE "InternalName", name "\000" \ + VALUE "LegalCopyright", copyright "\000\000" \ + VALUE "OriginalFilename", filename "\000" \ + VALUE "ProductName", pname "\000"\ + VALUE "ProductVersion", MAKEPRODUCTVERSION(pmajor, pminor, pbuild) "\000" \ + } \ +\ + } \ +\ + BLOCK "VarFileInfo" \ + { \ + VALUE "Translation", 0, 0x4e4 \ + } \ +\ +} + +#endif diff --git a/far3sdk/include/plugin.hpp b/far3sdk/include/plugin.hpp new file mode 100644 index 0000000..c2c6f1e --- /dev/null +++ b/far3sdk/include/plugin.hpp @@ -0,0 +1,2868 @@ +// validator: no-bom +#ifndef PLUGIN_HPP_3FC978E9_63BE_4FC2_8F96_8188B0AF8363 +#define PLUGIN_HPP_3FC978E9_63BE_4FC2_8F96_8188B0AF8363 +#pragma once + +/* +plugin.hpp + +Plugin API for Far Manager 3.0 build 4765 +*/ +/* +Copyright © 1996 Eugene Roshal +Copyright © 2000 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +EXCEPTION: +Far Manager plugins that use this header file can be distributed under any +other possible license with no implications from the above license on them. +*/ + + +#define FARMANAGERVERSION_MAJOR 3 +#define FARMANAGERVERSION_MINOR 0 +#define FARMANAGERVERSION_REVISION 0 +#define FARMANAGERVERSION_BUILD 4765 +#define FARMANAGERVERSION_STAGE VS_RELEASE + +#ifndef RC_INVOKED + +#include +#include + +#undef DefDlgProc + + +#define CP_UNICODE ((uintptr_t)1200) +#define CP_REVERSEBOM ((uintptr_t)1201) +#define CP_DEFAULT ((uintptr_t)-1) +#define CP_REDETECT ((uintptr_t)-2) + +typedef unsigned __int64 FARCOLORFLAGS; +static const FARCOLORFLAGS + FCF_FG_4BIT = 0x0000000000000001ULL, + FCF_BG_4BIT = 0x0000000000000002ULL, + FCF_4BITMASK = 0x0000000000000003ULL, // FCF_FG_4BIT|FCF_BG_4BIT + + FCF_RAWATTR_MASK = 0x000000000000FF00ULL, // stored console attributes + + FCF_EXTENDEDFLAGS = 0xFFFFFFFFFFFFFFFCULL, // ~FCF_4BITMASK + + FCF_FG_BOLD = 0x1000000000000000ULL, + FCF_FG_ITALIC = 0x2000000000000000ULL, + FCF_FG_UNDERLINE = 0x4000000000000000ULL, + FCF_STYLEMASK = 0x7000000000000000ULL, // FCF_FG_BOLD|FCF_FG_ITALIC|FCF_FG_UNDERLINE + + FCF_NONE = 0; + +struct rgba { unsigned char r, g, b, a; }; + +struct FarColor +{ + FARCOLORFLAGS Flags; + union + { + COLORREF ForegroundColor; + struct rgba ForegroundRGBA; + } +#ifndef __cplusplus + Foreground +#endif + ; + union + { + COLORREF BackgroundColor; + struct rgba BackgroundRGBA; + } +#ifndef __cplusplus + Background +#endif + ; + void* Reserved; + +#ifdef __cplusplus + bool operator ==(const FarColor& rhs) const + { + return Flags == rhs.Flags + && ForegroundColor == rhs.ForegroundColor + && BackgroundColor == rhs.BackgroundColor + && Reserved == rhs.Reserved; + } + + bool operator !=(const FarColor& rhs) const + { + return !(*this == rhs); + } +#endif +}; + +#define INDEXMASK 0x0000000f +#define COLORMASK 0x00ffffff +#define ALPHAMASK 0xff000000 + +#define INDEXVALUE(x) ((x)&INDEXMASK) +#define COLORVALUE(x) ((x)&COLORMASK) +#define ALPHAVALUE(x) ((x)&ALPHAMASK) + +#define IS_OPAQUE(x) (ALPHAVALUE(x)==ALPHAMASK) +#define IS_TRANSPARENT(x) (!ALPHAVALUE(x)) +#define MAKE_OPAQUE(x) (x|=ALPHAMASK) +#define MAKE_TRANSPARENT(x) (x&=COLORMASK) + +typedef unsigned __int64 COLORDIALOGFLAGS; +static const COLORDIALOGFLAGS + CDF_NONE = 0; + +typedef BOOL (WINAPI *FARAPICOLORDIALOG)( + const GUID* PluginId, + COLORDIALOGFLAGS Flags, + struct FarColor *Color +); + +typedef unsigned __int64 FARMESSAGEFLAGS; +static const FARMESSAGEFLAGS + FMSG_WARNING = 0x0000000000000001ULL, + FMSG_ERRORTYPE = 0x0000000000000002ULL, + FMSG_KEEPBACKGROUND = 0x0000000000000004ULL, + FMSG_LEFTALIGN = 0x0000000000000008ULL, + FMSG_ALLINONE = 0x0000000000000010ULL, + FMSG_MB_OK = 0x0000000000010000ULL, + FMSG_MB_OKCANCEL = 0x0000000000020000ULL, + FMSG_MB_ABORTRETRYIGNORE = 0x0000000000030000ULL, + FMSG_MB_YESNO = 0x0000000000040000ULL, + FMSG_MB_YESNOCANCEL = 0x0000000000050000ULL, + FMSG_MB_RETRYCANCEL = 0x0000000000060000ULL, + FMSG_NONE = 0; + +typedef intptr_t (WINAPI *FARAPIMESSAGE)( + const GUID* PluginId, + const GUID* Id, + FARMESSAGEFLAGS Flags, + const wchar_t *HelpTopic, + const wchar_t * const *Items, + size_t ItemsNumber, + intptr_t ButtonsNumber +); + +enum FARDIALOGITEMTYPES +{ + DI_TEXT = 0, + DI_VTEXT = 1, + DI_SINGLEBOX = 2, + DI_DOUBLEBOX = 3, + DI_EDIT = 4, + DI_PSWEDIT = 5, + DI_FIXEDIT = 6, + DI_BUTTON = 7, + DI_CHECKBOX = 8, + DI_RADIOBUTTON = 9, + DI_COMBOBOX = 10, + DI_LISTBOX = 11, + + DI_USERCONTROL =255, +}; + +/* + Check diagol element type has inputstring? + (DI_EDIT, DI_FIXEDIT, DI_PSWEDIT, etc) +*/ +static __inline BOOL IsEdit(enum FARDIALOGITEMTYPES Type) +{ + switch (Type) + { + case DI_EDIT: + case DI_FIXEDIT: + case DI_PSWEDIT: + case DI_COMBOBOX: + return TRUE; + default: + return FALSE; + } +} + +typedef unsigned __int64 FARDIALOGITEMFLAGS; +static const FARDIALOGITEMFLAGS + DIF_BOXCOLOR = 0x0000000000000200ULL, + DIF_GROUP = 0x0000000000000400ULL, + DIF_LEFTTEXT = 0x0000000000000800ULL, + DIF_MOVESELECT = 0x0000000000001000ULL, + DIF_SHOWAMPERSAND = 0x0000000000002000ULL, + DIF_CENTERGROUP = 0x0000000000004000ULL, + DIF_NOBRACKETS = 0x0000000000008000ULL, + DIF_MANUALADDHISTORY = 0x0000000000008000ULL, + DIF_SEPARATOR = 0x0000000000010000ULL, + DIF_SEPARATOR2 = 0x0000000000020000ULL, + DIF_EDITOR = 0x0000000000020000ULL, + DIF_LISTNOAMPERSAND = 0x0000000000020000ULL, + DIF_LISTNOBOX = 0x0000000000040000ULL, + DIF_HISTORY = 0x0000000000040000ULL, + DIF_BTNNOCLOSE = 0x0000000000040000ULL, + DIF_CENTERTEXT = 0x0000000000040000ULL, + DIF_SEPARATORUSER = 0x0000000000080000ULL, + DIF_SETSHIELD = 0x0000000000080000ULL, + DIF_EDITEXPAND = 0x0000000000080000ULL, + DIF_DROPDOWNLIST = 0x0000000000100000ULL, + DIF_USELASTHISTORY = 0x0000000000200000ULL, + DIF_MASKEDIT = 0x0000000000400000ULL, + DIF_LISTTRACKMOUSE = 0x0000000000400000ULL, + DIF_LISTTRACKMOUSEINFOCUS = 0x0000000000800000ULL, + DIF_SELECTONENTRY = 0x0000000000800000ULL, + DIF_3STATE = 0x0000000000800000ULL, + DIF_EDITPATH = 0x0000000001000000ULL, + DIF_LISTWRAPMODE = 0x0000000001000000ULL, + DIF_NOAUTOCOMPLETE = 0x0000000002000000ULL, + DIF_LISTAUTOHIGHLIGHT = 0x0000000002000000ULL, + DIF_LISTNOCLOSE = 0x0000000004000000ULL, + DIF_EDITPATHEXEC = 0x0000000004000000ULL, + DIF_HIDDEN = 0x0000000010000000ULL, + DIF_READONLY = 0x0000000020000000ULL, + DIF_NOFOCUS = 0x0000000040000000ULL, + DIF_DISABLE = 0x0000000080000000ULL, + DIF_DEFAULTBUTTON = 0x0000000100000000ULL, + DIF_FOCUS = 0x0000000200000000ULL, + DIF_RIGHTTEXT = 0x0000000400000000ULL, + DIF_WORDWRAP = 0x0000000800000000ULL, + DIF_NONE = 0; + +enum FARMESSAGE +{ + DM_FIRST = 0, + DM_CLOSE = 1, + DM_ENABLE = 2, + DM_ENABLEREDRAW = 3, + DM_GETDLGDATA = 4, + DM_GETDLGITEM = 5, + DM_GETDLGRECT = 6, + DM_GETTEXT = 7, + DM_KEY = 9, + DM_MOVEDIALOG = 10, + DM_SETDLGDATA = 11, + DM_SETDLGITEM = 12, + DM_SETFOCUS = 13, + DM_REDRAW = 14, + DM_SETTEXT = 15, + DM_SETMAXTEXTLENGTH = 16, + DM_SHOWDIALOG = 17, + DM_GETFOCUS = 18, + DM_GETCURSORPOS = 19, + DM_SETCURSORPOS = 20, + DM_SETTEXTPTR = 22, + DM_SHOWITEM = 23, + DM_ADDHISTORY = 24, + + DM_GETCHECK = 25, + DM_SETCHECK = 26, + DM_SET3STATE = 27, + + DM_LISTSORT = 28, + DM_LISTGETITEM = 29, + DM_LISTGETCURPOS = 30, + DM_LISTSETCURPOS = 31, + DM_LISTDELETE = 32, + DM_LISTADD = 33, + DM_LISTADDSTR = 34, + DM_LISTUPDATE = 35, + DM_LISTINSERT = 36, + DM_LISTFINDSTRING = 37, + DM_LISTINFO = 38, + DM_LISTGETDATA = 39, + DM_LISTSETDATA = 40, + DM_LISTSETTITLES = 41, + DM_LISTGETTITLES = 42, + + DM_RESIZEDIALOG = 43, + DM_SETITEMPOSITION = 44, + + DM_GETDROPDOWNOPENED = 45, + DM_SETDROPDOWNOPENED = 46, + + DM_SETHISTORY = 47, + + DM_GETITEMPOSITION = 48, + DM_SETINPUTNOTIFY = 49, + DM_SETMOUSEEVENTNOTIFY = DM_SETINPUTNOTIFY, + + DM_EDITUNCHANGEDFLAG = 50, + + DM_GETITEMDATA = 51, + DM_SETITEMDATA = 52, + + DM_LISTSET = 53, + + DM_GETCURSORSIZE = 54, + DM_SETCURSORSIZE = 55, + + DM_LISTGETDATASIZE = 56, + + DM_GETSELECTION = 57, + DM_SETSELECTION = 58, + + DM_GETEDITPOSITION = 59, + DM_SETEDITPOSITION = 60, + + DM_SETCOMBOBOXEVENT = 61, + DM_GETCOMBOBOXEVENT = 62, + + DM_GETCONSTTEXTPTR = 63, + DM_GETDLGITEMSHORT = 64, + DM_SETDLGITEMSHORT = 65, + + DM_GETDIALOGINFO = 66, + + DM_GETDIALOGTITLE = 67, + + DN_FIRST = 4096, + DN_BTNCLICK = 4097, + DN_CTLCOLORDIALOG = 4098, + DN_CTLCOLORDLGITEM = 4099, + DN_CTLCOLORDLGLIST = 4100, + DN_DRAWDIALOG = 4101, + DN_DRAWDLGITEM = 4102, + DN_EDITCHANGE = 4103, + DN_ENTERIDLE = 4104, + DN_GOTFOCUS = 4105, + DN_HELP = 4106, + DN_HOTKEY = 4107, + DN_INITDIALOG = 4108, + DN_KILLFOCUS = 4109, + DN_LISTCHANGE = 4110, + DN_DRAGGED = 4111, + DN_RESIZECONSOLE = 4112, + DN_DRAWDIALOGDONE = 4113, + DN_LISTHOTKEY = 4114, + DN_INPUT = 4115, + DN_CONTROLINPUT = 4116, + DN_CLOSE = 4117, + DN_GETVALUE = 4118, + DN_DROPDOWNOPENED = 4119, + DN_DRAWDLGITEMDONE = 4120, + + DM_USER = 0x4000, + +}; + +enum FARCHECKEDSTATE +{ + BSTATE_UNCHECKED = 0, + BSTATE_CHECKED = 1, + BSTATE_3STATE = 2, + BSTATE_TOGGLE = 3, +}; + +enum FARCOMBOBOXEVENTTYPE +{ + CBET_KEY = 0x00000001, + CBET_MOUSE = 0x00000002, +}; + +typedef unsigned __int64 LISTITEMFLAGS; +static const LISTITEMFLAGS + LIF_SELECTED = 0x0000000000010000ULL, + LIF_CHECKED = 0x0000000000020000ULL, + LIF_SEPARATOR = 0x0000000000040000ULL, + LIF_DISABLE = 0x0000000000080000ULL, + LIF_GRAYED = 0x0000000000100000ULL, + LIF_HIDDEN = 0x0000000000200000ULL, + LIF_DELETEUSERDATA = 0x0000000080000000ULL, + LIF_NONE = 0; + + + +struct FarListItem +{ + LISTITEMFLAGS Flags; + const wchar_t *Text; + intptr_t Reserved[2]; +}; + +struct FarListUpdate +{ + size_t StructSize; + intptr_t Index; + struct FarListItem Item; +}; + +struct FarListInsert +{ + size_t StructSize; + intptr_t Index; + struct FarListItem Item; +}; + +struct FarListGetItem +{ + size_t StructSize; + intptr_t ItemIndex; + struct FarListItem Item; +}; + +struct FarListPos +{ + size_t StructSize; + intptr_t SelectPos; + intptr_t TopPos; +}; + +typedef unsigned __int64 FARLISTFINDFLAGS; +static const FARLISTFINDFLAGS + LIFIND_EXACTMATCH = 0x0000000000000001ULL, + LIFIND_NONE = 0; + + +struct FarListFind +{ + size_t StructSize; + intptr_t StartIndex; + const wchar_t *Pattern; + FARLISTFINDFLAGS Flags; +}; + +struct FarListDelete +{ + size_t StructSize; + intptr_t StartIndex; + intptr_t Count; +}; + +typedef unsigned __int64 FARLISTINFOFLAGS; +static const FARLISTINFOFLAGS + LINFO_SHOWNOBOX = 0x0000000000000400ULL, + LINFO_AUTOHIGHLIGHT = 0x0000000000000800ULL, + LINFO_REVERSEHIGHLIGHT = 0x0000000000001000ULL, + LINFO_WRAPMODE = 0x0000000000008000ULL, + LINFO_SHOWAMPERSAND = 0x0000000000010000ULL, + LINFO_NONE = 0; + +struct FarListInfo +{ + size_t StructSize; + FARLISTINFOFLAGS Flags; + size_t ItemsNumber; + intptr_t SelectPos; + intptr_t TopPos; + intptr_t MaxHeight; + intptr_t MaxLength; +}; + +struct FarListItemData +{ + size_t StructSize; + intptr_t Index; + size_t DataSize; + void *Data; +}; + +struct FarList +{ + size_t StructSize; + size_t ItemsNumber; + struct FarListItem *Items; +}; + +struct FarListTitles +{ + size_t StructSize; + size_t TitleSize; + const wchar_t *Title; + size_t BottomSize; + const wchar_t *Bottom; +}; + +struct FarDialogItemColors +{ + size_t StructSize; + unsigned __int64 Flags; + size_t ColorsCount; + struct FarColor* Colors; +}; + +struct FAR_CHAR_INFO +{ + WCHAR Char; + struct FarColor Attributes; + +#ifdef __cplusplus + static FAR_CHAR_INFO make(wchar_t Char, const FarColor& Attributes) + { + FAR_CHAR_INFO info = { Char, Attributes }; + return info; + } + + bool operator ==(const FAR_CHAR_INFO& rhs) const + { + return Char == rhs.Char && Attributes == rhs.Attributes; + } + + bool operator !=(const FAR_CHAR_INFO& rhs) const + { + return !(*this == rhs); + } +#endif +}; + +struct FarDialogItem +{ + enum FARDIALOGITEMTYPES Type; + intptr_t X1,Y1,X2,Y2; + union + { + intptr_t Selected; + struct FarList *ListItems; + struct FAR_CHAR_INFO *VBuf; + intptr_t Reserved0; + } +#ifndef __cplusplus + Param +#endif + ; + const wchar_t *History; + const wchar_t *Mask; + FARDIALOGITEMFLAGS Flags; + const wchar_t *Data; + size_t MaxLength; // terminate 0 not included (if == 0 string size is unlimited) + intptr_t UserData; + intptr_t Reserved[2]; +}; + +struct FarDialogItemData +{ + size_t StructSize; + size_t PtrLength; + wchar_t *PtrData; +}; + +struct FarDialogEvent +{ + size_t StructSize; + HANDLE hDlg; + intptr_t Msg; + intptr_t Param1; + void* Param2; + intptr_t Result; +}; + +struct OpenDlgPluginData +{ + size_t StructSize; + HANDLE hDlg; +}; + +struct DialogInfo +{ + size_t StructSize; + GUID Id; + GUID Owner; +}; + +struct FarGetDialogItem +{ + size_t StructSize; + size_t Size; + struct FarDialogItem* Item; +}; + +typedef unsigned __int64 FARDIALOGFLAGS; +static const FARDIALOGFLAGS + FDLG_WARNING = 0x0000000000000001ULL, + FDLG_SMALLDIALOG = 0x0000000000000002ULL, + FDLG_NODRAWSHADOW = 0x0000000000000004ULL, + FDLG_NODRAWPANEL = 0x0000000000000008ULL, + FDLG_KEEPCONSOLETITLE = 0x0000000000000010ULL, + FDLG_NONE = 0; + +typedef intptr_t(WINAPI *FARWINDOWPROC)( + HANDLE hDlg, + intptr_t Msg, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t(WINAPI *FARAPISENDDLGMESSAGE)( + HANDLE hDlg, + intptr_t Msg, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t(WINAPI *FARAPIDEFDLGPROC)( + HANDLE hDlg, + intptr_t Msg, + intptr_t Param1, + void* Param2 +); + +typedef HANDLE(WINAPI *FARAPIDIALOGINIT)( + const GUID* PluginId, + const GUID* Id, + intptr_t X1, + intptr_t Y1, + intptr_t X2, + intptr_t Y2, + const wchar_t *HelpTopic, + const struct FarDialogItem *Item, + size_t ItemsNumber, + intptr_t Reserved, + FARDIALOGFLAGS Flags, + FARWINDOWPROC DlgProc, + void* Param +); + +typedef intptr_t (WINAPI *FARAPIDIALOGRUN)( + HANDLE hDlg +); + +typedef void (WINAPI *FARAPIDIALOGFREE)( + HANDLE hDlg +); + +struct FarKey +{ + WORD VirtualKeyCode; + DWORD ControlKeyState; +}; + +typedef unsigned __int64 MENUITEMFLAGS; +static const MENUITEMFLAGS + MIF_SELECTED = 0x000000000010000ULL, + MIF_CHECKED = 0x000000000020000ULL, + MIF_SEPARATOR = 0x000000000040000ULL, + MIF_DISABLE = 0x000000000080000ULL, + MIF_GRAYED = 0x000000000100000ULL, + MIF_HIDDEN = 0x000000000200000ULL, + MIF_NONE = 0; + +struct FarMenuItem +{ + MENUITEMFLAGS Flags; + const wchar_t *Text; + struct FarKey AccelKey; + intptr_t UserData; + intptr_t Reserved[2]; +}; + +typedef unsigned __int64 FARMENUFLAGS; +static const FARMENUFLAGS + FMENU_SHOWAMPERSAND = 0x0000000000000001ULL, + FMENU_WRAPMODE = 0x0000000000000002ULL, + FMENU_AUTOHIGHLIGHT = 0x0000000000000004ULL, + FMENU_REVERSEAUTOHIGHLIGHT = 0x0000000000000008ULL, + FMENU_CHANGECONSOLETITLE = 0x0000000000000010ULL, + FMENU_NONE = 0; + +typedef intptr_t (WINAPI *FARAPIMENU)( + const GUID* PluginId, + const GUID* Id, + intptr_t X, + intptr_t Y, + intptr_t MaxHeight, + FARMENUFLAGS Flags, + const wchar_t *Title, + const wchar_t *Bottom, + const wchar_t *HelpTopic, + const struct FarKey *BreakKeys, + intptr_t *BreakCode, + const struct FarMenuItem *Item, + size_t ItemsNumber +); + + +typedef unsigned __int64 PLUGINPANELITEMFLAGS; +static const PLUGINPANELITEMFLAGS + PPIF_SELECTED = 0x0000000040000000ULL, + PPIF_PROCESSDESCR = 0x0000000080000000ULL, + PPIF_NONE = 0; + +struct FarPanelItemFreeInfo +{ + size_t StructSize; + HANDLE hPlugin; +}; + +typedef void (WINAPI *FARPANELITEMFREECALLBACK)(void* UserData, const struct FarPanelItemFreeInfo* Info); + +struct UserDataItem +{ + void* Data; + FARPANELITEMFREECALLBACK FreeData; +}; + + +struct PluginPanelItem +{ + FILETIME CreationTime; + FILETIME LastAccessTime; + FILETIME LastWriteTime; + FILETIME ChangeTime; + unsigned __int64 FileSize; + unsigned __int64 AllocationSize; + const wchar_t *FileName; + const wchar_t *AlternateFileName; + const wchar_t *Description; + const wchar_t *Owner; + const wchar_t * const *CustomColumnData; + size_t CustomColumnNumber; + PLUGINPANELITEMFLAGS Flags; + struct UserDataItem UserData; + uintptr_t FileAttributes; + uintptr_t NumberOfLinks; + uintptr_t CRC32; + intptr_t Reserved[2]; +}; + +struct FarGetPluginPanelItem +{ + size_t StructSize; + size_t Size; + struct PluginPanelItem* Item; +}; + +struct SortingPanelItem +{ + FILETIME CreationTime; + FILETIME LastAccessTime; + FILETIME LastWriteTime; + FILETIME ChangeTime; + unsigned __int64 FileSize; + unsigned __int64 AllocationSize; + const wchar_t *FileName; + const wchar_t *AlternateFileName; + const wchar_t *Description; + const wchar_t *Owner; + const wchar_t * const *CustomColumnData; + size_t CustomColumnNumber; + PLUGINPANELITEMFLAGS Flags; + struct UserDataItem UserData; + uintptr_t FileAttributes; + uintptr_t NumberOfLinks; + uintptr_t CRC32; + intptr_t Position; + intptr_t SortGroup; + uintptr_t NumberOfStreams; + unsigned __int64 StreamsSize; +}; + +typedef unsigned __int64 PANELINFOFLAGS; +static const PANELINFOFLAGS + PFLAGS_SHOWHIDDEN = 0x0000000000000001ULL, + PFLAGS_HIGHLIGHT = 0x0000000000000002ULL, + PFLAGS_REVERSESORTORDER = 0x0000000000000004ULL, + PFLAGS_USESORTGROUPS = 0x0000000000000008ULL, + PFLAGS_SELECTEDFIRST = 0x0000000000000010ULL, + PFLAGS_REALNAMES = 0x0000000000000020ULL, + PFLAGS_NUMERICSORT = 0x0000000000000040ULL, + PFLAGS_PANELLEFT = 0x0000000000000080ULL, + PFLAGS_DIRECTORIESFIRST = 0x0000000000000100ULL, + PFLAGS_USECRC32 = 0x0000000000000200ULL, + PFLAGS_CASESENSITIVESORT = 0x0000000000000400ULL, + PFLAGS_PLUGIN = 0x0000000000000800ULL, + PFLAGS_VISIBLE = 0x0000000000001000ULL, + PFLAGS_FOCUS = 0x0000000000002000ULL, + PFLAGS_ALTERNATIVENAMES = 0x0000000000004000ULL, + PFLAGS_SHORTCUT = 0x0000000000008000ULL, + PFLAGS_NONE = 0; + +enum PANELINFOTYPE +{ + PTYPE_FILEPANEL = 0, + PTYPE_TREEPANEL = 1, + PTYPE_QVIEWPANEL = 2, + PTYPE_INFOPANEL = 3, +}; + +enum OPENPANELINFO_SORTMODES +{ + SM_DEFAULT = 0, + SM_UNSORTED = 1, + SM_NAME = 2, + SM_EXT = 3, + SM_MTIME = 4, + SM_CTIME = 5, + SM_ATIME = 6, + SM_SIZE = 7, + SM_DESCR = 8, + SM_OWNER = 9, + SM_COMPRESSEDSIZE = 10, + SM_NUMLINKS = 11, + SM_NUMSTREAMS = 12, + SM_STREAMSSIZE = 13, + SM_FULLNAME = 14, + SM_CHTIME = 15, + + SM_COUNT +}; + +struct PanelInfo +{ + size_t StructSize; + HANDLE PluginHandle; + GUID OwnerGuid; + PANELINFOFLAGS Flags; + size_t ItemsNumber; + size_t SelectedItemsNumber; + RECT PanelRect; + size_t CurrentItem; + size_t TopPanelItem; + intptr_t ViewMode; + enum PANELINFOTYPE PanelType; + enum OPENPANELINFO_SORTMODES SortMode; +}; + + +struct PanelRedrawInfo +{ + size_t StructSize; + size_t CurrentItem; + size_t TopPanelItem; +}; + +struct CmdLineSelect +{ + size_t StructSize; + intptr_t SelStart; + intptr_t SelEnd; +}; + +struct FarPanelDirectory +{ + size_t StructSize; + const wchar_t* Name; + const wchar_t* Param; + GUID PluginId; + const wchar_t* File; +}; + +#define PANEL_NONE ((HANDLE)(-1)) +#define PANEL_ACTIVE ((HANDLE)(-1)) +#define PANEL_PASSIVE ((HANDLE)(-2)) +#define PANEL_STOP ((HANDLE)(-1)) + +enum FILE_CONTROL_COMMANDS +{ + FCTL_CLOSEPANEL = 0, + FCTL_GETPANELINFO = 1, + FCTL_UPDATEPANEL = 2, + FCTL_REDRAWPANEL = 3, + FCTL_GETCMDLINE = 4, + FCTL_SETCMDLINE = 5, + FCTL_SETSELECTION = 6, + FCTL_SETVIEWMODE = 7, + FCTL_INSERTCMDLINE = 8, + FCTL_SETUSERSCREEN = 9, + FCTL_SETPANELDIRECTORY = 10, + FCTL_SETCMDLINEPOS = 11, + FCTL_GETCMDLINEPOS = 12, + FCTL_SETSORTMODE = 13, + FCTL_SETSORTORDER = 14, + FCTL_SETCMDLINESELECTION = 15, + FCTL_GETCMDLINESELECTION = 16, + FCTL_CHECKPANELSEXIST = 17, + FCTL_SETNUMERICSORT = 18, + FCTL_GETUSERSCREEN = 19, + FCTL_ISACTIVEPANEL = 20, + FCTL_GETPANELITEM = 21, + FCTL_GETSELECTEDPANELITEM = 22, + FCTL_GETCURRENTPANELITEM = 23, + FCTL_GETPANELDIRECTORY = 24, + FCTL_GETCOLUMNTYPES = 25, + FCTL_GETCOLUMNWIDTHS = 26, + FCTL_BEGINSELECTION = 27, + FCTL_ENDSELECTION = 28, + FCTL_CLEARSELECTION = 29, + FCTL_SETDIRECTORIESFIRST = 30, + FCTL_GETPANELFORMAT = 31, + FCTL_GETPANELHOSTFILE = 32, + FCTL_SETCASESENSITIVESORT = 33, + FCTL_GETPANELPREFIX = 34, + FCTL_SETACTIVEPANEL = 35, +}; + +typedef void (WINAPI *FARAPITEXT)( + intptr_t X, + intptr_t Y, + const struct FarColor* Color, + const wchar_t *Str +); + +typedef HANDLE(WINAPI *FARAPISAVESCREEN)(intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2); + +typedef void (WINAPI *FARAPIRESTORESCREEN)(HANDLE hScreen); + + +typedef intptr_t (WINAPI *FARAPIGETDIRLIST)( + const wchar_t *Dir, + struct PluginPanelItem **pPanelItem, + size_t *pItemsNumber +); + +typedef intptr_t (WINAPI *FARAPIGETPLUGINDIRLIST)( + const GUID* PluginId, + HANDLE hPanel, + const wchar_t *Dir, + struct PluginPanelItem **pPanelItem, + size_t *pItemsNumber +); + +typedef void (WINAPI *FARAPIFREEDIRLIST)(struct PluginPanelItem *PanelItem, size_t nItemsNumber); +typedef void (WINAPI *FARAPIFREEPLUGINDIRLIST)(HANDLE hPanel, struct PluginPanelItem *PanelItem, size_t nItemsNumber); + +typedef unsigned __int64 VIEWER_FLAGS; +static const VIEWER_FLAGS + VF_NONMODAL = 0x0000000000000001ULL, + VF_DELETEONCLOSE = 0x0000000000000002ULL, + VF_ENABLE_F6 = 0x0000000000000004ULL, + VF_DISABLEHISTORY = 0x0000000000000008ULL, + VF_IMMEDIATERETURN = 0x0000000000000100ULL, + VF_DELETEONLYFILEONCLOSE = 0x0000000000000200ULL, + VF_NONE = 0; + +typedef intptr_t (WINAPI *FARAPIVIEWER)( + const wchar_t *FileName, + const wchar_t *Title, + intptr_t X1, + intptr_t Y1, + intptr_t X2, + intptr_t Y2, + VIEWER_FLAGS Flags, + uintptr_t CodePage +); + +typedef unsigned __int64 EDITOR_FLAGS; +static const EDITOR_FLAGS + EF_NONMODAL = 0x0000000000000001ULL, + EF_CREATENEW = 0x0000000000000002ULL, + EF_ENABLE_F6 = 0x0000000000000004ULL, + EF_DISABLEHISTORY = 0x0000000000000008ULL, + EF_DELETEONCLOSE = 0x0000000000000010ULL, + EF_IMMEDIATERETURN = 0x0000000000000100ULL, + EF_DELETEONLYFILEONCLOSE = 0x0000000000000200ULL, + EF_LOCKED = 0x0000000000000400ULL, + EF_DISABLESAVEPOS = 0x0000000000000800ULL, + EF_OPENMODE_MASK = 0x00000000F0000000ULL, + EF_OPENMODE_QUERY = 0x0000000000000000ULL, + EF_OPENMODE_NEWIFOPEN = 0x0000000010000000ULL, + EF_OPENMODE_USEEXISTING = 0x0000000020000000ULL, + EF_OPENMODE_BREAKIFOPEN = 0x0000000030000000ULL, + EF_OPENMODE_RELOADIFOPEN = 0x0000000040000000ULL, + EN_NONE = 0; + +enum EDITOR_EXITCODE +{ + EEC_OPEN_ERROR = 0, + EEC_MODIFIED = 1, + EEC_NOT_MODIFIED = 2, + EEC_LOADING_INTERRUPTED = 3, +}; + +typedef intptr_t (WINAPI *FARAPIEDITOR)( + const wchar_t *FileName, + const wchar_t *Title, + intptr_t X1, + intptr_t Y1, + intptr_t X2, + intptr_t Y2, + EDITOR_FLAGS Flags, + intptr_t StartLine, + intptr_t StartChar, + uintptr_t CodePage +); + +typedef const wchar_t*(WINAPI *FARAPIGETMSG)( + const GUID* PluginId, + intptr_t MsgId +); + +typedef unsigned __int64 FARHELPFLAGS; +static const FARHELPFLAGS + FHELP_NOSHOWERROR = 0x0000000080000000ULL, + FHELP_SELFHELP = 0x0000000000000000ULL, + FHELP_FARHELP = 0x0000000000000001ULL, + FHELP_CUSTOMFILE = 0x0000000000000002ULL, + FHELP_CUSTOMPATH = 0x0000000000000004ULL, + FHELP_GUID = 0x0000000000000008ULL, + FHELP_USECONTENTS = 0x0000000040000000ULL, + FHELP_NONE = 0; + +typedef BOOL (WINAPI *FARAPISHOWHELP)( + const wchar_t *ModuleName, + const wchar_t *Topic, + FARHELPFLAGS Flags +); + +enum ADVANCED_CONTROL_COMMANDS +{ + ACTL_GETFARMANAGERVERSION = 0, + ACTL_WAITKEY = 2, + ACTL_GETCOLOR = 3, + ACTL_GETARRAYCOLOR = 4, + ACTL_GETWINDOWINFO = 6, + ACTL_GETWINDOWCOUNT = 7, + ACTL_SETCURRENTWINDOW = 8, + ACTL_COMMIT = 9, + ACTL_GETFARHWND = 10, + ACTL_SETARRAYCOLOR = 16, + ACTL_REDRAWALL = 19, + ACTL_SYNCHRO = 20, + ACTL_SETPROGRESSSTATE = 21, + ACTL_SETPROGRESSVALUE = 22, + ACTL_QUIT = 23, + ACTL_GETFARRECT = 24, + ACTL_GETCURSORPOS = 25, + ACTL_SETCURSORPOS = 26, + ACTL_PROGRESSNOTIFY = 27, + ACTL_GETWINDOWTYPE = 28, + + +}; + + + + +enum FAR_MACRO_CONTROL_COMMANDS +{ + MCTL_LOADALL = 0, + MCTL_SAVEALL = 1, + MCTL_SENDSTRING = 2, + MCTL_GETSTATE = 5, + MCTL_GETAREA = 6, + MCTL_ADDMACRO = 7, + MCTL_DELMACRO = 8, + MCTL_GETLASTERROR = 9, + MCTL_EXECSTRING = 10, +}; + +typedef unsigned __int64 FARKEYMACROFLAGS; +static const FARKEYMACROFLAGS + KMFLAGS_SILENTCHECK = 0x0000000000000001, + KMFLAGS_NOSENDKEYSTOPLUGINS = 0x0000000000000002, + KMFLAGS_ENABLEOUTPUT = 0x0000000000000004, + KMFLAGS_LANGMASK = 0x0000000000000070, // 3 bits reserved for 8 languages + KMFLAGS_LUA = 0x0000000000000000, + KMFLAGS_MOONSCRIPT = 0x0000000000000010, + KMFLAGS_NONE = 0; + +enum FARMACROSENDSTRINGCOMMAND +{ + MSSC_POST =0, + MSSC_CHECK =2, +}; + +enum FARMACROAREA +{ + MACROAREA_OTHER = 0, // Mode of copying text from the screen; vertical menus + MACROAREA_SHELL = 1, // File panels + MACROAREA_VIEWER = 2, // Internal viewer program + MACROAREA_EDITOR = 3, // Editor + MACROAREA_DIALOG = 4, // Dialogs + MACROAREA_SEARCH = 5, // Quick search in panels + MACROAREA_DISKS = 6, // Menu of disk selection + MACROAREA_MAINMENU = 7, // Main menu + MACROAREA_MENU = 8, // Other menus + MACROAREA_HELP = 9, // Help system + MACROAREA_INFOPANEL = 10, // Info panel + MACROAREA_QVIEWPANEL = 11, // Quick view panel + MACROAREA_TREEPANEL = 12, // Folders tree panel + MACROAREA_FINDFOLDER = 13, // Find folder + MACROAREA_USERMENU = 14, // User menu + MACROAREA_SHELLAUTOCOMPLETION = 15, // Autocompletion list in command line + MACROAREA_DIALOGAUTOCOMPLETION = 16, // Autocompletion list in dialogs + + MACROAREA_COMMON = 255, +}; + +enum FARMACROSTATE +{ + MACROSTATE_NOMACRO = 0, + MACROSTATE_EXECUTING = 1, + MACROSTATE_EXECUTING_COMMON = 2, + MACROSTATE_RECORDING = 3, + MACROSTATE_RECORDING_COMMON = 4, +}; + +enum FARMACROPARSEERRORCODE +{ + MPEC_SUCCESS = 0, + MPEC_ERROR = 1, +}; + +struct MacroParseResult +{ + size_t StructSize; + DWORD ErrCode; + COORD ErrPos; + const wchar_t *ErrSrc; +}; + + +struct MacroSendMacroText +{ + size_t StructSize; + FARKEYMACROFLAGS Flags; + INPUT_RECORD AKey; + const wchar_t *SequenceText; +}; + +typedef unsigned __int64 FARADDKEYMACROFLAGS; +static const FARADDKEYMACROFLAGS + AKMFLAGS_NONE = 0; + +typedef intptr_t (WINAPI *FARMACROCALLBACK)(void* Id,FARADDKEYMACROFLAGS Flags); + +struct MacroAddMacro +{ + size_t StructSize; + void* Id; + const wchar_t *SequenceText; + const wchar_t *Description; + FARKEYMACROFLAGS Flags; + INPUT_RECORD AKey; + enum FARMACROAREA Area; + FARMACROCALLBACK Callback; +}; + +enum FARMACROVARTYPE +{ + FMVT_UNKNOWN = 0, + FMVT_INTEGER = 1, + FMVT_STRING = 2, + FMVT_DOUBLE = 3, + FMVT_BOOLEAN = 4, + FMVT_BINARY = 5, + FMVT_POINTER = 6, + FMVT_NIL = 7, + FMVT_ARRAY = 8, + FMVT_PANEL = 9, +}; + +struct FarMacroValue +{ + enum FARMACROVARTYPE Type; + union + { + __int64 Integer; + __int64 Boolean; + double Double; + const wchar_t *String; + void *Pointer; + struct + { + void *Data; + size_t Size; + } Binary; + struct + { + struct FarMacroValue *Values; + size_t Count; + } Array; + } +#ifndef __cplusplus + Value +#endif + ; +#ifdef __cplusplus + FarMacroValue() { Type=FMVT_NIL; } + FarMacroValue(int v) { Type=FMVT_INTEGER; Integer=v; } + FarMacroValue(unsigned int v) { Type=FMVT_INTEGER; Integer=v; } + FarMacroValue(__int64 v) { Type=FMVT_INTEGER; Integer=v; } + FarMacroValue(unsigned __int64 v) { Type=FMVT_INTEGER; Integer=v; } + FarMacroValue(bool v) { Type=FMVT_BOOLEAN; Boolean=v; } + FarMacroValue(double v) { Type=FMVT_DOUBLE; Double=v; } + FarMacroValue(const wchar_t* v) { Type=FMVT_STRING; String=v; } + FarMacroValue(void* v) { Type=FMVT_POINTER; Pointer=v; } + FarMacroValue(const GUID& v) { Type=FMVT_BINARY; Binary.Data=&const_cast(v); Binary.Size=sizeof(GUID); } + FarMacroValue(FarMacroValue* arr,size_t count) { Type=FMVT_ARRAY; Array.Values=arr; Array.Count=count; } +#endif +}; + +struct FarMacroCall +{ + size_t StructSize; + size_t Count; + struct FarMacroValue *Values; + void (WINAPI *Callback)(void *CallbackData, struct FarMacroValue *Values, size_t Count); + void *CallbackData; +}; + +struct FarGetValue +{ + size_t StructSize; + intptr_t Type; + struct FarMacroValue Value; +}; + +struct MacroExecuteString +{ + size_t StructSize; + FARKEYMACROFLAGS Flags; + const wchar_t *SequenceText; + size_t InCount; + struct FarMacroValue *InValues; + size_t OutCount; + const struct FarMacroValue *OutValues; +}; + +struct FarMacroLoad +{ + size_t StructSize; + const wchar_t *Path; + unsigned __int64 Flags; +}; + +typedef unsigned __int64 FARSETCOLORFLAGS; +static const FARSETCOLORFLAGS + FSETCLR_REDRAW = 0x0000000000000001ULL, + FSETCLR_NONE = 0; + +struct FarSetColors +{ + size_t StructSize; + FARSETCOLORFLAGS Flags; + size_t StartIndex; + size_t ColorsCount; + struct FarColor* Colors; +}; + +enum WINDOWINFO_TYPE +{ + WTYPE_DESKTOP = 0, + WTYPE_PANELS = 1, + WTYPE_VIEWER = 2, + WTYPE_EDITOR = 3, + WTYPE_DIALOG = 4, + WTYPE_VMENU = 5, + WTYPE_HELP = 6, + WTYPE_COMBOBOX = 7, +}; + +typedef unsigned __int64 WINDOWINFO_FLAGS; +static const WINDOWINFO_FLAGS + WIF_MODIFIED = 0x0000000000000001ULL, + WIF_CURRENT = 0x0000000000000002ULL, + WIF_MODAL = 0x0000000000000004ULL, + WIF_NONE = 0; + +struct WindowInfo +{ + size_t StructSize; + intptr_t Id; + wchar_t *TypeName; + wchar_t *Name; + intptr_t TypeNameSize; + intptr_t NameSize; + intptr_t Pos; + enum WINDOWINFO_TYPE Type; + WINDOWINFO_FLAGS Flags; +}; + +struct WindowType +{ + size_t StructSize; + enum WINDOWINFO_TYPE Type; +}; + +enum TASKBARPROGRESSTATE +{ + TBPS_NOPROGRESS =0x0, + TBPS_INDETERMINATE=0x1, + TBPS_NORMAL =0x2, + TBPS_ERROR =0x4, + TBPS_PAUSED =0x8, +}; + +struct ProgressValue +{ + size_t StructSize; + unsigned __int64 Completed; + unsigned __int64 Total; +}; + +enum VIEWER_CONTROL_COMMANDS +{ + VCTL_GETINFO = 0, + VCTL_QUIT = 1, + VCTL_REDRAW = 2, + VCTL_SETKEYBAR = 3, + VCTL_SETPOSITION = 4, + VCTL_SELECT = 5, + VCTL_SETMODE = 6, + VCTL_GETFILENAME = 7, +}; + +typedef unsigned __int64 VIEWER_OPTIONS; +static const VIEWER_OPTIONS + VOPT_SAVEFILEPOSITION = 0x0000000000000001ULL, + VOPT_AUTODETECTCODEPAGE = 0x0000000000000002ULL, + VOPT_SHOWTITLEBAR = 0x0000000000000004ULL, + VOPT_SHOWKEYBAR = 0x0000000000000008ULL, + VOPT_SHOWSCROLLBAR = 0x0000000000000010ULL, + VOPT_QUICKVIEW = 0x0000000000000020ULL, + VOPT_NONE = 0; + +enum VIEWER_SETMODE_TYPES +{ + VSMT_VIEWMODE = 0, + VSMT_WRAP = 1, + VSMT_WORDWRAP = 2, +}; + +typedef unsigned __int64 VIEWER_SETMODEFLAGS_TYPES; +static const VIEWER_SETMODEFLAGS_TYPES + VSMFL_REDRAW = 0x0000000000000001ULL, + VSMFL_NONE = 0; + +struct ViewerSetMode +{ + size_t StructSize; + enum VIEWER_SETMODE_TYPES Type; + union + { + intptr_t iParam; + wchar_t *wszParam; + } +#ifndef __cplusplus + Param +#endif + ; + VIEWER_SETMODEFLAGS_TYPES Flags; +}; + +struct ViewerSelect +{ + size_t StructSize; + __int64 BlockStartPos; + __int64 BlockLen; +}; + +typedef unsigned __int64 VIEWER_SETPOS_FLAGS; +static const VIEWER_SETPOS_FLAGS + VSP_NOREDRAW = 0x0000000000000001ULL, + VSP_PERCENT = 0x0000000000000002ULL, + VSP_RELATIVE = 0x0000000000000004ULL, + VSP_NORETNEWPOS = 0x0000000000000008ULL, + VSP_NONE = 0; + +struct ViewerSetPosition +{ + size_t StructSize; + VIEWER_SETPOS_FLAGS Flags; + __int64 StartPos; + __int64 LeftPos; +}; + +typedef unsigned __int64 VIEWER_MODE_FLAGS; +static const VIEWER_MODE_FLAGS + VMF_WRAP = 0x0000000000000001ULL, + VMF_WORDWRAP = 0x0000000000000002ULL, + VMF_NONE = 0; + +enum VIEWER_MODE_TYPE +{ + VMT_TEXT =0, + VMT_HEX =1, + VMT_DUMP =2, +}; + +struct ViewerMode +{ + uintptr_t CodePage; + VIEWER_MODE_FLAGS Flags; + enum VIEWER_MODE_TYPE ViewMode; +}; + +struct ViewerInfo +{ + size_t StructSize; + intptr_t ViewerID; + intptr_t TabSize; + struct ViewerMode CurMode; + __int64 FileSize; + __int64 FilePos; + __int64 LeftPos; + VIEWER_OPTIONS Options; + intptr_t WindowSizeX; + intptr_t WindowSizeY; +}; + +enum VIEWER_EVENTS +{ + VE_READ =0, + VE_CLOSE =1, + + VE_GOTFOCUS =6, + VE_KILLFOCUS =7, +}; + + +enum EDITOR_EVENTS +{ + EE_READ =0, + EE_SAVE =1, + EE_REDRAW =2, + EE_CLOSE =3, + + EE_GOTFOCUS =6, + EE_KILLFOCUS =7, + EE_CHANGE =8, +}; + +enum DIALOG_EVENTS +{ + DE_DLGPROCINIT =0, + DE_DEFDLGPROCINIT =1, + DE_DLGPROCEND =2, +}; + +enum SYNCHRO_EVENTS +{ + SE_COMMONSYNCHRO =0, +}; + +#define EEREDRAW_ALL (void*)0 + +#define CURRENT_EDITOR -1 + +enum EDITOR_CONTROL_COMMANDS +{ + ECTL_GETSTRING = 0, + ECTL_SETSTRING = 1, + ECTL_INSERTSTRING = 2, + ECTL_DELETESTRING = 3, + ECTL_DELETECHAR = 4, + ECTL_INSERTTEXT = 5, + ECTL_GETINFO = 6, + ECTL_SETPOSITION = 7, + ECTL_SELECT = 8, + ECTL_REDRAW = 9, + ECTL_TABTOREAL = 10, + ECTL_REALTOTAB = 11, + ECTL_EXPANDTABS = 12, + ECTL_SETTITLE = 13, + ECTL_READINPUT = 14, + ECTL_PROCESSINPUT = 15, + ECTL_ADDCOLOR = 16, + ECTL_GETCOLOR = 17, + ECTL_SAVEFILE = 18, + ECTL_QUIT = 19, + ECTL_SETKEYBAR = 20, + + ECTL_SETPARAM = 22, + ECTL_GETBOOKMARKS = 23, + ECTL_DELETEBLOCK = 25, + ECTL_ADDSESSIONBOOKMARK = 26, + ECTL_PREVSESSIONBOOKMARK = 27, + ECTL_NEXTSESSIONBOOKMARK = 28, + ECTL_CLEARSESSIONBOOKMARKS = 29, + ECTL_DELETESESSIONBOOKMARK = 30, + ECTL_GETSESSIONBOOKMARKS = 31, + ECTL_UNDOREDO = 32, + ECTL_GETFILENAME = 33, + ECTL_DELCOLOR = 34, + ECTL_SUBSCRIBECHANGEEVENT = 36, + ECTL_UNSUBSCRIBECHANGEEVENT = 37, + ECTL_GETTITLE = 38, +}; + +enum EDITOR_SETPARAMETER_TYPES +{ + ESPT_TABSIZE = 0, + ESPT_EXPANDTABS = 1, + ESPT_AUTOINDENT = 2, + ESPT_CURSORBEYONDEOL = 3, + ESPT_CHARCODEBASE = 4, + ESPT_CODEPAGE = 5, + ESPT_SAVEFILEPOSITION = 6, + ESPT_LOCKMODE = 7, + ESPT_SETWORDDIV = 8, + ESPT_GETWORDDIV = 9, + ESPT_SHOWWHITESPACE = 10, + ESPT_SETBOM = 11, +}; + + + +struct EditorSetParameter +{ + size_t StructSize; + enum EDITOR_SETPARAMETER_TYPES Type; + union + { + intptr_t iParam; + wchar_t *wszParam; + intptr_t Reserved; + } +#ifndef __cplusplus + Param +#endif + ; + unsigned __int64 Flags; + size_t Size; +}; + + +enum EDITOR_UNDOREDO_COMMANDS +{ + EUR_BEGIN = 0, + EUR_END = 1, + EUR_UNDO = 2, + EUR_REDO = 3, +}; + + +struct EditorUndoRedo +{ + size_t StructSize; + enum EDITOR_UNDOREDO_COMMANDS Command; +}; + +struct EditorGetString +{ + size_t StructSize; + intptr_t StringNumber; + intptr_t StringLength; + const wchar_t *StringText; + const wchar_t *StringEOL; + intptr_t SelStart; + intptr_t SelEnd; +}; + + +struct EditorSetString +{ + size_t StructSize; + intptr_t StringNumber; + intptr_t StringLength; + const wchar_t *StringText; + const wchar_t *StringEOL; +}; + +enum EXPAND_TABS +{ + EXPAND_NOTABS = 0, + EXPAND_ALLTABS = 1, + EXPAND_NEWTABS = 2, +}; + + +enum EDITOR_OPTIONS +{ + EOPT_EXPANDALLTABS = 0x00000001, + EOPT_PERSISTENTBLOCKS = 0x00000002, + EOPT_DELREMOVESBLOCKS = 0x00000004, + EOPT_AUTOINDENT = 0x00000008, + EOPT_SAVEFILEPOSITION = 0x00000010, + EOPT_AUTODETECTCODEPAGE= 0x00000020, + EOPT_CURSORBEYONDEOL = 0x00000040, + EOPT_EXPANDONLYNEWTABS = 0x00000080, + EOPT_SHOWWHITESPACE = 0x00000100, + EOPT_BOM = 0x00000200, + EOPT_SHOWLINEBREAK = 0x00000400, + EOPT_SHOWTITLEBAR = 0x00000800, + EOPT_SHOWKEYBAR = 0x00001000, + EOPT_SHOWSCROLLBAR = 0x00002000, +}; + + +enum EDITOR_BLOCK_TYPES +{ + BTYPE_NONE = 0, + BTYPE_STREAM = 1, + BTYPE_COLUMN = 2, +}; + +enum EDITOR_CURRENTSTATE +{ + ECSTATE_MODIFIED = 0x00000001, + ECSTATE_SAVED = 0x00000002, + ECSTATE_LOCKED = 0x00000004, +}; + + +struct EditorInfo +{ + size_t StructSize; + intptr_t EditorID; + intptr_t WindowSizeX; + intptr_t WindowSizeY; + intptr_t TotalLines; + intptr_t CurLine; + intptr_t CurPos; + intptr_t CurTabPos; + intptr_t TopScreenLine; + intptr_t LeftPos; + intptr_t Overtype; + intptr_t BlockType; + intptr_t BlockStartLine; + uintptr_t Options; + intptr_t TabSize; + size_t BookmarkCount; + size_t SessionBookmarkCount; + uintptr_t CurState; + uintptr_t CodePage; +}; + +struct EditorBookmarks +{ + size_t StructSize; + size_t Size; + size_t Count; + intptr_t *Line; + intptr_t *Cursor; + intptr_t *ScreenLine; + intptr_t *LeftPos; +}; + +struct EditorSetPosition +{ + size_t StructSize; + intptr_t CurLine; + intptr_t CurPos; + intptr_t CurTabPos; + intptr_t TopScreenLine; + intptr_t LeftPos; + intptr_t Overtype; +}; + + +struct EditorSelect +{ + size_t StructSize; + intptr_t BlockType; + intptr_t BlockStartLine; + intptr_t BlockStartPos; + intptr_t BlockWidth; + intptr_t BlockHeight; +}; + + +struct EditorConvertPos +{ + size_t StructSize; + intptr_t StringNumber; + intptr_t SrcPos; + intptr_t DestPos; +}; + +typedef unsigned __int64 EDITORCOLORFLAGS; +static const EDITORCOLORFLAGS + ECF_TABMARKFIRST = 0x0000000000000001ULL, + ECF_TABMARKCURRENT = 0x0000000000000002ULL, + ECF_AUTODELETE = 0x0000000000000004ULL, + ECF_NONE = 0; + +struct EditorColor +{ + size_t StructSize; + intptr_t StringNumber; + intptr_t ColorItem; + intptr_t StartPos; + intptr_t EndPos; + uintptr_t Priority; + EDITORCOLORFLAGS Flags; + struct FarColor Color; + GUID Owner; +}; + +struct EditorDeleteColor +{ + size_t StructSize; + GUID Owner; + intptr_t StringNumber; + intptr_t StartPos; +}; + +#define EDITOR_COLOR_NORMAL_PRIORITY 0x80000000U + +struct EditorSaveFile +{ + size_t StructSize; + const wchar_t *FileName; + const wchar_t *FileEOL; + uintptr_t CodePage; +}; + +enum EDITOR_CHANGETYPE +{ + ECTYPE_CHANGED = 0, + ECTYPE_ADDED = 1, + ECTYPE_DELETED = 2, +}; + +struct EditorChange +{ + size_t StructSize; + enum EDITOR_CHANGETYPE Type; + intptr_t StringNumber; +}; + +struct EditorSubscribeChangeEvent +{ + size_t StructSize; + GUID PluginId; +}; + +typedef unsigned __int64 INPUTBOXFLAGS; +static const INPUTBOXFLAGS + FIB_ENABLEEMPTY = 0x0000000000000001ULL, + FIB_PASSWORD = 0x0000000000000002ULL, + FIB_EXPANDENV = 0x0000000000000004ULL, + FIB_NOUSELASTHISTORY = 0x0000000000000008ULL, + FIB_BUTTONS = 0x0000000000000010ULL, + FIB_NOAMPERSAND = 0x0000000000000020ULL, + FIB_EDITPATH = 0x0000000000000040ULL, + FIB_EDITPATHEXEC = 0x0000000000000080ULL, + FIB_NONE = 0; + +typedef intptr_t (WINAPI *FARAPIINPUTBOX)( + const GUID* PluginId, + const GUID* Id, + const wchar_t *Title, + const wchar_t *SubTitle, + const wchar_t *HistoryName, + const wchar_t *SrcText, + wchar_t *DestText, + size_t DestSize, + const wchar_t *HelpTopic, + INPUTBOXFLAGS Flags +); + +enum FAR_PLUGINS_CONTROL_COMMANDS +{ + PCTL_LOADPLUGIN = 0, + PCTL_UNLOADPLUGIN = 1, + PCTL_FORCEDLOADPLUGIN = 2, + PCTL_FINDPLUGIN = 3, + PCTL_GETPLUGININFORMATION = 4, + PCTL_GETPLUGINS = 5, +}; + +enum FAR_PLUGIN_LOAD_TYPE +{ + PLT_PATH = 0, +}; + +enum FAR_PLUGIN_FIND_TYPE +{ + PFM_GUID = 0, + PFM_MODULENAME = 1, +}; + +typedef unsigned __int64 FAR_PLUGIN_FLAGS; +static const FAR_PLUGIN_FLAGS + FPF_LOADED = 0x0000000000000001ULL, + FPF_ANSI = 0x1000000000000000ULL, + FPF_NONE = 0; + +enum FAR_FILE_FILTER_CONTROL_COMMANDS +{ + FFCTL_CREATEFILEFILTER = 0, + FFCTL_FREEFILEFILTER = 1, + FFCTL_OPENFILTERSMENU = 2, + FFCTL_STARTINGTOFILTER = 3, + FFCTL_ISFILEINFILTER = 4, +}; + +enum FAR_FILE_FILTER_TYPE +{ + FFT_PANEL = 0, + FFT_FINDFILE = 1, + FFT_COPY = 2, + FFT_SELECT = 3, + FFT_CUSTOM = 4, +}; + +enum FAR_REGEXP_CONTROL_COMMANDS +{ + RECTL_CREATE = 0, + RECTL_FREE = 1, + RECTL_COMPILE = 2, + RECTL_OPTIMIZE = 3, + RECTL_MATCHEX = 4, + RECTL_SEARCHEX = 5, + RECTL_BRACKETSCOUNT = 6, +}; + +struct RegExpMatch +{ + intptr_t start,end; +}; + +struct RegExpSearch +{ + const wchar_t* Text; + intptr_t Position; + intptr_t Length; + struct RegExpMatch* Match; + intptr_t Count; + void* Reserved; +}; + +enum FAR_SETTINGS_CONTROL_COMMANDS +{ + SCTL_CREATE = 0, + SCTL_FREE = 1, + SCTL_SET = 2, + SCTL_GET = 3, + SCTL_ENUM = 4, + SCTL_DELETE = 5, + SCTL_CREATESUBKEY = 6, + SCTL_OPENSUBKEY = 7, +}; + +enum FARSETTINGSTYPES +{ + FST_UNKNOWN = 0, + FST_SUBKEY = 1, + FST_QWORD = 2, + FST_STRING = 3, + FST_DATA = 4, +}; + +enum FARSETTINGS_SUBFOLDERS +{ + FSSF_ROOT = 0, + FSSF_HISTORY_CMD = 1, + FSSF_HISTORY_FOLDER = 2, + FSSF_HISTORY_VIEW = 3, + FSSF_HISTORY_EDIT = 4, + FSSF_HISTORY_EXTERNAL = 5, + FSSF_FOLDERSHORTCUT_0 = 6, + FSSF_FOLDERSHORTCUT_1 = 7, + FSSF_FOLDERSHORTCUT_2 = 8, + FSSF_FOLDERSHORTCUT_3 = 9, + FSSF_FOLDERSHORTCUT_4 = 10, + FSSF_FOLDERSHORTCUT_5 = 11, + FSSF_FOLDERSHORTCUT_6 = 12, + FSSF_FOLDERSHORTCUT_7 = 13, + FSSF_FOLDERSHORTCUT_8 = 14, + FSSF_FOLDERSHORTCUT_9 = 15, + FSSF_CONFIRMATIONS = 16, + FSSF_SYSTEM = 17, + FSSF_PANEL = 18, + FSSF_EDITOR = 19, + FSSF_SCREEN = 20, + FSSF_DIALOG = 21, + FSSF_INTERFACE = 22, + FSSF_PANELLAYOUT = 23, +}; + +enum FAR_PLUGIN_SETTINGS_LOCATION +{ + PSL_ROAMING = 0, + PSL_LOCAL = 1, +}; + +struct FarSettingsCreate +{ + size_t StructSize; + GUID Guid; + HANDLE Handle; +}; + +struct FarSettingsItem +{ + size_t StructSize; + size_t Root; + const wchar_t* Name; + enum FARSETTINGSTYPES Type; + union + { + unsigned __int64 Number; + const wchar_t* String; + struct + { + size_t Size; + const void* Data; + } Data; + } +#ifndef __cplusplus + Value +#endif + ; +}; + +struct FarSettingsName +{ + const wchar_t* Name; + enum FARSETTINGSTYPES Type; +}; + +struct FarSettingsHistory +{ + const wchar_t* Name; + const wchar_t* Param; + GUID PluginId; + const wchar_t* File; + FILETIME Time; + BOOL Lock; +}; + +struct FarSettingsEnum +{ + size_t StructSize; + size_t Root; + size_t Count; + union + { + const struct FarSettingsName* Items; + const struct FarSettingsHistory* Histories; + } +#ifndef __cplusplus + Value +#endif + ; +}; + +struct FarSettingsValue +{ + size_t StructSize; + size_t Root; + const wchar_t* Value; +}; + +typedef intptr_t (WINAPI *FARAPIPANELCONTROL)( + HANDLE hPanel, + enum FILE_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t(WINAPI *FARAPIADVCONTROL)( + const GUID* PluginId, + enum ADVANCED_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIVIEWERCONTROL)( + intptr_t ViewerID, + enum VIEWER_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIEDITORCONTROL)( + intptr_t EditorID, + enum EDITOR_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIMACROCONTROL)( + const GUID* PluginId, + enum FAR_MACRO_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIPLUGINSCONTROL)( + HANDLE hHandle, + enum FAR_PLUGINS_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIFILEFILTERCONTROL)( + HANDLE hHandle, + enum FAR_FILE_FILTER_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPIREGEXPCONTROL)( + HANDLE hHandle, + enum FAR_REGEXP_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +typedef intptr_t (WINAPI *FARAPISETTINGSCONTROL)( + HANDLE hHandle, + enum FAR_SETTINGS_CONTROL_COMMANDS Command, + intptr_t Param1, + void* Param2 +); + +enum FARCLIPBOARD_TYPE +{ + FCT_ANY=0, + FCT_STREAM=1, + FCT_COLUMN=2 +}; + +// +typedef int (WINAPIV *FARSTDSPRINTF)(wchar_t *Buffer,const wchar_t *Format,...); +typedef int (WINAPIV *FARSTDSNPRINTF)(wchar_t *Buffer,size_t Sizebuf,const wchar_t *Format,...); +typedef int (WINAPIV *FARSTDSSCANF)(const wchar_t *Buffer, const wchar_t *Format,...); +// +typedef void (WINAPI *FARSTDQSORT)(void *base, size_t nelem, size_t width, int (WINAPI *fcmp)(const void *, const void *,void *userparam),void *userparam); +typedef void *(WINAPI *FARSTDBSEARCH)(const void *key, const void *base, size_t nelem, size_t width, int (WINAPI *fcmp)(const void *, const void *,void *userparam),void *userparam); +typedef size_t (WINAPI *FARSTDGETFILEOWNER)(const wchar_t *Computer,const wchar_t *Name,wchar_t *Owner,size_t Size); +typedef size_t (WINAPI *FARSTDGETNUMBEROFLINKS)(const wchar_t *Name); +typedef int (WINAPI *FARSTDATOI)(const wchar_t *s); +typedef __int64 (WINAPI *FARSTDATOI64)(const wchar_t *s); +typedef wchar_t *(WINAPI *FARSTDITOA64)(__int64 value, wchar_t *Str, int radix); +typedef wchar_t *(WINAPI *FARSTDITOA)(int value, wchar_t *Str, int radix); +typedef wchar_t *(WINAPI *FARSTDLTRIM)(wchar_t *Str); +typedef wchar_t *(WINAPI *FARSTDRTRIM)(wchar_t *Str); +typedef wchar_t *(WINAPI *FARSTDTRIM)(wchar_t *Str); +typedef wchar_t *(WINAPI *FARSTDTRUNCSTR)(wchar_t *Str,intptr_t MaxLength); +typedef wchar_t *(WINAPI *FARSTDTRUNCPATHSTR)(wchar_t *Str,intptr_t MaxLength); +typedef wchar_t *(WINAPI *FARSTDQUOTESPACEONLY)(wchar_t *Str); +typedef const wchar_t*(WINAPI *FARSTDPOINTTONAME)(const wchar_t *Path); +typedef BOOL (WINAPI *FARSTDADDENDSLASH)(wchar_t *Path); +typedef BOOL (WINAPI *FARSTDCOPYTOCLIPBOARD)(enum FARCLIPBOARD_TYPE Type, const wchar_t *Data); +typedef size_t (WINAPI *FARSTDPASTEFROMCLIPBOARD)(enum FARCLIPBOARD_TYPE Type, wchar_t *Data, size_t Size); +typedef int (WINAPI *FARSTDLOCALISLOWER)(wchar_t Ch); +typedef int (WINAPI *FARSTDLOCALISUPPER)(wchar_t Ch); +typedef int (WINAPI *FARSTDLOCALISALPHA)(wchar_t Ch); +typedef int (WINAPI *FARSTDLOCALISALPHANUM)(wchar_t Ch); +typedef wchar_t (WINAPI *FARSTDLOCALUPPER)(wchar_t LowerChar); +typedef wchar_t (WINAPI *FARSTDLOCALLOWER)(wchar_t UpperChar); +typedef void (WINAPI *FARSTDLOCALUPPERBUF)(wchar_t *Buf,intptr_t Length); +typedef void (WINAPI *FARSTDLOCALLOWERBUF)(wchar_t *Buf,intptr_t Length); +typedef void (WINAPI *FARSTDLOCALSTRUPR)(wchar_t *s1); +typedef void (WINAPI *FARSTDLOCALSTRLWR)(wchar_t *s1); +typedef int (WINAPI *FARSTDLOCALSTRICMP)(const wchar_t *s1,const wchar_t *s2); +typedef int (WINAPI *FARSTDLOCALSTRNICMP)(const wchar_t *s1,const wchar_t *s2,intptr_t n); +typedef unsigned __int64 (WINAPI *FARSTDFARCLOCK)(); + +typedef unsigned __int64 PROCESSNAME_FLAGS; +static const PROCESSNAME_FLAGS + // 0xFFFF - length + // 0xFF0000 - mode + // 0xFFFFFFFFFF000000 - flags + PN_CMPNAME = 0x0000000000000000ULL, + PN_CMPNAMELIST = 0x0000000000010000ULL, + PN_GENERATENAME = 0x0000000000020000ULL, + PN_CHECKMASK = 0x0000000000030000ULL, + + PN_SKIPPATH = 0x0000000001000000ULL, + PN_SHOWERRORMESSAGE = 0x0000000002000000ULL, + PN_NONE = 0; + +typedef size_t (WINAPI *FARSTDPROCESSNAME)(const wchar_t *param1, wchar_t *param2, size_t size, PROCESSNAME_FLAGS flags); + +typedef void (WINAPI *FARSTDUNQUOTE)(wchar_t *Str); + +typedef unsigned __int64 XLAT_FLAGS; +static const XLAT_FLAGS + XLAT_SWITCHKEYBLAYOUT = 0x0000000000000001ULL, + XLAT_SWITCHKEYBBEEP = 0x0000000000000002ULL, + XLAT_USEKEYBLAYOUTNAME = 0x0000000000000004ULL, + XLAT_CONVERTALLCMDLINE = 0x0000000000010000ULL, + XLAT_NONE = 0; + +typedef size_t (WINAPI *FARSTDINPUTRECORDTOKEYNAME)(const INPUT_RECORD* Key, wchar_t *KeyText, size_t Size); + +typedef wchar_t*(WINAPI *FARSTDXLAT)(wchar_t *Line,intptr_t StartPos,intptr_t EndPos,XLAT_FLAGS Flags); + +typedef BOOL (WINAPI *FARSTDKEYNAMETOINPUTRECORD)(const wchar_t *Name,INPUT_RECORD* Key); + +typedef int (WINAPI *FRSUSERFUNC)( + const struct PluginPanelItem *FData, + const wchar_t *FullName, + void *Param +); + +typedef unsigned __int64 FRSMODE; +static const FRSMODE + FRS_RETUPDIR = 0x0000000000000001ULL, + FRS_RECUR = 0x0000000000000002ULL, + FRS_SCANSYMLINK = 0x0000000000000004ULL, + FRS_NONE = 0; + +typedef void (WINAPI *FARSTDRECURSIVESEARCH)(const wchar_t *InitDir,const wchar_t *Mask,FRSUSERFUNC Func,FRSMODE Flags,void *Param); +typedef size_t (WINAPI *FARSTDMKTEMP)(wchar_t *Dest, size_t DestSize, const wchar_t *Prefix); +typedef size_t (WINAPI *FARSTDGETPATHROOT)(const wchar_t *Path,wchar_t *Root, size_t DestSize); + +enum LINK_TYPE +{ + LINK_HARDLINK = 1, + LINK_JUNCTION = 2, + LINK_VOLMOUNT = 3, + LINK_SYMLINKFILE = 4, + LINK_SYMLINKDIR = 5, + LINK_SYMLINK = 6, +}; + +typedef unsigned __int64 MKLINK_FLAGS; +static const MKLINK_FLAGS + MLF_SHOWERRMSG = 0x0000000000010000ULL, + MLF_DONOTUPDATEPANEL = 0x0000000000020000ULL, + MLF_HOLDTARGET = 0x0000000000040000ULL, + MLF_NONE = 0; + +typedef BOOL (WINAPI *FARSTDMKLINK)(const wchar_t *Src,const wchar_t *Dest,enum LINK_TYPE Type, MKLINK_FLAGS Flags); +typedef size_t (WINAPI *FARGETREPARSEPOINTINFO)(const wchar_t *Src, wchar_t *Dest, size_t DestSize); + +enum CONVERTPATHMODES +{ + CPM_FULL = 0, + CPM_REAL = 1, + CPM_NATIVE = 2, +}; + +typedef size_t (WINAPI *FARCONVERTPATH)(enum CONVERTPATHMODES Mode, const wchar_t *Src, wchar_t *Dest, size_t DestSize); + +typedef size_t (WINAPI *FARGETCURRENTDIRECTORY)(size_t Size, wchar_t* Buffer); + +typedef unsigned __int64 FARFORMATFILESIZEFLAGS; +static const FARFORMATFILESIZEFLAGS + FFFS_COMMAS = 0x0100000000000000LL, + FFFS_FLOATSIZE = 0x0200000000000000LL, + FFFS_SHOWBYTESINDEX = 0x0400000000000000LL, + FFFS_ECONOMIC = 0x0800000000000000LL, + FFFS_THOUSAND = 0x1000000000000000LL, + FFFS_MINSIZEINDEX = 0x2000000000000000LL, + FFFS_MINSIZEINDEX_MASK = 0x0000000000000003LL, + FFFS_NONE = 0; + +typedef size_t (WINAPI *FARFORMATFILESIZE)(unsigned __int64 Size, intptr_t Width, FARFORMATFILESIZEFLAGS Flags, wchar_t *Dest, size_t DestSize); + +typedef struct FarStandardFunctions +{ + size_t StructSize; + + FARSTDATOI atoi; + FARSTDATOI64 atoi64; + FARSTDITOA itoa; + FARSTDITOA64 itoa64; + // + FARSTDSPRINTF sprintf; + FARSTDSSCANF sscanf; + // + FARSTDQSORT qsort; + FARSTDBSEARCH bsearch; + // + FARSTDSNPRINTF snprintf; + // + + FARSTDLOCALISLOWER LIsLower; + FARSTDLOCALISUPPER LIsUpper; + FARSTDLOCALISALPHA LIsAlpha; + FARSTDLOCALISALPHANUM LIsAlphanum; + FARSTDLOCALUPPER LUpper; + FARSTDLOCALLOWER LLower; + FARSTDLOCALUPPERBUF LUpperBuf; + FARSTDLOCALLOWERBUF LLowerBuf; + FARSTDLOCALSTRUPR LStrupr; + FARSTDLOCALSTRLWR LStrlwr; + FARSTDLOCALSTRICMP LStricmp; + FARSTDLOCALSTRNICMP LStrnicmp; + + FARSTDUNQUOTE Unquote; + FARSTDLTRIM LTrim; + FARSTDRTRIM RTrim; + FARSTDTRIM Trim; + FARSTDTRUNCSTR TruncStr; + FARSTDTRUNCPATHSTR TruncPathStr; + FARSTDQUOTESPACEONLY QuoteSpaceOnly; + FARSTDPOINTTONAME PointToName; + FARSTDGETPATHROOT GetPathRoot; + FARSTDADDENDSLASH AddEndSlash; + FARSTDCOPYTOCLIPBOARD CopyToClipboard; + FARSTDPASTEFROMCLIPBOARD PasteFromClipboard; + FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName; + FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord; + FARSTDXLAT XLat; + FARSTDGETFILEOWNER GetFileOwner; + FARSTDGETNUMBEROFLINKS GetNumberOfLinks; + FARSTDRECURSIVESEARCH FarRecursiveSearch; + FARSTDMKTEMP MkTemp; + FARSTDPROCESSNAME ProcessName; + FARSTDMKLINK MkLink; + FARCONVERTPATH ConvertPath; + FARGETREPARSEPOINTINFO GetReparsePointInfo; + FARGETCURRENTDIRECTORY GetCurrentDirectory; + FARFORMATFILESIZE FormatFileSize; + FARSTDFARCLOCK FarClock; +} FARSTANDARDFUNCTIONS; + +struct PluginStartupInfo +{ + size_t StructSize; + const wchar_t *ModuleName; + FARAPIMENU Menu; + FARAPIMESSAGE Message; + FARAPIGETMSG GetMsg; + FARAPIPANELCONTROL PanelControl; + FARAPISAVESCREEN SaveScreen; + FARAPIRESTORESCREEN RestoreScreen; + FARAPIGETDIRLIST GetDirList; + FARAPIGETPLUGINDIRLIST GetPluginDirList; + FARAPIFREEDIRLIST FreeDirList; + FARAPIFREEPLUGINDIRLIST FreePluginDirList; + FARAPIVIEWER Viewer; + FARAPIEDITOR Editor; + FARAPITEXT Text; + FARAPIEDITORCONTROL EditorControl; + + FARSTANDARDFUNCTIONS *FSF; + + FARAPISHOWHELP ShowHelp; + FARAPIADVCONTROL AdvControl; + FARAPIINPUTBOX InputBox; + FARAPICOLORDIALOG ColorDialog; + FARAPIDIALOGINIT DialogInit; + FARAPIDIALOGRUN DialogRun; + FARAPIDIALOGFREE DialogFree; + + FARAPISENDDLGMESSAGE SendDlgMessage; + FARAPIDEFDLGPROC DefDlgProc; + FARAPIVIEWERCONTROL ViewerControl; + FARAPIPLUGINSCONTROL PluginsControl; + FARAPIFILEFILTERCONTROL FileFilterControl; + FARAPIREGEXPCONTROL RegExpControl; + FARAPIMACROCONTROL MacroControl; + FARAPISETTINGSCONTROL SettingsControl; + void *Private; + void* Instance; +}; + +typedef HANDLE (WINAPI *FARAPICREATEFILE)(const wchar_t *Object,DWORD DesiredAccess,DWORD ShareMode,LPSECURITY_ATTRIBUTES SecurityAttributes,DWORD CreationDistribution,DWORD FlagsAndAttributes,HANDLE TemplateFile); +typedef DWORD (WINAPI *FARAPIGETFILEATTRIBUTES)(const wchar_t *FileName); +typedef BOOL (WINAPI *FARAPISETFILEATTRIBUTES)(const wchar_t *FileName,DWORD dwFileAttributes); +typedef BOOL (WINAPI *FARAPIMOVEFILEEX)(const wchar_t *ExistingFileName,const wchar_t *NewFileName,DWORD dwFlags); +typedef BOOL (WINAPI *FARAPIDELETEFILE)(const wchar_t *FileName); +typedef BOOL (WINAPI *FARAPIREMOVEDIRECTORY)(const wchar_t *DirName); +typedef BOOL (WINAPI *FARAPICREATEDIRECTORY)(const wchar_t *PathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes); + +struct ArclitePrivateInfo +{ + size_t StructSize; + FARAPICREATEFILE CreateFile; + FARAPIGETFILEATTRIBUTES GetFileAttributes; + FARAPISETFILEATTRIBUTES SetFileAttributes; + FARAPIMOVEFILEEX MoveFileEx; + FARAPIDELETEFILE DeleteFile; + FARAPIREMOVEDIRECTORY RemoveDirectory; + FARAPICREATEDIRECTORY CreateDirectory; +}; + +struct NetBoxPrivateInfo +{ + size_t StructSize; + FARAPICREATEFILE CreateFile; + FARAPIGETFILEATTRIBUTES GetFileAttributes; + FARAPISETFILEATTRIBUTES SetFileAttributes; + FARAPIMOVEFILEEX MoveFileEx; + FARAPIDELETEFILE DeleteFile; + FARAPIREMOVEDIRECTORY RemoveDirectory; + FARAPICREATEDIRECTORY CreateDirectory; +}; + +struct MacroPluginReturn +{ + intptr_t ReturnType; + size_t Count; + struct FarMacroValue *Values; +}; + +typedef intptr_t (WINAPI *FARAPICALLFAR)(intptr_t CheckCode, struct FarMacroCall* Data); + +struct MacroPrivateInfo +{ + size_t StructSize; + FARAPICALLFAR CallFar; +}; + +typedef unsigned __int64 PLUGIN_FLAGS; +static const PLUGIN_FLAGS + PF_PRELOAD = 0x0000000000000001ULL, + PF_DISABLEPANELS = 0x0000000000000002ULL, + PF_EDITOR = 0x0000000000000004ULL, + PF_VIEWER = 0x0000000000000008ULL, + PF_FULLCMDLINE = 0x0000000000000010ULL, + PF_DIALOG = 0x0000000000000020ULL, + PF_NONE = 0; + +struct PluginMenuItem +{ + const GUID *Guids; + const wchar_t * const *Strings; + size_t Count; +}; + +enum VERSION_STAGE +{ + VS_RELEASE = 0, + VS_ALPHA = 1, + VS_BETA = 2, + VS_RC = 3, +}; + +struct VersionInfo +{ + DWORD Major; + DWORD Minor; + DWORD Revision; + DWORD Build; + enum VERSION_STAGE Stage; +}; + +static __inline BOOL CheckVersion(const struct VersionInfo* Current, const struct VersionInfo* Required) +{ + return (Current->Major > Required->Major) || (Current->Major == Required->Major && Current->Minor > Required->Minor) || (Current->Major == Required->Major && Current->Minor == Required->Minor && Current->Revision > Required->Revision) || (Current->Major == Required->Major && Current->Minor == Required->Minor && Current->Revision == Required->Revision && Current->Build >= Required->Build); +} + +static __inline struct VersionInfo MAKEFARVERSION(DWORD Major, DWORD Minor, DWORD Revision, DWORD Build, enum VERSION_STAGE Stage) +{ + struct VersionInfo Info = {Major, Minor, Revision, Build, Stage}; + return Info; +} + +#define FARMANAGERVERSION MAKEFARVERSION(FARMANAGERVERSION_MAJOR,FARMANAGERVERSION_MINOR, FARMANAGERVERSION_REVISION, FARMANAGERVERSION_BUILD, FARMANAGERVERSION_STAGE) + +struct GlobalInfo +{ + size_t StructSize; + struct VersionInfo MinFarVersion; + struct VersionInfo Version; + GUID Guid; + const wchar_t *Title; + const wchar_t *Description; + const wchar_t *Author; + void* Instance; +}; + +struct PluginInfo +{ + size_t StructSize; + PLUGIN_FLAGS Flags; + struct PluginMenuItem DiskMenu; + struct PluginMenuItem PluginMenu; + struct PluginMenuItem PluginConfig; + const wchar_t *CommandPrefix; + void* Instance; +}; + +struct FarGetPluginInformation +{ + size_t StructSize; + const wchar_t *ModuleName; + FAR_PLUGIN_FLAGS Flags; + struct PluginInfo *PInfo; + struct GlobalInfo *GInfo; +}; + +typedef unsigned __int64 INFOPANELLINE_FLAGS; +static const INFOPANELLINE_FLAGS + IPLFLAGS_SEPARATOR = 0x0000000000000001ULL, + IPLFLAGS_NONE = 0; + +struct InfoPanelLine +{ + const wchar_t *Text; + const wchar_t *Data; + INFOPANELLINE_FLAGS Flags; +}; + +typedef unsigned __int64 PANELMODE_FLAGS; +static const PANELMODE_FLAGS + PMFLAGS_FULLSCREEN = 0x0000000000000001ULL, + PMFLAGS_DETAILEDSTATUS = 0x0000000000000002ULL, + PMFLAGS_ALIGNEXTENSIONS = 0x0000000000000004ULL, + PMFLAGS_CASECONVERSION = 0x0000000000000008ULL, + PMFLAGS_NONE = 0; + +struct PanelMode +{ + const wchar_t *ColumnTypes; + const wchar_t *ColumnWidths; + const wchar_t * const *ColumnTitles; + const wchar_t *StatusColumnTypes; + const wchar_t *StatusColumnWidths; + PANELMODE_FLAGS Flags; +}; + +typedef unsigned __int64 OPENPANELINFO_FLAGS; +static const OPENPANELINFO_FLAGS + OPIF_DISABLEFILTER = 0x0000000000000001ULL, + OPIF_DISABLESORTGROUPS = 0x0000000000000002ULL, + OPIF_DISABLEHIGHLIGHTING = 0x0000000000000004ULL, + OPIF_ADDDOTS = 0x0000000000000008ULL, + OPIF_RAWSELECTION = 0x0000000000000010ULL, + OPIF_REALNAMES = 0x0000000000000020ULL, + OPIF_SHOWNAMESONLY = 0x0000000000000040ULL, + OPIF_SHOWRIGHTALIGNNAMES = 0x0000000000000080ULL, + OPIF_SHOWPRESERVECASE = 0x0000000000000100ULL, + OPIF_COMPAREFATTIME = 0x0000000000000400ULL, + OPIF_EXTERNALGET = 0x0000000000000800ULL, + OPIF_EXTERNALPUT = 0x0000000000001000ULL, + OPIF_EXTERNALDELETE = 0x0000000000002000ULL, + OPIF_EXTERNALMKDIR = 0x0000000000004000ULL, + OPIF_USEATTRHIGHLIGHTING = 0x0000000000008000ULL, + OPIF_USECRC32 = 0x0000000000010000ULL, + OPIF_USEFREESIZE = 0x0000000000020000ULL, + OPIF_SHORTCUT = 0x0000000000040000ULL, + OPIF_NONE = 0; + +struct KeyBarLabel +{ + struct FarKey Key; + const wchar_t *Text; + const wchar_t *LongText; +}; + +struct KeyBarTitles +{ + size_t CountLabels; + struct KeyBarLabel *Labels; +}; + +struct FarSetKeyBarTitles +{ + size_t StructSize; + struct KeyBarTitles *Titles; +}; + +typedef unsigned __int64 OPERATION_MODES; +static const OPERATION_MODES + OPM_SILENT =0x0000000000000001ULL, + OPM_FIND =0x0000000000000002ULL, + OPM_VIEW =0x0000000000000004ULL, + OPM_EDIT =0x0000000000000008ULL, + OPM_TOPLEVEL =0x0000000000000010ULL, + OPM_DESCR =0x0000000000000020ULL, + OPM_QUICKVIEW =0x0000000000000040ULL, + OPM_PGDN =0x0000000000000080ULL, + OPM_COMMANDS =0x0000000000000100ULL, + OPM_NONE =0; + +struct OpenPanelInfo +{ + size_t StructSize; + HANDLE hPanel; + OPENPANELINFO_FLAGS Flags; + const wchar_t *HostFile; + const wchar_t *CurDir; + const wchar_t *Format; + const wchar_t *PanelTitle; + const struct InfoPanelLine *InfoLines; + size_t InfoLinesNumber; + const wchar_t * const *DescrFiles; + size_t DescrFilesNumber; + const struct PanelMode *PanelModesArray; + size_t PanelModesNumber; + intptr_t StartPanelMode; + enum OPENPANELINFO_SORTMODES StartSortMode; + intptr_t StartSortOrder; + const struct KeyBarTitles *KeyBar; + const wchar_t *ShortcutData; + unsigned __int64 FreeSize; + struct UserDataItem UserData; + void* Instance; +}; + +struct AnalyseInfo +{ + size_t StructSize; + const wchar_t *FileName; + void *Buffer; + size_t BufferSize; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct OpenAnalyseInfo +{ + size_t StructSize; + struct AnalyseInfo* Info; + HANDLE Handle; +}; + +struct OpenMacroInfo +{ + size_t StructSize; + size_t Count; + struct FarMacroValue *Values; +}; + +typedef unsigned __int64 FAROPENSHORTCUTFLAGS; +static const FAROPENSHORTCUTFLAGS + FOSF_ACTIVE = 0x0000000000000001ULL, + FOSF_NONE = 0; + +struct OpenShortcutInfo +{ + size_t StructSize; + const wchar_t *HostFile; + const wchar_t *ShortcutData; + FAROPENSHORTCUTFLAGS Flags; +}; + +struct OpenCommandLineInfo +{ + size_t StructSize; + const wchar_t *CommandLine; +}; + +enum OPENFROM +{ + OPEN_LEFTDISKMENU = 0, + OPEN_PLUGINSMENU = 1, + OPEN_FINDLIST = 2, + OPEN_SHORTCUT = 3, + OPEN_COMMANDLINE = 4, + OPEN_EDITOR = 5, + OPEN_VIEWER = 6, + OPEN_FILEPANEL = 7, + OPEN_DIALOG = 8, + OPEN_ANALYSE = 9, + OPEN_RIGHTDISKMENU = 10, + OPEN_FROMMACRO = 11, + OPEN_LUAMACRO = 100, +}; + +enum MACROCALLTYPE +{ + MCT_MACROPARSE = 0, + MCT_LOADMACROS = 1, + MCT_ENUMMACROS = 2, + MCT_WRITEMACROS = 3, + MCT_GETMACRO = 4, + MCT_RECORDEDMACRO = 5, + MCT_DELMACRO = 6, + MCT_RUNSTARTMACRO = 7, + MCT_EXECSTRING = 8, + MCT_PANELSORT = 9, + MCT_GETCUSTOMSORTMODES = 10, + MCT_ADDMACRO = 11, + MCT_KEYMACRO = 12, + MCT_CANPANELSORT = 13, +}; + +enum MACROPLUGINRETURNTYPE +{ + MPRT_NORMALFINISH = 0, + MPRT_ERRORFINISH = 1, + MPRT_ERRORPARSE = 2, + MPRT_KEYS = 3, + MPRT_PRINT = 4, + MPRT_PLUGINCALL = 5, + MPRT_PLUGINMENU = 6, + MPRT_PLUGINCONFIG = 7, + MPRT_PLUGINCOMMAND = 8, + MPRT_USERMENU = 9, + MPRT_HASNOMACRO = 10, +}; + +struct OpenMacroPluginInfo +{ + enum MACROCALLTYPE CallType; + struct FarMacroCall *Data; + struct MacroPluginReturn Ret; +}; + + +enum FAR_EVENTS +{ + FE_CHANGEVIEWMODE =0, + FE_REDRAW =1, + FE_IDLE =2, + FE_CLOSE =3, + FE_BREAK =4, + FE_COMMAND =5, + + FE_GOTFOCUS =6, + FE_KILLFOCUS =7, + FE_CHANGESORTPARAMS =8, +}; + +struct OpenInfo +{ + size_t StructSize; + enum OPENFROM OpenFrom; + const GUID* Guid; + intptr_t Data; + void* Instance; +}; + +struct SetDirectoryInfo +{ + size_t StructSize; + HANDLE hPanel; + const wchar_t *Dir; + intptr_t Reserved; + OPERATION_MODES OpMode; + struct UserDataItem UserData; + void* Instance; +}; + +struct SetFindListInfo +{ + size_t StructSize; + HANDLE hPanel; + const struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + void* Instance; +}; + +struct PutFilesInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + BOOL Move; + const wchar_t *SrcPath; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct ProcessHostFileInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct MakeDirectoryInfo +{ + size_t StructSize; + HANDLE hPanel; + const wchar_t *Name; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct CompareInfo +{ + size_t StructSize; + HANDLE hPanel; + const struct PluginPanelItem *Item1; + const struct PluginPanelItem *Item2; + enum OPENPANELINFO_SORTMODES Mode; + void* Instance; +}; + +struct GetFindDataInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + OPERATION_MODES OpMode; + void* Instance; +}; + + +struct FreeFindDataInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + void* Instance; +}; + +struct GetFilesInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + BOOL Move; + const wchar_t *DestPath; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct DeleteFilesInfo +{ + size_t StructSize; + HANDLE hPanel; + struct PluginPanelItem *PanelItem; + size_t ItemsNumber; + OPERATION_MODES OpMode; + void* Instance; +}; + +struct ProcessPanelInputInfo +{ + size_t StructSize; + HANDLE hPanel; + INPUT_RECORD Rec; + void* Instance; +}; + +struct ProcessEditorInputInfo +{ + size_t StructSize; + INPUT_RECORD Rec; + void* Instance; +}; + +typedef unsigned __int64 PROCESSCONSOLEINPUT_FLAGS; +static const PROCESSCONSOLEINPUT_FLAGS + PCIF_FROMMAIN = 0x0000000000000001ULL, + PCIF_NONE = 0; + +struct ProcessConsoleInputInfo +{ + size_t StructSize; + PROCESSCONSOLEINPUT_FLAGS Flags; + INPUT_RECORD Rec; + void* Instance; +}; + +struct ExitInfo +{ + size_t StructSize; + void* Instance; +}; + +struct ProcessPanelEventInfo +{ + size_t StructSize; + intptr_t Event; + void* Param; + HANDLE hPanel; + void* Instance; +}; + +struct ProcessEditorEventInfo +{ + size_t StructSize; + intptr_t Event; + void* Param; + intptr_t EditorID; + void* Instance; +}; + +struct ProcessDialogEventInfo +{ + size_t StructSize; + intptr_t Event; + struct FarDialogEvent* Param; + void* Instance; +}; + +struct ProcessSynchroEventInfo +{ + size_t StructSize; + intptr_t Event; + void* Param; + void* Instance; +}; + +struct ProcessViewerEventInfo +{ + size_t StructSize; + intptr_t Event; + void* Param; + intptr_t ViewerID; + void* Instance; +}; + +struct ClosePanelInfo +{ + size_t StructSize; + HANDLE hPanel; + void* Instance; +}; + +struct CloseAnalyseInfo +{ + size_t StructSize; + HANDLE Handle; + void* Instance; +}; + +struct ConfigureInfo +{ + size_t StructSize; + const GUID* Guid; + void* Instance; +}; + +struct GetContentFieldsInfo +{ + size_t StructSize; + size_t Count; + const wchar_t* const *Names; + void* Instance; +}; + +struct GetContentDataInfo +{ + size_t StructSize; + const wchar_t *FilePath; + size_t Count; + const wchar_t* const *Names; + const wchar_t **Values; + void* Instance; +}; + +static const GUID FarGuid = +{0x00000000, 0x0000, 0x0000, {0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00}}; + +#ifdef __cplusplus +extern "C" +{ +#endif +// Exported Functions + + HANDLE WINAPI AnalyseW(const struct AnalyseInfo *Info); + void WINAPI CloseAnalyseW(const struct CloseAnalyseInfo *Info); + void WINAPI ClosePanelW(const struct ClosePanelInfo *Info); + intptr_t WINAPI CompareW(const struct CompareInfo *Info); + intptr_t WINAPI ConfigureW(const struct ConfigureInfo *Info); + intptr_t WINAPI DeleteFilesW(const struct DeleteFilesInfo *Info); + void WINAPI ExitFARW(const struct ExitInfo *Info); + void WINAPI FreeFindDataW(const struct FreeFindDataInfo *Info); + intptr_t WINAPI GetFilesW(struct GetFilesInfo *Info); + intptr_t WINAPI GetFindDataW(struct GetFindDataInfo *Info); + void WINAPI GetGlobalInfoW(struct GlobalInfo *Info); + void WINAPI GetOpenPanelInfoW(struct OpenPanelInfo *Info); + void WINAPI GetPluginInfoW(struct PluginInfo *Info); + intptr_t WINAPI MakeDirectoryW(struct MakeDirectoryInfo *Info); + HANDLE WINAPI OpenW(const struct OpenInfo *Info); + intptr_t WINAPI ProcessDialogEventW(const struct ProcessDialogEventInfo *Info); + intptr_t WINAPI ProcessEditorEventW(const struct ProcessEditorEventInfo *Info); + intptr_t WINAPI ProcessEditorInputW(const struct ProcessEditorInputInfo *Info); + intptr_t WINAPI ProcessPanelEventW(const struct ProcessPanelEventInfo *Info); + intptr_t WINAPI ProcessHostFileW(const struct ProcessHostFileInfo *Info); + intptr_t WINAPI ProcessPanelInputW(const struct ProcessPanelInputInfo *Info); + intptr_t WINAPI ProcessConsoleInputW(struct ProcessConsoleInputInfo *Info); + intptr_t WINAPI ProcessSynchroEventW(const struct ProcessSynchroEventInfo *Info); + intptr_t WINAPI ProcessViewerEventW(const struct ProcessViewerEventInfo *Info); + intptr_t WINAPI PutFilesW(const struct PutFilesInfo *Info); + intptr_t WINAPI SetDirectoryW(const struct SetDirectoryInfo *Info); + intptr_t WINAPI SetFindListW(const struct SetFindListInfo *Info); + void WINAPI SetStartupInfoW(const struct PluginStartupInfo *Info); + intptr_t WINAPI GetContentFieldsW(const struct GetContentFieldsInfo *Info); + intptr_t WINAPI GetContentDataW(struct GetContentDataInfo *Info); + void WINAPI FreeContentDataW(const struct GetContentDataInfo *Info); + +#ifdef __cplusplus +}; +#endif + +#endif /* RC_INVOKED */ + +#endif // PLUGIN_HPP_3FC978E9_63BE_4FC2_8F96_8188B0AF8363 diff --git a/far3sdk/vc_crt_fix/vc_crt_fix.asm b/far3sdk/vc_crt_fix/vc_crt_fix.asm new file mode 100644 index 0000000..f15e433 --- /dev/null +++ b/far3sdk/vc_crt_fix/vc_crt_fix.asm @@ -0,0 +1,69 @@ +;vc_crt_fix.asm + +;Workaround for Visual C++ CRT incompatibility with old Windows versions + +;Copyright 2010 Far Group +;All rights reserved. +; +;Redistribution and use in source and binary forms, with or without +;modification, are permitted provided that the following conditions +;are met: +;1. Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +;2. Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +;3. The name of the authors may not be used to endorse or promote products +; derived from this software without specific prior written permission. +; +;THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +;IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +;OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +;IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +;INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +;DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +;THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +;(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +;THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +.486 +.model flat + +EncodePointerWrapper proto stdcall :dword +DecodePointerWrapper proto stdcall :dword +GetModuleHandleExWWrapper proto stdcall :dword, :dword, :dword +InitializeSListHeadWrapper proto stdcall :dword +InterlockedFlushSListWrapper proto stdcall :dword +InterlockedPopEntrySListWrapper proto stdcall :dword +InterlockedPushEntrySListWrapper proto stdcall :dword, :dword +InterlockedPushListSListExWrapper proto stdcall :dword, :dword, :dword, :dword +RtlFirstEntrySListWrapper proto stdcall :dword +QueryDepthSListWrapper proto stdcall :dword + +.const +align 4 +__imp__EncodePointer@4 dd EncodePointerWrapper +__imp__DecodePointer@4 dd DecodePointerWrapper +__imp__GetModuleHandleExW@12 dd GetModuleHandleExWWrapper +__imp__InitializeSListHead@4 dd InitializeSListHeadWrapper +__imp__InterlockedFlushSList@4 dd InterlockedFlushSListWrapper +__imp__InterlockedPopEntrySList@4 dd InterlockedPopEntrySListWrapper +__imp__InterlockedPushEntrySList@8 dd InterlockedPushEntrySListWrapper +__imp__InterlockedPushListSListEx@16 dd InterlockedPushListSListExWrapper +__imp__RtlFirstEntrySList@4 dd RtlFirstEntrySListWrapper +__imp__QueryDepthSList@4 dd QueryDepthSListWrapper + +public \ +__imp__EncodePointer@4, +__imp__DecodePointer@4, +__imp__GetModuleHandleExW@12, +__imp__InitializeSListHead@4, +__imp__InterlockedFlushSList@4, +__imp__InterlockedPopEntrySList@4, +__imp__InterlockedPushEntrySList@8, +__imp__InterlockedPushListSListEx@16, +__imp__RtlFirstEntrySList@4, +__imp__QueryDepthSList@4 +end diff --git a/far3sdk/vc_crt_fix/vc_crt_fix_impl.cpp b/far3sdk/vc_crt_fix/vc_crt_fix_impl.cpp new file mode 100644 index 0000000..c108df9 --- /dev/null +++ b/far3sdk/vc_crt_fix/vc_crt_fix_impl.cpp @@ -0,0 +1,217 @@ +/* +vc_crt_fix_impl.cpp + +Workaround for Visual C++ CRT incompatibility with old Windows versions +*/ +/* +Copyright © 2011 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include + +template +T GetFunctionPointer(const wchar_t* ModuleName, const char* FunctionName, T Replacement) +{ + const auto Address = GetProcAddress(GetModuleHandleW(ModuleName), FunctionName); + return Address? reinterpret_cast(Address) : Replacement; +} + +#define CREATE_FUNCTION_POINTER(ModuleName, FunctionName)\ +static const auto Function = GetFunctionPointer(ModuleName, #FunctionName, &implementation::FunctionName) + +static const wchar_t kernel32[] = L"kernel32"; + +// EncodePointer (VC2010) +extern "C" PVOID WINAPI EncodePointerWrapper(PVOID Ptr) +{ + struct implementation + { + static PVOID WINAPI EncodePointer(PVOID Ptr) { return Ptr; } + }; + + CREATE_FUNCTION_POINTER(kernel32, EncodePointer); + return Function(Ptr); +} + +// DecodePointer(VC2010) +extern "C" PVOID WINAPI DecodePointerWrapper(PVOID Ptr) +{ + struct implementation + { + static PVOID WINAPI DecodePointer(PVOID Ptr) { return Ptr; } + }; + + CREATE_FUNCTION_POINTER(kernel32, DecodePointer); + return Function(Ptr); +} + +// GetModuleHandleExW (VC2012) +extern "C" BOOL WINAPI GetModuleHandleExWWrapper(DWORD Flags, LPCWSTR ModuleName, HMODULE *Module) +{ + struct implementation + { + static BOOL WINAPI GetModuleHandleExW(DWORD Flags, LPCWSTR ModuleName, HMODULE *Module) + { + BOOL Result = FALSE; + if (Flags) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + } + else + { + *Module = GetModuleHandleW(ModuleName); + if (*Module) + { + Result = TRUE; + } + } + return Result; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, GetModuleHandleExW); + return Function(Flags, ModuleName, Module); +} + +// InitializeSListHead (VC2015) +extern "C" void WINAPI InitializeSListHeadWrapper(PSLIST_HEADER ListHead) +{ + struct implementation + { + static void WINAPI InitializeSListHead(PSLIST_HEADER ListHead) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + } + }; + + CREATE_FUNCTION_POINTER(kernel32, InitializeSListHead); + return Function(ListHead); +} + +// InterlockedFlushSList (VC2015) +extern "C" PSLIST_ENTRY WINAPI InterlockedFlushSListWrapper(PSLIST_HEADER ListHead) +{ + struct implementation + { + static PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER ListHead) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return nullptr; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, InterlockedFlushSList); + return Function(ListHead); +} + +// InterlockedPopEntrySList (VC2015) +extern "C" PSLIST_ENTRY WINAPI InterlockedPopEntrySListWrapper(PSLIST_HEADER ListHead) +{ + struct implementation + { + static PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return nullptr; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, InterlockedPopEntrySList); + return Function(ListHead); +} + +// InterlockedPushEntrySList (VC2015) +extern "C" PSLIST_ENTRY WINAPI InterlockedPushEntrySListWrapper(PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry) +{ + struct implementation + { + static PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return nullptr; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, InterlockedPushEntrySList); + return Function(ListHead, ListEntry); +} + +// InterlockedPushListSList (VC2015) +extern "C" PSLIST_ENTRY WINAPI InterlockedPushListSListExWrapper(PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, ULONG Count) +{ + struct implementation + { + static PSLIST_ENTRY WINAPI InterlockedPushListSListEx(PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, ULONG Count) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return nullptr; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, InterlockedPushListSListEx); + return Function(ListHead, List, ListEnd, Count); +} + +// RtlFirstEntrySList (VC2015) +extern "C" PSLIST_ENTRY WINAPI RtlFirstEntrySListWrapper(PSLIST_HEADER ListHead) +{ + struct implementation + { + static PSLIST_ENTRY WINAPI RtlFirstEntrySList(PSLIST_HEADER ListHead) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return nullptr; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, RtlFirstEntrySList); + return Function(ListHead); +} + +// QueryDepthSList (VC2015) +extern "C" USHORT WINAPI QueryDepthSListWrapper(PSLIST_HEADER ListHead) +{ + struct implementation + { + static USHORT WINAPI QueryDepthSList(PSLIST_HEADER ListHead) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return 0; + } + }; + + CREATE_FUNCTION_POINTER(kernel32, QueryDepthSList); + return Function(ListHead); +} + +// disable VS2015 telemetry +extern "C" +{ + void __vcrt_initialize_telemetry_provider() {} + void __telemetry_main_invoke_trigger() {} + void __telemetry_main_return_trigger() {} + void __vcrt_uninitialize_telemetry_provider() {} +}; diff --git a/far3sdk/vc_crt_fix/vc_crt_fix_ulink.cpp b/far3sdk/vc_crt_fix/vc_crt_fix_ulink.cpp new file mode 100644 index 0000000..65f0abf --- /dev/null +++ b/far3sdk/vc_crt_fix/vc_crt_fix_ulink.cpp @@ -0,0 +1,63 @@ +/* +vc_crt_fix_ulink.cpp + +Workaround for Visual C++ CRT incompatibility with old Windows versions (ulink version) +*/ +/* +Copyright © 2010 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include + +//---------------------------------------------------------------------------- +static LPVOID WINAPI no_recode_pointer(LPVOID p) +{ + return p; +} + +//---------------------------------------------------------------------------- +static FARPROC WINAPI delayFailureHook(/*dliNotification*/unsigned dliNotify, + PDelayLoadInfo pdli) +{ + if( dliNotify == /*dliFailGetProcAddress*/dliFailGetProc + && pdli && pdli->cb == sizeof(*pdli) + && pdli->hmodCur == GetModuleHandleA("kernel32") + && pdli->dlp.fImportByName && pdli->dlp.szProcName + && ( !lstrcmpA(pdli->dlp.szProcName, "EncodePointer") + || !lstrcmpA(pdli->dlp.szProcName, "DecodePointer"))) + { + return (FARPROC)no_recode_pointer; + } + return nullptr; +} + +//---------------------------------------------------------------------------- +PfnDliHook __pfnDliFailureHook2 = (PfnDliHook)delayFailureHook; + +//---------------------------------------------------------------------------- + +// TODO: Add GetModuleHandleExW diff --git a/libgit2 b/libgit2 new file mode 160000 index 0000000..4cf1ec7 --- /dev/null +++ b/libgit2 @@ -0,0 +1 @@ +Subproject commit 4cf1ec7cff28da8838a2f0a9fb330e312ea3f963 diff --git a/libgit2/include/git2.h b/libgit2/include/git2.h deleted file mode 100644 index ac4a631..0000000 --- a/libgit2/include/git2.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ - -#ifndef INCLUDE_git_git_h__ -#define INCLUDE_git_git_h__ - -#include "git2/annotated_commit.h" -#include "git2/attr.h" -#include "git2/blob.h" -#include "git2/blame.h" -#include "git2/branch.h" -#include "git2/buffer.h" -#include "git2/checkout.h" -#include "git2/cherrypick.h" -#include "git2/clone.h" -#include "git2/commit.h" -#include "git2/common.h" -#include "git2/config.h" -#include "git2/describe.h" -#include "git2/diff.h" -#include "git2/errors.h" -#include "git2/filter.h" -#include "git2/global.h" -#include "git2/graph.h" -#include "git2/ignore.h" -#include "git2/index.h" -#include "git2/indexer.h" -#include "git2/merge.h" -#include "git2/message.h" -#include "git2/net.h" -#include "git2/notes.h" -#include "git2/object.h" -#include "git2/odb.h" -#include "git2/odb_backend.h" -#include "git2/oid.h" -#include "git2/pack.h" -#include "git2/patch.h" -#include "git2/pathspec.h" -#include "git2/rebase.h" -#include "git2/refdb.h" -#include "git2/reflog.h" -#include "git2/refs.h" -#include "git2/refspec.h" -#include "git2/remote.h" -#include "git2/repository.h" -#include "git2/reset.h" -#include "git2/revert.h" -#include "git2/revparse.h" -#include "git2/revwalk.h" -#include "git2/signature.h" -#include "git2/stash.h" -#include "git2/status.h" -#include "git2/submodule.h" -#include "git2/tag.h" -#include "git2/transport.h" -#include "git2/transaction.h" -#include "git2/tree.h" -#include "git2/types.h" -#include "git2/version.h" - -#endif diff --git a/libgit2/include/git2/annotated_commit.h b/libgit2/include/git2/annotated_commit.h deleted file mode 100644 index 7fb896a..0000000 --- a/libgit2/include/git2/annotated_commit.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_annotated_commit_h__ -#define INCLUDE_git_annotated_commit_h__ - -#include "common.h" -#include "repository.h" -#include "types.h" - -/** - * @file git2/annotated_commit.h - * @brief Git annotated commit routines - * @defgroup git_annotated_commit Git annotated commit routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Creates a `git_annotated_commit` from the given reference. - * The resulting git_annotated_commit must be freed with - * `git_annotated_commit_free`. - * - * @param out pointer to store the git_annotated_commit result in - * @param repo repository that contains the given reference - * @param ref reference to use to lookup the git_annotated_commit - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_annotated_commit_from_ref( - git_annotated_commit **out, - git_repository *repo, - const git_reference *ref); - -/** - * Creates a `git_annotated_commit` from the given fetch head data. - * The resulting git_annotated_commit must be freed with - * `git_annotated_commit_free`. - * - * @param out pointer to store the git_annotated_commit result in - * @param repo repository that contains the given commit - * @param branch_name name of the (remote) branch - * @param remote_url url of the remote - * @param id the commit object id of the remote branch - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_annotated_commit_from_fetchhead( - git_annotated_commit **out, - git_repository *repo, - const char *branch_name, - const char *remote_url, - const git_oid *id); - -/** - * Creates a `git_annotated_commit` from the given commit id. - * The resulting git_annotated_commit must be freed with - * `git_annotated_commit_free`. - * - * An annotated commit contains information about how it was - * looked up, which may be useful for functions like merge or - * rebase to provide context to the operation. For example, - * conflict files will include the name of the source or target - * branches being merged. It is therefore preferable to use the - * most specific function (eg `git_annotated_commit_from_ref`) - * instead of this one when that data is known. - * - * @param out pointer to store the git_annotated_commit result in - * @param repo repository that contains the given commit - * @param id the commit object id to lookup - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_annotated_commit_lookup( - git_annotated_commit **out, - git_repository *repo, - const git_oid *id); - -/** - * Creates a `git_annotated_comit` from a revision string. - * - * See `man gitrevisions`, or - * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for - * information on the syntax accepted. - * - * @param out pointer to store the git_annotated_commit result in - * @param repo repository that contains the given commit - * @param revspec the extended sha syntax string to use to lookup the commit - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_annotated_commit_from_revspec( - git_annotated_commit **out, - git_repository *repo, - const char *revspec); - -/** - * Gets the commit ID that the given `git_annotated_commit` refers to. - * - * @param commit the given annotated commit - * @return commit id - */ -GIT_EXTERN(const git_oid *) git_annotated_commit_id( - const git_annotated_commit *commit); - -/** - * Frees a `git_annotated_commit`. - * - * @param commit annotated commit to free - */ -GIT_EXTERN(void) git_annotated_commit_free( - git_annotated_commit *commit); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/attr.h b/libgit2/include/git2/attr.h deleted file mode 100644 index 0238f3d..0000000 --- a/libgit2/include/git2/attr.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_attr_h__ -#define INCLUDE_git_attr_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/attr.h - * @brief Git attribute management routines - * @defgroup git_attr Git attribute management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * GIT_ATTR_TRUE checks if an attribute is set on. In core git - * parlance, this the value for "Set" attributes. - * - * For example, if the attribute file contains: - * - * *.c foo - * - * Then for file `xyz.c` looking up attribute "foo" gives a value for - * which `GIT_ATTR_TRUE(value)` is true. - */ -#define GIT_ATTR_TRUE(attr) (git_attr_value(attr) == GIT_ATTR_TRUE_T) - -/** - * GIT_ATTR_FALSE checks if an attribute is set off. In core git - * parlance, this is the value for attributes that are "Unset" (not to - * be confused with values that a "Unspecified"). - * - * For example, if the attribute file contains: - * - * *.h -foo - * - * Then for file `zyx.h` looking up attribute "foo" gives a value for - * which `GIT_ATTR_FALSE(value)` is true. - */ -#define GIT_ATTR_FALSE(attr) (git_attr_value(attr) == GIT_ATTR_FALSE_T) - -/** - * GIT_ATTR_UNSPECIFIED checks if an attribute is unspecified. This - * may be due to the attribute not being mentioned at all or because - * the attribute was explicitly set unspecified via the `!` operator. - * - * For example, if the attribute file contains: - * - * *.c foo - * *.h -foo - * onefile.c !foo - * - * Then for `onefile.c` looking up attribute "foo" yields a value with - * `GIT_ATTR_UNSPECIFIED(value)` of true. Also, looking up "foo" on - * file `onefile.rb` or looking up "bar" on any file will all give - * `GIT_ATTR_UNSPECIFIED(value)` of true. - */ -#define GIT_ATTR_UNSPECIFIED(attr) (git_attr_value(attr) == GIT_ATTR_UNSPECIFIED_T) - -/** - * GIT_ATTR_HAS_VALUE checks if an attribute is set to a value (as - * opposed to TRUE, FALSE or UNSPECIFIED). This would be the case if - * for a file with something like: - * - * *.txt eol=lf - * - * Given this, looking up "eol" for `onefile.txt` will give back the - * string "lf" and `GIT_ATTR_SET_TO_VALUE(attr)` will return true. - */ -#define GIT_ATTR_HAS_VALUE(attr) (git_attr_value(attr) == GIT_ATTR_VALUE_T) - -/** - * Possible states for an attribute - */ -typedef enum { - GIT_ATTR_UNSPECIFIED_T = 0, /**< The attribute has been left unspecified */ - GIT_ATTR_TRUE_T, /**< The attribute has been set */ - GIT_ATTR_FALSE_T, /**< The attribute has been unset */ - GIT_ATTR_VALUE_T, /**< This attribute has a value */ -} git_attr_t; - -/** - * Return the value type for a given attribute. - * - * This can be either `TRUE`, `FALSE`, `UNSPECIFIED` (if the attribute - * was not set at all), or `VALUE`, if the attribute was set to an - * actual string. - * - * If the attribute has a `VALUE` string, it can be accessed normally - * as a NULL-terminated C string. - * - * @param attr The attribute - * @return the value type for the attribute - */ -GIT_EXTERN(git_attr_t) git_attr_value(const char *attr); - -/** - * Check attribute flags: Reading values from index and working directory. - * - * When checking attributes, it is possible to check attribute files - * in both the working directory (if there is one) and the index (if - * there is one). You can explicitly choose where to check and in - * which order using the following flags. - * - * Core git usually checks the working directory then the index, - * except during a checkout when it checks the index first. It will - * use index only for creating archives or for a bare repo (if an - * index has been specified for the bare repo). - */ -#define GIT_ATTR_CHECK_FILE_THEN_INDEX 0 -#define GIT_ATTR_CHECK_INDEX_THEN_FILE 1 -#define GIT_ATTR_CHECK_INDEX_ONLY 2 - -/** - * Check attribute flags: Using the system attributes file. - * - * Normally, attribute checks include looking in the /etc (or system - * equivalent) directory for a `gitattributes` file. Passing this - * flag will cause attribute checks to ignore that file. - */ -#define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2) - -/** - * Look up the value of one git attribute for path. - * - * @param value_out Output of the value of the attribute. Use the GIT_ATTR_... - * macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just - * use the string value for attributes set to a value. You - * should NOT modify or free this value. - * @param repo The repository containing the path. - * @param flags A combination of GIT_ATTR_CHECK... flags. - * @param path The path to check for attributes. Relative paths are - * interpreted relative to the repo root. The file does - * not have to exist, but if it does not, then it will be - * treated as a plain file (not a directory). - * @param name The name of the attribute to look up. - */ -GIT_EXTERN(int) git_attr_get( - const char **value_out, - git_repository *repo, - uint32_t flags, - const char *path, - const char *name); - -/** - * Look up a list of git attributes for path. - * - * Use this if you have a known list of attributes that you want to - * look up in a single call. This is somewhat more efficient than - * calling `git_attr_get()` multiple times. - * - * For example, you might write: - * - * const char *attrs[] = { "crlf", "diff", "foo" }; - * const char **values[3]; - * git_attr_get_many(values, repo, 0, "my/fun/file.c", 3, attrs); - * - * Then you could loop through the 3 values to get the settings for - * the three attributes you asked about. - * - * @param values_out An array of num_attr entries that will have string - * pointers written into it for the values of the attributes. - * You should not modify or free the values that are written - * into this array (although of course, you should free the - * array itself if you allocated it). - * @param repo The repository containing the path. - * @param flags A combination of GIT_ATTR_CHECK... flags. - * @param path The path inside the repo to check attributes. This - * does not have to exist, but if it does not, then - * it will be treated as a plain file (i.e. not a directory). - * @param num_attr The number of attributes being looked up - * @param names An array of num_attr strings containing attribute names. - */ -GIT_EXTERN(int) git_attr_get_many( - const char **values_out, - git_repository *repo, - uint32_t flags, - const char *path, - size_t num_attr, - const char **names); - -typedef int (*git_attr_foreach_cb)(const char *name, const char *value, void *payload); - -/** - * Loop over all the git attributes for a path. - * - * @param repo The repository containing the path. - * @param flags A combination of GIT_ATTR_CHECK... flags. - * @param path Path inside the repo to check attributes. This does not have - * to exist, but if it does not, then it will be treated as a - * plain file (i.e. not a directory). - * @param callback Function to invoke on each attribute name and value. The - * value may be NULL is the attribute is explicitly set to - * UNSPECIFIED using the '!' sign. Callback will be invoked - * only once per attribute name, even if there are multiple - * rules for a given file. The highest priority rule will be - * used. Return a non-zero value from this to stop looping. - * The value will be returned from `git_attr_foreach`. - * @param payload Passed on as extra parameter to callback function. - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_attr_foreach( - git_repository *repo, - uint32_t flags, - const char *path, - git_attr_foreach_cb callback, - void *payload); - -/** - * Flush the gitattributes cache. - * - * Call this if you have reason to believe that the attributes files on - * disk no longer match the cached contents of memory. This will cause - * the attributes files to be reloaded the next time that an attribute - * access function is called. - */ -GIT_EXTERN(void) git_attr_cache_flush( - git_repository *repo); - -/** - * Add a macro definition. - * - * Macros will automatically be loaded from the top level `.gitattributes` - * file of the repository (plus the build-in "binary" macro). This - * function allows you to add others. For example, to add the default - * macro, you would call: - * - * git_attr_add_macro(repo, "binary", "-diff -crlf"); - */ -GIT_EXTERN(int) git_attr_add_macro( - git_repository *repo, - const char *name, - const char *values); - -/** @} */ -GIT_END_DECL -#endif - diff --git a/libgit2/include/git2/blame.h b/libgit2/include/git2/blame.h deleted file mode 100644 index 84bb7f9..0000000 --- a/libgit2/include/git2/blame.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ - -#ifndef INCLUDE_git_blame_h__ -#define INCLUDE_git_blame_h__ - -#include "common.h" -#include "oid.h" - -/** - * @file git2/blame.h - * @brief Git blame routines - * @defgroup git_blame Git blame routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Flags for indicating option behavior for git_blame APIs. - */ -typedef enum { - /** Normal blame, the default */ - GIT_BLAME_NORMAL = 0, - /** Track lines that have moved within a file (like `git blame -M`). - * NOT IMPLEMENTED. */ - GIT_BLAME_TRACK_COPIES_SAME_FILE = (1<<0), - /** Track lines that have moved across files in the same commit (like `git blame -C`). - * NOT IMPLEMENTED. */ - GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES = (1<<1), - /** Track lines that have been copied from another file that exists in the - * same commit (like `git blame -CC`). Implies SAME_FILE. - * NOT IMPLEMENTED. */ - GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES = (1<<2), - /** Track lines that have been copied from another file that exists in *any* - * commit (like `git blame -CCC`). Implies SAME_COMMIT_COPIES. - * NOT IMPLEMENTED. */ - GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES = (1<<3), - /** Restrict the search of commits to those reachable following only the - * first parents. */ - GIT_BLAME_FIRST_PARENT = (1<<4), -} git_blame_flag_t; - -/** - * Blame options structure - * - * Use zeros to indicate default settings. It's easiest to use the - * `GIT_BLAME_OPTIONS_INIT` macro: - * git_blame_options opts = GIT_BLAME_OPTIONS_INIT; - * - * - `flags` is a combination of the `git_blame_flag_t` values above. - * - `min_match_characters` is the lower bound on the number of alphanumeric - * characters that must be detected as moving/copying within a file for it to - * associate those lines with the parent commit. The default value is 20. - * This value only takes effect if any of the `GIT_BLAME_TRACK_COPIES_*` - * flags are specified. - * - `newest_commit` is the id of the newest commit to consider. The default - * is HEAD. - * - `oldest_commit` is the id of the oldest commit to consider. The default - * is the first commit encountered with a NULL parent. - * - `min_line` is the first line in the file to blame. The default is 1 (line - * numbers start with 1). - * - `max_line` is the last line in the file to blame. The default is the last - * line of the file. - */ -typedef struct git_blame_options { - unsigned int version; - - uint32_t flags; - uint16_t min_match_characters; - git_oid newest_commit; - git_oid oldest_commit; - size_t min_line; - size_t max_line; -} git_blame_options; - -#define GIT_BLAME_OPTIONS_VERSION 1 -#define GIT_BLAME_OPTIONS_INIT {GIT_BLAME_OPTIONS_VERSION} - -/** - * Initializes a `git_blame_options` with default values. Equivalent to - * creating an instance with GIT_BLAME_OPTIONS_INIT. - * - * @param opts The `git_blame_options` struct to initialize - * @param version Version of struct; pass `GIT_BLAME_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_blame_init_options( - git_blame_options *opts, - unsigned int version); - -/** - * Structure that represents a blame hunk. - * - * - `lines_in_hunk` is the number of lines in this hunk - * - `final_commit_id` is the OID of the commit where this line was last - * changed. - * - `final_start_line_number` is the 1-based line number where this hunk - * begins, in the final version of the file - * - `orig_commit_id` is the OID of the commit where this hunk was found. This - * will usually be the same as `final_commit_id`, except when - * `GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES` has been specified. - * - `orig_path` is the path to the file where this hunk originated, as of the - * commit specified by `orig_commit_id`. - * - `orig_start_line_number` is the 1-based line number where this hunk begins - * in the file named by `orig_path` in the commit specified by - * `orig_commit_id`. - * - `boundary` is 1 iff the hunk has been tracked to a boundary commit (the - * root, or the commit specified in git_blame_options.oldest_commit) - */ -typedef struct git_blame_hunk { - size_t lines_in_hunk; - - git_oid final_commit_id; - size_t final_start_line_number; - git_signature *final_signature; - - git_oid orig_commit_id; - const char *orig_path; - size_t orig_start_line_number; - git_signature *orig_signature; - - char boundary; -} git_blame_hunk; - - -/* Opaque structure to hold blame results */ -typedef struct git_blame git_blame; - -/** - * Gets the number of hunks that exist in the blame structure. - */ -GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame); - -/** - * Gets the blame hunk at the given index. - * - * @param blame the blame structure to query - * @param index index of the hunk to retrieve - * @return the hunk at the given index, or NULL on error - */ -GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex( - git_blame *blame, - uint32_t index); - -/** - * Gets the hunk that relates to the given line number in the newest commit. - * - * @param blame the blame structure to query - * @param lineno the (1-based) line number to find a hunk for - * @return the hunk that contains the given line, or NULL on error - */ -GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline( - git_blame *blame, - size_t lineno); - -/** - * Get the blame for a single file. - * - * @param out pointer that will receive the blame object - * @param repo repository whose history is to be walked - * @param path path to file to consider - * @param options options for the blame operation. If NULL, this is treated as - * though GIT_BLAME_OPTIONS_INIT were passed. - * @return 0 on success, or an error code. (use giterr_last for information - * about the error.) - */ -GIT_EXTERN(int) git_blame_file( - git_blame **out, - git_repository *repo, - const char *path, - git_blame_options *options); - - -/** - * Get blame data for a file that has been modified in memory. The `reference` - * parameter is a pre-calculated blame for the in-odb history of the file. This - * means that once a file blame is completed (which can be expensive), updating - * the buffer blame is very fast. - * - * Lines that differ between the buffer and the committed version are marked as - * having a zero OID for their final_commit_id. - * - * @param out pointer that will receive the resulting blame data - * @param reference cached blame from the history of the file (usually the output - * from git_blame_file) - * @param buffer the (possibly) modified contents of the file - * @param buffer_len number of valid bytes in the buffer - * @return 0 on success, or an error code. (use giterr_last for information - * about the error) - */ -GIT_EXTERN(int) git_blame_buffer( - git_blame **out, - git_blame *reference, - const char *buffer, - size_t buffer_len); - -/** - * Free memory allocated by git_blame_file or git_blame_buffer. - * - * @param blame the blame structure to free - */ -GIT_EXTERN(void) git_blame_free(git_blame *blame); - -/** @} */ -GIT_END_DECL -#endif - diff --git a/libgit2/include/git2/blob.h b/libgit2/include/git2/blob.h deleted file mode 100644 index 9a57c37..0000000 --- a/libgit2/include/git2/blob.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_blob_h__ -#define INCLUDE_git_blob_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "object.h" -#include "buffer.h" - -/** - * @file git2/blob.h - * @brief Git blob load and write routines - * @defgroup git_blob Git blob load and write routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a blob object from a repository. - * - * @param blob pointer to the looked up blob - * @param repo the repo to use when locating the blob. - * @param id identity of the blob to locate. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git_oid *id); - -/** - * Lookup a blob object from a repository, - * given a prefix of its identifier (short id). - * - * @see git_object_lookup_prefix - * - * @param blob pointer to the looked up blob - * @param repo the repo to use when locating the blob. - * @param id identity of the blob to locate. - * @param len the length of the short identifier - * @return 0 or an error code - */ -GIT_EXTERN(int) git_blob_lookup_prefix(git_blob **blob, git_repository *repo, const git_oid *id, size_t len); - -/** - * Close an open blob - * - * This is a wrapper around git_object_free() - * - * IMPORTANT: - * It *is* necessary to call this method when you stop - * using a blob. Failure to do so will cause a memory leak. - * - * @param blob the blob to close - */ -GIT_EXTERN(void) git_blob_free(git_blob *blob); - -/** - * Get the id of a blob. - * - * @param blob a previously loaded blob. - * @return SHA1 hash for this blob. - */ -GIT_EXTERN(const git_oid *) git_blob_id(const git_blob *blob); - -/** - * Get the repository that contains the blob. - * - * @param blob A previously loaded blob. - * @return Repository that contains this blob. - */ -GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob); - -/** - * Get a read-only buffer with the raw content of a blob. - * - * A pointer to the raw content of a blob is returned; - * this pointer is owned internally by the object and shall - * not be free'd. The pointer may be invalidated at a later - * time. - * - * @param blob pointer to the blob - * @return the pointer - */ -GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob); - -/** - * Get the size in bytes of the contents of a blob - * - * @param blob pointer to the blob - * @return size on bytes - */ -GIT_EXTERN(git_off_t) git_blob_rawsize(const git_blob *blob); - -/** - * Get a buffer with the filtered content of a blob. - * - * This applies filters as if the blob was being checked out to the - * working directory under the specified filename. This may apply - * CRLF filtering or other types of changes depending on the file - * attributes set for the blob and the content detected in it. - * - * The output is written into a `git_buf` which the caller must free - * when done (via `git_buf_free`). - * - * If no filters need to be applied, then the `out` buffer will just - * be populated with a pointer to the raw content of the blob. In - * that case, be careful to *not* free the blob until done with the - * buffer or copy it into memory you own. - * - * @param out The git_buf to be filled in - * @param blob Pointer to the blob - * @param as_path Path used for file attribute lookups, etc. - * @param check_for_binary_data Should this test if blob content contains - * NUL bytes / looks like binary data before applying filters? - * @return 0 on success or an error code - */ -GIT_EXTERN(int) git_blob_filtered_content( - git_buf *out, - git_blob *blob, - const char *as_path, - int check_for_binary_data); - -/** - * Read a file from the working folder of a repository - * and write it to the Object Database as a loose blob - * - * @param id return the id of the written blob - * @param repo repository where the blob will be written. - * this repository cannot be bare - * @param relative_path file from which the blob will be created, - * relative to the repository's working dir - * @return 0 or an error code - */ -GIT_EXTERN(int) git_blob_create_fromworkdir(git_oid *id, git_repository *repo, const char *relative_path); - -/** - * Read a file from the filesystem and write its content - * to the Object Database as a loose blob - * - * @param id return the id of the written blob - * @param repo repository where the blob will be written. - * this repository can be bare or not - * @param path file from which the blob will be created - * @return 0 or an error code - */ -GIT_EXTERN(int) git_blob_create_fromdisk(git_oid *id, git_repository *repo, const char *path); - - -typedef int (*git_blob_chunk_cb)(char *content, size_t max_length, void *payload); - -/** - * Write a loose blob to the Object Database from a - * provider of chunks of data. - * - * If the `hintpath` parameter is filled, it will be used to determine - * what git filters should be applied to the object before it is written - * to the object database. - * - * The implementation of the callback MUST respect the following rules: - * - * - `content` must be filled by the callback. The maximum number of - * bytes that the buffer can accept per call is defined by the - * `max_length` parameter. Allocation and freeing of the buffer will - * be taken care of by libgit2. - * - * - The `callback` must return the number of bytes that have been - * written to the `content` buffer. - * - * - When there is no more data to stream, `callback` should return 0. - * This will prevent it from being invoked anymore. - * - * - If an error occurs, the callback should return a negative value. - * This value will be returned to the caller. - * - * @param id Return the id of the written blob - * @param repo Repository where the blob will be written. - * This repository can be bare or not. - * @param hintpath If not NULL, will be used to select data filters - * to apply onto the content of the blob to be created. - * @return 0 or error code (from either libgit2 or callback function) - */ -GIT_EXTERN(int) git_blob_create_fromchunks( - git_oid *id, - git_repository *repo, - const char *hintpath, - git_blob_chunk_cb callback, - void *payload); - -/** - * Write an in-memory buffer to the ODB as a blob - * - * @param id return the id of the written blob - * @param repo repository where to blob will be written - * @param buffer data to be written into the blob - * @param len length of the data - * @return 0 or an error code - */ -GIT_EXTERN(int) git_blob_create_frombuffer( - git_oid *id, git_repository *repo, const void *buffer, size_t len); - -/** - * Determine if the blob content is most certainly binary or not. - * - * The heuristic used to guess if a file is binary is taken from core git: - * Searching for NUL bytes and looking for a reasonable ratio of printable - * to non-printable characters among the first 8000 bytes. - * - * @param blob The blob which content should be analyzed - * @return 1 if the content of the blob is detected - * as binary; 0 otherwise. - */ -GIT_EXTERN(int) git_blob_is_binary(const git_blob *blob); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/branch.h b/libgit2/include/git2/branch.h deleted file mode 100644 index 34354f4..0000000 --- a/libgit2/include/git2/branch.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_branch_h__ -#define INCLUDE_git_branch_h__ - -#include "common.h" -#include "oid.h" -#include "types.h" - -/** - * @file git2/branch.h - * @brief Git branch parsing routines - * @defgroup git_branch Git branch management - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create a new branch pointing at a target commit - * - * A new direct reference will be created pointing to - * this target commit. If `force` is true and a reference - * already exists with the given name, it'll be replaced. - * - * The returned reference must be freed by the user. - * - * The branch name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param out Pointer where to store the underlying reference. - * - * @param branch_name Name for the branch; this name is - * validated for consistency. It should also not conflict with - * an already existing branch name. - * - * @param target Commit to which this branch should point. This object - * must belong to the given `repo`. - * - * @param force Overwrite existing branch. - * - * @return 0, GIT_EINVALIDSPEC or an error code. - * A proper reference is written in the refs/heads namespace - * pointing to the provided target commit. - */ -GIT_EXTERN(int) git_branch_create( - git_reference **out, - git_repository *repo, - const char *branch_name, - const git_commit *target, - int force); - -/** - * Create a new branch pointing at a target commit - * - * This behaves like `git_branch_create()` but takes an annotated - * commit, which lets you specify which extended sha syntax string was - * specified by a user, allowing for more exact reflog messages. - * - * See the documentation for `git_branch_create()`. - * - * @see git_branch_create - */ -GIT_EXTERN(int) git_branch_create_from_annotated( - git_reference **ref_out, - git_repository *repository, - const char *branch_name, - const git_annotated_commit *commit, - int force); - -/** - * Delete an existing branch reference. - * - * If the branch is successfully deleted, the passed reference - * object will be invalidated. The reference must be freed manually - * by the user. - * - * @param branch A valid reference representing a branch - * @return 0 on success, or an error code. - */ -GIT_EXTERN(int) git_branch_delete(git_reference *branch); - -/** Iterator type for branches */ -typedef struct git_branch_iterator git_branch_iterator; - -/** - * Create an iterator which loops over the requested branches. - * - * @param out the iterator - * @param repo Repository where to find the branches. - * @param list_flags Filtering flags for the branch - * listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE - * or GIT_BRANCH_ALL. - * - * @return 0 on success or an error code - */ -GIT_EXTERN(int) git_branch_iterator_new( - git_branch_iterator **out, - git_repository *repo, - git_branch_t list_flags); - -/** - * Retrieve the next branch from the iterator - * - * @param out the reference - * @param out_type the type of branch (local or remote-tracking) - * @param iter the branch iterator - * @return 0 on success, GIT_ITEROVER if there are no more branches or an error code. - */ -GIT_EXTERN(int) git_branch_next(git_reference **out, git_branch_t *out_type, git_branch_iterator *iter); - -/** - * Free a branch iterator - * - * @param iter the iterator to free - */ -GIT_EXTERN(void) git_branch_iterator_free(git_branch_iterator *iter); - -/** - * Move/rename an existing local branch reference. - * - * The new branch name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param branch Current underlying reference of the branch. - * - * @param new_branch_name Target name of the branch once the move - * is performed; this name is validated for consistency. - * - * @param force Overwrite existing branch. - * - * @return 0 on success, GIT_EINVALIDSPEC or an error code. - */ -GIT_EXTERN(int) git_branch_move( - git_reference **out, - git_reference *branch, - const char *new_branch_name, - int force); - -/** - * Lookup a branch by its name in a repository. - * - * The generated reference must be freed by the user. - * - * The branch name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param out pointer to the looked-up branch reference - * - * @param repo the repository to look up the branch - * - * @param branch_name Name of the branch to be looked-up; - * this name is validated for consistency. - * - * @param branch_type Type of the considered branch. This should - * be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE. - * - * @return 0 on success; GIT_ENOTFOUND when no matching branch - * exists, GIT_EINVALIDSPEC, otherwise an error code. - */ -GIT_EXTERN(int) git_branch_lookup( - git_reference **out, - git_repository *repo, - const char *branch_name, - git_branch_t branch_type); - -/** - * Return the name of the given local or remote branch. - * - * The name of the branch matches the definition of the name - * for git_branch_lookup. That is, if the returned name is given - * to git_branch_lookup() then the reference is returned that - * was given to this function. - * - * @param out where the pointer of branch name is stored; - * this is valid as long as the ref is not freed. - * @param ref the reference ideally pointing to a branch - * - * @return 0 on success; otherwise an error code (e.g., if the - * ref is no local or remote branch). - */ -GIT_EXTERN(int) git_branch_name( - const char **out, - const git_reference *ref); - -/** - * Return the reference supporting the remote tracking branch, - * given a local branch reference. - * - * @param out Pointer where to store the retrieved - * reference. - * - * @param branch Current underlying reference of the branch. - * - * @return 0 on success; GIT_ENOTFOUND when no remote tracking - * reference exists, otherwise an error code. - */ -GIT_EXTERN(int) git_branch_upstream( - git_reference **out, - const git_reference *branch); - -/** - * Set the upstream configuration for a given local branch - * - * @param branch the branch to configure - * - * @param upstream_name remote-tracking or local branch to set as - * upstream. Pass NULL to unset. - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_branch_set_upstream(git_reference *branch, const char *upstream_name); - -/** - * Return the name of the reference supporting the remote tracking branch, - * given the name of a local branch reference. - * - * @param out Pointer to the user-allocated git_buf which will be - * filled with the name of the reference. - * - * @param repo the repository where the branches live - * - * @param refname reference name of the local branch. - * - * @return 0, GIT_ENOTFOUND when no remote tracking reference exists, - * otherwise an error code. - */ -GIT_EXTERN(int) git_branch_upstream_name( - git_buf *out, - git_repository *repo, - const char *refname); - -/** - * Determine if the current local branch is pointed at by HEAD. - * - * @param branch Current underlying reference of the branch. - * - * @return 1 if HEAD points at the branch, 0 if it isn't, - * error code otherwise. - */ -GIT_EXTERN(int) git_branch_is_head( - const git_reference *branch); - -/** - * Return the name of remote that the remote tracking branch belongs to. - * - * @param out Pointer to the user-allocated git_buf which will be filled with the name of the remote. - * - * @param repo The repository where the branch lives. - * - * @param canonical_branch_name name of the remote tracking branch. - * - * @return 0, GIT_ENOTFOUND - * when no remote matching remote was found, - * GIT_EAMBIGUOUS when the branch maps to several remotes, - * otherwise an error code. - */ -GIT_EXTERN(int) git_branch_remote_name( - git_buf *out, - git_repository *repo, - const char *canonical_branch_name); - - -/** - * Retrieve the name fo the upstream remote of a local branch - * - * @param buf the buffer into which to write the name - * @param repo the repository in which to look - * @param refname the full name of the branch - * @return 0 or an error code - */ - GIT_EXTERN(int) git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *refname); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/buffer.h b/libgit2/include/git2/buffer.h deleted file mode 100644 index 9fc6a58..0000000 --- a/libgit2/include/git2/buffer.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_buf_h__ -#define INCLUDE_git_buf_h__ - -#include "common.h" - -/** - * @file git2/buffer.h - * @brief Buffer export structure - * - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * A data buffer for exporting data from libgit2 - * - * Sometimes libgit2 wants to return an allocated data buffer to the - * caller and have the caller take responsibility for freeing that memory. - * This can be awkward if the caller does not have easy access to the same - * allocation functions that libgit2 is using. In those cases, libgit2 - * will fill in a `git_buf` and the caller can use `git_buf_free()` to - * release it when they are done. - * - * A `git_buf` may also be used for the caller to pass in a reference to - * a block of memory they hold. In this case, libgit2 will not resize or - * free the memory, but will read from it as needed. - * - * A `git_buf` is a public structure with three fields: - * - * - `ptr` points to the start of the allocated memory. If it is NULL, - * then the `git_buf` is considered empty and libgit2 will feel free - * to overwrite it with new data. - * - * - `size` holds the size (in bytes) of the data that is actually used. - * - * - `asize` holds the known total amount of allocated memory if the `ptr` - * was allocated by libgit2. It may be larger than `size`. If `ptr` - * was not allocated by libgit2 and should not be resized and/or freed, - * then `asize` will be set to zero. - * - * Some APIs may occasionally do something slightly unusual with a buffer, - * such as setting `ptr` to a value that was passed in by the user. In - * those cases, the behavior will be clearly documented by the API. - */ -typedef struct { - char *ptr; - size_t asize, size; -} git_buf; - -/** - * Static initializer for git_buf from static buffer - */ -#define GIT_BUF_INIT_CONST(STR,LEN) { (char *)(STR), 0, (size_t)(LEN) } - -/** - * Free the memory referred to by the git_buf. - * - * Note that this does not free the `git_buf` itself, just the memory - * pointed to by `buffer->ptr`. This will not free the memory if it looks - * like it was not allocated internally, but it will clear the buffer back - * to the empty state. - * - * @param buffer The buffer to deallocate - */ -GIT_EXTERN(void) git_buf_free(git_buf *buffer); - -/** - * Resize the buffer allocation to make more space. - * - * This will attempt to grow the buffer to accommodate the target size. - * - * If the buffer refers to memory that was not allocated by libgit2 (i.e. - * the `asize` field is zero), then `ptr` will be replaced with a newly - * allocated block of data. Be careful so that memory allocated by the - * caller is not lost. As a special variant, if you pass `target_size` as - * 0 and the memory is not allocated by libgit2, this will allocate a new - * buffer of size `size` and copy the external data into it. - * - * Currently, this will never shrink a buffer, only expand it. - * - * If the allocation fails, this will return an error and the buffer will be - * marked as invalid for future operations, invaliding the contents. - * - * @param buffer The buffer to be resized; may or may not be allocated yet - * @param target_size The desired available size - * @return 0 on success, -1 on allocation failure - */ -GIT_EXTERN(int) git_buf_grow(git_buf *buffer, size_t target_size); - -/** - * Set buffer to a copy of some raw data. - * - * @param buffer The buffer to set - * @param data The data to copy into the buffer - * @param datalen The length of the data to copy into the buffer - * @return 0 on success, -1 on allocation failure - */ -GIT_EXTERN(int) git_buf_set( - git_buf *buffer, const void *data, size_t datalen); - -/** -* Check quickly if buffer looks like it contains binary data -* -* @param buf Buffer to check -* @return 1 if buffer looks like non-text data -*/ -GIT_EXTERN(int) git_buf_is_binary(const git_buf *buf); - -/** -* Check quickly if buffer contains a NUL byte -* -* @param buf Buffer to check -* @return 1 if buffer contains a NUL byte -*/ -GIT_EXTERN(int) git_buf_contains_nul(const git_buf *buf); - -GIT_END_DECL - -/** @} */ - -#endif diff --git a/libgit2/include/git2/checkout.h b/libgit2/include/git2/checkout.h deleted file mode 100644 index 4a9dbb0..0000000 --- a/libgit2/include/git2/checkout.h +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_checkout_h__ -#define INCLUDE_git_checkout_h__ - -#include "common.h" -#include "types.h" -#include "diff.h" - -/** - * @file git2/checkout.h - * @brief Git checkout routines - * @defgroup git_checkout Git checkout routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Checkout behavior flags - * - * In libgit2, checkout is used to update the working directory and index - * to match a target tree. Unlike git checkout, it does not move the HEAD - * commit for you - use `git_repository_set_head` or the like to do that. - * - * Checkout looks at (up to) four things: the "target" tree you want to - * check out, the "baseline" tree of what was checked out previously, the - * working directory for actual files, and the index for staged changes. - * - * You give checkout one of three strategies for update: - * - * - `GIT_CHECKOUT_NONE` is a dry-run strategy that checks for conflicts, - * etc., but doesn't make any actual changes. - * - * - `GIT_CHECKOUT_FORCE` is at the opposite extreme, taking any action to - * make the working directory match the target (including potentially - * discarding modified files). - * - * - `GIT_CHECKOUT_SAFE` is between these two options, it will only make - * modifications that will not lose changes. - * - * | target == baseline | target != baseline | - * ---------------------|-----------------------|----------------------| - * workdir == baseline | no action | create, update, or | - * | | delete file | - * ---------------------|-----------------------|----------------------| - * workdir exists and | no action | conflict (notify | - * is != baseline | notify dirty MODIFIED | and cancel checkout) | - * ---------------------|-----------------------|----------------------| - * workdir missing, | notify dirty DELETED | create file | - * baseline present | | | - * ---------------------|-----------------------|----------------------| - * - * To emulate `git checkout`, use `GIT_CHECKOUT_SAFE` with a checkout - * notification callback (see below) that displays information about dirty - * files. The default behavior will cancel checkout on conflicts. - * - * To emulate `git checkout-index`, use `GIT_CHECKOUT_SAFE` with a - * notification callback that cancels the operation if a dirty-but-existing - * file is found in the working directory. This core git command isn't - * quite "force" but is sensitive about some types of changes. - * - * To emulate `git checkout -f`, use `GIT_CHECKOUT_FORCE`. - * - * - * There are some additional flags to modified the behavior of checkout: - * - * - GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates - * even if there are conflicts (instead of cancelling the checkout). - * - * - GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not - * in target, baseline, or index, and not ignored) from the working dir. - * - * - GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also - * untracked) from the working directory as well. - * - * - GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that - * already exist. Files will not be created nor deleted. This just skips - * applying adds, deletes, and typechanges. - * - * - GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the - * updated files' information to the index. - * - * - Normally, checkout will reload the index and git attributes from disk - * before any operations. GIT_CHECKOUT_NO_REFRESH prevents this reload. - * - * - Unmerged index entries are conflicts. GIT_CHECKOUT_SKIP_UNMERGED skips - * files with unmerged index entries instead. GIT_CHECKOUT_USE_OURS and - * GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the - * stage 2 ("ours") or stage 3 ("theirs") version of files in the index. - * - * - GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being - * overwritten. Normally, files that are ignored in the working directory - * are not considered "precious" and may be overwritten if the checkout - * target contains that file. - * - * - GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing - * files or folders that fold to the same name on case insensitive - * filesystems. This can cause files to retain their existing names - * and write through existing symbolic links. - */ -typedef enum { - GIT_CHECKOUT_NONE = 0, /**< default is a dry run, no actual updates */ - - /** Allow safe updates that cannot overwrite uncommitted data */ - GIT_CHECKOUT_SAFE = (1u << 0), - - /** Allow all updates to force working directory to look like index */ - GIT_CHECKOUT_FORCE = (1u << 1), - - - /** Allow checkout to recreate missing files */ - GIT_CHECKOUT_RECREATE_MISSING = (1u << 2), - - /** Allow checkout to make safe updates even if conflicts are found */ - GIT_CHECKOUT_ALLOW_CONFLICTS = (1u << 4), - - /** Remove untracked files not in index (that are not ignored) */ - GIT_CHECKOUT_REMOVE_UNTRACKED = (1u << 5), - - /** Remove ignored files not in index */ - GIT_CHECKOUT_REMOVE_IGNORED = (1u << 6), - - /** Only update existing files, don't create new ones */ - GIT_CHECKOUT_UPDATE_ONLY = (1u << 7), - - /** - * Normally checkout updates index entries as it goes; this stops that. - * Implies `GIT_CHECKOUT_DONT_WRITE_INDEX`. - */ - GIT_CHECKOUT_DONT_UPDATE_INDEX = (1u << 8), - - /** Don't refresh index/config/etc before doing checkout */ - GIT_CHECKOUT_NO_REFRESH = (1u << 9), - - /** Allow checkout to skip unmerged files */ - GIT_CHECKOUT_SKIP_UNMERGED = (1u << 10), - /** For unmerged files, checkout stage 2 from index */ - GIT_CHECKOUT_USE_OURS = (1u << 11), - /** For unmerged files, checkout stage 3 from index */ - GIT_CHECKOUT_USE_THEIRS = (1u << 12), - - /** Treat pathspec as simple list of exact match file paths */ - GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH = (1u << 13), - - /** Ignore directories in use, they will be left empty */ - GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES = (1u << 18), - - /** Don't overwrite ignored files that exist in the checkout target */ - GIT_CHECKOUT_DONT_OVERWRITE_IGNORED = (1u << 19), - - /** Write normal merge files for conflicts */ - GIT_CHECKOUT_CONFLICT_STYLE_MERGE = (1u << 20), - - /** Include common ancestor data in diff3 format files for conflicts */ - GIT_CHECKOUT_CONFLICT_STYLE_DIFF3 = (1u << 21), - - /** Don't overwrite existing files or folders */ - GIT_CHECKOUT_DONT_REMOVE_EXISTING = (1u << 22), - - /** Normally checkout writes the index upon completion; this prevents that. */ - GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23), - - /** - * THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED - */ - - /** Recursively checkout submodules with same options (NOT IMPLEMENTED) */ - GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16), - /** Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) */ - GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17), - -} git_checkout_strategy_t; - -/** - * Checkout notification flags - * - * Checkout will invoke an options notification callback (`notify_cb`) for - * certain cases - you pick which ones via `notify_flags`: - * - * - GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths. - * - * - GIT_CHECKOUT_NOTIFY_DIRTY notifies about "dirty" files, i.e. those that - * do not need an update but no longer match the baseline. Core git - * displays these files when checkout runs, but won't stop the checkout. - * - * - GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed. - * - * - GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files. - * - * - GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files. - * - * Returning a non-zero value from this callback will cancel the checkout. - * The non-zero return value will be propagated back and returned by the - * git_checkout_... call. - * - * Notification callbacks are made prior to modifying any files on disk, - * so canceling on any notification will still happen prior to any files - * being modified. - */ -typedef enum { - GIT_CHECKOUT_NOTIFY_NONE = 0, - GIT_CHECKOUT_NOTIFY_CONFLICT = (1u << 0), - GIT_CHECKOUT_NOTIFY_DIRTY = (1u << 1), - GIT_CHECKOUT_NOTIFY_UPDATED = (1u << 2), - GIT_CHECKOUT_NOTIFY_UNTRACKED = (1u << 3), - GIT_CHECKOUT_NOTIFY_IGNORED = (1u << 4), - - GIT_CHECKOUT_NOTIFY_ALL = 0x0FFFFu -} git_checkout_notify_t; - -typedef struct { - size_t mkdir_calls; - size_t stat_calls; - size_t chmod_calls; -} git_checkout_perfdata; - -/** Checkout notification callback function */ -typedef int (*git_checkout_notify_cb)( - git_checkout_notify_t why, - const char *path, - const git_diff_file *baseline, - const git_diff_file *target, - const git_diff_file *workdir, - void *payload); - -/** Checkout progress notification function */ -typedef void (*git_checkout_progress_cb)( - const char *path, - size_t completed_steps, - size_t total_steps, - void *payload); - -/** Checkout perfdata notification function */ -typedef void (*git_checkout_perfdata_cb)( - const git_checkout_perfdata *perfdata, - void *payload); - -/** - * Checkout options structure - * - * Zero out for defaults. Initialize with `GIT_CHECKOUT_OPTIONS_INIT` macro to - * correctly set the `version` field. E.g. - * - * git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; - */ -typedef struct git_checkout_options { - unsigned int version; - - unsigned int checkout_strategy; /**< default will be a dry run */ - - int disable_filters; /**< don't apply filters like CRLF conversion */ - unsigned int dir_mode; /**< default is 0755 */ - unsigned int file_mode; /**< default is 0644 or 0755 as dictated by blob */ - int file_open_flags; /**< default is O_CREAT | O_TRUNC | O_WRONLY */ - - unsigned int notify_flags; /**< see `git_checkout_notify_t` above */ - git_checkout_notify_cb notify_cb; - void *notify_payload; - - /** Optional callback to notify the consumer of checkout progress. */ - git_checkout_progress_cb progress_cb; - void *progress_payload; - - /** When not zeroed out, array of fnmatch patterns specifying which - * paths should be taken into account, otherwise all files. Use - * GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list. - */ - git_strarray paths; - - /** The expected content of the working directory; defaults to HEAD. - * If the working directory does not match this baseline information, - * that will produce a checkout conflict. - */ - git_tree *baseline; - - /** Like `baseline` above, though expressed as an index. This - * option overrides `baseline`. - */ - git_index *baseline_index; /**< expected content of workdir, expressed as an index. */ - - const char *target_directory; /**< alternative checkout path to workdir */ - - const char *ancestor_label; /**< the name of the common ancestor side of conflicts */ - const char *our_label; /**< the name of the "our" side of conflicts */ - const char *their_label; /**< the name of the "their" side of conflicts */ - - /** Optional callback to notify the consumer of performance data. */ - git_checkout_perfdata_cb perfdata_cb; - void *perfdata_payload; -} git_checkout_options; - -#define GIT_CHECKOUT_OPTIONS_VERSION 1 -#define GIT_CHECKOUT_OPTIONS_INIT {GIT_CHECKOUT_OPTIONS_VERSION} - -/** -* Initializes a `git_checkout_options` with default values. Equivalent to -* creating an instance with GIT_CHECKOUT_OPTIONS_INIT. -* -* @param opts the `git_checkout_options` struct to initialize. -* @param version Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION` -* @return Zero on success; -1 on failure. -*/ -GIT_EXTERN(int) git_checkout_init_options( - git_checkout_options *opts, - unsigned int version); - -/** - * Updates files in the index and the working tree to match the content of - * the commit pointed at by HEAD. - * - * Note that this is _not_ the correct mechanism used to switch branches; - * do not change your `HEAD` and then call this method, that would leave - * you with checkout conflicts since your working directory would then - * appear to be dirty. Instead, checkout the target of the branch and - * then update `HEAD` using `git_repository_set_head` to point to the - * branch you checked out. - * - * @param repo repository to check out (must be non-bare) - * @param opts specifies checkout options (may be NULL) - * @return 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non - * existing branch, non-zero value returned by `notify_cb`, or - * other error code < 0 (use giterr_last for error details) - */ -GIT_EXTERN(int) git_checkout_head( - git_repository *repo, - const git_checkout_options *opts); - -/** - * Updates files in the working tree to match the content of the index. - * - * @param repo repository into which to check out (must be non-bare) - * @param index index to be checked out (or NULL to use repository index) - * @param opts specifies checkout options (may be NULL) - * @return 0 on success, non-zero return value from `notify_cb`, or error - * code < 0 (use giterr_last for error details) - */ -GIT_EXTERN(int) git_checkout_index( - git_repository *repo, - git_index *index, - const git_checkout_options *opts); - -/** - * Updates files in the index and working tree to match the content of the - * tree pointed at by the treeish. - * - * @param repo repository to check out (must be non-bare) - * @param treeish a commit, tag or tree which content will be used to update - * the working directory (or NULL to use HEAD) - * @param opts specifies checkout options (may be NULL) - * @return 0 on success, non-zero return value from `notify_cb`, or error - * code < 0 (use giterr_last for error details) - */ -GIT_EXTERN(int) git_checkout_tree( - git_repository *repo, - const git_object *treeish, - const git_checkout_options *opts); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/cherrypick.h b/libgit2/include/git2/cherrypick.h deleted file mode 100644 index edec96a..0000000 --- a/libgit2/include/git2/cherrypick.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_cherrypick_h__ -#define INCLUDE_git_cherrypick_h__ - -#include "common.h" -#include "types.h" -#include "merge.h" - -/** - * @file git2/cherrypick.h - * @brief Git cherry-pick routines - * @defgroup git_cherrypick Git cherry-pick routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Cherry-pick options - */ -typedef struct { - unsigned int version; - - /** For merge commits, the "mainline" is treated as the parent. */ - unsigned int mainline; - - git_merge_options merge_opts; /**< Options for the merging */ - git_checkout_options checkout_opts; /**< Options for the checkout */ -} git_cherrypick_options; - -#define GIT_CHERRYPICK_OPTIONS_VERSION 1 -#define GIT_CHERRYPICK_OPTIONS_INIT {GIT_CHERRYPICK_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT} - -/** - * Initializes a `git_cherrypick_options` with default values. Equivalent to - * creating an instance with GIT_CHERRYPICK_OPTIONS_INIT. - * - * @param opts the `git_cherrypick_options` struct to initialize - * @param version Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_cherrypick_init_options( - git_cherrypick_options *opts, - unsigned int version); - -/** - * Cherry-picks the given commit against the given "our" commit, producing an - * index that reflects the result of the cherry-pick. - * - * The returned index must be freed explicitly with `git_index_free`. - * - * @param out pointer to store the index result in - * @param repo the repository that contains the given commits - * @param cherrypick_commit the commit to cherry-pick - * @param our_commit the commit to revert against (eg, HEAD) - * @param mainline the parent of the revert commit, if it is a merge - * @param merge_options the merge options (or null for defaults) - * @return zero on success, -1 on failure. - */ -GIT_EXTERN(int) git_cherrypick_commit( - git_index **out, - git_repository *repo, - git_commit *cherrypick_commit, - git_commit *our_commit, - unsigned int mainline, - const git_merge_options *merge_options); - -/** - * Cherry-pick the given commit, producing changes in the index and working directory. - * - * @param repo the repository to cherry-pick - * @param commit the commit to cherry-pick - * @param cherrypick_options the cherry-pick options (or null for defaults) - * @return zero on success, -1 on failure. - */ -GIT_EXTERN(int) git_cherrypick( - git_repository *repo, - git_commit *commit, - const git_cherrypick_options *cherrypick_options); - -/** @} */ -GIT_END_DECL - -#endif - diff --git a/libgit2/include/git2/clone.h b/libgit2/include/git2/clone.h deleted file mode 100644 index 9e23aac..0000000 --- a/libgit2/include/git2/clone.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_clone_h__ -#define INCLUDE_git_clone_h__ - -#include "common.h" -#include "types.h" -#include "indexer.h" -#include "checkout.h" -#include "remote.h" -#include "transport.h" - - -/** - * @file git2/clone.h - * @brief Git cloning routines - * @defgroup git_clone Git cloning routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Options for bypassing the git-aware transport on clone. Bypassing - * it means that instead of a fetch, libgit2 will copy the object - * database directory instead of figuring out what it needs, which is - * faster. If possible, it will hardlink the files to save space. - */ -typedef enum { - /** - * Auto-detect (default), libgit2 will bypass the git-aware - * transport for local paths, but use a normal fetch for - * `file://` urls. - */ - GIT_CLONE_LOCAL_AUTO, - /** - * Bypass the git-aware transport even for a `file://` url. - */ - GIT_CLONE_LOCAL, - /** - * Do no bypass the git-aware transport - */ - GIT_CLONE_NO_LOCAL, - /** - * Bypass the git-aware transport, but do not try to use - * hardlinks. - */ - GIT_CLONE_LOCAL_NO_LINKS, -} git_clone_local_t; - -/** - * The signature of a function matching git_remote_create, with an additional - * void* as a callback payload. - * - * Callers of git_clone may provide a function matching this signature to override - * the remote creation and customization process during a clone operation. - * - * @param out the resulting remote - * @param repo the repository in which to create the remote - * @param name the remote's name - * @param url the remote's url - * @param payload an opaque payload - * @return 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code - */ -typedef int (*git_remote_create_cb)( - git_remote **out, - git_repository *repo, - const char *name, - const char *url, - void *payload); - -/** - * The signature of a function matchin git_repository_init, with an - * aditional void * as callback payload. - * - * Callers of git_clone my provide a function matching this signature - * to override the repository creation and customization process - * during a clone operation. - * - * @param out the resulting repository - * @param path path in which to create the repository - * @param bare whether the repository is bare. This is the value from the clone options - * @param payload payload specified by the options - * @return 0, or a negative value to indicate error - */ -typedef int (*git_repository_create_cb)( - git_repository **out, - const char *path, - int bare, - void *payload); - -/** - * Clone options structure - * - * Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this: - * - * git_clone_options opts = GIT_CLONE_OPTIONS_INIT; - */ -typedef struct git_clone_options { - unsigned int version; - - /** - * These options are passed to the checkout step. To disable - * checkout, set the `checkout_strategy` to - * `GIT_CHECKOUT_NONE`. - */ - git_checkout_options checkout_opts; - - /** - * Options which control the fetch, including callbacks. - * - * The callbacks are used for reporting fetch progress, and for acquiring - * credentials in the event they are needed. - */ - git_fetch_options fetch_opts; - - /** - * Set to zero (false) to create a standard repo, or non-zero - * for a bare repo - */ - int bare; - - /** - * Whether to use a fetch or copy the object database. - */ - git_clone_local_t local; - - /** - * The name of the branch to checkout. NULL means use the - * remote's default branch. - */ - const char* checkout_branch; - - /** - * A callback used to create the new repository into which to - * clone. If NULL, the 'bare' field will be used to determine - * whether to create a bare repository. - */ - git_repository_create_cb repository_cb; - - /** - * An opaque payload to pass to the git_repository creation callback. - * This parameter is ignored unless repository_cb is non-NULL. - */ - void *repository_cb_payload; - - /** - * A callback used to create the git_remote, prior to its being - * used to perform the clone operation. See the documentation for - * git_remote_create_cb for details. This parameter may be NULL, - * indicating that git_clone should provide default behavior. - */ - git_remote_create_cb remote_cb; - - /** - * An opaque payload to pass to the git_remote creation callback. - * This parameter is ignored unless remote_cb is non-NULL. - */ - void *remote_cb_payload; -} git_clone_options; - -#define GIT_CLONE_OPTIONS_VERSION 1 -#define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \ - { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \ - GIT_FETCH_OPTIONS_INIT } - -/** - * Initializes a `git_clone_options` with default values. Equivalent to - * creating an instance with GIT_CLONE_OPTIONS_INIT. - * - * @param opts The `git_clone_options` struct to initialize - * @param version Version of struct; pass `GIT_CLONE_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_clone_init_options( - git_clone_options *opts, - unsigned int version); - -/** - * Clone a remote repository. - * - * By default this creates its repository and initial remote to match - * git's defaults. You can use the options in the callback to - * customize how these are created. - * - * @param out pointer that will receive the resulting repository object - * @param url the remote repository to clone - * @param local_path local directory to clone to - * @param options configuration options for the clone. If NULL, the - * function works as though GIT_OPTIONS_INIT were passed. - * @return 0 on success, any non-zero return value from a callback - * function, or a negative value to indicate an error (use - * `giterr_last` for a detailed error message) - */ -GIT_EXTERN(int) git_clone( - git_repository **out, - const char *url, - const char *local_path, - const git_clone_options *options); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/commit.h b/libgit2/include/git2/commit.h deleted file mode 100644 index 3488c74..0000000 --- a/libgit2/include/git2/commit.h +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_commit_h__ -#define INCLUDE_git_commit_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "object.h" - -/** - * @file git2/commit.h - * @brief Git commit parsing, formatting routines - * @defgroup git_commit Git commit parsing, formatting routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a commit object from a repository. - * - * The returned object should be released with `git_commit_free` when no - * longer needed. - * - * @param commit pointer to the looked up commit - * @param repo the repo to use when locating the commit. - * @param id identity of the commit to locate. If the object is - * an annotated tag it will be peeled back to the commit. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_commit_lookup( - git_commit **commit, git_repository *repo, const git_oid *id); - -/** - * Lookup a commit object from a repository, given a prefix of its - * identifier (short id). - * - * The returned object should be released with `git_commit_free` when no - * longer needed. - * - * @see git_object_lookup_prefix - * - * @param commit pointer to the looked up commit - * @param repo the repo to use when locating the commit. - * @param id identity of the commit to locate. If the object is - * an annotated tag it will be peeled back to the commit. - * @param len the length of the short identifier - * @return 0 or an error code - */ -GIT_EXTERN(int) git_commit_lookup_prefix( - git_commit **commit, git_repository *repo, const git_oid *id, size_t len); - -/** - * Close an open commit - * - * This is a wrapper around git_object_free() - * - * IMPORTANT: - * It *is* necessary to call this method when you stop - * using a commit. Failure to do so will cause a memory leak. - * - * @param commit the commit to close - */ - -GIT_EXTERN(void) git_commit_free(git_commit *commit); - -/** - * Get the id of a commit. - * - * @param commit a previously loaded commit. - * @return object identity for the commit. - */ -GIT_EXTERN(const git_oid *) git_commit_id(const git_commit *commit); - -/** - * Get the repository that contains the commit. - * - * @param commit A previously loaded commit. - * @return Repository that contains this commit. - */ -GIT_EXTERN(git_repository *) git_commit_owner(const git_commit *commit); - -/** - * Get the encoding for the message of a commit, - * as a string representing a standard encoding name. - * - * The encoding may be NULL if the `encoding` header - * in the commit is missing; in that case UTF-8 is assumed. - * - * @param commit a previously loaded commit. - * @return NULL, or the encoding - */ -GIT_EXTERN(const char *) git_commit_message_encoding(const git_commit *commit); - -/** - * Get the full message of a commit. - * - * The returned message will be slightly prettified by removing any - * potential leading newlines. - * - * @param commit a previously loaded commit. - * @return the message of a commit - */ -GIT_EXTERN(const char *) git_commit_message(const git_commit *commit); - -/** - * Get the full raw message of a commit. - * - * @param commit a previously loaded commit. - * @return the raw message of a commit - */ -GIT_EXTERN(const char *) git_commit_message_raw(const git_commit *commit); - -/** - * Get the short "summary" of the git commit message. - * - * The returned message is the summary of the commit, comprising the - * first paragraph of the message with whitespace trimmed and squashed. - * - * @param commit a previously loaded commit. - * @return the summary of a commit or NULL on error - */ -GIT_EXTERN(const char *) git_commit_summary(git_commit *commit); - -/** - * Get the long "body" of the git commit message. - * - * The returned message is the body of the commit, comprising - * everything but the first paragraph of the message. Leading and - * trailing whitespaces are trimmed. - * - * @param commit a previously loaded commit. - * @return the body of a commit or NULL when no the message only - * consists of a summary - */ -GIT_EXTERN(const char *) git_commit_body(git_commit *commit); - -/** - * Get the commit time (i.e. committer time) of a commit. - * - * @param commit a previously loaded commit. - * @return the time of a commit - */ -GIT_EXTERN(git_time_t) git_commit_time(const git_commit *commit); - -/** - * Get the commit timezone offset (i.e. committer's preferred timezone) of a commit. - * - * @param commit a previously loaded commit. - * @return positive or negative timezone offset, in minutes from UTC - */ -GIT_EXTERN(int) git_commit_time_offset(const git_commit *commit); - -/** - * Get the committer of a commit. - * - * @param commit a previously loaded commit. - * @return the committer of a commit - */ -GIT_EXTERN(const git_signature *) git_commit_committer(const git_commit *commit); - -/** - * Get the author of a commit. - * - * @param commit a previously loaded commit. - * @return the author of a commit - */ -GIT_EXTERN(const git_signature *) git_commit_author(const git_commit *commit); - -/** - * Get the full raw text of the commit header. - * - * @param commit a previously loaded commit - * @return the header text of the commit - */ -GIT_EXTERN(const char *) git_commit_raw_header(const git_commit *commit); - -/** - * Get the tree pointed to by a commit. - * - * @param tree_out pointer where to store the tree object - * @param commit a previously loaded commit. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_commit_tree(git_tree **tree_out, const git_commit *commit); - -/** - * Get the id of the tree pointed to by a commit. This differs from - * `git_commit_tree` in that no attempts are made to fetch an object - * from the ODB. - * - * @param commit a previously loaded commit. - * @return the id of tree pointed to by commit. - */ -GIT_EXTERN(const git_oid *) git_commit_tree_id(const git_commit *commit); - -/** - * Get the number of parents of this commit - * - * @param commit a previously loaded commit. - * @return integer of count of parents - */ -GIT_EXTERN(unsigned int) git_commit_parentcount(const git_commit *commit); - -/** - * Get the specified parent of the commit. - * - * @param out Pointer where to store the parent commit - * @param commit a previously loaded commit. - * @param n the position of the parent (from 0 to `parentcount`) - * @return 0 or an error code - */ -GIT_EXTERN(int) git_commit_parent( - git_commit **out, - const git_commit *commit, - unsigned int n); - -/** - * Get the oid of a specified parent for a commit. This is different from - * `git_commit_parent`, which will attempt to load the parent commit from - * the ODB. - * - * @param commit a previously loaded commit. - * @param n the position of the parent (from 0 to `parentcount`) - * @return the id of the parent, NULL on error. - */ -GIT_EXTERN(const git_oid *) git_commit_parent_id( - const git_commit *commit, - unsigned int n); - -/** - * Get the commit object that is the th generation ancestor - * of the named commit object, following only the first parents. - * The returned commit has to be freed by the caller. - * - * Passing `0` as the generation number returns another instance of the - * base commit itself. - * - * @param ancestor Pointer where to store the ancestor commit - * @param commit a previously loaded commit. - * @param n the requested generation - * @return 0 on success; GIT_ENOTFOUND if no matching ancestor exists - * or an error code - */ -GIT_EXTERN(int) git_commit_nth_gen_ancestor( - git_commit **ancestor, - const git_commit *commit, - unsigned int n); - -/** - * Get an arbitrary header field - * - * @param out the buffer to fill - * @param commit the commit to look in - * @param field the header field to return - * @return 0 on succeess, GIT_ENOTFOUND if the field does not exist, - * or an error code - */ -GIT_EXTERN(int) git_commit_header_field(git_buf *out, const git_commit *commit, const char *field); - -/** - * Extract the signature from a commit - * - * If the id is not for a commit, the error class will be - * `GITERR_INVALID`. If the commit does not have a signature, the - * error class will be `GITERR_OBJECT`. - * - * @param signature the signature block - * @param signed_data signed data; this is the commit contents minus the signature block - * @param repo the repository in which the commit exists - * @param commit_id the commit from which to extract the data - * @param field the name of the header field containing the signature - * block; pass `NULL` to extract the default 'gpgsig' - * @return 0 on success, GIT_ENOTFOUND if the id is not for a commit - * or the commit does not have a signature. - */ -GIT_EXTERN(int) git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field); - -/** - * Create new commit in the repository from a list of `git_object` pointers - * - * The message will **not** be cleaned up automatically. You can do that - * with the `git_message_prettify()` function. - * - * @param id Pointer in which to store the OID of the newly created commit - * - * @param repo Repository where to store the commit - * - * @param update_ref If not NULL, name of the reference that - * will be updated to point to this commit. If the reference - * is not direct, it will be resolved to a direct reference. - * Use "HEAD" to update the HEAD of the current branch and - * make it point to this commit. If the reference doesn't - * exist yet, it will be created. If it does exist, the first - * parent must be the tip of this branch. - * - * @param author Signature with author and author time of commit - * - * @param committer Signature with committer and * commit time of commit - * - * @param message_encoding The encoding for the message in the - * commit, represented with a standard encoding name. - * E.g. "UTF-8". If NULL, no encoding header is written and - * UTF-8 is assumed. - * - * @param message Full message for this commit - * - * @param tree An instance of a `git_tree` object that will - * be used as the tree for the commit. This tree object must - * also be owned by the given `repo`. - * - * @param parent_count Number of parents for this commit - * - * @param parents Array of `parent_count` pointers to `git_commit` - * objects that will be used as the parents for this commit. This - * array may be NULL if `parent_count` is 0 (root commit). All the - * given commits must be owned by the `repo`. - * - * @return 0 or an error code - * The created commit will be written to the Object Database and - * the given reference will be updated to point to it - */ -GIT_EXTERN(int) git_commit_create( - git_oid *id, - git_repository *repo, - const char *update_ref, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message, - const git_tree *tree, - size_t parent_count, - const git_commit *parents[]); - -/** - * Create new commit in the repository using a variable argument list. - * - * The message will **not** be cleaned up automatically. You can do that - * with the `git_message_prettify()` function. - * - * The parents for the commit are specified as a variable list of pointers - * to `const git_commit *`. Note that this is a convenience method which may - * not be safe to export for certain languages or compilers - * - * All other parameters remain the same as `git_commit_create()`. - * - * @see git_commit_create - */ -GIT_EXTERN(int) git_commit_create_v( - git_oid *id, - git_repository *repo, - const char *update_ref, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message, - const git_tree *tree, - size_t parent_count, - ...); - -/** - * Amend an existing commit by replacing only non-NULL values. - * - * This creates a new commit that is exactly the same as the old commit, - * except that any non-NULL values will be updated. The new commit has - * the same parents as the old commit. - * - * The `update_ref` value works as in the regular `git_commit_create()`, - * updating the ref to point to the newly rewritten commit. If you want - * to amend a commit that is not currently the tip of the branch and then - * rewrite the following commits to reach a ref, pass this as NULL and - * update the rest of the commit chain and ref separately. - * - * Unlike `git_commit_create()`, the `author`, `committer`, `message`, - * `message_encoding`, and `tree` parameters can be NULL in which case this - * will use the values from the original `commit_to_amend`. - * - * All parameters have the same meanings as in `git_commit_create()`. - * - * @see git_commit_create - */ -GIT_EXTERN(int) git_commit_amend( - git_oid *id, - const git_commit *commit_to_amend, - const char *update_ref, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message, - const git_tree *tree); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/common.h b/libgit2/include/git2/common.h deleted file mode 100644 index d7428d8..0000000 --- a/libgit2/include/git2/common.h +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_common_h__ -#define INCLUDE_git_common_h__ - -#include -#include - -#ifdef __cplusplus -# define GIT_BEGIN_DECL extern "C" { -# define GIT_END_DECL } -#else - /** Start declarations in C mode */ -# define GIT_BEGIN_DECL /* empty */ - /** End declarations in C mode */ -# define GIT_END_DECL /* empty */ -#endif - -#if defined(_MSC_VER) && _MSC_VER < 1800 - GIT_BEGIN_DECL -# include "inttypes.h" - GIT_END_DECL -/** This check is needed for importing this file in an iOS/OS X framework throws an error in Xcode otherwise.*/ -#elif !defined(__CLANG_INTTYPES_H) -# include -#endif - -#ifdef DOCURIUM -/* - * This is so clang's doc parser acknowledges comments on functions - * with size_t parameters. - */ -typedef size_t size_t; -#endif - -/** Declare a public function exported for application use. */ -#if __GNUC__ >= 4 -# define GIT_EXTERN(type) extern \ - __attribute__((visibility("default"))) \ - type -#elif defined(_MSC_VER) -# define GIT_EXTERN(type) __declspec(dllexport) type -#else -# define GIT_EXTERN(type) extern type -#endif - -/** Declare a function's takes printf style arguments. */ -#ifdef __GNUC__ -# define GIT_FORMAT_PRINTF(a,b) __attribute__((format (printf, a, b))) -#else -# define GIT_FORMAT_PRINTF(a,b) /* empty */ -#endif - -#if (defined(_WIN32)) && !defined(__CYGWIN__) -#define GIT_WIN32 1 -#endif - -#ifdef __amigaos4__ -#include -#endif - -/** - * @file git2/common.h - * @brief Git common platform definitions - * @defgroup git_common Git common platform definitions - * @ingroup Git - * @{ - */ - -GIT_BEGIN_DECL - -/** - * The separator used in path list strings (ie like in the PATH - * environment variable). A semi-colon ";" is used on Windows, and - * a colon ":" for all other systems. - */ -#ifdef GIT_WIN32 -#define GIT_PATH_LIST_SEPARATOR ';' -#else -#define GIT_PATH_LIST_SEPARATOR ':' -#endif - -/** - * The maximum length of a valid git path. - */ -#define GIT_PATH_MAX 4096 - -/** - * The string representation of the null object ID. - */ -#define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000" - -/** - * Return the version of the libgit2 library - * being currently used. - * - * @param major Store the major version number - * @param minor Store the minor version number - * @param rev Store the revision (patch) number - */ -GIT_EXTERN(void) git_libgit2_version(int *major, int *minor, int *rev); - -/** - * Combinations of these values describe the features with which libgit2 - * was compiled - */ -typedef enum { - GIT_FEATURE_THREADS = (1 << 0), - GIT_FEATURE_HTTPS = (1 << 1), - GIT_FEATURE_SSH = (1 << 2), - GIT_FEATURE_NSEC = (1 << 3), -} git_feature_t; - -/** - * Query compile time options for libgit2. - * - * @return A combination of GIT_FEATURE_* values. - * - * - GIT_FEATURE_THREADS - * Libgit2 was compiled with thread support. Note that thread support is - * still to be seen as a 'work in progress' - basic object lookups are - * believed to be threadsafe, but other operations may not be. - * - * - GIT_FEATURE_HTTPS - * Libgit2 supports the https:// protocol. This requires the openssl - * library to be found when compiling libgit2. - * - * - GIT_FEATURE_SSH - * Libgit2 supports the SSH protocol for network operations. This requires - * the libssh2 library to be found when compiling libgit2 - */ -GIT_EXTERN(int) git_libgit2_features(void); - -/** - * Global library options - * - * These are used to select which global option to set or get and are - * used in `git_libgit2_opts()`. - */ -typedef enum { - GIT_OPT_GET_MWINDOW_SIZE, - GIT_OPT_SET_MWINDOW_SIZE, - GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, - GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, - GIT_OPT_GET_SEARCH_PATH, - GIT_OPT_SET_SEARCH_PATH, - GIT_OPT_SET_CACHE_OBJECT_LIMIT, - GIT_OPT_SET_CACHE_MAX_SIZE, - GIT_OPT_ENABLE_CACHING, - GIT_OPT_GET_CACHED_MEMORY, - GIT_OPT_GET_TEMPLATE_PATH, - GIT_OPT_SET_TEMPLATE_PATH, - GIT_OPT_SET_SSL_CERT_LOCATIONS, - GIT_OPT_SET_USER_AGENT, - GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, - GIT_OPT_SET_SSL_CIPHERS, -} git_libgit2_opt_t; - -/** - * Set or query a library global option - * - * Available options: - * - * * opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *): - * - * > Get the maximum mmap window size - * - * * opts(GIT_OPT_SET_MWINDOW_SIZE, size_t): - * - * > Set the maximum mmap window size - * - * * opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *): - * - * > Get the maximum memory that will be mapped in total by the library - * - * * opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t): - * - * >Set the maximum amount of memory that can be mapped at any time - * by the library - * - * * opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf) - * - * > Get the search path for a given level of config data. "level" must - * > be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, - * > `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`. - * > The search path is written to the `out` buffer. - * - * * opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path) - * - * > Set the search path for a level of config data. The search path - * > applied to shared attributes and ignore files, too. - * > - * > - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR. - * > Pass NULL to reset to the default (generally based on environment - * > variables). Use magic path `$PATH` to include the old value - * > of the path (if you want to prepend or append, for instance). - * > - * > - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`, - * > `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or - * > `GIT_CONFIG_LEVEL_PROGRAMDATA`. - * - * * opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size) - * - * > Set the maximum data size for the given type of object to be - * > considered eligible for caching in memory. Setting to value to - * > zero means that that type of object will not be cached. - * > Defaults to 0 for GIT_OBJ_BLOB (i.e. won't cache blobs) and 4k - * > for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG. - * - * * opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes) - * - * > Set the maximum total data size that will be cached in memory - * > across all repositories before libgit2 starts evicting objects - * > from the cache. This is a soft limit, in that the library might - * > briefly exceed it, but will start aggressively evicting objects - * > from cache when that happens. The default cache size is 256MB. - * - * * opts(GIT_OPT_ENABLE_CACHING, int enabled) - * - * > Enable or disable caching completely. - * > - * > Because caches are repository-specific, disabling the cache - * > cannot immediately clear all cached objects, but each cache will - * > be cleared on the next attempt to update anything in it. - * - * * opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed) - * - * > Get the current bytes in cache and the maximum that would be - * > allowed in the cache. - * - * * opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out) - * - * > Get the default template path. - * > The path is written to the `out` buffer. - * - * * opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path) - * - * > Set the default template path. - * > - * > - `path` directory of template. - * - * * opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path) - * - * > Set the SSL certificate-authority locations. - * > - * > - `file` is the location of a file containing several - * > certificates concatenated together. - * > - `path` is the location of a directory holding several - * > certificates, one per file. - * > - * > Either parameter may be `NULL`, but not both. - * - * * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent) - * - * > Set the value of the User-Agent header. This value will be - * > appended to "git/1.0", for compatibility with other git clients. - * > - * > - `user_agent` is the value that will be delivered as the - * > User-Agent header on HTTP requests. - * - * * opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled) - * - * > Enable strict input validation when creating new objects - * > to ensure that all inputs to the new objects are valid. For - * > example, when this is enabled, the parent(s) and tree inputs - * > will be validated when creating a new commit. This defaults - * > to disabled. - * * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers) - * - * > Set the SSL ciphers use for HTTPS connections. - * > - * > - `ciphers` is the list of ciphers that are eanbled. - * - * @param option Option key - * @param ... value to set the option - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_libgit2_opts(int option, ...); - -/** @} */ -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/config.h b/libgit2/include/git2/config.h deleted file mode 100644 index d0f1ba1..0000000 --- a/libgit2/include/git2/config.h +++ /dev/null @@ -1,728 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_config_h__ -#define INCLUDE_git_config_h__ - -#include "common.h" -#include "types.h" -#include "buffer.h" - -/** - * @file git2/config.h - * @brief Git config management routines - * @defgroup git_config Git config management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Priority level of a config file. - * These priority levels correspond to the natural escalation logic - * (from higher to lower) when searching for config entries in git.git. - * - * git_config_open_default() and git_repository_config() honor those - * priority levels as well. - */ -typedef enum { - /** System-wide on Windows, for compatibility with portable git */ - GIT_CONFIG_LEVEL_PROGRAMDATA = 1, - - /** System-wide configuration file; /etc/gitconfig on Linux systems */ - GIT_CONFIG_LEVEL_SYSTEM = 2, - - /** XDG compatible configuration file; typically ~/.config/git/config */ - GIT_CONFIG_LEVEL_XDG = 3, - - /** User-specific configuration file (also called Global configuration - * file); typically ~/.gitconfig - */ - GIT_CONFIG_LEVEL_GLOBAL = 4, - - /** Repository specific configuration file; $WORK_DIR/.git/config on - * non-bare repos - */ - GIT_CONFIG_LEVEL_LOCAL = 5, - - /** Application specific configuration file; freely defined by applications - */ - GIT_CONFIG_LEVEL_APP = 6, - - /** Represents the highest level available config file (i.e. the most - * specific config file available that actually is loaded) - */ - GIT_CONFIG_HIGHEST_LEVEL = -1, -} git_config_level_t; - -/** - * An entry in a configuration file - */ -typedef struct git_config_entry { - const char *name; /**< Name of the entry (normalised) */ - const char *value; /**< String value of the entry */ - git_config_level_t level; /**< Which config file this was found in */ - void (*free)(struct git_config_entry *entry); /**< Free function for this entry */ - void *payload; /**< Opaque value for the free function. Do not read or write */ -} git_config_entry; - -/** - * Free a config entry - */ -GIT_EXTERN(void) git_config_entry_free(git_config_entry *); - -typedef int (*git_config_foreach_cb)(const git_config_entry *, void *); -typedef struct git_config_iterator git_config_iterator; - -/** - * Config var type - */ -typedef enum { - GIT_CVAR_FALSE = 0, - GIT_CVAR_TRUE = 1, - GIT_CVAR_INT32, - GIT_CVAR_STRING -} git_cvar_t; - -/** - * Mapping from config variables to values. - */ -typedef struct { - git_cvar_t cvar_type; - const char *str_match; - int map_value; -} git_cvar_map; - -/** - * Locate the path to the global configuration file - * - * The user or global configuration file is usually - * located in `$HOME/.gitconfig`. - * - * This method will try to guess the full path to that - * file, if the file exists. The returned path - * may be used on any `git_config` call to load the - * global configuration file. - * - * This method will not guess the path to the xdg compatible - * config file (.config/git/config). - * - * @param out Pointer to a user-allocated git_buf in which to store the path - * @return 0 if a global configuration file has been found. Its path will be stored in `out`. - */ -GIT_EXTERN(int) git_config_find_global(git_buf *out); - -/** - * Locate the path to the global xdg compatible configuration file - * - * The xdg compatible configuration file is usually - * located in `$HOME/.config/git/config`. - * - * This method will try to guess the full path to that - * file, if the file exists. The returned path - * may be used on any `git_config` call to load the - * xdg compatible configuration file. - * - * @param out Pointer to a user-allocated git_buf in which to store the path - * @return 0 if a xdg compatible configuration file has been - * found. Its path will be stored in `out`. - */ -GIT_EXTERN(int) git_config_find_xdg(git_buf *out); - -/** - * Locate the path to the system configuration file - * - * If /etc/gitconfig doesn't exist, it will look for - * %PROGRAMFILES%\Git\etc\gitconfig. - * - * @param out Pointer to a user-allocated git_buf in which to store the path - * @return 0 if a system configuration file has been - * found. Its path will be stored in `out`. - */ -GIT_EXTERN(int) git_config_find_system(git_buf *out); - -/** - * Locate the path to the configuration file in ProgramData - * - * Look for the file in %PROGRAMDATA%\Git\config used by portable git. - * - * @param out Pointer to a user-allocated git_buf in which to store the path - * @return 0 if a ProgramData configuration file has been - * found. Its path will be stored in `out`. - */ -GIT_EXTERN(int) git_config_find_programdata(git_buf *out); - -/** - * Open the global, XDG and system configuration files - * - * Utility wrapper that finds the global, XDG and system configuration files - * and opens them into a single prioritized config object that can be - * used when accessing default config data outside a repository. - * - * @param out Pointer to store the config instance - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_open_default(git_config **out); - -/** - * Allocate a new configuration object - * - * This object is empty, so you have to add a file to it before you - * can do anything with it. - * - * @param out pointer to the new configuration - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_new(git_config **out); - -/** - * Add an on-disk config file instance to an existing config - * - * The on-disk file pointed at by `path` will be opened and - * parsed; it's expected to be a native Git config file following - * the default Git config syntax (see man git-config). - * - * If the file does not exist, the file will still be added and it - * will be created the first time we write to it. - * - * Note that the configuration object will free the file - * automatically. - * - * Further queries on this config object will access each - * of the config file instances in order (instances with - * a higher priority level will be accessed first). - * - * @param cfg the configuration to add the file to - * @param path path to the configuration file to add - * @param level the priority level of the backend - * @param force replace config file at the given priority level - * @return 0 on success, GIT_EEXISTS when adding more than one file - * for a given priority level (and force_replace set to 0), - * GIT_ENOTFOUND when the file doesn't exist or error code - */ -GIT_EXTERN(int) git_config_add_file_ondisk( - git_config *cfg, - const char *path, - git_config_level_t level, - int force); - -/** - * Create a new config instance containing a single on-disk file - * - * This method is a simple utility wrapper for the following sequence - * of calls: - * - git_config_new - * - git_config_add_file_ondisk - * - * @param out The configuration instance to create - * @param path Path to the on-disk file to open - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_config_open_ondisk(git_config **out, const char *path); - -/** - * Build a single-level focused config object from a multi-level one. - * - * The returned config object can be used to perform get/set/delete operations - * on a single specific level. - * - * Getting several times the same level from the same parent multi-level config - * will return different config instances, but containing the same config_file - * instance. - * - * @param out The configuration instance to create - * @param parent Multi-level config to search for the given level - * @param level Configuration level to search for - * @return 0, GIT_ENOTFOUND if the passed level cannot be found in the - * multi-level parent config, or an error code - */ -GIT_EXTERN(int) git_config_open_level( - git_config **out, - const git_config *parent, - git_config_level_t level); - -/** - * Open the global/XDG configuration file according to git's rules - * - * Git allows you to store your global configuration at - * `$HOME/.config` or `$XDG_CONFIG_HOME/git/config`. For backwards - * compatability, the XDG file shouldn't be used unless the use has - * created it explicitly. With this function you'll open the correct - * one to write to. - * - * @param out pointer in which to store the config object - * @param config the config object in which to look - */ -GIT_EXTERN(int) git_config_open_global(git_config **out, git_config *config); - -/** - * Create a snapshot of the configuration - * - * Create a snapshot of the current state of a configuration, which - * allows you to look into a consistent view of the configuration for - * looking up complex values (e.g. a remote, submodule). - * - * The string returned when querying such a config object is valid - * until it is freed. - * - * @param out pointer in which to store the snapshot config object - * @param config configuration to snapshot - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_snapshot(git_config **out, git_config *config); - -/** - * Free the configuration and its associated memory and files - * - * @param cfg the configuration to free - */ -GIT_EXTERN(void) git_config_free(git_config *cfg); - -/** - * Get the git_config_entry of a config variable. - * - * Free the git_config_entry after use with `git_config_entry_free()`. - * - * @param out pointer to the variable git_config_entry - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_entry( - git_config_entry **out, - const git_config *cfg, - const char *name); - -/** - * Get the value of an integer config variable. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out pointer to the variable where the value should be stored - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_int32(int32_t *out, const git_config *cfg, const char *name); - -/** - * Get the value of a long integer config variable. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out pointer to the variable where the value should be stored - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_int64(int64_t *out, const git_config *cfg, const char *name); - -/** - * Get the value of a boolean config variable. - * - * This function uses the usual C convention of 0 being false and - * anything else true. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out pointer to the variable where the value should be stored - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_bool(int *out, const git_config *cfg, const char *name); - -/** - * Get the value of a path config variable. - * - * A leading '~' will be expanded to the global search path (which - * defaults to the user's home directory but can be overridden via - * `git_libgit2_opts()`. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out the buffer in which to store the result - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_path(git_buf *out, const git_config *cfg, const char *name); - -/** - * Get the value of a string config variable. - * - * This function can only be used on snapshot config objects. The - * string is owned by the config and should not be freed by the - * user. The pointer will be valid until the config is freed. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out pointer to the string - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_string(const char **out, const git_config *cfg, const char *name); - -/** - * Get the value of a string config variable. - * - * The value of the config will be copied into the buffer. - * - * All config files will be looked into, in the order of their - * defined level. A higher level means a higher priority. The - * first occurrence of the variable will be returned here. - * - * @param out buffer in which to store the string - * @param cfg where to look for the variable - * @param name the variable's name - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_get_string_buf(git_buf *out, const git_config *cfg, const char *name); - -/** - * Get each value of a multivar in a foreach callback - * - * The callback will be called on each variable found - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param regexp regular expression to filter which variables we're - * interested in. Use NULL to indicate all - * @param callback the function to be called on each value of the variable - * @param payload opaque pointer to pass to the callback - */ -GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload); - -/** - * Get each value of a multivar - * - * @param out pointer to store the iterator - * @param cfg where to look for the variable - * @param name the variable's name - * @param regexp regular expression to filter which variables we're - * interested in. Use NULL to indicate all - */ -GIT_EXTERN(int) git_config_multivar_iterator_new(git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp); - -/** - * Return the current entry and advance the iterator - * - * The pointers returned by this function are valid until the iterator - * is freed. - * - * @param entry pointer to store the entry - * @param iter the iterator - * @return 0 or an error code. GIT_ITEROVER if the iteration has completed - */ -GIT_EXTERN(int) git_config_next(git_config_entry **entry, git_config_iterator *iter); - -/** - * Free a config iterator - * - * @param iter the iterator to free - */ -GIT_EXTERN(void) git_config_iterator_free(git_config_iterator *iter); - -/** - * Set the value of an integer config variable in the config file - * with the highest level (usually the local one). - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param value Integer value for the variable - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_set_int32(git_config *cfg, const char *name, int32_t value); - -/** - * Set the value of a long integer config variable in the config file - * with the highest level (usually the local one). - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param value Long integer value for the variable - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_set_int64(git_config *cfg, const char *name, int64_t value); - -/** - * Set the value of a boolean config variable in the config file - * with the highest level (usually the local one). - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param value the value to store - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_set_bool(git_config *cfg, const char *name, int value); - -/** - * Set the value of a string config variable in the config file - * with the highest level (usually the local one). - * - * A copy of the string is made and the user is free to use it - * afterwards. - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param value the string to store. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_set_string(git_config *cfg, const char *name, const char *value); - -/** - * Set a multivar in the local config file. - * - * @param cfg where to look for the variable - * @param name the variable's name - * @param regexp a regular expression to indicate which values to replace - * @param value the new value. - */ -GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value); - -/** - * Delete a config variable from the config file - * with the highest level (usually the local one). - * - * @param cfg the configuration - * @param name the variable to delete - */ -GIT_EXTERN(int) git_config_delete_entry(git_config *cfg, const char *name); - -/** - * Deletes one or several entries from a multivar in the local config file. - * - * @param cfg where to look for the variables - * @param name the variable's name - * @param regexp a regular expression to indicate which values to delete - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_delete_multivar(git_config *cfg, const char *name, const char *regexp); - -/** - * Perform an operation on each config variable. - * - * The callback receives the normalized name and value of each variable - * in the config backend, and the data pointer passed to this function. - * If the callback returns a non-zero value, the function stops iterating - * and returns that value to the caller. - * - * The pointers passed to the callback are only valid as long as the - * iteration is ongoing. - * - * @param cfg where to get the variables from - * @param callback the function to call on each variable - * @param payload the data to pass to the callback - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_config_foreach( - const git_config *cfg, - git_config_foreach_cb callback, - void *payload); - -/** - * Iterate over all the config variables - * - * Use `git_config_next` to advance the iteration and - * `git_config_iterator_free` when done. - * - * @param out pointer to store the iterator - * @param cfg where to ge the variables from - */ -GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_config *cfg); - -/** - * Iterate over all the config variables whose name matches a pattern - * - * Use `git_config_next` to advance the iteration and - * `git_config_iterator_free` when done. - * - * @param out pointer to store the iterator - * @param cfg where to ge the variables from - * @param regexp regular expression to match the names - */ -GIT_EXTERN(int) git_config_iterator_glob_new(git_config_iterator **out, const git_config *cfg, const char *regexp); - -/** - * Perform an operation on each config variable matching a regular expression. - * - * This behaviors like `git_config_foreach` with an additional filter of a - * regular expression that filters which config keys are passed to the - * callback. - * - * The pointers passed to the callback are only valid as long as the - * iteration is ongoing. - * - * @param cfg where to get the variables from - * @param regexp regular expression to match against config names - * @param callback the function to call on each variable - * @param payload the data to pass to the callback - * @return 0 or the return value of the callback which didn't return 0 - */ -GIT_EXTERN(int) git_config_foreach_match( - const git_config *cfg, - const char *regexp, - git_config_foreach_cb callback, - void *payload); - -/** - * Query the value of a config variable and return it mapped to - * an integer constant. - * - * This is a helper method to easily map different possible values - * to a variable to integer constants that easily identify them. - * - * A mapping array looks as follows: - * - * git_cvar_map autocrlf_mapping[] = { - * {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE}, - * {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE}, - * {GIT_CVAR_STRING, "input", GIT_AUTO_CRLF_INPUT}, - * {GIT_CVAR_STRING, "default", GIT_AUTO_CRLF_DEFAULT}}; - * - * On any "false" value for the variable (e.g. "false", "FALSE", "no"), the - * mapping will store `GIT_AUTO_CRLF_FALSE` in the `out` parameter. - * - * The same thing applies for any "true" value such as "true", "yes" or "1", storing - * the `GIT_AUTO_CRLF_TRUE` variable. - * - * Otherwise, if the value matches the string "input" (with case insensitive comparison), - * the given constant will be stored in `out`, and likewise for "default". - * - * If not a single match can be made to store in `out`, an error code will be - * returned. - * - * @param out place to store the result of the mapping - * @param cfg config file to get the variables from - * @param name name of the config variable to lookup - * @param maps array of `git_cvar_map` objects specifying the possible mappings - * @param map_n number of mapping objects in `maps` - * @return 0 on success, error code otherwise - */ -GIT_EXTERN(int) git_config_get_mapped( - int *out, - const git_config *cfg, - const char *name, - const git_cvar_map *maps, - size_t map_n); - -/** - * Maps a string value to an integer constant - * - * @param out place to store the result of the parsing - * @param maps array of `git_cvar_map` objects specifying the possible mappings - * @param map_n number of mapping objects in `maps` - * @param value value to parse - */ -GIT_EXTERN(int) git_config_lookup_map_value( - int *out, - const git_cvar_map *maps, - size_t map_n, - const char *value); - -/** - * Parse a string value as a bool. - * - * Valid values for true are: 'true', 'yes', 'on', 1 or any - * number different from 0 - * Valid values for false are: 'false', 'no', 'off', 0 - * - * @param out place to store the result of the parsing - * @param value value to parse - */ -GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value); - -/** - * Parse a string value as an int32. - * - * An optional value suffix of 'k', 'm', or 'g' will - * cause the value to be multiplied by 1024, 1048576, - * or 1073741824 prior to output. - * - * @param out place to store the result of the parsing - * @param value value to parse - */ -GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value); - -/** - * Parse a string value as an int64. - * - * An optional value suffix of 'k', 'm', or 'g' will - * cause the value to be multiplied by 1024, 1048576, - * or 1073741824 prior to output. - * - * @param out place to store the result of the parsing - * @param value value to parse - */ -GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value); - -/** - * Parse a string value as a path. - * - * A leading '~' will be expanded to the global search path (which - * defaults to the user's home directory but can be overridden via - * `git_libgit2_opts()`. - * - * If the value does not begin with a tilde, the input will be - * returned. - * - * @param out placae to store the result of parsing - * @param value the path to evaluate - */ -GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value); - -/** - * Perform an operation on each config variable in given config backend - * matching a regular expression. - * - * This behaviors like `git_config_foreach_match` except instead of all config - * entries it just enumerates through the given backend entry. - * - * @param backend where to get the variables from - * @param regexp regular expression to match against config names (can be NULL) - * @param callback the function to call on each variable - * @param payload the data to pass to the callback - */ -GIT_EXTERN(int) git_config_backend_foreach_match( - git_config_backend *backend, - const char *regexp, - git_config_foreach_cb callback, - void *payload); - - -/** - * Lock the backend with the highest priority - * - * Locking disallows anybody else from writing to that backend. Any - * updates made after locking will not be visible to a reader until - * the file is unlocked. - * - * You can apply the changes by calling `git_transaction_commit()` - * before freeing the transaction. Either of these actions will unlock - * the config. - * - * @param tx the resulting transaction, use this to commit or undo the - * changes - * @param cfg the configuration in which to lock - * @return 0 or an error code - */ -GIT_EXTERN(int) git_config_lock(git_transaction **tx, git_config *cfg); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/cred_helpers.h b/libgit2/include/git2/cred_helpers.h deleted file mode 100644 index 1416d56..0000000 --- a/libgit2/include/git2/cred_helpers.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_cred_helpers_h__ -#define INCLUDE_git_cred_helpers_h__ - -#include "transport.h" - -/** - * @file git2/cred_helpers.h - * @brief Utility functions for credential management - * @defgroup git_cred_helpers credential management helpers - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Payload for git_cred_stock_userpass_plaintext. - */ -typedef struct git_cred_userpass_payload { - const char *username; - const char *password; -} git_cred_userpass_payload; - - -/** - * Stock callback usable as a git_cred_acquire_cb. This calls - * git_cred_userpass_plaintext_new unless the protocol has not specified - * `GIT_CREDTYPE_USERPASS_PLAINTEXT` as an allowed type. - * - * @param cred The newly created credential object. - * @param url The resource for which we are demanding a credential. - * @param user_from_url The username that was embedded in a "user\@host" - * remote url, or NULL if not included. - * @param allowed_types A bitmask stating which cred types are OK to return. - * @param payload The payload provided when specifying this callback. (This is - * interpreted as a `git_cred_userpass_payload*`.) - */ -GIT_EXTERN(int) git_cred_userpass( - git_cred **cred, - const char *url, - const char *user_from_url, - unsigned int allowed_types, - void *payload); - - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/describe.h b/libgit2/include/git2/describe.h deleted file mode 100644 index 3044d91..0000000 --- a/libgit2/include/git2/describe.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_describe_h__ -#define INCLUDE_git_describe_h__ - -#include "common.h" -#include "types.h" -#include "buffer.h" - -/** - * @file git2/describe.h - * @brief Git describing routines - * @defgroup git_describe Git describing routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Reference lookup strategy - * - * These behave like the --tags and --all optios to git-describe, - * namely they say to look for any reference in either refs/tags/ or - * refs/ respectively. - */ -typedef enum { - GIT_DESCRIBE_DEFAULT, - GIT_DESCRIBE_TAGS, - GIT_DESCRIBE_ALL, -} git_describe_strategy_t; - -/** - * Describe options structure - * - * Initialize with `GIT_DESCRIBE_OPTIONS_INIT` macro to correctly set - * the `version` field. E.g. - * - * git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT; - */ -typedef struct git_describe_options { - unsigned int version; - - unsigned int max_candidates_tags; /** default: 10 */ - unsigned int describe_strategy; /** default: GIT_DESCRIBE_DEFAULT */ - const char *pattern; - /** - * When calculating the distance from the matching tag or - * reference, only walk down the first-parent ancestry. - */ - int only_follow_first_parent; - /** - * If no matching tag or reference is found, the describe - * operation would normally fail. If this option is set, it - * will instead fall back to showing the full id of the - * commit. - */ - int show_commit_oid_as_fallback; -} git_describe_options; - -#define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10 -#define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7 - -#define GIT_DESCRIBE_OPTIONS_VERSION 1 -#define GIT_DESCRIBE_OPTIONS_INIT { \ - GIT_DESCRIBE_OPTIONS_VERSION, \ - GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \ -} - -GIT_EXTERN(int) git_describe_init_options(git_describe_options *opts, unsigned int version); - -/** - * Options for formatting the describe string - */ -typedef struct { - unsigned int version; - - /** - * Size of the abbreviated commit id to use. This value is the - * lower bound for the length of the abbreviated string. The - * default is 7. - */ - unsigned int abbreviated_size; - - /** - * Set to use the long format even when a shorter name could be used. - */ - int always_use_long_format; - - /** - * If the workdir is dirty and this is set, this string will - * be appended to the description string. - */ - const char *dirty_suffix; -} git_describe_format_options; - -#define GIT_DESCRIBE_FORMAT_OPTIONS_VERSION 1 -#define GIT_DESCRIBE_FORMAT_OPTIONS_INIT { \ - GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, \ - GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \ - } - -GIT_EXTERN(int) git_describe_init_format_options(git_describe_format_options *opts, unsigned int version); - -typedef struct git_describe_result git_describe_result; - -/** - * Describe a commit - * - * Perform the describe operation on the given committish object. - * - * @param result pointer to store the result. You must free this once - * you're done with it. - * @param committish a committish to describe - * @param opts the lookup options - */ -GIT_EXTERN(int) git_describe_commit( - git_describe_result **result, - git_object *committish, - git_describe_options *opts); - -/** - * Describe a commit - * - * Perform the describe operation on the current commit and the - * worktree. After peforming describe on HEAD, a status is run and the - * description is considered to be dirty if there are. - * - * @param out pointer to store the result. You must free this once - * you're done with it. - * @param repo the repository in which to perform the describe - * @param opts the lookup options - */ -GIT_EXTERN(int) git_describe_workdir( - git_describe_result **out, - git_repository *repo, - git_describe_options *opts); - -/** - * Print the describe result to a buffer - * - * @param out The buffer to store the result - * @param result the result from `git_describe_commit()` or - * `git_describe_workdir()`. - * @param opts the formatting options - */ -GIT_EXTERN(int) git_describe_format( - git_buf *out, - const git_describe_result *result, - const git_describe_format_options *opts); - -/** - * Free the describe result. - */ -GIT_EXTERN(void) git_describe_result_free(git_describe_result *result); - -/** @} */ -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/diff.h b/libgit2/include/git2/diff.h deleted file mode 100644 index c35701a..0000000 --- a/libgit2/include/git2/diff.h +++ /dev/null @@ -1,1352 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_diff_h__ -#define INCLUDE_git_diff_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "tree.h" -#include "refs.h" - -/** - * @file git2/diff.h - * @brief Git tree and file differencing routines. - * - * Overview - * -------- - * - * Calculating diffs is generally done in two phases: building a list of - * diffs then traversing it. This makes is easier to share logic across - * the various types of diffs (tree vs tree, workdir vs index, etc.), and - * also allows you to insert optional diff post-processing phases, - * such as rename detection, in between the steps. When you are done with - * a diff object, it must be freed. - * - * Terminology - * ----------- - * - * To understand the diff APIs, you should know the following terms: - * - * - A `diff` represents the cumulative list of differences between two - * snapshots of a repository (possibly filtered by a set of file name - * patterns). This is the `git_diff` object. - * - * - A `delta` is a file pair with an old and new revision. The old version - * may be absent if the file was just created and the new version may be - * absent if the file was deleted. A diff is mostly just a list of deltas. - * - * - A `binary` file / delta is a file (or pair) for which no text diffs - * should be generated. A diff can contain delta entries that are - * binary, but no diff content will be output for those files. There is - * a base heuristic for binary detection and you can further tune the - * behavior with git attributes or diff flags and option settings. - * - * - A `hunk` is a span of modified lines in a delta along with some stable - * surrounding context. You can configure the amount of context and other - * properties of how hunks are generated. Each hunk also comes with a - * header that described where it starts and ends in both the old and new - * versions in the delta. - * - * - A `line` is a range of characters inside a hunk. It could be a context - * line (i.e. in both old and new versions), an added line (i.e. only in - * the new version), or a removed line (i.e. only in the old version). - * Unfortunately, we don't know anything about the encoding of data in the - * file being diffed, so we cannot tell you much about the line content. - * Line data will not be NUL-byte terminated, however, because it will be - * just a span of bytes inside the larger file. - * - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Flags for diff options. A combination of these flags can be passed - * in via the `flags` value in the `git_diff_options`. - */ -typedef enum { - /** Normal diff, the default */ - GIT_DIFF_NORMAL = 0, - - /* - * Options controlling which files will be in the diff - */ - - /** Reverse the sides of the diff */ - GIT_DIFF_REVERSE = (1u << 0), - - /** Include ignored files in the diff */ - GIT_DIFF_INCLUDE_IGNORED = (1u << 1), - - /** Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory - * will be marked with only a single entry in the diff; this flag - * adds all files under the directory as IGNORED entries, too. - */ - GIT_DIFF_RECURSE_IGNORED_DIRS = (1u << 2), - - /** Include untracked files in the diff */ - GIT_DIFF_INCLUDE_UNTRACKED = (1u << 3), - - /** Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked - * directory will be marked with only a single entry in the diff - * (a la what core Git does in `git status`); this flag adds *all* - * files under untracked directories as UNTRACKED entries, too. - */ - GIT_DIFF_RECURSE_UNTRACKED_DIRS = (1u << 4), - - /** Include unmodified files in the diff */ - GIT_DIFF_INCLUDE_UNMODIFIED = (1u << 5), - - /** Normally, a type change between files will be converted into a - * DELETED record for the old and an ADDED record for the new; this - * options enabled the generation of TYPECHANGE delta records. - */ - GIT_DIFF_INCLUDE_TYPECHANGE = (1u << 6), - - /** Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob->tree changes still - * generally show as a DELETED blob. This flag tries to correctly - * label blob->tree transitions as TYPECHANGE records with new_file's - * mode set to tree. Note: the tree SHA will not be available. - */ - GIT_DIFF_INCLUDE_TYPECHANGE_TREES = (1u << 7), - - /** Ignore file mode changes */ - GIT_DIFF_IGNORE_FILEMODE = (1u << 8), - - /** Treat all submodules as unmodified */ - GIT_DIFF_IGNORE_SUBMODULES = (1u << 9), - - /** Use case insensitive filename comparisons */ - GIT_DIFF_IGNORE_CASE = (1u << 10), - - /** May be combined with `GIT_DIFF_IGNORE_CASE` to specify that a file - * that has changed case will be returned as an add/delete pair. - */ - GIT_DIFF_INCLUDE_CASECHANGE = (1u << 11), - - /** If the pathspec is set in the diff options, this flags indicates - * that the paths will be treated as literal paths instead of - * fnmatch patterns. Each path in the list must either be a full - * path to a file or a directory. (A trailing slash indicates that - * the path will _only_ match a directory). If a directory is - * specified, all children will be included. - */ - GIT_DIFF_DISABLE_PATHSPEC_MATCH = (1u << 12), - - /** Disable updating of the `binary` flag in delta records. This is - * useful when iterating over a diff if you don't need hunk and data - * callbacks and want to avoid having to load file completely. - */ - GIT_DIFF_SKIP_BINARY_CHECK = (1u << 13), - - /** When diff finds an untracked directory, to match the behavior of - * core Git, it scans the contents for IGNORED and UNTRACKED files. - * If *all* contents are IGNORED, then the directory is IGNORED; if - * any contents are not IGNORED, then the directory is UNTRACKED. - * This is extra work that may not matter in many cases. This flag - * turns off that scan and immediately labels an untracked directory - * as UNTRACKED (changing the behavior to not match core Git). - */ - GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS = (1u << 14), - - /** When diff finds a file in the working directory with stat - * information different from the index, but the OID ends up being the - * same, write the correct stat information into the index. Note: - * without this flag, diff will always leave the index untouched. - */ - GIT_DIFF_UPDATE_INDEX = (1u << 15), - - /** Include unreadable files in the diff */ - GIT_DIFF_INCLUDE_UNREADABLE = (1u << 16), - - /** Include unreadable files in the diff */ - GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 17), - - /* - * Options controlling how output will be generated - */ - - /** Treat all files as text, disabling binary attributes & detection */ - GIT_DIFF_FORCE_TEXT = (1u << 20), - /** Treat all files as binary, disabling text diffs */ - GIT_DIFF_FORCE_BINARY = (1u << 21), - - /** Ignore all whitespace */ - GIT_DIFF_IGNORE_WHITESPACE = (1u << 22), - /** Ignore changes in amount of whitespace */ - GIT_DIFF_IGNORE_WHITESPACE_CHANGE = (1u << 23), - /** Ignore whitespace at end of line */ - GIT_DIFF_IGNORE_WHITESPACE_EOL = (1u << 24), - - /** When generating patch text, include the content of untracked - * files. This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but - * it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS. Add that - * flag if you want the content of every single UNTRACKED file. - */ - GIT_DIFF_SHOW_UNTRACKED_CONTENT = (1u << 25), - - /** When generating output, include the names of unmodified files if - * they are included in the git_diff. Normally these are skipped in - * the formats that list files (e.g. name-only, name-status, raw). - * Even with this, these will not be included in patch format. - */ - GIT_DIFF_SHOW_UNMODIFIED = (1u << 26), - - /** Use the "patience diff" algorithm */ - GIT_DIFF_PATIENCE = (1u << 28), - /** Take extra time to find minimal diff */ - GIT_DIFF_MINIMAL = (1 << 29), - - /** Include the necessary deflate / delta information so that `git-apply` - * can apply given diff information to binary files. - */ - GIT_DIFF_SHOW_BINARY = (1 << 30), -} git_diff_option_t; - -/** - * The diff object that contains all individual file deltas. - * - * This is an opaque structure which will be allocated by one of the diff - * generator functions below (such as `git_diff_tree_to_tree`). You are - * responsible for releasing the object memory when done, using the - * `git_diff_free()` function. - */ -typedef struct git_diff git_diff; - -/** - * Flags for the delta object and the file objects on each side. - * - * These flags are used for both the `flags` value of the `git_diff_delta` - * and the flags for the `git_diff_file` objects representing the old and - * new sides of the delta. Values outside of this public range should be - * considered reserved for internal or future use. - */ -typedef enum { - GIT_DIFF_FLAG_BINARY = (1u << 0), /**< file(s) treated as binary data */ - GIT_DIFF_FLAG_NOT_BINARY = (1u << 1), /**< file(s) treated as text data */ - GIT_DIFF_FLAG_VALID_ID = (1u << 2), /**< `id` value is known correct */ - GIT_DIFF_FLAG_EXISTS = (1u << 3), /**< file exists at this side of the delta */ -} git_diff_flag_t; - -/** - * What type of change is described by a git_diff_delta? - * - * `GIT_DELTA_RENAMED` and `GIT_DELTA_COPIED` will only show up if you run - * `git_diff_find_similar()` on the diff object. - * - * `GIT_DELTA_TYPECHANGE` only shows up given `GIT_DIFF_INCLUDE_TYPECHANGE` - * in the option flags (otherwise type changes will be split into ADDED / - * DELETED pairs). - */ -typedef enum { - GIT_DELTA_UNMODIFIED = 0, /**< no changes */ - GIT_DELTA_ADDED = 1, /**< entry does not exist in old version */ - GIT_DELTA_DELETED = 2, /**< entry does not exist in new version */ - GIT_DELTA_MODIFIED = 3, /**< entry content changed between old and new */ - GIT_DELTA_RENAMED = 4, /**< entry was renamed between old and new */ - GIT_DELTA_COPIED = 5, /**< entry was copied from another old entry */ - GIT_DELTA_IGNORED = 6, /**< entry is ignored item in workdir */ - GIT_DELTA_UNTRACKED = 7, /**< entry is untracked item in workdir */ - GIT_DELTA_TYPECHANGE = 8, /**< type of entry changed between old and new */ - GIT_DELTA_UNREADABLE = 9, /**< entry is unreadable */ - GIT_DELTA_CONFLICTED = 10, /**< entry in the index is conflicted */ -} git_delta_t; - -/** - * Description of one side of a delta. - * - * Although this is called a "file", it could represent a file, a symbolic - * link, a submodule commit id, or even a tree (although that only if you - * are tracking type changes or ignored/untracked directories). - * - * The `oid` is the `git_oid` of the item. If the entry represents an - * absent side of a diff (e.g. the `old_file` of a `GIT_DELTA_ADDED` delta), - * then the oid will be zeroes. - * - * `path` is the NUL-terminated path to the entry relative to the working - * directory of the repository. - * - * `size` is the size of the entry in bytes. - * - * `flags` is a combination of the `git_diff_flag_t` types - * - * `mode` is, roughly, the stat() `st_mode` value for the item. This will - * be restricted to one of the `git_filemode_t` values. - */ -typedef struct { - git_oid id; - const char *path; - git_off_t size; - uint32_t flags; - uint16_t mode; -} git_diff_file; - -/** - * Description of changes to one entry. - * - * When iterating over a diff, this will be passed to most callbacks and - * you can use the contents to understand exactly what has changed. - * - * The `old_file` represents the "from" side of the diff and the `new_file` - * represents to "to" side of the diff. What those means depend on the - * function that was used to generate the diff and will be documented below. - * You can also use the `GIT_DIFF_REVERSE` flag to flip it around. - * - * Although the two sides of the delta are named "old_file" and "new_file", - * they actually may correspond to entries that represent a file, a symbolic - * link, a submodule commit id, or even a tree (if you are tracking type - * changes or ignored/untracked directories). - * - * Under some circumstances, in the name of efficiency, not all fields will - * be filled in, but we generally try to fill in as much as possible. One - * example is that the "flags" field may not have either the `BINARY` or the - * `NOT_BINARY` flag set to avoid examining file contents if you do not pass - * in hunk and/or line callbacks to the diff foreach iteration function. It - * will just use the git attributes for those files. - * - * The similarity score is zero unless you call `git_diff_find_similar()` - * which does a similarity analysis of files in the diff. Use that - * function to do rename and copy detection, and to split heavily modified - * files in add/delete pairs. After that call, deltas with a status of - * GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score - * between 0 and 100 indicating how similar the old and new sides are. - * - * If you ask `git_diff_find_similar` to find heavily modified files to - * break, but to not *actually* break the records, then GIT_DELTA_MODIFIED - * records may have a non-zero similarity score if the self-similarity is - * below the split threshold. To display this value like core Git, invert - * the score (a la `printf("M%03d", 100 - delta->similarity)`). - */ -typedef struct { - git_delta_t status; - uint32_t flags; /**< git_diff_flag_t values */ - uint16_t similarity; /**< for RENAMED and COPIED, value 0-100 */ - uint16_t nfiles; /**< number of files in this delta */ - git_diff_file old_file; - git_diff_file new_file; -} git_diff_delta; - -/** - * Diff notification callback function. - * - * The callback will be called for each file, just before the `git_delta_t` - * gets inserted into the diff. - * - * When the callback: - * - returns < 0, the diff process will be aborted. - * - returns > 0, the delta will not be inserted into the diff, but the - * diff process continues. - * - returns 0, the delta is inserted into the diff, and the diff process - * continues. - */ -typedef int (*git_diff_notify_cb)( - const git_diff *diff_so_far, - const git_diff_delta *delta_to_add, - const char *matched_pathspec, - void *payload); - -/** - * Diff progress callback. - * - * Called before each file comparison. - * - * @param diff_so_far The diff being generated. - * @param old_path The path to the old file or NULL. - * @param new_path The path to the new file or NULL. - * @return Non-zero to abort the diff. - */ -typedef int (*git_diff_progress_cb)( - const git_diff *diff_so_far, - const char *old_path, - const char *new_path, - void *payload); - -/** - * Structure describing options about how the diff should be executed. - * - * Setting all values of the structure to zero will yield the default - * values. Similarly, passing NULL for the options structure will - * give the defaults. The default values are marked below. - * - * - `flags` is a combination of the `git_diff_option_t` values above - * - `context_lines` is the number of unchanged lines that define the - * boundary of a hunk (and to display before and after) - * - `interhunk_lines` is the maximum number of unchanged lines between - * hunk boundaries before the hunks will be merged into a one. - * - `old_prefix` is the virtual "directory" to prefix to old file names - * in hunk headers (default "a") - * - `new_prefix` is the virtual "directory" to prefix to new file names - * in hunk headers (default "b") - * - `pathspec` is an array of paths / fnmatch patterns to constrain diff - * - `max_size` is a file size (in bytes) above which a blob will be marked - * as binary automatically; pass a negative value to disable. - * - `notify_cb` is an optional callback function, notifying the consumer of - * changes to the diff as new deltas are added. - * - `progress_cb` is an optional callback function, notifying the consumer of - * which files are being examined as the diff is generated. - * - `payload` is the payload to pass to the callback functions. - * - `ignore_submodules` overrides the submodule ignore setting for all - * submodules in the diff. - */ -typedef struct { - unsigned int version; /**< version for the struct */ - uint32_t flags; /**< defaults to GIT_DIFF_NORMAL */ - - /* options controlling which files are in the diff */ - - git_submodule_ignore_t ignore_submodules; /**< submodule ignore rule */ - git_strarray pathspec; /**< defaults to include all paths */ - git_diff_notify_cb notify_cb; - git_diff_progress_cb progress_cb; - void *payload; - - /* options controlling how to diff text is generated */ - - uint32_t context_lines; /**< defaults to 3 */ - uint32_t interhunk_lines; /**< defaults to 0 */ - uint16_t id_abbrev; /**< default 'core.abbrev' or 7 if unset */ - git_off_t max_size; /**< defaults to 512MB */ - const char *old_prefix; /**< defaults to "a" */ - const char *new_prefix; /**< defaults to "b" */ -} git_diff_options; - -/* The current version of the diff options structure */ -#define GIT_DIFF_OPTIONS_VERSION 1 - -/* Stack initializer for diff options. Alternatively use - * `git_diff_options_init` programmatic initialization. - */ -#define GIT_DIFF_OPTIONS_INIT \ - {GIT_DIFF_OPTIONS_VERSION, 0, GIT_SUBMODULE_IGNORE_UNSPECIFIED, {NULL,0}, NULL, NULL, NULL, 3} - -/** - * Initializes a `git_diff_options` with default values. Equivalent to - * creating an instance with GIT_DIFF_OPTIONS_INIT. - * - * @param opts The `git_diff_options` struct to initialize - * @param version Version of struct; pass `GIT_DIFF_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_diff_init_options( - git_diff_options *opts, - unsigned int version); - -/** - * When iterating over a diff, callback that will be made per file. - * - * @param delta A pointer to the delta data for the file - * @param progress Goes from 0 to 1 over the diff - * @param payload User-specified pointer from foreach function - */ -typedef int (*git_diff_file_cb)( - const git_diff_delta *delta, - float progress, - void *payload); - -/** - * When producing a binary diff, the binary data returned will be - * either the deflated full ("literal") contents of the file, or - * the deflated binary delta between the two sides (whichever is - * smaller). - */ -typedef enum { - /** There is no binary delta. */ - GIT_DIFF_BINARY_NONE, - - /** The binary data is the literal contents of the file. */ - GIT_DIFF_BINARY_LITERAL, - - /** The binary data is the delta from one side to the other. */ - GIT_DIFF_BINARY_DELTA, -} git_diff_binary_t; - -/** The contents of one of the files in a binary diff. */ -typedef struct { - /** The type of binary data for this file. */ - git_diff_binary_t type; - - /** The binary data, deflated. */ - const char *data; - - /** The length of the binary data. */ - size_t datalen; - - /** The length of the binary data after inflation. */ - size_t inflatedlen; -} git_diff_binary_file; - -/** Structure describing the binary contents of a diff. */ -typedef struct { - git_diff_binary_file old_file; /**< The contents of the old file. */ - git_diff_binary_file new_file; /**< The contents of the new file. */ -} git_diff_binary; - -/** -* When iterating over a diff, callback that will be made for -* binary content within the diff. -*/ -typedef int(*git_diff_binary_cb)( - const git_diff_delta *delta, - const git_diff_binary *binary, - void *payload); - -/** - * Structure describing a hunk of a diff. - */ -typedef struct { - int old_start; /**< Starting line number in old_file */ - int old_lines; /**< Number of lines in old_file */ - int new_start; /**< Starting line number in new_file */ - int new_lines; /**< Number of lines in new_file */ - size_t header_len; /**< Number of bytes in header text */ - char header[128]; /**< Header text, NUL-byte terminated */ -} git_diff_hunk; - -/** - * When iterating over a diff, callback that will be made per hunk. - */ -typedef int (*git_diff_hunk_cb)( - const git_diff_delta *delta, - const git_diff_hunk *hunk, - void *payload); - -/** - * Line origin constants. - * - * These values describe where a line came from and will be passed to - * the git_diff_line_cb when iterating over a diff. There are some - * special origin constants at the end that are used for the text - * output callbacks to demarcate lines that are actually part of - * the file or hunk headers. - */ -typedef enum { - /* These values will be sent to `git_diff_line_cb` along with the line */ - GIT_DIFF_LINE_CONTEXT = ' ', - GIT_DIFF_LINE_ADDITION = '+', - GIT_DIFF_LINE_DELETION = '-', - - GIT_DIFF_LINE_CONTEXT_EOFNL = '=', /**< Both files have no LF at end */ - GIT_DIFF_LINE_ADD_EOFNL = '>', /**< Old has no LF at end, new does */ - GIT_DIFF_LINE_DEL_EOFNL = '<', /**< Old has LF at end, new does not */ - - /* The following values will only be sent to a `git_diff_line_cb` when - * the content of a diff is being formatted through `git_diff_print`. - */ - GIT_DIFF_LINE_FILE_HDR = 'F', - GIT_DIFF_LINE_HUNK_HDR = 'H', - GIT_DIFF_LINE_BINARY = 'B' /**< For "Binary files x and y differ" */ -} git_diff_line_t; - -/** - * Structure describing a line (or data span) of a diff. - */ -typedef struct { - char origin; /**< A git_diff_line_t value */ - int old_lineno; /**< Line number in old file or -1 for added line */ - int new_lineno; /**< Line number in new file or -1 for deleted line */ - int num_lines; /**< Number of newline characters in content */ - size_t content_len; /**< Number of bytes of data */ - git_off_t content_offset; /**< Offset in the original file to the content */ - const char *content; /**< Pointer to diff text, not NUL-byte terminated */ -} git_diff_line; - -/** - * When iterating over a diff, callback that will be made per text diff - * line. In this context, the provided range will be NULL. - * - * When printing a diff, callback that will be made to output each line - * of text. This uses some extra GIT_DIFF_LINE_... constants for output - * of lines of file and hunk headers. - */ -typedef int (*git_diff_line_cb)( - const git_diff_delta *delta, /**< delta that contains this data */ - const git_diff_hunk *hunk, /**< hunk containing this data */ - const git_diff_line *line, /**< line data */ - void *payload); /**< user reference data */ - -/** - * Flags to control the behavior of diff rename/copy detection. - */ -typedef enum { - /** Obey `diff.renames`. Overridden by any other GIT_DIFF_FIND_... flag. */ - GIT_DIFF_FIND_BY_CONFIG = 0, - - /** Look for renames? (`--find-renames`) */ - GIT_DIFF_FIND_RENAMES = (1u << 0), - - /** Consider old side of MODIFIED for renames? (`--break-rewrites=N`) */ - GIT_DIFF_FIND_RENAMES_FROM_REWRITES = (1u << 1), - - /** Look for copies? (a la `--find-copies`). */ - GIT_DIFF_FIND_COPIES = (1u << 2), - - /** Consider UNMODIFIED as copy sources? (`--find-copies-harder`). - * - * For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when - * the initial `git_diff` is being generated. - */ - GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED = (1u << 3), - - /** Mark significant rewrites for split (`--break-rewrites=/M`) */ - GIT_DIFF_FIND_REWRITES = (1u << 4), - /** Actually split large rewrites into delete/add pairs */ - GIT_DIFF_BREAK_REWRITES = (1u << 5), - /** Mark rewrites for split and break into delete/add pairs */ - GIT_DIFF_FIND_AND_BREAK_REWRITES = - (GIT_DIFF_FIND_REWRITES | GIT_DIFF_BREAK_REWRITES), - - /** Find renames/copies for UNTRACKED items in working directory. - * - * For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the - * initial `git_diff` is being generated (and obviously the diff must - * be against the working directory for this to make sense). - */ - GIT_DIFF_FIND_FOR_UNTRACKED = (1u << 6), - - /** Turn on all finding features. */ - GIT_DIFF_FIND_ALL = (0x0ff), - - /** Measure similarity ignoring leading whitespace (default) */ - GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE = 0, - /** Measure similarity ignoring all whitespace */ - GIT_DIFF_FIND_IGNORE_WHITESPACE = (1u << 12), - /** Measure similarity including all data */ - GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE = (1u << 13), - /** Measure similarity only by comparing SHAs (fast and cheap) */ - GIT_DIFF_FIND_EXACT_MATCH_ONLY = (1u << 14), - - /** Do not break rewrites unless they contribute to a rename. - * - * Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self- - * similarity of modified files and split the ones that have changed a - * lot into a DELETE / ADD pair. Then the sides of that pair will be - * considered candidates for rename and copy detection. - * - * If you add this flag in and the split pair is *not* used for an - * actual rename or copy, then the modified record will be restored to - * a regular MODIFIED record instead of being split. - */ - GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY = (1u << 15), - - /** Remove any UNMODIFIED deltas after find_similar is done. - * - * Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the - * --find-copies-harder behavior requires building a diff with the - * GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED - * records in the final result, pass this flag to have them removed. - */ - GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16), -} git_diff_find_t; - -/** - * Pluggable similarity metric - */ -typedef struct { - int (*file_signature)( - void **out, const git_diff_file *file, - const char *fullpath, void *payload); - int (*buffer_signature)( - void **out, const git_diff_file *file, - const char *buf, size_t buflen, void *payload); - void (*free_signature)(void *sig, void *payload); - int (*similarity)(int *score, void *siga, void *sigb, void *payload); - void *payload; -} git_diff_similarity_metric; - -/** - * Control behavior of rename and copy detection - * - * These options mostly mimic parameters that can be passed to git-diff. - * - * - `rename_threshold` is the same as the -M option with a value - * - `copy_threshold` is the same as the -C option with a value - * - `rename_from_rewrite_threshold` matches the top of the -B option - * - `break_rewrite_threshold` matches the bottom of the -B option - * - `rename_limit` is the maximum number of matches to consider for - * a particular file. This is a little different from the `-l` option - * to regular Git because we will still process up to this many matches - * before abandoning the search. - * - * The `metric` option allows you to plug in a custom similarity metric. - * Set it to NULL for the default internal metric which is based on sampling - * hashes of ranges of data in the file. The default metric is a pretty - * good similarity approximation that should work fairly well for both text - * and binary data, and is pretty fast with fixed memory overhead. - */ -typedef struct { - unsigned int version; - - /** - * Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG). - * NOTE: if you don't explicitly set this, `diff.renames` could be set - * to false, resulting in `git_diff_find_similar` doing nothing. - */ - uint32_t flags; - - /** Similarity to consider a file renamed (default 50) */ - uint16_t rename_threshold; - /** Similarity of modified to be eligible rename source (default 50) */ - uint16_t rename_from_rewrite_threshold; - /** Similarity to consider a file a copy (default 50) */ - uint16_t copy_threshold; - /** Similarity to split modify into delete/add pair (default 60) */ - uint16_t break_rewrite_threshold; - - /** Maximum similarity sources to examine for a file (somewhat like - * git-diff's `-l` option or `diff.renameLimit` config) (default 200) - */ - size_t rename_limit; - - /** Pluggable similarity metric; pass NULL to use internal metric */ - git_diff_similarity_metric *metric; -} git_diff_find_options; - -#define GIT_DIFF_FIND_OPTIONS_VERSION 1 -#define GIT_DIFF_FIND_OPTIONS_INIT {GIT_DIFF_FIND_OPTIONS_VERSION} - -/** - * Initializes a `git_diff_find_options` with default values. Equivalent to - * creating an instance with GIT_DIFF_FIND_OPTIONS_INIT. - * - * @param opts The `git_diff_find_options` struct to initialize - * @param version Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_diff_find_init_options( - git_diff_find_options *opts, - unsigned int version); - -/** @name Diff Generator Functions - * - * These are the functions you would use to create (or destroy) a - * git_diff from various objects in a repository. - */ -/**@{*/ - -/** - * Deallocate a diff. - * - * @param diff The previously created diff; cannot be used after free. - */ -GIT_EXTERN(void) git_diff_free(git_diff *diff); - -/** - * Create a diff with the difference between two tree objects. - * - * This is equivalent to `git diff ` - * - * The first tree will be used for the "old_file" side of the delta and the - * second tree will be used for the "new_file" side of the delta. You can - * pass NULL to indicate an empty tree, although it is an error to pass - * NULL for both the `old_tree` and `new_tree`. - * - * @param diff Output pointer to a git_diff pointer to be allocated. - * @param repo The repository containing the trees. - * @param old_tree A git_tree object to diff from, or NULL for empty tree. - * @param new_tree A git_tree object to diff to, or NULL for empty tree. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_tree_to_tree( - git_diff **diff, - git_repository *repo, - git_tree *old_tree, - git_tree *new_tree, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Create a diff between a tree and repository index. - * - * This is equivalent to `git diff --cached ` or if you pass - * the HEAD tree, then like `git diff --cached`. - * - * The tree you pass will be used for the "old_file" side of the delta, and - * the index will be used for the "new_file" side of the delta. - * - * If you pass NULL for the index, then the existing index of the `repo` - * will be used. In this case, the index will be refreshed from disk - * (if it has changed) before the diff is generated. - * - * @param diff Output pointer to a git_diff pointer to be allocated. - * @param repo The repository containing the tree and index. - * @param old_tree A git_tree object to diff from, or NULL for empty tree. - * @param index The index to diff with; repo index used if NULL. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_tree_to_index( - git_diff **diff, - git_repository *repo, - git_tree *old_tree, - git_index *index, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Create a diff between the repository index and the workdir directory. - * - * This matches the `git diff` command. See the note below on - * `git_diff_tree_to_workdir` for a discussion of the difference between - * `git diff` and `git diff HEAD` and how to emulate a `git diff ` - * using libgit2. - * - * The index will be used for the "old_file" side of the delta, and the - * working directory will be used for the "new_file" side of the delta. - * - * If you pass NULL for the index, then the existing index of the `repo` - * will be used. In this case, the index will be refreshed from disk - * (if it has changed) before the diff is generated. - * - * @param diff Output pointer to a git_diff pointer to be allocated. - * @param repo The repository. - * @param index The index to diff from; repo index used if NULL. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_index_to_workdir( - git_diff **diff, - git_repository *repo, - git_index *index, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Create a diff between a tree and the working directory. - * - * The tree you provide will be used for the "old_file" side of the delta, - * and the working directory will be used for the "new_file" side. - * - * This is not the same as `git diff ` or `git diff-index - * `. Those commands use information from the index, whereas this - * function strictly returns the differences between the tree and the files - * in the working directory, regardless of the state of the index. Use - * `git_diff_tree_to_workdir_with_index` to emulate those commands. - * - * To see difference between this and `git_diff_tree_to_workdir_with_index`, - * consider the example of a staged file deletion where the file has then - * been put back into the working dir and further modified. The - * tree-to-workdir diff for that file is 'modified', but `git diff` would - * show status 'deleted' since there is a staged delete. - * - * @param diff A pointer to a git_diff pointer that will be allocated. - * @param repo The repository containing the tree. - * @param old_tree A git_tree object to diff from, or NULL for empty tree. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_tree_to_workdir( - git_diff **diff, - git_repository *repo, - git_tree *old_tree, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Create a diff between a tree and the working directory using index data - * to account for staged deletes, tracked files, etc. - * - * This emulates `git diff ` by diffing the tree to the index and - * the index to the working directory and blending the results into a - * single diff that includes staged deleted, etc. - * - * @param diff A pointer to a git_diff pointer that will be allocated. - * @param repo The repository containing the tree. - * @param old_tree A git_tree object to diff from, or NULL for empty tree. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_tree_to_workdir_with_index( - git_diff **diff, - git_repository *repo, - git_tree *old_tree, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Create a diff with the difference between two index objects. - * - * The first index will be used for the "old_file" side of the delta and the - * second index will be used for the "new_file" side of the delta. - * - * @param diff Output pointer to a git_diff pointer to be allocated. - * @param repo The repository containing the indexes. - * @param old_index A git_index object to diff from. - * @param new_index A git_index object to diff to. - * @param opts Structure with options to influence diff or NULL for defaults. - */ -GIT_EXTERN(int) git_diff_index_to_index( - git_diff **diff, - git_repository *repo, - git_index *old_index, - git_index *new_index, - const git_diff_options *opts); /**< can be NULL for defaults */ - -/** - * Merge one diff into another. - * - * This merges items from the "from" list into the "onto" list. The - * resulting diff will have all items that appear in either list. - * If an item appears in both lists, then it will be "merged" to appear - * as if the old version was from the "onto" list and the new version - * is from the "from" list (with the exception that if the item has a - * pending DELETE in the middle, then it will show as deleted). - * - * @param onto Diff to merge into. - * @param from Diff to merge. - */ -GIT_EXTERN(int) git_diff_merge( - git_diff *onto, - const git_diff *from); - -/** - * Transform a diff marking file renames, copies, etc. - * - * This modifies a diff in place, replacing old entries that look - * like renames or copies with new entries reflecting those changes. - * This also will, if requested, break modified files into add/remove - * pairs if the amount of change is above a threshold. - * - * @param diff diff to run detection algorithms on - * @param options Control how detection should be run, NULL for defaults - * @return 0 on success, -1 on failure - */ -GIT_EXTERN(int) git_diff_find_similar( - git_diff *diff, - const git_diff_find_options *options); - -/**@}*/ - - -/** @name Diff Processor Functions - * - * These are the functions you apply to a diff to process it - * or read it in some way. - */ -/**@{*/ - -/** - * Query how many diff records are there in a diff. - * - * @param diff A git_diff generated by one of the above functions - * @return Count of number of deltas in the list - */ -GIT_EXTERN(size_t) git_diff_num_deltas(const git_diff *diff); - -/** - * Query how many diff deltas are there in a diff filtered by type. - * - * This works just like `git_diff_entrycount()` with an extra parameter - * that is a `git_delta_t` and returns just the count of how many deltas - * match that particular type. - * - * @param diff A git_diff generated by one of the above functions - * @param type A git_delta_t value to filter the count - * @return Count of number of deltas matching delta_t type - */ -GIT_EXTERN(size_t) git_diff_num_deltas_of_type( - const git_diff *diff, git_delta_t type); - -/** - * Return the diff delta for an entry in the diff list. - * - * The `git_diff_delta` pointer points to internal data and you do not - * have to release it when you are done with it. It will go away when - * the * `git_diff` (or any associated `git_patch`) goes away. - * - * Note that the flags on the delta related to whether it has binary - * content or not may not be set if there are no attributes set for the - * file and there has been no reason to load the file data at this point. - * For now, if you need those flags to be up to date, your only option is - * to either use `git_diff_foreach` or create a `git_patch`. - * - * @param diff Diff list object - * @param idx Index into diff list - * @return Pointer to git_diff_delta (or NULL if `idx` out of range) - */ -GIT_EXTERN(const git_diff_delta *) git_diff_get_delta( - const git_diff *diff, size_t idx); - -/** - * Check if deltas are sorted case sensitively or insensitively. - * - * @param diff diff to check - * @return 0 if case sensitive, 1 if case is ignored - */ -GIT_EXTERN(int) git_diff_is_sorted_icase(const git_diff *diff); - -/** - * Loop over all deltas in a diff issuing callbacks. - * - * This will iterate through all of the files described in a diff. You - * should provide a file callback to learn about each file. - * - * The "hunk" and "line" callbacks are optional, and the text diff of the - * files will only be calculated if they are not NULL. Of course, these - * callbacks will not be invoked for binary files on the diff or for - * files whose only changed is a file mode change. - * - * Returning a non-zero value from any of the callbacks will terminate - * the iteration and return the value to the user. - * - * @param diff A git_diff generated by one of the above functions. - * @param file_cb Callback function to make per file in the diff. - * @param binary_cb Optional callback to make for binary files. - * @param hunk_cb Optional callback to make per hunk of text diff. This - * callback is called to describe a range of lines in the - * diff. It will not be issued for binary files. - * @param line_cb Optional callback to make per line of diff text. This - * same callback will be made for context lines, added, and - * removed lines, and even for a deleted trailing newline. - * @param payload Reference pointer that will be passed to your callbacks. - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_diff_foreach( - git_diff *diff, - git_diff_file_cb file_cb, - git_diff_binary_cb binary_cb, - git_diff_hunk_cb hunk_cb, - git_diff_line_cb line_cb, - void *payload); - -/** - * Look up the single character abbreviation for a delta status code. - * - * When you run `git diff --name-status` it uses single letter codes in - * the output such as 'A' for added, 'D' for deleted, 'M' for modified, - * etc. This function converts a git_delta_t value into these letters for - * your own purposes. GIT_DELTA_UNTRACKED will return a space (i.e. ' '). - * - * @param status The git_delta_t value to look up - * @return The single character label for that code - */ -GIT_EXTERN(char) git_diff_status_char(git_delta_t status); - -/** - * Possible output formats for diff data - */ -typedef enum { - GIT_DIFF_FORMAT_PATCH = 1u, /**< full git diff */ - GIT_DIFF_FORMAT_PATCH_HEADER = 2u, /**< just the file headers of patch */ - GIT_DIFF_FORMAT_RAW = 3u, /**< like git diff --raw */ - GIT_DIFF_FORMAT_NAME_ONLY = 4u, /**< like git diff --name-only */ - GIT_DIFF_FORMAT_NAME_STATUS = 5u, /**< like git diff --name-status */ -} git_diff_format_t; - -/** - * Iterate over a diff generating formatted text output. - * - * Returning a non-zero value from the callbacks will terminate the - * iteration and return the non-zero value to the caller. - * - * @param diff A git_diff generated by one of the above functions. - * @param format A git_diff_format_t value to pick the text format. - * @param print_cb Callback to make per line of diff text. - * @param payload Reference pointer that will be passed to your callback. - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_diff_print( - git_diff *diff, - git_diff_format_t format, - git_diff_line_cb print_cb, - void *payload); - -/**@}*/ - - -/* - * Misc - */ - -/** - * Directly run a diff on two blobs. - * - * Compared to a file, a blob lacks some contextual information. As such, - * the `git_diff_file` given to the callback will have some fake data; i.e. - * `mode` will be 0 and `path` will be NULL. - * - * NULL is allowed for either `old_blob` or `new_blob` and will be treated - * as an empty blob, with the `oid` set to NULL in the `git_diff_file` data. - * Passing NULL for both blobs is a noop; no callbacks will be made at all. - * - * We do run a binary content check on the blob content and if either blob - * looks like binary data, the `git_diff_delta` binary attribute will be set - * to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass - * `GIT_DIFF_FORCE_TEXT` of course). - * - * @param old_blob Blob for old side of diff, or NULL for empty blob - * @param old_as_path Treat old blob as if it had this filename; can be NULL - * @param new_blob Blob for new side of diff, or NULL for empty blob - * @param new_as_path Treat new blob as if it had this filename; can be NULL - * @param options Options for diff, or NULL for default options - * @param file_cb Callback for "file"; made once if there is a diff; can be NULL - * @param binary_cb Callback for binary files; can be NULL - * @param hunk_cb Callback for each hunk in diff; can be NULL - * @param line_cb Callback for each line in diff; can be NULL - * @param payload Payload passed to each callback function - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_diff_blobs( - const git_blob *old_blob, - const char *old_as_path, - const git_blob *new_blob, - const char *new_as_path, - const git_diff_options *options, - git_diff_file_cb file_cb, - git_diff_binary_cb binary_cb, - git_diff_hunk_cb hunk_cb, - git_diff_line_cb line_cb, - void *payload); - -/** - * Directly run a diff between a blob and a buffer. - * - * As with `git_diff_blobs`, comparing a blob and buffer lacks some context, - * so the `git_diff_file` parameters to the callbacks will be faked a la the - * rules for `git_diff_blobs()`. - * - * Passing NULL for `old_blob` will be treated as an empty blob (i.e. the - * `file_cb` will be invoked with GIT_DELTA_ADDED and the diff will be the - * entire content of the buffer added). Passing NULL to the buffer will do - * the reverse, with GIT_DELTA_REMOVED and blob content removed. - * - * @param old_blob Blob for old side of diff, or NULL for empty blob - * @param old_as_path Treat old blob as if it had this filename; can be NULL - * @param buffer Raw data for new side of diff, or NULL for empty - * @param buffer_len Length of raw data for new side of diff - * @param buffer_as_path Treat buffer as if it had this filename; can be NULL - * @param options Options for diff, or NULL for default options - * @param file_cb Callback for "file"; made once if there is a diff; can be NULL - * @param binary_cb Callback for binary files; can be NULL - * @param hunk_cb Callback for each hunk in diff; can be NULL - * @param line_cb Callback for each line in diff; can be NULL - * @param payload Payload passed to each callback function - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_diff_blob_to_buffer( - const git_blob *old_blob, - const char *old_as_path, - const char *buffer, - size_t buffer_len, - const char *buffer_as_path, - const git_diff_options *options, - git_diff_file_cb file_cb, - git_diff_binary_cb binary_cb, - git_diff_hunk_cb hunk_cb, - git_diff_line_cb line_cb, - void *payload); - -/** - * Directly run a diff between two buffers. - * - * Even more than with `git_diff_blobs`, comparing two buffer lacks - * context, so the `git_diff_file` parameters to the callbacks will be - * faked a la the rules for `git_diff_blobs()`. - * - * @param old_buffer Raw data for old side of diff, or NULL for empty - * @param old_len Length of the raw data for old side of the diff - * @param old_as_path Treat old buffer as if it had this filename; can be NULL - * @param new_buffer Raw data for new side of diff, or NULL for empty - * @param new_len Length of raw data for new side of diff - * @param new_as_path Treat buffer as if it had this filename; can be NULL - * @param options Options for diff, or NULL for default options - * @param file_cb Callback for "file"; made once if there is a diff; can be NULL - * @param binary_cb Callback for binary files; can be NULL - * @param hunk_cb Callback for each hunk in diff; can be NULL - * @param line_cb Callback for each line in diff; can be NULL - * @param payload Payload passed to each callback function - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_diff_buffers( - const void *old_buffer, - size_t old_len, - const char *old_as_path, - const void *new_buffer, - size_t new_len, - const char *new_as_path, - const git_diff_options *options, - git_diff_file_cb file_cb, - git_diff_binary_cb binary_cb, - git_diff_hunk_cb hunk_cb, - git_diff_line_cb line_cb, - void *payload); - -/** - * This is an opaque structure which is allocated by `git_diff_get_stats`. - * You are responsible for releasing the object memory when done, using the - * `git_diff_stats_free()` function. - */ -typedef struct git_diff_stats git_diff_stats; - -/** - * Formatting options for diff stats - */ -typedef enum { - /** No stats*/ - GIT_DIFF_STATS_NONE = 0, - - /** Full statistics, equivalent of `--stat` */ - GIT_DIFF_STATS_FULL = (1u << 0), - - /** Short statistics, equivalent of `--shortstat` */ - GIT_DIFF_STATS_SHORT = (1u << 1), - - /** Number statistics, equivalent of `--numstat` */ - GIT_DIFF_STATS_NUMBER = (1u << 2), - - /** Extended header information such as creations, renames and mode changes, equivalent of `--summary` */ - GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3), -} git_diff_stats_format_t; - -/** - * Accumulate diff statistics for all patches. - * - * @param out Structure containg the diff statistics. - * @param diff A git_diff generated by one of the above functions. - * @return 0 on success; non-zero on error - */ -GIT_EXTERN(int) git_diff_get_stats( - git_diff_stats **out, - git_diff *diff); - -/** - * Get the total number of files changed in a diff - * - * @param stats A `git_diff_stats` generated by one of the above functions. - * @return total number of files changed in the diff - */ -GIT_EXTERN(size_t) git_diff_stats_files_changed( - const git_diff_stats *stats); - -/** - * Get the total number of insertions in a diff - * - * @param stats A `git_diff_stats` generated by one of the above functions. - * @return total number of insertions in the diff - */ -GIT_EXTERN(size_t) git_diff_stats_insertions( - const git_diff_stats *stats); - -/** - * Get the total number of deletions in a diff - * - * @param stats A `git_diff_stats` generated by one of the above functions. - * @return total number of deletions in the diff - */ -GIT_EXTERN(size_t) git_diff_stats_deletions( - const git_diff_stats *stats); - -/** - * Print diff statistics to a `git_buf`. - * - * @param out buffer to store the formatted diff statistics in. - * @param stats A `git_diff_stats` generated by one of the above functions. - * @param format Formatting option. - * @param width Target width for output (only affects GIT_DIFF_STATS_FULL) - * @return 0 on success; non-zero on error - */ -GIT_EXTERN(int) git_diff_stats_to_buf( - git_buf *out, - const git_diff_stats *stats, - git_diff_stats_format_t format, - size_t width); - -/** - * Deallocate a `git_diff_stats`. - * - * @param stats The previously created statistics object; - * cannot be used after free. - */ -GIT_EXTERN(void) git_diff_stats_free(git_diff_stats *stats); - -/** - * Formatting options for diff e-mail generation - */ -typedef enum { - /** Normal patch, the default */ - GIT_DIFF_FORMAT_EMAIL_NONE = 0, - - /** Don't insert "[PATCH]" in the subject header*/ - GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0), - -} git_diff_format_email_flags_t; - -/** - * Options for controlling the formatting of the generated e-mail. - */ -typedef struct { - unsigned int version; - - git_diff_format_email_flags_t flags; - - /** This patch number */ - size_t patch_no; - - /** Total number of patches in this series */ - size_t total_patches; - - /** id to use for the commit */ - const git_oid *id; - - /** Summary of the change */ - const char *summary; - - /** Commit message's body */ - const char *body; - - /** Author of the change */ - const git_signature *author; -} git_diff_format_email_options; - -#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1 -#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL} - -/** - * Create an e-mail ready patch from a diff. - * - * @param out buffer to store the e-mail patch in - * @param diff containing the commit - * @param opts structure with options to influence content and formatting. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_diff_format_email( - git_buf *out, - git_diff *diff, - const git_diff_format_email_options *opts); - -/** - * Create an e-mail ready patch for a commit. - * - * Does not support creating patches for merge commits (yet). - * - * @param out buffer to store the e-mail patch in - * @param repo containing the commit - * @param commit pointer to up commit - * @param patch_no patch number of the commit - * @param total_patches total number of patches in the patch set - * @param flags determines the formatting of the e-mail - * @param diff_opts structure with options to influence diff or NULL for defaults. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_diff_commit_as_email( - git_buf *out, - git_repository *repo, - git_commit *commit, - size_t patch_no, - size_t total_patches, - git_diff_format_email_flags_t flags, - const git_diff_options *diff_opts); - -/** - * Initializes a `git_diff_format_email_options` with default values. - * - * Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT. - * - * @param opts The `git_diff_format_email_options` struct to initialize - * @param version Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_diff_format_email_init_options( - git_diff_format_email_options *opts, - unsigned int version); - -GIT_END_DECL - -/** @} */ - -#endif diff --git a/libgit2/include/git2/errors.h b/libgit2/include/git2/errors.h deleted file mode 100644 index 3ecea34..0000000 --- a/libgit2/include/git2/errors.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_errors_h__ -#define INCLUDE_git_errors_h__ - -#include "common.h" - -/** - * @file git2/errors.h - * @brief Git error handling routines and variables - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Generic return codes */ -typedef enum { - GIT_OK = 0, /**< No error */ - - GIT_ERROR = -1, /**< Generic error */ - GIT_ENOTFOUND = -3, /**< Requested object could not be found */ - GIT_EEXISTS = -4, /**< Object exists preventing operation */ - GIT_EAMBIGUOUS = -5, /**< More than one object matches */ - GIT_EBUFS = -6, /**< Output buffer too short to hold data */ - - /* GIT_EUSER is a special error that is never generated by libgit2 - * code. You can return it from a callback (e.g to stop an iteration) - * to know that it was generated by the callback and not by libgit2. - */ - GIT_EUSER = -7, - - GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository */ - GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits */ - GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */ - GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */ - GIT_EINVALIDSPEC = -12, /**< Name/ref spec was not in a valid format */ - GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */ - GIT_ELOCKED = -14, /**< Lock file prevented operation */ - GIT_EMODIFIED = -15, /**< Reference value does not match expected */ - GIT_EAUTH = -16, /**< Authentication error */ - GIT_ECERTIFICATE = -17, /**< Server certificate is invalid */ - GIT_EAPPLIED = -18, /**< Patch/merge has already been applied */ - GIT_EPEEL = -19, /**< The requested peel operation is not possible */ - GIT_EEOF = -20, /**< Unexpected EOF */ - GIT_EINVALID = -21, /**< Invalid operation or input */ - GIT_EUNCOMMITTED = -22, /**< Uncommitted changes in index prevented operation */ - GIT_EDIRECTORY = -23, /**< The operation is not valid for a directory */ - GIT_EMERGECONFLICT = -24, /**< A merge conflict exists and cannot continue */ - - GIT_PASSTHROUGH = -30, /**< Internal only */ - GIT_ITEROVER = -31, /**< Signals end of iteration with iterator */ -} git_error_code; - -/** - * Structure to store extra details of the last error that occurred. - * - * This is kept on a per-thread basis if GIT_THREADS was defined when the - * library was build, otherwise one is kept globally for the library - */ -typedef struct { - char *message; - int klass; -} git_error; - -/** Error classes */ -typedef enum { - GITERR_NONE = 0, - GITERR_NOMEMORY, - GITERR_OS, - GITERR_INVALID, - GITERR_REFERENCE, - GITERR_ZLIB, - GITERR_REPOSITORY, - GITERR_CONFIG, - GITERR_REGEX, - GITERR_ODB, - GITERR_INDEX, - GITERR_OBJECT, - GITERR_NET, - GITERR_TAG, - GITERR_TREE, - GITERR_INDEXER, - GITERR_SSL, - GITERR_SUBMODULE, - GITERR_THREAD, - GITERR_STASH, - GITERR_CHECKOUT, - GITERR_FETCHHEAD, - GITERR_MERGE, - GITERR_SSH, - GITERR_FILTER, - GITERR_REVERT, - GITERR_CALLBACK, - GITERR_CHERRYPICK, - GITERR_DESCRIBE, - GITERR_REBASE, - GITERR_FILESYSTEM -} git_error_t; - -/** - * Return the last `git_error` object that was generated for the - * current thread or NULL if no error has occurred. - * - * @return A git_error object. - */ -GIT_EXTERN(const git_error *) giterr_last(void); - -/** - * Clear the last library error that occurred for this thread. - */ -GIT_EXTERN(void) giterr_clear(void); - -/** - * Set the error message string for this thread. - * - * This function is public so that custom ODB backends and the like can - * relay an error message through libgit2. Most regular users of libgit2 - * will never need to call this function -- actually, calling it in most - * circumstances (for example, calling from within a callback function) - * will just end up having the value overwritten by libgit2 internals. - * - * This error message is stored in thread-local storage and only applies - * to the particular thread that this libgit2 call is made from. - * - * @param error_class One of the `git_error_t` enum above describing the - * general subsystem that is responsible for the error. - * @param string The formatted error message to keep - */ -GIT_EXTERN(void) giterr_set_str(int error_class, const char *string); - -/** - * Set the error message to a special value for memory allocation failure. - * - * The normal `giterr_set_str()` function attempts to `strdup()` the string - * that is passed in. This is not a good idea when the error in question - * is a memory allocation failure. That circumstance has a special setter - * function that sets the error string to a known and statically allocated - * internal value. - */ -GIT_EXTERN(void) giterr_set_oom(void); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/filter.h b/libgit2/include/git2/filter.h deleted file mode 100644 index 436a0f3..0000000 --- a/libgit2/include/git2/filter.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_filter_h__ -#define INCLUDE_git_filter_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "buffer.h" - -/** - * @file git2/filter.h - * @brief Git filter APIs - * - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Filters are applied in one of two directions: smudging - which is - * exporting a file from the Git object database to the working directory, - * and cleaning - which is importing a file from the working directory to - * the Git object database. These values control which direction of - * change is being applied. - */ -typedef enum { - GIT_FILTER_TO_WORKTREE = 0, - GIT_FILTER_SMUDGE = GIT_FILTER_TO_WORKTREE, - GIT_FILTER_TO_ODB = 1, - GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB, -} git_filter_mode_t; - -/** - * Filter option flags. - */ -typedef enum { - GIT_FILTER_DEFAULT = 0u, - GIT_FILTER_ALLOW_UNSAFE = (1u << 0), -} git_filter_flag_t; - -/** - * A filter that can transform file data - * - * This represents a filter that can be used to transform or even replace - * file data. Libgit2 includes one built in filter and it is possible to - * write your own (see git2/sys/filter.h for information on that). - * - * The two builtin filters are: - * - * * "crlf" which uses the complex rules with the "text", "eol", and - * "crlf" file attributes to decide how to convert between LF and CRLF - * line endings - * * "ident" which replaces "$Id$" in a blob with "$Id: $" upon - * checkout and replaced "$Id: $" with "$Id$" on checkin. - */ -typedef struct git_filter git_filter; - -/** - * List of filters to be applied - * - * This represents a list of filters to be applied to a file / blob. You - * can build the list with one call, apply it with another, and dispose it - * with a third. In typical usage, there are not many occasions where a - * git_filter_list is needed directly since the library will generally - * handle conversions for you, but it can be convenient to be able to - * build and apply the list sometimes. - */ -typedef struct git_filter_list git_filter_list; - -/** - * Load the filter list for a given path. - * - * This will return 0 (success) but set the output git_filter_list to NULL - * if no filters are requested for the given file. - * - * @param filters Output newly created git_filter_list (or NULL) - * @param repo Repository object that contains `path` - * @param blob The blob to which the filter will be applied (if known) - * @param path Relative path of the file to be filtered - * @param mode Filtering direction (WT->ODB or ODB->WT) - * @param flags Combination of `git_filter_flag_t` flags - * @return 0 on success (which could still return NULL if no filters are - * needed for the requested file), <0 on error - */ -GIT_EXTERN(int) git_filter_list_load( - git_filter_list **filters, - git_repository *repo, - git_blob *blob, /* can be NULL */ - const char *path, - git_filter_mode_t mode, - uint32_t flags); - -/** - * Query the filter list to see if a given filter (by name) will run. - * The built-in filters "crlf" and "ident" can be queried, otherwise this - * is the name of the filter specified by the filter attribute. - * - * This will return 0 if the given filter is not in the list, or 1 if - * the filter will be applied. - * - * @param filters A loaded git_filter_list (or NULL) - * @param name The name of the filter to query - * @return 1 if the filter is in the list, 0 otherwise - */ -GIT_EXTERN(int) git_filter_list_contains( - git_filter_list *filters, - const char *name); - -/** - * Apply filter list to a data buffer. - * - * See `git2/buffer.h` for background on `git_buf` objects. - * - * If the `in` buffer holds data allocated by libgit2 (i.e. `in->asize` is - * not zero), then it will be overwritten when applying the filters. If - * not, then it will be left untouched. - * - * If there are no filters to apply (or `filters` is NULL), then the `out` - * buffer will reference the `in` buffer data (with `asize` set to zero) - * instead of allocating data. This keeps allocations to a minimum, but - * it means you have to be careful about freeing the `in` data since `out` - * may be pointing to it! - * - * @param out Buffer to store the result of the filtering - * @param filters A loaded git_filter_list (or NULL) - * @param in Buffer containing the data to filter - * @return 0 on success, an error code otherwise - */ -GIT_EXTERN(int) git_filter_list_apply_to_data( - git_buf *out, - git_filter_list *filters, - git_buf *in); - -/** - * Apply a filter list to the contents of a file on disk - * - * @param out buffer into which to store the filtered file - * @param filters the list of filters to apply - * @param repo the repository in which to perform the filtering - * @param path the path of the file to filter, a relative path will be - * taken as relative to the workdir - */ -GIT_EXTERN(int) git_filter_list_apply_to_file( - git_buf *out, - git_filter_list *filters, - git_repository *repo, - const char *path); - -/** - * Apply a filter list to the contents of a blob - * - * @param out buffer into which to store the filtered file - * @param filters the list of filters to apply - * @param blob the blob to filter - */ -GIT_EXTERN(int) git_filter_list_apply_to_blob( - git_buf *out, - git_filter_list *filters, - git_blob *blob); - -/** - * Apply a filter list to an arbitrary buffer as a stream - * - * @param filters the list of filters to apply - * @param data the buffer to filter - * @param target the stream into which the data will be written - */ -GIT_EXTERN(int) git_filter_list_stream_data( - git_filter_list *filters, - git_buf *data, - git_writestream *target); - -/** - * Apply a filter list to a file as a stream - * - * @param filters the list of filters to apply - * @param repo the repository in which to perform the filtering - * @param path the path of the file to filter, a relative path will be - * taken as relative to the workdir - * @param target the stream into which the data will be written - */ -GIT_EXTERN(int) git_filter_list_stream_file( - git_filter_list *filters, - git_repository *repo, - const char *path, - git_writestream *target); - -/** - * Apply a filter list to a blob as a stream - * - * @param filters the list of filters to apply - * @param blob the blob to filter - * @param target the stream into which the data will be written - */ -GIT_EXTERN(int) git_filter_list_stream_blob( - git_filter_list *filters, - git_blob *blob, - git_writestream *target); - -/** - * Free a git_filter_list - * - * @param filters A git_filter_list created by `git_filter_list_load` - */ -GIT_EXTERN(void) git_filter_list_free(git_filter_list *filters); - - -GIT_END_DECL - -/** @} */ - -#endif diff --git a/libgit2/include/git2/global.h b/libgit2/include/git2/global.h deleted file mode 100644 index ce5bdf4..0000000 --- a/libgit2/include/git2/global.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_global_h__ -#define INCLUDE_git_global_h__ - -#include "common.h" - -GIT_BEGIN_DECL - -/** - * Init the global state - * - * This function must the called before any other libgit2 function in - * order to set up global state and threading. - * - * This function may be called multiple times - it will return the number - * of times the initialization has been called (including this one) that have - * not subsequently been shutdown. - * - * @return the number of initializations of the library, or an error code. - */ -GIT_EXTERN(int) git_libgit2_init(void); - -/** - * Shutdown the global state - * - * Clean up the global state and threading context after calling it as - * many times as `git_libgit2_init()` was called - it will return the - * number of remainining initializations that have not been shutdown - * (after this one). - * - * @return the number of remaining initializations of the library, or an - * error code. - */ -GIT_EXTERN(int) git_libgit2_shutdown(void); - -/** @} */ -GIT_END_DECL -#endif - diff --git a/libgit2/include/git2/graph.h b/libgit2/include/git2/graph.h deleted file mode 100644 index c997d8c..0000000 --- a/libgit2/include/git2/graph.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_graph_h__ -#define INCLUDE_git_graph_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" - -/** - * @file git2/graph.h - * @brief Git graph traversal routines - * @defgroup git_revwalk Git graph traversal routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Count the number of unique commits between two commit objects - * - * There is no need for branches containing the commits to have any - * upstream relationship, but it helps to think of one as a branch and - * the other as its upstream, the `ahead` and `behind` values will be - * what git would report for the branches. - * - * @param ahead number of unique from commits in `upstream` - * @param behind number of unique from commits in `local` - * @param repo the repository where the commits exist - * @param local the commit for local - * @param upstream the commit for upstream - */ -GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream); - - -/** - * Determine if a commit is the descendant of another commit. - * - * @param commit a previously loaded commit. - * @param ancestor a potential ancestor commit. - * @return 1 if the given commit is a descendant of the potential ancestor, - * 0 if not, error code otherwise. - */ -GIT_EXTERN(int) git_graph_descendant_of( - git_repository *repo, - const git_oid *commit, - const git_oid *ancestor); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/ignore.h b/libgit2/include/git2/ignore.h deleted file mode 100644 index d0c1877..0000000 --- a/libgit2/include/git2/ignore.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_ignore_h__ -#define INCLUDE_git_ignore_h__ - -#include "common.h" -#include "types.h" - -GIT_BEGIN_DECL - -/** - * Add ignore rules for a repository. - * - * Excludesfile rules (i.e. .gitignore rules) are generally read from - * .gitignore files in the repository tree or from a shared system file - * only if a "core.excludesfile" config value is set. The library also - * keeps a set of per-repository internal ignores that can be configured - * in-memory and will not persist. This function allows you to add to - * that internal rules list. - * - * Example usage: - * - * error = git_ignore_add_rule(myrepo, "*.c\ndir/\nFile with space\n"); - * - * This would add three rules to the ignores. - * - * @param repo The repository to add ignore rules to. - * @param rules Text of rules, a la the contents of a .gitignore file. - * It is okay to have multiple rules in the text; if so, - * each rule should be terminated with a newline. - * @return 0 on success - */ -GIT_EXTERN(int) git_ignore_add_rule( - git_repository *repo, - const char *rules); - -/** - * Clear ignore rules that were explicitly added. - * - * Resets to the default internal ignore rules. This will not turn off - * rules in .gitignore files that actually exist in the filesystem. - * - * The default internal ignores ignore ".", ".." and ".git" entries. - * - * @param repo The repository to remove ignore rules from. - * @return 0 on success - */ -GIT_EXTERN(int) git_ignore_clear_internal_rules( - git_repository *repo); - -/** - * Test if the ignore rules apply to a given path. - * - * This function checks the ignore rules to see if they would apply to the - * given file. This indicates if the file would be ignored regardless of - * whether the file is already in the index or committed to the repository. - * - * One way to think of this is if you were to do "git add ." on the - * directory containing the file, would it be added or not? - * - * @param ignored boolean returning 0 if the file is not ignored, 1 if it is - * @param repo a repository object - * @param path the file to check ignores for, relative to the repo's workdir. - * @return 0 if ignore rules could be processed for the file (regardless - * of whether it exists or not), or an error < 0 if they could not. - */ -GIT_EXTERN(int) git_ignore_path_is_ignored( - int *ignored, - git_repository *repo, - const char *path); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/index.h b/libgit2/include/git2/index.h deleted file mode 100644 index 466765b..0000000 --- a/libgit2/include/git2/index.h +++ /dev/null @@ -1,786 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_index_h__ -#define INCLUDE_git_index_h__ - -#include "common.h" -#include "indexer.h" -#include "types.h" -#include "oid.h" -#include "strarray.h" - -/** - * @file git2/index.h - * @brief Git index parsing and manipulation routines - * @defgroup git_index Git index parsing and manipulation routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Time structure used in a git index entry */ -typedef struct { - int32_t seconds; - /* nsec should not be stored as time_t compatible */ - uint32_t nanoseconds; -} git_index_time; - -/** - * In-memory representation of a file entry in the index. - * - * This is a public structure that represents a file entry in the index. - * The meaning of the fields corresponds to core Git's documentation (in - * "Documentation/technical/index-format.txt"). - * - * The `flags` field consists of a number of bit fields which can be - * accessed via the first set of `GIT_IDXENTRY_...` bitmasks below. These - * flags are all read from and persisted to disk. - * - * The `flags_extended` field also has a number of bit fields which can be - * accessed via the later `GIT_IDXENTRY_...` bitmasks below. Some of - * these flags are read from and written to disk, but some are set aside - * for in-memory only reference. - * - * Note that the time and size fields are truncated to 32 bits. This - * is enough to detect changes, which is enough for the index to - * function as a cache, but it should not be taken as an authoritative - * source for that data. - */ -typedef struct git_index_entry { - git_index_time ctime; - git_index_time mtime; - - uint32_t dev; - uint32_t ino; - uint32_t mode; - uint32_t uid; - uint32_t gid; - uint32_t file_size; - - git_oid id; - - uint16_t flags; - uint16_t flags_extended; - - const char *path; -} git_index_entry; - -/** - * Bitmasks for on-disk fields of `git_index_entry`'s `flags` - * - * These bitmasks match the four fields in the `git_index_entry` `flags` - * value both in memory and on disk. You can use them to interpret the - * data in the `flags`. - */ -#define GIT_IDXENTRY_NAMEMASK (0x0fff) -#define GIT_IDXENTRY_STAGEMASK (0x3000) -#define GIT_IDXENTRY_STAGESHIFT 12 - -/** - * Flags for index entries - */ -typedef enum { - GIT_IDXENTRY_EXTENDED = (0x4000), - GIT_IDXENTRY_VALID = (0x8000), -} git_indxentry_flag_t; - -#define GIT_IDXENTRY_STAGE(E) \ - (((E)->flags & GIT_IDXENTRY_STAGEMASK) >> GIT_IDXENTRY_STAGESHIFT) - -#define GIT_IDXENTRY_STAGE_SET(E,S) do { \ - (E)->flags = ((E)->flags & ~GIT_IDXENTRY_STAGEMASK) | \ - (((S) & 0x03) << GIT_IDXENTRY_STAGESHIFT); } while (0) - -/** - * Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended` - * - * In memory, the `flags_extended` fields are divided into two parts: the - * fields that are read from and written to disk, and other fields that - * in-memory only and used by libgit2. Only the flags in - * `GIT_IDXENTRY_EXTENDED_FLAGS` will get saved on-disk. - * - * Thee first three bitmasks match the three fields in the - * `git_index_entry` `flags_extended` value that belong on disk. You - * can use them to interpret the data in the `flags_extended`. - * - * The rest of the bitmasks match the other fields in the `git_index_entry` - * `flags_extended` value that are only used in-memory by libgit2. - * You can use them to interpret the data in the `flags_extended`. - * - */ -typedef enum { - - GIT_IDXENTRY_INTENT_TO_ADD = (1 << 13), - GIT_IDXENTRY_SKIP_WORKTREE = (1 << 14), - /** Reserved for future extension */ - GIT_IDXENTRY_EXTENDED2 = (1 << 15), - - GIT_IDXENTRY_EXTENDED_FLAGS = (GIT_IDXENTRY_INTENT_TO_ADD | GIT_IDXENTRY_SKIP_WORKTREE), - GIT_IDXENTRY_UPDATE = (1 << 0), - GIT_IDXENTRY_REMOVE = (1 << 1), - GIT_IDXENTRY_UPTODATE = (1 << 2), - GIT_IDXENTRY_ADDED = (1 << 3), - - GIT_IDXENTRY_HASHED = (1 << 4), - GIT_IDXENTRY_UNHASHED = (1 << 5), - GIT_IDXENTRY_WT_REMOVE = (1 << 6), /**< remove in work directory */ - GIT_IDXENTRY_CONFLICTED = (1 << 7), - - GIT_IDXENTRY_UNPACKED = (1 << 8), - GIT_IDXENTRY_NEW_SKIP_WORKTREE = (1 << 9), -} git_idxentry_extended_flag_t; - -/** Capabilities of system that affect index actions. */ -typedef enum { - GIT_INDEXCAP_IGNORE_CASE = 1, - GIT_INDEXCAP_NO_FILEMODE = 2, - GIT_INDEXCAP_NO_SYMLINKS = 4, - GIT_INDEXCAP_FROM_OWNER = -1, -} git_indexcap_t; - -/** Callback for APIs that add/remove/update files matching pathspec */ -typedef int (*git_index_matched_path_cb)( - const char *path, const char *matched_pathspec, void *payload); - -/** Flags for APIs that add files matching pathspec */ -typedef enum { - GIT_INDEX_ADD_DEFAULT = 0, - GIT_INDEX_ADD_FORCE = (1u << 0), - GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1), - GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2), -} git_index_add_option_t; - -typedef enum { - /** - * Match any index stage. - * - * Some index APIs take a stage to match; pass this value to match - * any entry matching the path regardless of stage. - */ - GIT_INDEX_STAGE_ANY = -1, - - /** A normal staged file in the index. */ - GIT_INDEX_STAGE_NORMAL = 0, - - /** The ancestor side of a conflict. */ - GIT_INDEX_STAGE_ANCESTOR = 1, - - /** The "ours" side of a conflict. */ - GIT_INDEX_STAGE_OURS = 2, - - /** The "theirs" side of a conflict. */ - GIT_INDEX_STAGE_THEIRS = 3, -} git_index_stage_t; - -/** @name Index File Functions - * - * These functions work on the index file itself. - */ -/**@{*/ - -/** - * Create a new bare Git index object as a memory representation - * of the Git index file in 'index_path', without a repository - * to back it. - * - * Since there is no ODB or working directory behind this index, - * any Index methods which rely on these (e.g. index_add_bypath) - * will fail with the GIT_ERROR error code. - * - * If you need to access the index of an actual repository, - * use the `git_repository_index` wrapper. - * - * The index must be freed once it's no longer in use. - * - * @param out the pointer for the new index - * @param index_path the path to the index file in disk - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path); - -/** - * Create an in-memory index object. - * - * This index object cannot be read/written to the filesystem, - * but may be used to perform in-memory index operations. - * - * The index must be freed once it's no longer in use. - * - * @param out the pointer for the new index - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_new(git_index **out); - -/** - * Free an existing index object. - * - * @param index an existing index object - */ -GIT_EXTERN(void) git_index_free(git_index *index); - -/** - * Get the repository this index relates to - * - * @param index The index - * @return A pointer to the repository - */ -GIT_EXTERN(git_repository *) git_index_owner(const git_index *index); - -/** - * Read index capabilities flags. - * - * @param index An existing index object - * @return A combination of GIT_INDEXCAP values - */ -GIT_EXTERN(int) git_index_caps(const git_index *index); - -/** - * Set index capabilities flags. - * - * If you pass `GIT_INDEXCAP_FROM_OWNER` for the caps, then the - * capabilities will be read from the config of the owner object, - * looking at `core.ignorecase`, `core.filemode`, `core.symlinks`. - * - * @param index An existing index object - * @param caps A combination of GIT_INDEXCAP values - * @return 0 on success, -1 on failure - */ -GIT_EXTERN(int) git_index_set_caps(git_index *index, int caps); - -/** - * Update the contents of an existing index object in memory by reading - * from the hard disk. - * - * If `force` is true, this performs a "hard" read that discards in-memory - * changes and always reloads the on-disk index data. If there is no - * on-disk version, the index will be cleared. - * - * If `force` is false, this does a "soft" read that reloads the index - * data from disk only if it has changed since the last time it was - * loaded. Purely in-memory index data will be untouched. Be aware: if - * there are changes on disk, unwritten in-memory changes are discarded. - * - * @param index an existing index object - * @param force if true, always reload, vs. only read if file has changed - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_read(git_index *index, int force); - -/** - * Write an existing index object from memory back to disk - * using an atomic file lock. - * - * @param index an existing index object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_write(git_index *index); - -/** - * Get the full path to the index file on disk. - * - * @param index an existing index object - * @return path to index file or NULL for in-memory index - */ -GIT_EXTERN(const char *) git_index_path(const git_index *index); - -/** - * Get the checksum of the index - * - * This checksum is the SHA-1 hash over the index file (except the - * last 20 bytes which are the checksum itself). In cases where the - * index does not exist on-disk, it will be zeroed out. - * - * @param index an existing index object - * @return a pointer to the checksum of the index - */ -GIT_EXTERN(const git_oid *) git_index_checksum(git_index *index); - -/** - * Read a tree into the index file with stats - * - * The current index contents will be replaced by the specified tree. - * - * @param index an existing index object - * @param tree tree to read - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_read_tree(git_index *index, const git_tree *tree); - -/** - * Write the index as a tree - * - * This method will scan the index and write a representation - * of its current state back to disk; it recursively creates - * tree objects for each of the subtrees stored in the index, - * but only returns the OID of the root tree. This is the OID - * that can be used e.g. to create a commit. - * - * The index instance cannot be bare, and needs to be associated - * to an existing repository. - * - * The index must not contain any file in conflict. - * - * @param out Pointer where to store the OID of the written tree - * @param index Index to write - * @return 0 on success, GIT_EUNMERGED when the index is not clean - * or an error code - */ -GIT_EXTERN(int) git_index_write_tree(git_oid *out, git_index *index); - -/** - * Write the index as a tree to the given repository - * - * This method will do the same as `git_index_write_tree`, but - * letting the user choose the repository where the tree will - * be written. - * - * The index must not contain any file in conflict. - * - * @param out Pointer where to store OID of the the written tree - * @param index Index to write - * @param repo Repository where to write the tree - * @return 0 on success, GIT_EUNMERGED when the index is not clean - * or an error code - */ -GIT_EXTERN(int) git_index_write_tree_to(git_oid *out, git_index *index, git_repository *repo); - -/**@}*/ - -/** @name Raw Index Entry Functions - * - * These functions work on index entries, and allow for raw manipulation - * of the entries. - */ -/**@{*/ - -/* Index entry manipulation */ - -/** - * Get the count of entries currently in the index - * - * @param index an existing index object - * @return integer of count of current entries - */ -GIT_EXTERN(size_t) git_index_entrycount(const git_index *index); - -/** - * Clear the contents (all the entries) of an index object. - * - * This clears the index object in memory; changes must be explicitly - * written to disk for them to take effect persistently. - * - * @param index an existing index object - * @return 0 on success, error code < 0 on failure - */ -GIT_EXTERN(int) git_index_clear(git_index *index); - -/** - * Get a pointer to one of the entries in the index - * - * The entry is not modifiable and should not be freed. Because the - * `git_index_entry` struct is a publicly defined struct, you should - * be able to make your own permanent copy of the data if necessary. - * - * @param index an existing index object - * @param n the position of the entry - * @return a pointer to the entry; NULL if out of bounds - */ -GIT_EXTERN(const git_index_entry *) git_index_get_byindex( - git_index *index, size_t n); - -/** - * Get a pointer to one of the entries in the index - * - * The entry is not modifiable and should not be freed. Because the - * `git_index_entry` struct is a publicly defined struct, you should - * be able to make your own permanent copy of the data if necessary. - * - * @param index an existing index object - * @param path path to search - * @param stage stage to search - * @return a pointer to the entry; NULL if it was not found - */ -GIT_EXTERN(const git_index_entry *) git_index_get_bypath( - git_index *index, const char *path, int stage); - -/** - * Remove an entry from the index - * - * @param index an existing index object - * @param path path to search - * @param stage stage to search - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_remove(git_index *index, const char *path, int stage); - -/** - * Remove all entries from the index under a given directory - * - * @param index an existing index object - * @param dir container directory path - * @param stage stage to search - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_remove_directory( - git_index *index, const char *dir, int stage); - -/** - * Add or update an index entry from an in-memory struct - * - * If a previous index entry exists that has the same path and stage - * as the given 'source_entry', it will be replaced. Otherwise, the - * 'source_entry' will be added. - * - * A full copy (including the 'path' string) of the given - * 'source_entry' will be inserted on the index. - * - * @param index an existing index object - * @param source_entry new entry object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_add(git_index *index, const git_index_entry *source_entry); - -/** - * Return the stage number from a git index entry - * - * This entry is calculated from the entry's flag attribute like this: - * - * (entry->flags & GIT_IDXENTRY_STAGEMASK) >> GIT_IDXENTRY_STAGESHIFT - * - * @param entry The entry - * @return the stage number - */ -GIT_EXTERN(int) git_index_entry_stage(const git_index_entry *entry); - -/** - * Return whether the given index entry is a conflict (has a high stage - * entry). This is simply shorthand for `git_index_entry_stage > 0`. - * - * @param entry The entry - * @return 1 if the entry is a conflict entry, 0 otherwise - */ -GIT_EXTERN(int) git_index_entry_is_conflict(const git_index_entry *entry); - -/**@}*/ - -/** @name Workdir Index Entry Functions - * - * These functions work on index entries specifically in the working - * directory (ie, stage 0). - */ -/**@{*/ - -/** - * Add or update an index entry from a file on disk - * - * The file `path` must be relative to the repository's - * working folder and must be readable. - * - * This method will fail in bare index instances. - * - * This forces the file to be added to the index, not looking - * at gitignore rules. Those rules can be evaluated through - * the git_status APIs (in status.h) before calling this. - * - * If this file currently is the result of a merge conflict, this - * file will no longer be marked as conflicting. The data about - * the conflict will be moved to the "resolve undo" (REUC) section. - * - * @param index an existing index object - * @param path filename to add - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_add_bypath(git_index *index, const char *path); - -/** - * Add or update an index entry from a buffer in memory - * - * This method will create a blob in the repository that owns the - * index and then add the index entry to the index. The `path` of the - * entry represents the position of the blob relative to the - * repository's root folder. - * - * If a previous index entry exists that has the same path as the - * given 'entry', it will be replaced. Otherwise, the 'entry' will be - * added. The `id` and the `file_size` of the 'entry' are updated with the - * real value of the blob. - * - * This forces the file to be added to the index, not looking - * at gitignore rules. Those rules can be evaluated through - * the git_status APIs (in status.h) before calling this. - * - * If this file currently is the result of a merge conflict, this - * file will no longer be marked as conflicting. The data about - * the conflict will be moved to the "resolve undo" (REUC) section. - * - * @param index an existing index object - * @param entry filename to add - * @param buffer data to be written into the blob - * @param len length of the data - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_add_frombuffer( - git_index *index, - const git_index_entry *entry, - const void *buffer, size_t len); - -/** - * Remove an index entry corresponding to a file on disk - * - * The file `path` must be relative to the repository's - * working folder. It may exist. - * - * If this file currently is the result of a merge conflict, this - * file will no longer be marked as conflicting. The data about - * the conflict will be moved to the "resolve undo" (REUC) section. - * - * @param index an existing index object - * @param path filename to remove - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_remove_bypath(git_index *index, const char *path); - -/** - * Add or update index entries matching files in the working directory. - * - * This method will fail in bare index instances. - * - * The `pathspec` is a list of file names or shell glob patterns that will - * matched against files in the repository's working directory. Each file - * that matches will be added to the index (either updating an existing - * entry or adding a new entry). You can disable glob expansion and force - * exact matching with the `GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH` flag. - * - * Files that are ignored will be skipped (unlike `git_index_add_bypath`). - * If a file is already tracked in the index, then it *will* be updated - * even if it is ignored. Pass the `GIT_INDEX_ADD_FORCE` flag to - * skip the checking of ignore rules. - * - * To emulate `git add -A` and generate an error if the pathspec contains - * the exact path of an ignored file (when not using FORCE), add the - * `GIT_INDEX_ADD_CHECK_PATHSPEC` flag. This checks that each entry - * in the `pathspec` that is an exact match to a filename on disk is - * either not ignored or already in the index. If this check fails, the - * function will return GIT_EINVALIDSPEC. - * - * To emulate `git add -A` with the "dry-run" option, just use a callback - * function that always returns a positive value. See below for details. - * - * If any files are currently the result of a merge conflict, those files - * will no longer be marked as conflicting. The data about the conflicts - * will be moved to the "resolve undo" (REUC) section. - * - * If you provide a callback function, it will be invoked on each matching - * item in the working directory immediately *before* it is added to / - * updated in the index. Returning zero will add the item to the index, - * greater than zero will skip the item, and less than zero will abort the - * scan and return that value to the caller. - * - * @param index an existing index object - * @param pathspec array of path patterns - * @param flags combination of git_index_add_option_t flags - * @param callback notification callback for each added/updated path (also - * gets index of matching pathspec entry); can be NULL; - * return 0 to add, >0 to skip, <0 to abort scan. - * @param payload payload passed through to callback function - * @return 0 on success, negative callback return value, or error code - */ -GIT_EXTERN(int) git_index_add_all( - git_index *index, - const git_strarray *pathspec, - unsigned int flags, - git_index_matched_path_cb callback, - void *payload); - -/** - * Remove all matching index entries. - * - * If you provide a callback function, it will be invoked on each matching - * item in the index immediately *before* it is removed. Return 0 to - * remove the item, > 0 to skip the item, and < 0 to abort the scan. - * - * @param index An existing index object - * @param pathspec array of path patterns - * @param callback notification callback for each removed path (also - * gets index of matching pathspec entry); can be NULL; - * return 0 to add, >0 to skip, <0 to abort scan. - * @param payload payload passed through to callback function - * @return 0 on success, negative callback return value, or error code - */ -GIT_EXTERN(int) git_index_remove_all( - git_index *index, - const git_strarray *pathspec, - git_index_matched_path_cb callback, - void *payload); - -/** - * Update all index entries to match the working directory - * - * This method will fail in bare index instances. - * - * This scans the existing index entries and synchronizes them with the - * working directory, deleting them if the corresponding working directory - * file no longer exists otherwise updating the information (including - * adding the latest version of file to the ODB if needed). - * - * If you provide a callback function, it will be invoked on each matching - * item in the index immediately *before* it is updated (either refreshed - * or removed depending on working directory state). Return 0 to proceed - * with updating the item, > 0 to skip the item, and < 0 to abort the scan. - * - * @param index An existing index object - * @param pathspec array of path patterns - * @param callback notification callback for each updated path (also - * gets index of matching pathspec entry); can be NULL; - * return 0 to add, >0 to skip, <0 to abort scan. - * @param payload payload passed through to callback function - * @return 0 on success, negative callback return value, or error code - */ -GIT_EXTERN(int) git_index_update_all( - git_index *index, - const git_strarray *pathspec, - git_index_matched_path_cb callback, - void *payload); - -/** - * Find the first position of any entries which point to given - * path in the Git index. - * - * @param at_pos the address to which the position of the index entry is written (optional) - * @param index an existing index object - * @param path path to search - * @return a zero-based position in the index if found; GIT_ENOTFOUND otherwise - */ -GIT_EXTERN(int) git_index_find(size_t *at_pos, git_index *index, const char *path); - -/** - * Find the first position of any entries matching a prefix. To find the first position - * of a path inside a given folder, suffix the prefix with a '/'. - * - * @param at_pos the address to which the position of the index entry is written (optional) - * @param index an existing index object - * @param prefix the prefix to search for - * @return 0 with valid value in at_pos; an error code otherwise - */ -GIT_EXTERN(int) git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix); - -/**@}*/ - -/** @name Conflict Index Entry Functions - * - * These functions work on conflict index entries specifically (ie, stages 1-3) - */ -/**@{*/ - -/** - * Add or update index entries to represent a conflict. Any staged - * entries that exist at the given paths will be removed. - * - * The entries are the entries from the tree included in the merge. Any - * entry may be null to indicate that that file was not present in the - * trees during the merge. For example, ancestor_entry may be NULL to - * indicate that a file was added in both branches and must be resolved. - * - * @param index an existing index object - * @param ancestor_entry the entry data for the ancestor of the conflict - * @param our_entry the entry data for our side of the merge conflict - * @param their_entry the entry data for their side of the merge conflict - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_conflict_add( - git_index *index, - const git_index_entry *ancestor_entry, - const git_index_entry *our_entry, - const git_index_entry *their_entry); - -/** - * Get the index entries that represent a conflict of a single file. - * - * The entries are not modifiable and should not be freed. Because the - * `git_index_entry` struct is a publicly defined struct, you should - * be able to make your own permanent copy of the data if necessary. - * - * @param ancestor_out Pointer to store the ancestor entry - * @param our_out Pointer to store the our entry - * @param their_out Pointer to store the their entry - * @param index an existing index object - * @param path path to search - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_conflict_get( - const git_index_entry **ancestor_out, - const git_index_entry **our_out, - const git_index_entry **their_out, - git_index *index, - const char *path); - -/** - * Removes the index entries that represent a conflict of a single file. - * - * @param index an existing index object - * @param path path to remove conflicts for - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_conflict_remove(git_index *index, const char *path); - -/** - * Remove all conflicts in the index (entries with a stage greater than 0). - * - * @param index an existing index object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_conflict_cleanup(git_index *index); - -/** - * Determine if the index contains entries representing file conflicts. - * - * @return 1 if at least one conflict is found, 0 otherwise. - */ -GIT_EXTERN(int) git_index_has_conflicts(const git_index *index); - -/** - * Create an iterator for the conflicts in the index. - * - * The index must not be modified while iterating; the results are undefined. - * - * @param iterator_out The newly created conflict iterator - * @param index The index to scan - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_conflict_iterator_new( - git_index_conflict_iterator **iterator_out, - git_index *index); - -/** - * Returns the current conflict (ancestor, ours and theirs entry) and - * advance the iterator internally to the next value. - * - * @param ancestor_out Pointer to store the ancestor side of the conflict - * @param our_out Pointer to store our side of the conflict - * @param their_out Pointer to store their side of the conflict - * @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code - * (negative value) - */ -GIT_EXTERN(int) git_index_conflict_next( - const git_index_entry **ancestor_out, - const git_index_entry **our_out, - const git_index_entry **their_out, - git_index_conflict_iterator *iterator); - -/** - * Frees a `git_index_conflict_iterator`. - * - * @param iterator pointer to the iterator - */ -GIT_EXTERN(void) git_index_conflict_iterator_free( - git_index_conflict_iterator *iterator); - -/**@}*/ - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/indexer.h b/libgit2/include/git2/indexer.h deleted file mode 100644 index d2d315e..0000000 --- a/libgit2/include/git2/indexer.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef _INCLUDE_git_indexer_h__ -#define _INCLUDE_git_indexer_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" - -GIT_BEGIN_DECL - -typedef struct git_indexer git_indexer; - -/** - * Create a new indexer instance - * - * @param out where to store the indexer instance - * @param path to the directory where the packfile should be stored - * @param mode permissions to use creating packfile or 0 for defaults - * @param odb object database from which to read base objects when - * fixing thin packs. Pass NULL if no thin pack is expected (an error - * will be returned if there are bases missing) - * @param progress_cb function to call with progress information - * @param progress_cb_payload payload for the progress callback - */ -GIT_EXTERN(int) git_indexer_new( - git_indexer **out, - const char *path, - unsigned int mode, - git_odb *odb, - git_transfer_progress_cb progress_cb, - void *progress_cb_payload); - -/** - * Add data to the indexer - * - * @param idx the indexer - * @param data the data to add - * @param size the size of the data in bytes - * @param stats stat storage - */ -GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats); - -/** - * Finalize the pack and index - * - * Resolve any pending deltas and write out the index file - * - * @param idx the indexer - */ -GIT_EXTERN(int) git_indexer_commit(git_indexer *idx, git_transfer_progress *stats); - -/** - * Get the packfile's hash - * - * A packfile's name is derived from the sorted hashing of all object - * names. This is only correct after the index has been finalized. - * - * @param idx the indexer instance - */ -GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx); - -/** - * Free the indexer and its resources - * - * @param idx the indexer to free - */ -GIT_EXTERN(void) git_indexer_free(git_indexer *idx); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/inttypes.h b/libgit2/include/git2/inttypes.h deleted file mode 100644 index 17364c7..0000000 --- a/libgit2/include/git2/inttypes.h +++ /dev/null @@ -1,309 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#if _MSC_VER >= 1600 -#include -#else -#include "stdint.h" -#endif - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/libgit2/include/git2/merge.h b/libgit2/include/git2/merge.h deleted file mode 100644 index 560797a..0000000 --- a/libgit2/include/git2/merge.h +++ /dev/null @@ -1,573 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_merge_h__ -#define INCLUDE_git_merge_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "oidarray.h" -#include "checkout.h" -#include "index.h" -#include "annotated_commit.h" - -/** - * @file git2/merge.h - * @brief Git merge routines - * @defgroup git_merge Git merge routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * The file inputs to `git_merge_file`. Callers should populate the - * `git_merge_file_input` structure with descriptions of the files in - * each side of the conflict for use in producing the merge file. - */ -typedef struct { - unsigned int version; - - /** Pointer to the contents of the file. */ - const char *ptr; - - /** Size of the contents pointed to in `ptr`. */ - size_t size; - - /** File name of the conflicted file, or `NULL` to not merge the path. */ - const char *path; - - /** File mode of the conflicted file, or `0` to not merge the mode. */ - unsigned int mode; -} git_merge_file_input; - -#define GIT_MERGE_FILE_INPUT_VERSION 1 -#define GIT_MERGE_FILE_INPUT_INIT {GIT_MERGE_FILE_INPUT_VERSION} - -/** - * Initializes a `git_merge_file_input` with default values. Equivalent to - * creating an instance with GIT_MERGE_FILE_INPUT_INIT. - * - * @param opts the `git_merge_file_input` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_MERGE_FILE_INPUT_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_merge_file_init_input( - git_merge_file_input *opts, - unsigned int version); - -/** - * Flags for `git_merge` options. A combination of these flags can be - * passed in via the `flags` value in the `git_merge_options`. - */ -typedef enum { - /** - * Detect renames that occur between the common ancestor and the "ours" - * side or the common ancestor and the "theirs" side. This will enable - * the ability to merge between a modified and renamed file. - */ - GIT_MERGE_FIND_RENAMES = (1 << 0), - - /** - * If a conflict occurs, exit immediately instead of attempting to - * continue resolving conflicts. The merge operation will fail with - * GIT_EMERGECONFLICT and no index will be returned. - */ - GIT_MERGE_FAIL_ON_CONFLICT = (1 << 1), - - /** - * Do not write the REUC extension on the generated index - */ - GIT_MERGE_SKIP_REUC = (1 << 2), - - /** - * If the commits being merged have multiple merge bases, do not build - * a recursive merge base (by merging the multiple merge bases), - * instead simply use the first base. This flag provides a similar - * merge base to `git-merge-resolve`. - */ - GIT_MERGE_NO_RECURSIVE = (1 << 3), -} git_merge_flag_t; - -/** - * Merge file favor options for `git_merge_options` instruct the file-level - * merging functionality how to deal with conflicting regions of the files. - */ -typedef enum { - /** - * When a region of a file is changed in both branches, a conflict - * will be recorded in the index so that `git_checkout` can produce - * a merge file with conflict markers in the working directory. - * This is the default. - */ - GIT_MERGE_FILE_FAVOR_NORMAL = 0, - - /** - * When a region of a file is changed in both branches, the file - * created in the index will contain the "ours" side of any conflicting - * region. The index will not record a conflict. - */ - GIT_MERGE_FILE_FAVOR_OURS = 1, - - /** - * When a region of a file is changed in both branches, the file - * created in the index will contain the "theirs" side of any conflicting - * region. The index will not record a conflict. - */ - GIT_MERGE_FILE_FAVOR_THEIRS = 2, - - /** - * When a region of a file is changed in both branches, the file - * created in the index will contain each unique line from each side, - * which has the result of combining both files. The index will not - * record a conflict. - */ - GIT_MERGE_FILE_FAVOR_UNION = 3, -} git_merge_file_favor_t; - -/** - * File merging flags - */ -typedef enum { - /** Defaults */ - GIT_MERGE_FILE_DEFAULT = 0, - - /** Create standard conflicted merge files */ - GIT_MERGE_FILE_STYLE_MERGE = (1 << 0), - - /** Create diff3-style files */ - GIT_MERGE_FILE_STYLE_DIFF3 = (1 << 1), - - /** Condense non-alphanumeric regions for simplified diff file */ - GIT_MERGE_FILE_SIMPLIFY_ALNUM = (1 << 2), - - /** Ignore all whitespace */ - GIT_MERGE_FILE_IGNORE_WHITESPACE = (1 << 3), - - /** Ignore changes in amount of whitespace */ - GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE = (1 << 4), - - /** Ignore whitespace at end of line */ - GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL = (1 << 5), - - /** Use the "patience diff" algorithm */ - GIT_MERGE_FILE_DIFF_PATIENCE = (1 << 6), - - /** Take extra time to find minimal diff */ - GIT_MERGE_FILE_DIFF_MINIMAL = (1 << 7), -} git_merge_file_flag_t; - -/** - * Options for merging a file - */ -typedef struct { - unsigned int version; - - /** - * Label for the ancestor file side of the conflict which will be prepended - * to labels in diff3-format merge files. - */ - const char *ancestor_label; - - /** - * Label for our file side of the conflict which will be prepended - * to labels in merge files. - */ - const char *our_label; - - /** - * Label for their file side of the conflict which will be prepended - * to labels in merge files. - */ - const char *their_label; - - /** The file to favor in region conflicts. */ - git_merge_file_favor_t favor; - - /** see `git_merge_file_flag_t` above */ - git_merge_file_flag_t flags; -} git_merge_file_options; - -#define GIT_MERGE_FILE_OPTIONS_VERSION 1 -#define GIT_MERGE_FILE_OPTIONS_INIT {GIT_MERGE_FILE_OPTIONS_VERSION} - -/** - * Initializes a `git_merge_file_options` with default values. Equivalent to - * creating an instance with GIT_MERGE_FILE_OPTIONS_INIT. - * - * @param opts the `git_merge_file_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_MERGE_FILE_OPTIONS_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_merge_file_init_options( - git_merge_file_options *opts, - unsigned int version); - -/** - * Information about file-level merging - */ -typedef struct { - /** - * True if the output was automerged, false if the output contains - * conflict markers. - */ - unsigned int automergeable; - - /** - * The path that the resultant merge file should use, or NULL if a - * filename conflict would occur. - */ - const char *path; - - /** The mode that the resultant merge file should use. */ - unsigned int mode; - - /** The contents of the merge. */ - const char *ptr; - - /** The length of the merge contents. */ - size_t len; -} git_merge_file_result; - -/** - * Merging options - */ -typedef struct { - unsigned int version; - - /** See `git_merge_flag_t` above */ - git_merge_flag_t flags; - - /** - * Similarity to consider a file renamed (default 50). If - * `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared - * with deleted files to determine their similarity. Files that are - * more similar than the rename threshold (percentage-wise) will be - * treated as a rename. - */ - unsigned int rename_threshold; - - /** - * Maximum similarity sources to examine for renames (default 200). - * If the number of rename candidates (add / delete pairs) is greater - * than this value, inexact rename detection is aborted. - * - * This setting overrides the `merge.renameLimit` configuration value. - */ - unsigned int target_limit; - - /** Pluggable similarity metric; pass NULL to use internal metric */ - git_diff_similarity_metric *metric; - - /** - * Maximum number of times to merge common ancestors to build a - * virtual merge base when faced with criss-cross merges. When this - * limit is reached, the next ancestor will simply be used instead of - * attempting to merge it. The default is unlimited. - */ - unsigned int recursion_limit; - - /** Flags for handling conflicting content. */ - git_merge_file_favor_t file_favor; - - /** see `git_merge_file_flag_t` above */ - git_merge_file_flag_t file_flags; -} git_merge_options; - -#define GIT_MERGE_OPTIONS_VERSION 1 -#define GIT_MERGE_OPTIONS_INIT {GIT_MERGE_OPTIONS_VERSION} - -/** - * Initializes a `git_merge_options` with default values. Equivalent to - * creating an instance with GIT_MERGE_OPTIONS_INIT. - * - * @param opts the `git_merge_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_MERGE_OPTIONS_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_merge_init_options( - git_merge_options *opts, - unsigned int version); - -/** - * The results of `git_merge_analysis` indicate the merge opportunities. - */ -typedef enum { - /** No merge is possible. (Unused.) */ - GIT_MERGE_ANALYSIS_NONE = 0, - - /** - * A "normal" merge; both HEAD and the given merge input have diverged - * from their common ancestor. The divergent commits must be merged. - */ - GIT_MERGE_ANALYSIS_NORMAL = (1 << 0), - - /** - * All given merge inputs are reachable from HEAD, meaning the - * repository is up-to-date and no merge needs to be performed. - */ - GIT_MERGE_ANALYSIS_UP_TO_DATE = (1 << 1), - - /** - * The given merge input is a fast-forward from HEAD and no merge - * needs to be performed. Instead, the client can check out the - * given merge input. - */ - GIT_MERGE_ANALYSIS_FASTFORWARD = (1 << 2), - - /** - * The HEAD of the current repository is "unborn" and does not point to - * a valid commit. No merge can be performed, but the caller may wish - * to simply set HEAD to the target commit(s). - */ - GIT_MERGE_ANALYSIS_UNBORN = (1 << 3), -} git_merge_analysis_t; - -/** - * The user's stated preference for merges. - */ -typedef enum { - /** - * No configuration was found that suggests a preferred behavior for - * merge. - */ - GIT_MERGE_PREFERENCE_NONE = 0, - - /** - * There is a `merge.ff=false` configuration setting, suggesting that - * the user does not want to allow a fast-forward merge. - */ - GIT_MERGE_PREFERENCE_NO_FASTFORWARD = (1 << 0), - - /** - * There is a `merge.ff=only` configuration setting, suggesting that - * the user only wants fast-forward merges. - */ - GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1), -} git_merge_preference_t; - -/** - * Analyzes the given branch(es) and determines the opportunities for - * merging them into the HEAD of the repository. - * - * @param analysis_out analysis enumeration that the result is written into - * @param repo the repository to merge - * @param their_heads the heads to merge into - * @param their_heads_len the number of heads to merge - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge_analysis( - git_merge_analysis_t *analysis_out, - git_merge_preference_t *preference_out, - git_repository *repo, - const git_annotated_commit **their_heads, - size_t their_heads_len); - -/** - * Find a merge base between two commits - * - * @param out the OID of a merge base between 'one' and 'two' - * @param repo the repository where the commits exist - * @param one one of the commits - * @param two the other commit - * @return 0 on success, GIT_ENOTFOUND if not found or error code - */ -GIT_EXTERN(int) git_merge_base( - git_oid *out, - git_repository *repo, - const git_oid *one, - const git_oid *two); - -/** - * Find merge bases between two commits - * - * @param out array in which to store the resulting ids - * @param repo the repository where the commits exist - * @param one one of the commits - * @param two the other commit - * @return 0 on success, GIT_ENOTFOUND if not found or error code - */ -GIT_EXTERN(int) git_merge_bases( - git_oidarray *out, - git_repository *repo, - const git_oid *one, - const git_oid *two); - -/** - * Find a merge base given a list of commits - * - * @param out the OID of a merge base considering all the commits - * @param repo the repository where the commits exist - * @param length The number of commits in the provided `input_array` - * @param input_array oids of the commits - * @return Zero on success; GIT_ENOTFOUND or -1 on failure. - */ -GIT_EXTERN(int) git_merge_base_many( - git_oid *out, - git_repository *repo, - size_t length, - const git_oid input_array[]); - -/** - * Find all merge bases given a list of commits - * - * @param out array in which to store the resulting ids - * @param repo the repository where the commits exist - * @param length The number of commits in the provided `input_array` - * @param input_array oids of the commits - * @return Zero on success; GIT_ENOTFOUND or -1 on failure. - */ -GIT_EXTERN(int) git_merge_bases_many( - git_oidarray *out, - git_repository *repo, - size_t length, - const git_oid input_array[]); - -/** - * Find a merge base in preparation for an octopus merge - * - * @param out the OID of a merge base considering all the commits - * @param repo the repository where the commits exist - * @param length The number of commits in the provided `input_array` - * @param input_array oids of the commits - * @return Zero on success; GIT_ENOTFOUND or -1 on failure. - */ -GIT_EXTERN(int) git_merge_base_octopus( - git_oid *out, - git_repository *repo, - size_t length, - const git_oid input_array[]); - -/** - * Merge two files as they exist in the in-memory data structures, using - * the given common ancestor as the baseline, producing a - * `git_merge_file_result` that reflects the merge result. The - * `git_merge_file_result` must be freed with `git_merge_file_result_free`. - * - * Note that this function does not reference a repository and any - * configuration must be passed as `git_merge_file_options`. - * - * @param out The git_merge_file_result to be filled in - * @param ancestor The contents of the ancestor file - * @param ours The contents of the file in "our" side - * @param theirs The contents of the file in "their" side - * @param opts The merge file options or `NULL` for defaults - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge_file( - git_merge_file_result *out, - const git_merge_file_input *ancestor, - const git_merge_file_input *ours, - const git_merge_file_input *theirs, - const git_merge_file_options *opts); - -/** - * Merge two files as they exist in the index, using the given common - * ancestor as the baseline, producing a `git_merge_file_result` that - * reflects the merge result. The `git_merge_file_result` must be freed with - * `git_merge_file_result_free`. - * - * @param out The git_merge_file_result to be filled in - * @param repo The repository - * @param ancestor The index entry for the ancestor file (stage level 1) - * @param ours The index entry for our file (stage level 2) - * @param theirs The index entry for their file (stage level 3) - * @param opts The merge file options or NULL - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge_file_from_index( - git_merge_file_result *out, - git_repository *repo, - const git_index_entry *ancestor, - const git_index_entry *ours, - const git_index_entry *theirs, - const git_merge_file_options *opts); - -/** - * Frees a `git_merge_file_result`. - * - * @param result The result to free or `NULL` - */ -GIT_EXTERN(void) git_merge_file_result_free(git_merge_file_result *result); - -/** - * Merge two trees, producing a `git_index` that reflects the result of - * the merge. The index may be written as-is to the working directory - * or checked out. If the index is to be converted to a tree, the caller - * should resolve any conflicts that arose as part of the merge. - * - * The returned index must be freed explicitly with `git_index_free`. - * - * @param out pointer to store the index result in - * @param repo repository that contains the given trees - * @param ancestor_tree the common ancestor between the trees (or null if none) - * @param our_tree the tree that reflects the destination tree - * @param their_tree the tree to merge in to `our_tree` - * @param opts the merge tree options (or null for defaults) - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge_trees( - git_index **out, - git_repository *repo, - const git_tree *ancestor_tree, - const git_tree *our_tree, - const git_tree *their_tree, - const git_merge_options *opts); - -/** - * Merge two commits, producing a `git_index` that reflects the result of - * the merge. The index may be written as-is to the working directory - * or checked out. If the index is to be converted to a tree, the caller - * should resolve any conflicts that arose as part of the merge. - * - * The returned index must be freed explicitly with `git_index_free`. - * - * @param out pointer to store the index result in - * @param repo repository that contains the given trees - * @param our_commit the commit that reflects the destination tree - * @param their_commit the commit to merge in to `our_commit` - * @param opts the merge tree options (or null for defaults) - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge_commits( - git_index **out, - git_repository *repo, - const git_commit *our_commit, - const git_commit *their_commit, - const git_merge_options *opts); - -/** - * Merges the given commit(s) into HEAD, writing the results into the working - * directory. Any changes are staged for commit and any conflicts are written - * to the index. Callers should inspect the repository's index after this - * completes, resolve any conflicts and prepare a commit. - * - * For compatibility with git, the repository is put into a merging - * state. Once the commit is done (or if the uses wishes to abort), - * you should clear this state by calling - * `git_repository_state_cleanup()`. - * - * @param repo the repository to merge - * @param their_heads the heads to merge into - * @param their_heads_len the number of heads to merge - * @param merge_opts merge options - * @param checkout_opts checkout options - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_merge( - git_repository *repo, - const git_annotated_commit **their_heads, - size_t their_heads_len, - const git_merge_options *merge_opts, - const git_checkout_options *checkout_opts); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/message.h b/libgit2/include/git2/message.h deleted file mode 100644 index d78b1dc..0000000 --- a/libgit2/include/git2/message.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_message_h__ -#define INCLUDE_git_message_h__ - -#include "common.h" -#include "buffer.h" - -/** - * @file git2/message.h - * @brief Git message management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Clean up message from excess whitespace and make sure that the last line - * ends with a '\n'. - * - * Optionally, can remove lines starting with a "#". - * - * @param out The user-allocated git_buf which will be filled with the - * cleaned up message. - * - * @param message The message to be prettified. - * - * @param strip_comments Non-zero to remove comment lines, 0 to leave them in. - * - * @param comment_char Comment character. Lines starting with this character - * are considered to be comments and removed if `strip_comments` is non-zero. - * - * @return 0 or an error code. - */ -GIT_EXTERN(int) git_message_prettify(git_buf *out, const char *message, int strip_comments, char comment_char); - -/** @} */ -GIT_END_DECL - -#endif /* INCLUDE_git_message_h__ */ diff --git a/libgit2/include/git2/net.h b/libgit2/include/git2/net.h deleted file mode 100644 index 04dff34..0000000 --- a/libgit2/include/git2/net.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_net_h__ -#define INCLUDE_git_net_h__ - -#include "common.h" -#include "oid.h" -#include "types.h" - -/** - * @file git2/net.h - * @brief Git networking declarations - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -#define GIT_DEFAULT_PORT "9418" - -/** - * Direction of the connection. - * - * We need this because we need to know whether we should call - * git-upload-pack or git-receive-pack on the remote end when get_refs - * gets called. - */ -typedef enum { - GIT_DIRECTION_FETCH = 0, - GIT_DIRECTION_PUSH = 1 -} git_direction; - -/** - * Description of a reference advertised by a remote server, given out - * on `ls` calls. - */ -struct git_remote_head { - int local; /* available locally */ - git_oid oid; - git_oid loid; - char *name; - /** - * If the server send a symref mapping for this ref, this will - * point to the target. - */ - char *symref_target; -}; - -/** - * Callback for listing the remote heads - */ -typedef int (*git_headlist_cb)(git_remote_head *rhead, void *payload); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/notes.h b/libgit2/include/git2/notes.h deleted file mode 100644 index 3a626ca..0000000 --- a/libgit2/include/git2/notes.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_note_h__ -#define INCLUDE_git_note_h__ - -#include "oid.h" - -/** - * @file git2/notes.h - * @brief Git notes management routines - * @defgroup git_note Git notes management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Callback for git_note_foreach. - * - * Receives: - * - blob_id: Oid of the blob containing the message - * - annotated_object_id: Oid of the git object being annotated - * - payload: Payload data passed to `git_note_foreach` - */ -typedef int (*git_note_foreach_cb)( - const git_oid *blob_id, const git_oid *annotated_object_id, void *payload); - -/** - * note iterator - */ -typedef struct git_iterator git_note_iterator; - -/** - * Creates a new iterator for notes - * - * The iterator must be freed manually by the user. - * - * @param out pointer to the iterator - * @param repo repository where to look up the note - * @param notes_ref canonical name of the reference to use (optional); defaults to - * "refs/notes/commits" - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_note_iterator_new( - git_note_iterator **out, - git_repository *repo, - const char *notes_ref); - -/** - * Frees an git_note_iterator - * - * @param it pointer to the iterator - */ -GIT_EXTERN(void) git_note_iterator_free(git_note_iterator *it); - -/** - * Return the current item (note_id and annotated_id) and advance the iterator - * internally to the next value - * - * @param note_id id of blob containing the message - * @param annotated_id id of the git object being annotated - * @param it pointer to the iterator - * - * @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code - * (negative value) - */ -GIT_EXTERN(int) git_note_next( - git_oid* note_id, - git_oid* annotated_id, - git_note_iterator *it); - - -/** - * Read the note for an object - * - * The note must be freed manually by the user. - * - * @param out pointer to the read note; NULL in case of error - * @param repo repository where to look up the note - * @param notes_ref canonical name of the reference to use (optional); defaults to - * "refs/notes/commits" - * @param oid OID of the git object to read the note from - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_note_read( - git_note **out, - git_repository *repo, - const char *notes_ref, - const git_oid *oid); - -/** - * Get the note author - * - * @param note the note - * @return the author - */ -GIT_EXTERN(const git_signature *) git_note_author(const git_note *note); - -/** - * Get the note committer - * - * @param note the note - * @return the committer - */ -GIT_EXTERN(const git_signature *) git_note_committer(const git_note *note); - - -/** - * Get the note message - * - * @param note the note - * @return the note message - */ -GIT_EXTERN(const char *) git_note_message(const git_note *note); - - -/** - * Get the note object's id - * - * @param note the note - * @return the note object's id - */ -GIT_EXTERN(const git_oid *) git_note_id(const git_note *note); - -/** - * Add a note for an object - * - * @param out pointer to store the OID (optional); NULL in case of error - * @param repo repository where to store the note - * @param notes_ref canonical name of the reference to use (optional); - * defaults to "refs/notes/commits" - * @param author signature of the notes commit author - * @param committer signature of the notes commit committer - * @param oid OID of the git object to decorate - * @param note Content of the note to add for object oid - * @param force Overwrite existing note - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_note_create( - git_oid *out, - git_repository *repo, - const char *notes_ref, - const git_signature *author, - const git_signature *committer, - const git_oid *oid, - const char *note, - int force); - - -/** - * Remove the note for an object - * - * @param repo repository where the note lives - * @param notes_ref canonical name of the reference to use (optional); - * defaults to "refs/notes/commits" - * @param author signature of the notes commit author - * @param committer signature of the notes commit committer - * @param oid OID of the git object to remove the note from - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_note_remove( - git_repository *repo, - const char *notes_ref, - const git_signature *author, - const git_signature *committer, - const git_oid *oid); - -/** - * Free a git_note object - * - * @param note git_note object - */ -GIT_EXTERN(void) git_note_free(git_note *note); - -/** - * Get the default notes reference for a repository - * - * @param out buffer in which to store the name of the default notes reference - * @param repo The Git repository - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_note_default_ref(git_buf *out, git_repository *repo); - -/** - * Loop over all the notes within a specified namespace - * and issue a callback for each one. - * - * @param repo Repository where to find the notes. - * - * @param notes_ref Reference to read from (optional); defaults to - * "refs/notes/commits". - * - * @param note_cb Callback to invoke per found annotation. Return non-zero - * to stop looping. - * - * @param payload Extra parameter to callback function. - * - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_note_foreach( - git_repository *repo, - const char *notes_ref, - git_note_foreach_cb note_cb, - void *payload); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/object.h b/libgit2/include/git2/object.h deleted file mode 100644 index a798c9d..0000000 --- a/libgit2/include/git2/object.h +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_object_h__ -#define INCLUDE_git_object_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "buffer.h" - -/** - * @file git2/object.h - * @brief Git revision object management routines - * @defgroup git_object Git revision object management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a reference to one of the objects in a repository. - * - * The generated reference is owned by the repository and - * should be closed with the `git_object_free` method - * instead of free'd manually. - * - * The 'type' parameter must match the type of the object - * in the odb; the method will fail otherwise. - * The special value 'GIT_OBJ_ANY' may be passed to let - * the method guess the object's type. - * - * @param object pointer to the looked-up object - * @param repo the repository to look up the object - * @param id the unique identifier for the object - * @param type the type of the object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_object_lookup( - git_object **object, - git_repository *repo, - const git_oid *id, - git_otype type); - -/** - * Lookup a reference to one of the objects in a repository, - * given a prefix of its identifier (short id). - * - * The object obtained will be so that its identifier - * matches the first 'len' hexadecimal characters - * (packets of 4 bits) of the given 'id'. - * 'len' must be at least GIT_OID_MINPREFIXLEN, and - * long enough to identify a unique object matching - * the prefix; otherwise the method will fail. - * - * The generated reference is owned by the repository and - * should be closed with the `git_object_free` method - * instead of free'd manually. - * - * The 'type' parameter must match the type of the object - * in the odb; the method will fail otherwise. - * The special value 'GIT_OBJ_ANY' may be passed to let - * the method guess the object's type. - * - * @param object_out pointer where to store the looked-up object - * @param repo the repository to look up the object - * @param id a short identifier for the object - * @param len the length of the short identifier - * @param type the type of the object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_object_lookup_prefix( - git_object **object_out, - git_repository *repo, - const git_oid *id, - size_t len, - git_otype type); - - -/** - * Lookup an object that represents a tree entry. - * - * @param out buffer that receives a pointer to the object (which must be freed - * by the caller) - * @param treeish root object that can be peeled to a tree - * @param path relative path from the root object to the desired object - * @param type type of object desired - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_object_lookup_bypath( - git_object **out, - const git_object *treeish, - const char *path, - git_otype type); - -/** - * Get the id (SHA1) of a repository object - * - * @param obj the repository object - * @return the SHA1 id - */ -GIT_EXTERN(const git_oid *) git_object_id(const git_object *obj); - -/** - * Get a short abbreviated OID string for the object - * - * This starts at the "core.abbrev" length (default 7 characters) and - * iteratively extends to a longer string if that length is ambiguous. - * The result will be unambiguous (at least until new objects are added to - * the repository). - * - * @param out Buffer to write string into - * @param obj The object to get an ID for - * @return 0 on success, <0 for error - */ -GIT_EXTERN(int) git_object_short_id(git_buf *out, const git_object *obj); - -/** - * Get the object type of an object - * - * @param obj the repository object - * @return the object's type - */ -GIT_EXTERN(git_otype) git_object_type(const git_object *obj); - -/** - * Get the repository that owns this object - * - * Freeing or calling `git_repository_close` on the - * returned pointer will invalidate the actual object. - * - * Any other operation may be run on the repository without - * affecting the object. - * - * @param obj the object - * @return the repository who owns this object - */ -GIT_EXTERN(git_repository *) git_object_owner(const git_object *obj); - -/** - * Close an open object - * - * This method instructs the library to close an existing - * object; note that git_objects are owned and cached by the repository - * so the object may or may not be freed after this library call, - * depending on how aggressive is the caching mechanism used - * by the repository. - * - * IMPORTANT: - * It *is* necessary to call this method when you stop using - * an object. Failure to do so will cause a memory leak. - * - * @param object the object to close - */ -GIT_EXTERN(void) git_object_free(git_object *object); - -/** - * Convert an object type to its string representation. - * - * The result is a pointer to a string in static memory and - * should not be free()'ed. - * - * @param type object type to convert. - * @return the corresponding string representation. - */ -GIT_EXTERN(const char *) git_object_type2string(git_otype type); - -/** - * Convert a string object type representation to it's git_otype. - * - * @param str the string to convert. - * @return the corresponding git_otype. - */ -GIT_EXTERN(git_otype) git_object_string2type(const char *str); - -/** - * Determine if the given git_otype is a valid loose object type. - * - * @param type object type to test. - * @return true if the type represents a valid loose object type, - * false otherwise. - */ -GIT_EXTERN(int) git_object_typeisloose(git_otype type); - -/** - * Get the size in bytes for the structure which - * acts as an in-memory representation of any given - * object type. - * - * For all the core types, this would the equivalent - * of calling `sizeof(git_commit)` if the core types - * were not opaque on the external API. - * - * @param type object type to get its size - * @return size in bytes of the object - */ -GIT_EXTERN(size_t) git_object__size(git_otype type); - -/** - * Recursively peel an object until an object of the specified type is met. - * - * If the query cannot be satisfied due to the object model, - * GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a - * tree). - * - * If you pass `GIT_OBJ_ANY` as the target type, then the object will - * be peeled until the type changes. A tag will be peeled until the - * referenced object is no longer a tag, and a commit will be peeled - * to a tree. Any other object type will return GIT_EINVALIDSPEC. - * - * If peeling a tag we discover an object which cannot be peeled to - * the target type due to the object model, GIT_EPEEL will be - * returned. - * - * You must free the returned object. - * - * @param peeled Pointer to the peeled git_object - * @param object The object to be processed - * @param target_type The type of the requested object (a GIT_OBJ_ value) - * @return 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code - */ -GIT_EXTERN(int) git_object_peel( - git_object **peeled, - const git_object *object, - git_otype target_type); - -/** - * Create an in-memory copy of a Git object. The copy must be - * explicitly free'd or it will leak. - * - * @param dest Pointer to store the copy of the object - * @param source Original object to copy - */ -GIT_EXTERN(int) git_object_dup(git_object **dest, git_object *source); - -/** @} */ -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/odb.h b/libgit2/include/git2/odb.h deleted file mode 100644 index 4f1e18b..0000000 --- a/libgit2/include/git2/odb.h +++ /dev/null @@ -1,495 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_odb_h__ -#define INCLUDE_git_odb_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" - -/** - * @file git2/odb.h - * @brief Git object database routines - * @defgroup git_odb Git object database routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Function type for callbacks from git_odb_foreach. - */ -typedef int (*git_odb_foreach_cb)(const git_oid *id, void *payload); - -/** - * Create a new object database with no backends. - * - * Before the ODB can be used for read/writing, a custom database - * backend must be manually added using `git_odb_add_backend()` - * - * @param out location to store the database pointer, if opened. - * Set to NULL if the open failed. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_new(git_odb **out); - -/** - * Create a new object database and automatically add - * the two default backends: - * - * - git_odb_backend_loose: read and write loose object files - * from disk, assuming `objects_dir` as the Objects folder - * - * - git_odb_backend_pack: read objects from packfiles, - * assuming `objects_dir` as the Objects folder which - * contains a 'pack/' folder with the corresponding data - * - * @param out location to store the database pointer, if opened. - * Set to NULL if the open failed. - * @param objects_dir path of the backends' "objects" directory. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir); - -/** - * Add an on-disk alternate to an existing Object DB. - * - * Note that the added path must point to an `objects`, not - * to a full repository, to use it as an alternate store. - * - * Alternate backends are always checked for objects *after* - * all the main backends have been exhausted. - * - * Writing is disabled on alternate backends. - * - * @param odb database to add the backend to - * @param path path to the objects folder for the alternate - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_odb_add_disk_alternate(git_odb *odb, const char *path); - -/** - * Close an open object database. - * - * @param db database pointer to close. If NULL no action is taken. - */ -GIT_EXTERN(void) git_odb_free(git_odb *db); - -/** - * Read an object from the database. - * - * This method queries all available ODB backends - * trying to read the given OID. - * - * The returned object is reference counted and - * internally cached, so it should be closed - * by the user once it's no longer in use. - * - * @param out pointer where to store the read object - * @param db database to search for the object in. - * @param id identity of the object to read. - * @return - * - 0 if the object was read; - * - GIT_ENOTFOUND if the object is not in the database. - */ -GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id); - -/** - * Read an object from the database, given a prefix - * of its identifier. - * - * This method queries all available ODB backends - * trying to match the 'len' first hexadecimal - * characters of the 'short_id'. - * The remaining (GIT_OID_HEXSZ-len)*4 bits of - * 'short_id' must be 0s. - * 'len' must be at least GIT_OID_MINPREFIXLEN, - * and the prefix must be long enough to identify - * a unique object in all the backends; the - * method will fail otherwise. - * - * The returned object is reference counted and - * internally cached, so it should be closed - * by the user once it's no longer in use. - * - * @param out pointer where to store the read object - * @param db database to search for the object in. - * @param short_id a prefix of the id of the object to read. - * @param len the length of the prefix - * @return - * - 0 if the object was read; - * - GIT_ENOTFOUND if the object is not in the database. - * - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix) - */ -GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len); - -/** - * Read the header of an object from the database, without - * reading its full contents. - * - * The header includes the length and the type of an object. - * - * Note that most backends do not support reading only the header - * of an object, so the whole object will be read and then the - * header will be returned. - * - * @param len_out pointer where to store the length - * @param type_out pointer where to store the type - * @param db database to search for the object in. - * @param id identity of the object to read. - * @return - * - 0 if the object was read; - * - GIT_ENOTFOUND if the object is not in the database. - */ -GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id); - -/** - * Determine if the given object can be found in the object database. - * - * @param db database to be searched for the given object. - * @param id the object to search for. - * @return - * - 1, if the object was found - * - 0, otherwise - */ -GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id); - -/** - * Determine if objects can be found in the object database from a short OID. - * - * @param out The full OID of the found object if just one is found. - * @param db The database to be searched for the given object. - * @param short_id A prefix of the id of the object to read. - * @param len The length of the prefix. - * @return 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple - * matches were found, other value < 0 if there was a read error. - */ -GIT_EXTERN(int) git_odb_exists_prefix( - git_oid *out, git_odb *db, const git_oid *short_id, size_t len); - -/** - * Refresh the object database to load newly added files. - * - * If the object databases have changed on disk while the library - * is running, this function will force a reload of the underlying - * indexes. - * - * Use this function when you're confident that an external - * application has tampered with the ODB. - * - * NOTE that it is not necessary to call this function at all. The - * library will automatically attempt to refresh the ODB - * when a lookup fails, to see if the looked up object exists - * on disk but hasn't been loaded yet. - * - * @param db database to refresh - * @return 0 on success, error code otherwise - */ -GIT_EXTERN(int) git_odb_refresh(struct git_odb *db); - -/** - * List all objects available in the database - * - * The callback will be called for each object available in the - * database. Note that the objects are likely to be returned in the index - * order, which would make accessing the objects in that order inefficient. - * Return a non-zero value from the callback to stop looping. - * - * @param db database to use - * @param cb the callback to call for each object - * @param payload data to pass to the callback - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload); - -/** - * Write an object directly into the ODB - * - * This method writes a full object straight into the ODB. - * For most cases, it is preferred to write objects through a write - * stream, which is both faster and less memory intensive, specially - * for big objects. - * - * This method is provided for compatibility with custom backends - * which are not able to support streaming writes - * - * @param out pointer to store the OID result of the write - * @param odb object database where to store the object - * @param data buffer with the data to store - * @param len size of the buffer - * @param type type of the data to store - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_write(git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type); - -/** - * Open a stream to write an object into the ODB - * - * The type and final length of the object must be specified - * when opening the stream. - * - * The returned stream will be of type `GIT_STREAM_WRONLY`, and it - * won't be effective until `git_odb_stream_finalize_write` is called - * and returns without an error - * - * The stream must always be freed when done with `git_odb_stream_free` or - * will leak memory. - * - * @see git_odb_stream - * - * @param out pointer where to store the stream - * @param db object database where the stream will write - * @param size final size of the object that will be written - * @param type type of the object that will be written - * @return 0 if the stream was created; error code otherwise - */ -GIT_EXTERN(int) git_odb_open_wstream(git_odb_stream **out, git_odb *db, git_off_t size, git_otype type); - -/** - * Write to an odb stream - * - * This method will fail if the total number of received bytes exceeds the - * size declared with `git_odb_open_wstream()` - * - * @param stream the stream - * @param buffer the data to write - * @param len the buffer's length - * @return 0 if the write succeeded; error code otherwise - */ -GIT_EXTERN(int) git_odb_stream_write(git_odb_stream *stream, const char *buffer, size_t len); - -/** - * Finish writing to an odb stream - * - * The object will take its final name and will be available to the - * odb. - * - * This method will fail if the total number of received bytes - * differs from the size declared with `git_odb_open_wstream()` - * - * @param out pointer to store the resulting object's id - * @param stream the stream - * @return 0 on success; an error code otherwise - */ -GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stream); - -/** - * Read from an odb stream - * - * Most backends don't implement streaming reads - */ -GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len); - -/** - * Free an odb stream - * - * @param stream the stream to free - */ -GIT_EXTERN(void) git_odb_stream_free(git_odb_stream *stream); - -/** - * Open a stream to read an object from the ODB - * - * Note that most backends do *not* support streaming reads - * because they store their objects as compressed/delta'ed blobs. - * - * It's recommended to use `git_odb_read` instead, which is - * assured to work on all backends. - * - * The returned stream will be of type `GIT_STREAM_RDONLY` and - * will have the following methods: - * - * - stream->read: read `n` bytes from the stream - * - stream->free: free the stream - * - * The stream must always be free'd or will leak memory. - * - * @see git_odb_stream - * - * @param out pointer where to store the stream - * @param db object database where the stream will read from - * @param oid oid of the object the stream will read from - * @return 0 if the stream was created; error code otherwise - */ -GIT_EXTERN(int) git_odb_open_rstream(git_odb_stream **out, git_odb *db, const git_oid *oid); - -/** - * Open a stream for writing a pack file to the ODB. - * - * If the ODB layer understands pack files, then the given - * packfile will likely be streamed directly to disk (and a - * corresponding index created). If the ODB layer does not - * understand pack files, the objects will be stored in whatever - * format the ODB layer uses. - * - * @see git_odb_writepack - * - * @param out pointer to the writepack functions - * @param db object database where the stream will read from - * @param progress_cb function to call with progress information. - * Be aware that this is called inline with network and indexing operations, - * so performance may be affected. - * @param progress_payload payload for the progress callback - */ -GIT_EXTERN(int) git_odb_write_pack( - git_odb_writepack **out, - git_odb *db, - git_transfer_progress_cb progress_cb, - void *progress_payload); - -/** - * Determine the object-ID (sha1 hash) of a data buffer - * - * The resulting SHA-1 OID will be the identifier for the data - * buffer as if the data buffer it were to written to the ODB. - * - * @param out the resulting object-ID. - * @param data data to hash - * @param len size of the data - * @param type of the data to hash - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_otype type); - -/** - * Read a file from disk and fill a git_oid with the object id - * that the file would have if it were written to the Object - * Database as an object of the given type (w/o applying filters). - * Similar functionality to git.git's `git hash-object` without - * the `-w` flag, however, with the --no-filters flag. - * If you need filters, see git_repository_hashfile. - * - * @param out oid structure the result is written into. - * @param path file to read and determine object id for - * @param type the type of the object that will be hashed - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_otype type); - -/** - * Create a copy of an odb_object - * - * The returned copy must be manually freed with `git_odb_object_free`. - * Note that because of an implementation detail, the returned copy will be - * the same pointer as `source`: the object is internally refcounted, so the - * copy still needs to be freed twice. - * - * @param dest pointer where to store the copy - * @param source object to copy - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_object_dup(git_odb_object **dest, git_odb_object *source); - -/** - * Close an ODB object - * - * This method must always be called once a `git_odb_object` is no - * longer needed, otherwise memory will leak. - * - * @param object object to close - */ -GIT_EXTERN(void) git_odb_object_free(git_odb_object *object); - -/** - * Return the OID of an ODB object - * - * This is the OID from which the object was read from - * - * @param object the object - * @return a pointer to the OID - */ -GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object); - -/** - * Return the data of an ODB object - * - * This is the uncompressed, raw data as read from the ODB, - * without the leading header. - * - * This pointer is owned by the object and shall not be free'd. - * - * @param object the object - * @return a pointer to the data - */ -GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object); - -/** - * Return the size of an ODB object - * - * This is the real size of the `data` buffer, not the - * actual size of the object. - * - * @param object the object - * @return the size - */ -GIT_EXTERN(size_t) git_odb_object_size(git_odb_object *object); - -/** - * Return the type of an ODB object - * - * @param object the object - * @return the type - */ -GIT_EXTERN(git_otype) git_odb_object_type(git_odb_object *object); - -/** - * Add a custom backend to an existing Object DB - * - * The backends are checked in relative ordering, based on the - * value of the `priority` parameter. - * - * Read for more information. - * - * @param odb database to add the backend to - * @param backend pointer to a git_odb_backend instance - * @param priority Value for ordering the backends queue - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_odb_add_backend(git_odb *odb, git_odb_backend *backend, int priority); - -/** - * Add a custom backend to an existing Object DB; this - * backend will work as an alternate. - * - * Alternate backends are always checked for objects *after* - * all the main backends have been exhausted. - * - * The backends are checked in relative ordering, based on the - * value of the `priority` parameter. - * - * Writing is disabled on alternate backends. - * - * Read for more information. - * - * @param odb database to add the backend to - * @param backend pointer to a git_odb_backend instance - * @param priority Value for ordering the backends queue - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_odb_add_alternate(git_odb *odb, git_odb_backend *backend, int priority); - -/** - * Get the number of ODB backend objects - * - * @param odb object database - * @return number of backends in the ODB - */ -GIT_EXTERN(size_t) git_odb_num_backends(git_odb *odb); - -/** - * Lookup an ODB backend object by index - * - * @param out output pointer to ODB backend at pos - * @param odb object database - * @param pos index into object database backend list - * @return 0 on success; GIT_ENOTFOUND if pos is invalid; other errors < 0 - */ -GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t pos); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/odb_backend.h b/libgit2/include/git2/odb_backend.h deleted file mode 100644 index b17cfd8..0000000 --- a/libgit2/include/git2/odb_backend.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_odb_backend_h__ -#define INCLUDE_git_odb_backend_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/backend.h - * @brief Git custom backend functions - * @defgroup git_odb Git object database routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/* - * Constructors for in-box ODB backends. - */ - -/** - * Create a backend for the packfiles. - * - * @param out location to store the odb backend pointer - * @param objects_dir the Git repository's objects directory - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir); - -/** - * Create a backend for loose objects - * - * @param out location to store the odb backend pointer - * @param objects_dir the Git repository's objects directory - * @param compression_level zlib compression level to use - * @param do_fsync whether to do an fsync() after writing (currently ignored) - * @param dir_mode permissions to use creating a directory or 0 for defaults - * @param file_mode permissions to use creating a file or 0 for defaults - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_backend_loose( - git_odb_backend **out, - const char *objects_dir, - int compression_level, - int do_fsync, - unsigned int dir_mode, - unsigned int file_mode); - -/** - * Create a backend out of a single packfile - * - * This can be useful for inspecting the contents of a single - * packfile. - * - * @param out location to store the odb backend pointer - * @param index_file path to the packfile's .idx file - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file); - -/** Streaming mode */ -typedef enum { - GIT_STREAM_RDONLY = (1 << 1), - GIT_STREAM_WRONLY = (1 << 2), - GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY), -} git_odb_stream_t; - -/** - * A stream to read/write from a backend. - * - * This represents a stream of data being written to or read from a - * backend. When writing, the frontend functions take care of - * calculating the object's id and all `finalize_write` needs to do is - * store the object with the id it is passed. - */ -struct git_odb_stream { - git_odb_backend *backend; - unsigned int mode; - void *hash_ctx; - - git_off_t declared_size; - git_off_t received_bytes; - - /** - * Write at most `len` bytes into `buffer` and advance the stream. - */ - int (*read)(git_odb_stream *stream, char *buffer, size_t len); - - /** - * Write `len` bytes from `buffer` into the stream. - */ - int (*write)(git_odb_stream *stream, const char *buffer, size_t len); - - /** - * Store the contents of the stream as an object with the id - * specified in `oid`. - * - * This method might not be invoked if: - * - an error occurs earlier with the `write` callback, - * - the object referred to by `oid` already exists in any backend, or - * - the final number of received bytes differs from the size declared - * with `git_odb_open_wstream()` - */ - int (*finalize_write)(git_odb_stream *stream, const git_oid *oid); - - /** - * Free the stream's memory. - * - * This method might be called without a call to `finalize_write` if - * an error occurs or if the object is already present in the ODB. - */ - void (*free)(git_odb_stream *stream); -}; - -/** A stream to write a pack file to the ODB */ -struct git_odb_writepack { - git_odb_backend *backend; - - int (*append)(git_odb_writepack *writepack, const void *data, size_t size, git_transfer_progress *stats); - int (*commit)(git_odb_writepack *writepack, git_transfer_progress *stats); - void (*free)(git_odb_writepack *writepack); -}; - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/oid.h b/libgit2/include/git2/oid.h deleted file mode 100644 index 8ad51c8..0000000 --- a/libgit2/include/git2/oid.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_oid_h__ -#define INCLUDE_git_oid_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/oid.h - * @brief Git object id routines - * @defgroup git_oid Git object id routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Size (in bytes) of a raw/binary oid */ -#define GIT_OID_RAWSZ 20 - -/** Size (in bytes) of a hex formatted oid */ -#define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2) - -/** Minimum length (in number of hex characters, - * i.e. packets of 4 bits) of an oid prefix */ -#define GIT_OID_MINPREFIXLEN 4 - -/** Unique identity of any object (commit, tree, blob, tag). */ -typedef struct git_oid { - /** raw binary formatted id */ - unsigned char id[GIT_OID_RAWSZ]; -} git_oid; - -/** - * Parse a hex formatted object id into a git_oid. - * - * @param out oid structure the result is written into. - * @param str input hex string; must be pointing at the start of - * the hex sequence and have at least the number of bytes - * needed for an oid encoded in hex (40 bytes). - * @return 0 or an error code - */ -GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str); - -/** - * Parse a hex formatted null-terminated string into a git_oid. - * - * @param out oid structure the result is written into. - * @param str input hex string; must be at least 4 characters - * long and null-terminated. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str); - -/** - * Parse N characters of a hex formatted object id into a git_oid - * - * If N is odd, N-1 characters will be parsed instead. - * The remaining space in the git_oid will be set to zero. - * - * @param out oid structure the result is written into. - * @param str input hex string of at least size `length` - * @param length length of the input string - * @return 0 or an error code - */ -GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length); - -/** - * Copy an already raw oid into a git_oid structure. - * - * @param out oid structure the result is written into. - * @param raw the raw input bytes to be copied. - */ -GIT_EXTERN(void) git_oid_fromraw(git_oid *out, const unsigned char *raw); - -/** - * Format a git_oid into a hex string. - * - * @param out output hex string; must be pointing at the start of - * the hex sequence and have at least the number of bytes - * needed for an oid encoded in hex (40 bytes). Only the - * oid digits are written; a '\\0' terminator must be added - * by the caller if it is required. - * @param id oid structure to format. - */ -GIT_EXTERN(void) git_oid_fmt(char *out, const git_oid *id); - -/** - * Format a git_oid into a partial hex string. - * - * @param out output hex string; you say how many bytes to write. - * If the number of bytes is > GIT_OID_HEXSZ, extra bytes - * will be zeroed; if not, a '\0' terminator is NOT added. - * @param n number of characters to write into out string - * @param id oid structure to format. - */ -GIT_EXTERN(void) git_oid_nfmt(char *out, size_t n, const git_oid *id); - -/** - * Format a git_oid into a loose-object path string. - * - * The resulting string is "aa/...", where "aa" is the first two - * hex digits of the oid and "..." is the remaining 38 digits. - * - * @param out output hex string; must be pointing at the start of - * the hex sequence and have at least the number of bytes - * needed for an oid encoded in hex (41 bytes). Only the - * oid digits are written; a '\\0' terminator must be added - * by the caller if it is required. - * @param id oid structure to format. - */ -GIT_EXTERN(void) git_oid_pathfmt(char *out, const git_oid *id); - -/** - * Format a git_oid into a statically allocated c-string. - * - * The c-string is owned by the library and should not be freed - * by the user. If libgit2 is built with thread support, the string - * will be stored in TLS (i.e. one buffer per thread) to allow for - * concurrent calls of the function. - * - * @param oid The oid structure to format - * @return the c-string - */ -GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid); - -/** - * Format a git_oid into a buffer as a hex format c-string. - * - * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting - * oid c-string will be truncated to n-1 characters (but will still be - * NUL-byte terminated). - * - * If there are any input parameter errors (out == NULL, n == 0, oid == - * NULL), then a pointer to an empty string is returned, so that the - * return value can always be printed. - * - * @param out the buffer into which the oid string is output. - * @param n the size of the out buffer. - * @param id the oid structure to format. - * @return the out buffer pointer, assuming no input parameter - * errors, otherwise a pointer to an empty string. - */ -GIT_EXTERN(char *) git_oid_tostr(char *out, size_t n, const git_oid *id); - -/** - * Copy an oid from one structure to another. - * - * @param out oid structure the result is written into. - * @param src oid structure to copy from. - */ -GIT_EXTERN(void) git_oid_cpy(git_oid *out, const git_oid *src); - -/** - * Compare two oid structures. - * - * @param a first oid structure. - * @param b second oid structure. - * @return <0, 0, >0 if a < b, a == b, a > b. - */ -GIT_EXTERN(int) git_oid_cmp(const git_oid *a, const git_oid *b); - -/** - * Compare two oid structures for equality - * - * @param a first oid structure. - * @param b second oid structure. - * @return true if equal, false otherwise - */ -GIT_EXTERN(int) git_oid_equal(const git_oid *a, const git_oid *b); - -/** - * Compare the first 'len' hexadecimal characters (packets of 4 bits) - * of two oid structures. - * - * @param a first oid structure. - * @param b second oid structure. - * @param len the number of hex chars to compare - * @return 0 in case of a match - */ -GIT_EXTERN(int) git_oid_ncmp(const git_oid *a, const git_oid *b, size_t len); - -/** - * Check if an oid equals an hex formatted object id. - * - * @param id oid structure. - * @param str input hex string of an object id. - * @return 0 in case of a match, -1 otherwise. - */ -GIT_EXTERN(int) git_oid_streq(const git_oid *id, const char *str); - -/** - * Compare an oid to an hex formatted object id. - * - * @param id oid structure. - * @param str input hex string of an object id. - * @return -1 if str is not valid, <0 if id sorts before str, - * 0 if id matches str, >0 if id sorts after str. - */ -GIT_EXTERN(int) git_oid_strcmp(const git_oid *id, const char *str); - -/** - * Check is an oid is all zeros. - * - * @return 1 if all zeros, 0 otherwise. - */ -GIT_EXTERN(int) git_oid_iszero(const git_oid *id); - -/** - * OID Shortener object - */ -typedef struct git_oid_shorten git_oid_shorten; - -/** - * Create a new OID shortener. - * - * The OID shortener is used to process a list of OIDs - * in text form and return the shortest length that would - * uniquely identify all of them. - * - * E.g. look at the result of `git log --abbrev`. - * - * @param min_length The minimal length for all identifiers, - * which will be used even if shorter OIDs would still - * be unique. - * @return a `git_oid_shorten` instance, NULL if OOM - */ -GIT_EXTERN(git_oid_shorten *) git_oid_shorten_new(size_t min_length); - -/** - * Add a new OID to set of shortened OIDs and calculate - * the minimal length to uniquely identify all the OIDs in - * the set. - * - * The OID is expected to be a 40-char hexadecimal string. - * The OID is owned by the user and will not be modified - * or freed. - * - * For performance reasons, there is a hard-limit of how many - * OIDs can be added to a single set (around ~32000, assuming - * a mostly randomized distribution), which should be enough - * for any kind of program, and keeps the algorithm fast and - * memory-efficient. - * - * Attempting to add more than those OIDs will result in a - * GITERR_INVALID error - * - * @param os a `git_oid_shorten` instance - * @param text_id an OID in text form - * @return the minimal length to uniquely identify all OIDs - * added so far to the set; or an error code (<0) if an - * error occurs. - */ -GIT_EXTERN(int) git_oid_shorten_add(git_oid_shorten *os, const char *text_id); - -/** - * Free an OID shortener instance - * - * @param os a `git_oid_shorten` instance - */ -GIT_EXTERN(void) git_oid_shorten_free(git_oid_shorten *os); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/oidarray.h b/libgit2/include/git2/oidarray.h deleted file mode 100644 index 0b32045..0000000 --- a/libgit2/include/git2/oidarray.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_oidarray_h__ -#define INCLUDE_git_oidarray_h__ - -#include "common.h" -#include "oid.h" - -GIT_BEGIN_DECL - -/** Array of object ids */ -typedef struct git_oidarray { - git_oid *ids; - size_t count; -} git_oidarray; - -/** - * Free the OID array - * - * This method must (and must only) be called on `git_oidarray` - * objects where the array is allocated by the library. Not doing so, - * will result in a memory leak. - * - * This does not free the `git_oidarray` itself, since the library will - * never allocate that object directly itself (it is more commonly embedded - * inside another struct or created on the stack). - * - * @param array git_oidarray from which to free oid data - */ -GIT_EXTERN(void) git_oidarray_free(git_oidarray *array); - -/** @} */ -GIT_END_DECL - -#endif - diff --git a/libgit2/include/git2/pack.h b/libgit2/include/git2/pack.h deleted file mode 100644 index 4941998..0000000 --- a/libgit2/include/git2/pack.h +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_pack_h__ -#define INCLUDE_git_pack_h__ - -#include "common.h" -#include "oid.h" - -/** - * @file git2/pack.h - * @brief Git pack management routines - * - * Packing objects - * --------------- - * - * Creation of packfiles requires two steps: - * - * - First, insert all the objects you want to put into the packfile - * using `git_packbuilder_insert` and `git_packbuilder_insert_tree`. - * It's important to add the objects in recency order ("in the order - * that they are 'reachable' from head"). - * - * "ANY order will give you a working pack, ... [but it is] the thing - * that gives packs good locality. It keeps the objects close to the - * head (whether they are old or new, but they are _reachable_ from the - * head) at the head of the pack. So packs actually have absolutely - * _wonderful_ IO patterns." - Linus Torvalds - * git.git/Documentation/technical/pack-heuristics.txt - * - * - Second, use `git_packbuilder_write` or `git_packbuilder_foreach` to - * write the resulting packfile. - * - * libgit2 will take care of the delta ordering and generation. - * `git_packbuilder_set_threads` can be used to adjust the number of - * threads used for the process. - * - * See tests/pack/packbuilder.c for an example. - * - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Stages that are reported by the packbuilder progress callback. - */ -typedef enum { - GIT_PACKBUILDER_ADDING_OBJECTS = 0, - GIT_PACKBUILDER_DELTAFICATION = 1, -} git_packbuilder_stage_t; - -/** - * Initialize a new packbuilder - * - * @param out The new packbuilder object - * @param repo The repository - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_new(git_packbuilder **out, git_repository *repo); - -/** - * Set number of threads to spawn - * - * By default, libgit2 won't spawn any threads at all; - * when set to 0, libgit2 will autodetect the number of - * CPUs. - * - * @param pb The packbuilder - * @param n Number of threads to spawn - * @return number of actual threads to be used - */ -GIT_EXTERN(unsigned int) git_packbuilder_set_threads(git_packbuilder *pb, unsigned int n); - -/** - * Insert a single object - * - * For an optimal pack it's mandatory to insert objects in recency order, - * commits followed by trees and blobs. - * - * @param pb The packbuilder - * @param id The oid of the commit - * @param name The name; might be NULL - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_insert(git_packbuilder *pb, const git_oid *id, const char *name); - -/** - * Insert a root tree object - * - * This will add the tree as well as all referenced trees and blobs. - * - * @param pb The packbuilder - * @param id The oid of the root tree - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *id); - -/** - * Insert a commit object - * - * This will add a commit as well as the completed referenced tree. - * - * @param pb The packbuilder - * @param id The oid of the commit - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_insert_commit(git_packbuilder *pb, const git_oid *id); - -/** - * Insert objects as given by the walk - * - * Those commits and all objects they reference will be inserted into - * the packbuilder. - * - * @param pb the packbuilder - * @param walk the revwalk to use to fill the packbuilder - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_insert_walk(git_packbuilder *pb, git_revwalk *walk); - -/** - * Recursively insert an object and its referenced objects - * - * Insert the object as well as any object it references. - * - * @param pb the packbuilder - * @param id the id of the root object to insert - * @param name optional name for the object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid *id, const char *name); - -/** - * Write the contents of the packfile to an in-memory buffer - * - * The contents of the buffer will become a valid packfile, even though there - * will be no attached index - * - * @param buf Buffer where to write the packfile - * @param pb The packbuilder - */ -GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb); - -/** - * Write the new pack and corresponding index file to path. - * - * @param pb The packbuilder - * @param path to the directory where the packfile and index should be stored - * @param mode permissions to use creating a packfile or 0 for defaults - * @param progress_cb function to call with progress information from the indexer (optional) - * @param progress_cb_payload payload for the progress callback (optional) - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_write( - git_packbuilder *pb, - const char *path, - unsigned int mode, - git_transfer_progress_cb progress_cb, - void *progress_cb_payload); - -/** -* Get the packfile's hash -* -* A packfile's name is derived from the sorted hashing of all object -* names. This is only correct after the packfile has been written. -* -* @param pb The packbuilder object -*/ -GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb); - -typedef int (*git_packbuilder_foreach_cb)(void *buf, size_t size, void *payload); - -/** - * Create the new pack and pass each object to the callback - * - * @param pb the packbuilder - * @param cb the callback to call with each packed object's buffer - * @param payload the callback's data - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_foreach(git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload); - -/** - * Get the total number of objects the packbuilder will write out - * - * @param pb the packbuilder - * @return the number of objects in the packfile - */ -GIT_EXTERN(uint32_t) git_packbuilder_object_count(git_packbuilder *pb); - -/** - * Get the number of objects the packbuilder has already written out - * - * @param pb the packbuilder - * @return the number of objects which have already been written - */ -GIT_EXTERN(uint32_t) git_packbuilder_written(git_packbuilder *pb); - -/** Packbuilder progress notification function */ -typedef int (*git_packbuilder_progress)( - int stage, - unsigned int current, - unsigned int total, - void *payload); - -/** - * Set the callbacks for a packbuilder - * - * @param pb The packbuilder object - * @param progress_cb Function to call with progress information during - * pack building. Be aware that this is called inline with pack building - * operations, so performance may be affected. - * @param progress_cb_payload Payload for progress callback. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_packbuilder_set_callbacks( - git_packbuilder *pb, - git_packbuilder_progress progress_cb, - void *progress_cb_payload); - -/** - * Free the packbuilder and all associated data - * - * @param pb The packbuilder - */ -GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/patch.h b/libgit2/include/git2/patch.h deleted file mode 100644 index 790cb74..0000000 --- a/libgit2/include/git2/patch.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_patch_h__ -#define INCLUDE_git_patch_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "diff.h" - -/** - * @file git2/patch.h - * @brief Patch handling routines. - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * The diff patch is used to store all the text diffs for a delta. - * - * You can easily loop over the content of patches and get information about - * them. - */ -typedef struct git_patch git_patch; - -/** - * Return a patch for an entry in the diff list. - * - * The `git_patch` is a newly created object contains the text diffs - * for the delta. You have to call `git_patch_free()` when you are - * done with it. You can use the patch object to loop over all the hunks - * and lines in the diff of the one delta. - * - * For an unchanged file or a binary file, no `git_patch` will be - * created, the output will be set to NULL, and the `binary` flag will be - * set true in the `git_diff_delta` structure. - * - * It is okay to pass NULL for either of the output parameters; if you pass - * NULL for the `git_patch`, then the text diff will not be calculated. - * - * @param out Output parameter for the delta patch object - * @param diff Diff list object - * @param idx Index into diff list - * @return 0 on success, other value < 0 on error - */ -GIT_EXTERN(int) git_patch_from_diff( - git_patch **out, git_diff *diff, size_t idx); - -/** - * Directly generate a patch from the difference between two blobs. - * - * This is just like `git_diff_blobs()` except it generates a patch object - * for the difference instead of directly making callbacks. You can use the - * standard `git_patch` accessor functions to read the patch data, and - * you must call `git_patch_free()` on the patch when done. - * - * @param out The generated patch; NULL on error - * @param old_blob Blob for old side of diff, or NULL for empty blob - * @param old_as_path Treat old blob as if it had this filename; can be NULL - * @param new_blob Blob for new side of diff, or NULL for empty blob - * @param new_as_path Treat new blob as if it had this filename; can be NULL - * @param opts Options for diff, or NULL for default options - * @return 0 on success or error code < 0 - */ -GIT_EXTERN(int) git_patch_from_blobs( - git_patch **out, - const git_blob *old_blob, - const char *old_as_path, - const git_blob *new_blob, - const char *new_as_path, - const git_diff_options *opts); - -/** - * Directly generate a patch from the difference between a blob and a buffer. - * - * This is just like `git_diff_blob_to_buffer()` except it generates a patch - * object for the difference instead of directly making callbacks. You can - * use the standard `git_patch` accessor functions to read the patch - * data, and you must call `git_patch_free()` on the patch when done. - * - * @param out The generated patch; NULL on error - * @param old_blob Blob for old side of diff, or NULL for empty blob - * @param old_as_path Treat old blob as if it had this filename; can be NULL - * @param buffer Raw data for new side of diff, or NULL for empty - * @param buffer_len Length of raw data for new side of diff - * @param buffer_as_path Treat buffer as if it had this filename; can be NULL - * @param opts Options for diff, or NULL for default options - * @return 0 on success or error code < 0 - */ -GIT_EXTERN(int) git_patch_from_blob_and_buffer( - git_patch **out, - const git_blob *old_blob, - const char *old_as_path, - const char *buffer, - size_t buffer_len, - const char *buffer_as_path, - const git_diff_options *opts); - -/** - * Directly generate a patch from the difference between two buffers. - * - * This is just like `git_diff_buffers()` except it generates a patch - * object for the difference instead of directly making callbacks. You can - * use the standard `git_patch` accessor functions to read the patch - * data, and you must call `git_patch_free()` on the patch when done. - * - * @param out The generated patch; NULL on error - * @param old_buffer Raw data for old side of diff, or NULL for empty - * @param old_len Length of the raw data for old side of the diff - * @param old_as_path Treat old buffer as if it had this filename; can be NULL - * @param new_buffer Raw data for new side of diff, or NULL for empty - * @param new_len Length of raw data for new side of diff - * @param new_as_path Treat buffer as if it had this filename; can be NULL - * @param opts Options for diff, or NULL for default options - * @return 0 on success or error code < 0 - */ -GIT_EXTERN(int) git_patch_from_buffers( - git_patch **out, - const void *old_buffer, - size_t old_len, - const char *old_as_path, - const char *new_buffer, - size_t new_len, - const char *new_as_path, - const git_diff_options *opts); - -/** - * Free a git_patch object. - */ -GIT_EXTERN(void) git_patch_free(git_patch *patch); - -/** - * Get the delta associated with a patch. This delta points to internal - * data and you do not have to release it when you are done with it. - */ -GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch); - -/** - * Get the number of hunks in a patch - */ -GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch); - -/** - * Get line counts of each type in a patch. - * - * This helps imitate a diff --numstat type of output. For that purpose, - * you only need the `total_additions` and `total_deletions` values, but we - * include the `total_context` line count in case you want the total number - * of lines of diff output that will be generated. - * - * All outputs are optional. Pass NULL if you don't need a particular count. - * - * @param total_context Count of context lines in output, can be NULL. - * @param total_additions Count of addition lines in output, can be NULL. - * @param total_deletions Count of deletion lines in output, can be NULL. - * @param patch The git_patch object - * @return 0 on success, <0 on error - */ -GIT_EXTERN(int) git_patch_line_stats( - size_t *total_context, - size_t *total_additions, - size_t *total_deletions, - const git_patch *patch); - -/** - * Get the information about a hunk in a patch - * - * Given a patch and a hunk index into the patch, this returns detailed - * information about that hunk. Any of the output pointers can be passed - * as NULL if you don't care about that particular piece of information. - * - * @param out Output pointer to git_diff_hunk of hunk - * @param lines_in_hunk Output count of total lines in this hunk - * @param patch Input pointer to patch object - * @param hunk_idx Input index of hunk to get information about - * @return 0 on success, GIT_ENOTFOUND if hunk_idx out of range, <0 on error - */ -GIT_EXTERN(int) git_patch_get_hunk( - const git_diff_hunk **out, - size_t *lines_in_hunk, - git_patch *patch, - size_t hunk_idx); - -/** - * Get the number of lines in a hunk. - * - * @param patch The git_patch object - * @param hunk_idx Index of the hunk - * @return Number of lines in hunk or -1 if invalid hunk index - */ -GIT_EXTERN(int) git_patch_num_lines_in_hunk( - const git_patch *patch, - size_t hunk_idx); - -/** - * Get data about a line in a hunk of a patch. - * - * Given a patch, a hunk index, and a line index in the hunk, this - * will return a lot of details about that line. If you pass a hunk - * index larger than the number of hunks or a line index larger than - * the number of lines in the hunk, this will return -1. - * - * @param out The git_diff_line data for this line - * @param patch The patch to look in - * @param hunk_idx The index of the hunk - * @param line_of_hunk The index of the line in the hunk - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_patch_get_line_in_hunk( - const git_diff_line **out, - git_patch *patch, - size_t hunk_idx, - size_t line_of_hunk); - -/** - * Look up size of patch diff data in bytes - * - * This returns the raw size of the patch data. This only includes the - * actual data from the lines of the diff, not the file or hunk headers. - * - * If you pass `include_context` as true (non-zero), this will be the size - * of all of the diff output; if you pass it as false (zero), this will - * only include the actual changed lines (as if `context_lines` was 0). - * - * @param patch A git_patch representing changes to one file - * @param include_context Include context lines in size if non-zero - * @param include_hunk_headers Include hunk header lines if non-zero - * @param include_file_headers Include file header lines if non-zero - * @return The number of bytes of data - */ -GIT_EXTERN(size_t) git_patch_size( - git_patch *patch, - int include_context, - int include_hunk_headers, - int include_file_headers); - -/** - * Serialize the patch to text via callback. - * - * Returning a non-zero value from the callback will terminate the iteration - * and return that value to the caller. - * - * @param patch A git_patch representing changes to one file - * @param print_cb Callback function to output lines of the patch. Will be - * called for file headers, hunk headers, and diff lines. - * @param payload Reference pointer that will be passed to your callbacks. - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_patch_print( - git_patch *patch, - git_diff_line_cb print_cb, - void *payload); - -/** - * Get the content of a patch as a single diff text. - * - * @param out The git_buf to be filled in - * @param patch A git_patch representing changes to one file - * @return 0 on success, <0 on failure. - */ -GIT_EXTERN(int) git_patch_to_buf( - git_buf *out, - git_patch *patch); - -GIT_END_DECL - -/**@}*/ - -#endif diff --git a/libgit2/include/git2/pathspec.h b/libgit2/include/git2/pathspec.h deleted file mode 100644 index de6f027..0000000 --- a/libgit2/include/git2/pathspec.h +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_pathspec_h__ -#define INCLUDE_git_pathspec_h__ - -#include "common.h" -#include "types.h" -#include "strarray.h" -#include "diff.h" - -GIT_BEGIN_DECL - -/** - * Compiled pathspec - */ -typedef struct git_pathspec git_pathspec; - -/** - * List of filenames matching a pathspec - */ -typedef struct git_pathspec_match_list git_pathspec_match_list; - -/** - * Options controlling how pathspec match should be executed - * - * - GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise - * match will use native case sensitivity of platform filesystem - * - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise - * match will use native case sensitivity of platform filesystem - * - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple - * string comparison for matching - * - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error - * code GIT_ENOTFOUND if no matches are found; otherwise no matches is - * still success (return 0) but `git_pathspec_match_list_entrycount` - * will indicate 0 matches. - * - GIT_PATHSPEC_FIND_FAILURES means that the `git_pathspec_match_list` - * should track which patterns matched which files so that at the end of - * the match we can identify patterns that did not match any files. - * - GIT_PATHSPEC_FAILURES_ONLY means that the `git_pathspec_match_list` - * does not need to keep the actual matching filenames. Use this to - * just test if there were any matches at all or in combination with - * GIT_PATHSPEC_FIND_FAILURES to validate a pathspec. - */ -typedef enum { - GIT_PATHSPEC_DEFAULT = 0, - GIT_PATHSPEC_IGNORE_CASE = (1u << 0), - GIT_PATHSPEC_USE_CASE = (1u << 1), - GIT_PATHSPEC_NO_GLOB = (1u << 2), - GIT_PATHSPEC_NO_MATCH_ERROR = (1u << 3), - GIT_PATHSPEC_FIND_FAILURES = (1u << 4), - GIT_PATHSPEC_FAILURES_ONLY = (1u << 5), -} git_pathspec_flag_t; - -/** - * Compile a pathspec - * - * @param out Output of the compiled pathspec - * @param pathspec A git_strarray of the paths to match - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_pathspec_new( - git_pathspec **out, const git_strarray *pathspec); - -/** - * Free a pathspec - * - * @param ps The compiled pathspec - */ -GIT_EXTERN(void) git_pathspec_free(git_pathspec *ps); - -/** - * Try to match a path against a pathspec - * - * Unlike most of the other pathspec matching functions, this will not - * fall back on the native case-sensitivity for your platform. You must - * explicitly pass flags to control case sensitivity or else this will - * fall back on being case sensitive. - * - * @param ps The compiled pathspec - * @param flags Combination of git_pathspec_flag_t options to control match - * @param path The pathname to attempt to match - * @return 1 is path matches spec, 0 if it does not - */ -GIT_EXTERN(int) git_pathspec_matches_path( - const git_pathspec *ps, uint32_t flags, const char *path); - -/** - * Match a pathspec against the working directory of a repository. - * - * This matches the pathspec against the current files in the working - * directory of the repository. It is an error to invoke this on a bare - * repo. This handles git ignores (i.e. ignored files will not be - * considered to match the `pathspec` unless the file is tracked in the - * index). - * - * If `out` is not NULL, this returns a `git_patchspec_match_list`. That - * contains the list of all matched filenames (unless you pass the - * `GIT_PATHSPEC_FAILURES_ONLY` flag) and may also contain the list of - * pathspecs with no match (if you used the `GIT_PATHSPEC_FIND_FAILURES` - * flag). You must call `git_pathspec_match_list_free()` on this object. - * - * @param out Output list of matches; pass NULL to just get return value - * @param repo The repository in which to match; bare repo is an error - * @param flags Combination of git_pathspec_flag_t options to control match - * @param ps Pathspec to be matched - * @return 0 on success, -1 on error, GIT_ENOTFOUND if no matches and - * the GIT_PATHSPEC_NO_MATCH_ERROR flag was given - */ -GIT_EXTERN(int) git_pathspec_match_workdir( - git_pathspec_match_list **out, - git_repository *repo, - uint32_t flags, - git_pathspec *ps); - -/** - * Match a pathspec against entries in an index. - * - * This matches the pathspec against the files in the repository index. - * - * NOTE: At the moment, the case sensitivity of this match is controlled - * by the current case-sensitivity of the index object itself and the - * USE_CASE and IGNORE_CASE flags will have no effect. This behavior will - * be corrected in a future release. - * - * If `out` is not NULL, this returns a `git_patchspec_match_list`. That - * contains the list of all matched filenames (unless you pass the - * `GIT_PATHSPEC_FAILURES_ONLY` flag) and may also contain the list of - * pathspecs with no match (if you used the `GIT_PATHSPEC_FIND_FAILURES` - * flag). You must call `git_pathspec_match_list_free()` on this object. - * - * @param out Output list of matches; pass NULL to just get return value - * @param index The index to match against - * @param flags Combination of git_pathspec_flag_t options to control match - * @param ps Pathspec to be matched - * @return 0 on success, -1 on error, GIT_ENOTFOUND if no matches and - * the GIT_PATHSPEC_NO_MATCH_ERROR flag is used - */ -GIT_EXTERN(int) git_pathspec_match_index( - git_pathspec_match_list **out, - git_index *index, - uint32_t flags, - git_pathspec *ps); - -/** - * Match a pathspec against files in a tree. - * - * This matches the pathspec against the files in the given tree. - * - * If `out` is not NULL, this returns a `git_patchspec_match_list`. That - * contains the list of all matched filenames (unless you pass the - * `GIT_PATHSPEC_FAILURES_ONLY` flag) and may also contain the list of - * pathspecs with no match (if you used the `GIT_PATHSPEC_FIND_FAILURES` - * flag). You must call `git_pathspec_match_list_free()` on this object. - * - * @param out Output list of matches; pass NULL to just get return value - * @param tree The root-level tree to match against - * @param flags Combination of git_pathspec_flag_t options to control match - * @param ps Pathspec to be matched - * @return 0 on success, -1 on error, GIT_ENOTFOUND if no matches and - * the GIT_PATHSPEC_NO_MATCH_ERROR flag is used - */ -GIT_EXTERN(int) git_pathspec_match_tree( - git_pathspec_match_list **out, - git_tree *tree, - uint32_t flags, - git_pathspec *ps); - -/** - * Match a pathspec against files in a diff list. - * - * This matches the pathspec against the files in the given diff list. - * - * If `out` is not NULL, this returns a `git_patchspec_match_list`. That - * contains the list of all matched filenames (unless you pass the - * `GIT_PATHSPEC_FAILURES_ONLY` flag) and may also contain the list of - * pathspecs with no match (if you used the `GIT_PATHSPEC_FIND_FAILURES` - * flag). You must call `git_pathspec_match_list_free()` on this object. - * - * @param out Output list of matches; pass NULL to just get return value - * @param diff A generated diff list - * @param flags Combination of git_pathspec_flag_t options to control match - * @param ps Pathspec to be matched - * @return 0 on success, -1 on error, GIT_ENOTFOUND if no matches and - * the GIT_PATHSPEC_NO_MATCH_ERROR flag is used - */ -GIT_EXTERN(int) git_pathspec_match_diff( - git_pathspec_match_list **out, - git_diff *diff, - uint32_t flags, - git_pathspec *ps); - -/** - * Free memory associates with a git_pathspec_match_list - * - * @param m The git_pathspec_match_list to be freed - */ -GIT_EXTERN(void) git_pathspec_match_list_free(git_pathspec_match_list *m); - -/** - * Get the number of items in a match list. - * - * @param m The git_pathspec_match_list object - * @return Number of items in match list - */ -GIT_EXTERN(size_t) git_pathspec_match_list_entrycount( - const git_pathspec_match_list *m); - -/** - * Get a matching filename by position. - * - * This routine cannot be used if the match list was generated by - * `git_pathspec_match_diff`. If so, it will always return NULL. - * - * @param m The git_pathspec_match_list object - * @param pos The index into the list - * @return The filename of the match - */ -GIT_EXTERN(const char *) git_pathspec_match_list_entry( - const git_pathspec_match_list *m, size_t pos); - -/** - * Get a matching diff delta by position. - * - * This routine can only be used if the match list was generated by - * `git_pathspec_match_diff`. Otherwise it will always return NULL. - * - * @param m The git_pathspec_match_list object - * @param pos The index into the list - * @return The filename of the match - */ -GIT_EXTERN(const git_diff_delta *) git_pathspec_match_list_diff_entry( - const git_pathspec_match_list *m, size_t pos); - -/** - * Get the number of pathspec items that did not match. - * - * This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when - * generating the git_pathspec_match_list. - * - * @param m The git_pathspec_match_list object - * @return Number of items in original pathspec that had no matches - */ -GIT_EXTERN(size_t) git_pathspec_match_list_failed_entrycount( - const git_pathspec_match_list *m); - -/** - * Get an original pathspec string that had no matches. - * - * This will be return NULL for positions out of range. - * - * @param m The git_pathspec_match_list object - * @param pos The index into the failed items - * @return The pathspec pattern that didn't match anything - */ -GIT_EXTERN(const char *) git_pathspec_match_list_failed_entry( - const git_pathspec_match_list *m, size_t pos); - -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/rebase.h b/libgit2/include/git2/rebase.h deleted file mode 100644 index 9b9065e..0000000 --- a/libgit2/include/git2/rebase.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_rebase_h__ -#define INCLUDE_git_rebase_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "annotated_commit.h" - -/** - * @file git2/rebase.h - * @brief Git rebase routines - * @defgroup git_rebase Git merge routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Rebase options - * - * Use to tell the rebase machinery how to operate. - */ -typedef struct { - unsigned int version; - - /** - * Used by `git_rebase_init`, this will instruct other clients working - * on this rebase that you want a quiet rebase experience, which they - * may choose to provide in an application-specific manner. This has no - * effect upon libgit2 directly, but is provided for interoperability - * between Git tools. - */ - int quiet; - - /** - * Used by `git_rebase_init`, this will begin an in-memory rebase, - * which will allow callers to step through the rebase operations and - * commit the rebased changes, but will not rewind HEAD or update the - * repository to be in a rebasing state. This will not interfere with - * the working directory (if there is one). - */ - int inmemory; - - /** - * Used by `git_rebase_finish`, this is the name of the notes reference - * used to rewrite notes for rebased commits when finishing the rebase; - * if NULL, the contents of the configuration option `notes.rewriteRef` - * is examined, unless the configuration option `notes.rewrite.rebase` - * is set to false. If `notes.rewriteRef` is also NULL, notes will - * not be rewritten. - */ - const char *rewrite_notes_ref; - - /** - * Options to control how trees are merged during `git_rebase_next`. - */ - git_merge_options merge_options; - - /** - * Options to control how files are written during `git_rebase_init`, - * `git_rebase_next` and `git_rebase_abort`. Note that a minimum - * strategy of `GIT_CHECKOUT_SAFE` is defaulted in `init` and `next`, - * and a minimum strategy of `GIT_CHECKOUT_FORCE` is defaulted in - * `abort` to match git semantics. - */ - git_checkout_options checkout_options; -} git_rebase_options; - -/** - * Type of rebase operation in-progress after calling `git_rebase_next`. - */ -typedef enum { - /** - * The given commit is to be cherry-picked. The client should commit - * the changes and continue if there are no conflicts. - */ - GIT_REBASE_OPERATION_PICK = 0, - - /** - * The given commit is to be cherry-picked, but the client should prompt - * the user to provide an updated commit message. - */ - GIT_REBASE_OPERATION_REWORD, - - /** - * The given commit is to be cherry-picked, but the client should stop - * to allow the user to edit the changes before committing them. - */ - GIT_REBASE_OPERATION_EDIT, - - /** - * The given commit is to be squashed into the previous commit. The - * commit message will be merged with the previous message. - */ - GIT_REBASE_OPERATION_SQUASH, - - /** - * The given commit is to be squashed into the previous commit. The - * commit message from this commit will be discarded. - */ - GIT_REBASE_OPERATION_FIXUP, - - /** - * No commit will be cherry-picked. The client should run the given - * command and (if successful) continue. - */ - GIT_REBASE_OPERATION_EXEC, -} git_rebase_operation_t; - -#define GIT_REBASE_OPTIONS_VERSION 1 -#define GIT_REBASE_OPTIONS_INIT \ - { GIT_REBASE_OPTIONS_VERSION, 0, 0, NULL, GIT_MERGE_OPTIONS_INIT, \ - GIT_CHECKOUT_OPTIONS_INIT} - -/** Indicates that a rebase operation is not (yet) in progress. */ -#define GIT_REBASE_NO_OPERATION SIZE_MAX - -/** - * A rebase operation - * - * Describes a single instruction/operation to be performed during the - * rebase. - */ -typedef struct { - /** The type of rebase operation. */ - git_rebase_operation_t type; - - /** - * The commit ID being cherry-picked. This will be populated for - * all operations except those of type `GIT_REBASE_OPERATION_EXEC`. - */ - const git_oid id; - - /** - * The executable the user has requested be run. This will only - * be populated for operations of type `GIT_REBASE_OPERATION_EXEC`. - */ - const char *exec; -} git_rebase_operation; - -/** - * Initializes a `git_rebase_options` with default values. Equivalent to - * creating an instance with GIT_REBASE_OPTIONS_INIT. - * - * @param opts the `git_rebase_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_REBASE_OPTIONS_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_rebase_init_options( - git_rebase_options *opts, - unsigned int version); - -/** - * Initializes a rebase operation to rebase the changes in `branch` - * relative to `upstream` onto another branch. To begin the rebase - * process, call `git_rebase_next`. When you have finished with this - * object, call `git_rebase_free`. - * - * @param out Pointer to store the rebase object - * @param repo The repository to perform the rebase - * @param branch The terminal commit to rebase, or NULL to rebase the - * current branch - * @param upstream The commit to begin rebasing from, or NULL to rebase all - * reachable commits - * @param onto The branch to rebase onto, or NULL to rebase onto the given - * upstream - * @param opts Options to specify how rebase is performed, or NULL - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_rebase_init( - git_rebase **out, - git_repository *repo, - const git_annotated_commit *branch, - const git_annotated_commit *upstream, - const git_annotated_commit *onto, - const git_rebase_options *opts); - -/** - * Opens an existing rebase that was previously started by either an - * invocation of `git_rebase_init` or by another client. - * - * @param out Pointer to store the rebase object - * @param repo The repository that has a rebase in-progress - * @param opts Options to specify how rebase is performed - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_rebase_open( - git_rebase **out, - git_repository *repo, - const git_rebase_options *opts); - -/** - * Gets the count of rebase operations that are to be applied. - * - * @param rebase The in-progress rebase - * @return The number of rebase operations in total - */ -GIT_EXTERN(size_t) git_rebase_operation_entrycount(git_rebase *rebase); - -/** - * Gets the index of the rebase operation that is currently being applied. - * If the first operation has not yet been applied (because you have - * called `init` but not yet `next`) then this returns - * `GIT_REBASE_NO_OPERATION`. - * - * @param rebase The in-progress rebase - * @return The index of the rebase operation currently being applied. - */ -GIT_EXTERN(size_t) git_rebase_operation_current(git_rebase *rebase); - -/** - * Gets the rebase operation specified by the given index. - * - * @param rebase The in-progress rebase - * @param idx The index of the rebase operation to retrieve - * @return The rebase operation or NULL if `idx` was out of bounds - */ -GIT_EXTERN(git_rebase_operation *) git_rebase_operation_byindex( - git_rebase *rebase, - size_t idx); - -/** - * Performs the next rebase operation and returns the information about it. - * If the operation is one that applies a patch (which is any operation except - * GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and - * working directory will be updated with the changes. If there are conflicts, - * you will need to address those before committing the changes. - * - * @param operation Pointer to store the rebase operation that is to be performed next - * @param rebase The rebase in progress - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_rebase_next( - git_rebase_operation **operation, - git_rebase *rebase); - -/** - * Gets the index produced by the last operation, which is the result - * of `git_rebase_next` and which will be committed by the next - * invocation of `git_rebase_commit`. This is useful for resolving - * conflicts in an in-memory rebase before committing them. You must - * call `git_index_free` when you are finished with this. - * - * This is only applicable for in-memory rebases; for rebases within - * a working directory, the changes were applied to the repository's - * index. - */ -GIT_EXTERN(int) git_rebase_inmemory_index( - git_index **index, - git_rebase *rebase); - -/** - * Commits the current patch. You must have resolved any conflicts that - * were introduced during the patch application from the `git_rebase_next` - * invocation. - * - * @param id Pointer in which to store the OID of the newly created commit - * @param rebase The rebase that is in-progress - * @param author The author of the updated commit, or NULL to keep the - * author from the original commit - * @param committer The committer of the rebase - * @param message_encoding The encoding for the message in the commit, - * represented with a standard encoding name. If message is NULL, - * this should also be NULL, and the encoding from the original - * commit will be maintained. If message is specified, this may be - * NULL to indicate that "UTF-8" is to be used. - * @param message The message for this commit, or NULL to use the message - * from the original commit. - * @return Zero on success, GIT_EUNMERGED if there are unmerged changes in - * the index, GIT_EAPPLIED if the current commit has already - * been applied to the upstream and there is nothing to commit, - * -1 on failure. - */ -GIT_EXTERN(int) git_rebase_commit( - git_oid *id, - git_rebase *rebase, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message); - -/** - * Aborts a rebase that is currently in progress, resetting the repository - * and working directory to their state before rebase began. - * - * @param rebase The rebase that is in-progress - * @return Zero on success; GIT_ENOTFOUND if a rebase is not in progress, - * -1 on other errors. - */ -GIT_EXTERN(int) git_rebase_abort(git_rebase *rebase); - -/** - * Finishes a rebase that is currently in progress once all patches have - * been applied. - * - * @param rebase The rebase that is in-progress - * @param signature The identity that is finishing the rebase (optional) - * @return Zero on success; -1 on error - */ -GIT_EXTERN(int) git_rebase_finish( - git_rebase *rebase, - const git_signature *signature); - -/** - * Frees the `git_rebase` object. - * - * @param rebase The rebase object - */ -GIT_EXTERN(void) git_rebase_free(git_rebase *rebase); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/refdb.h b/libgit2/include/git2/refdb.h deleted file mode 100644 index a315876..0000000 --- a/libgit2/include/git2/refdb.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_refdb_h__ -#define INCLUDE_git_refdb_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "refs.h" - -/** - * @file git2/refdb.h - * @brief Git custom refs backend functions - * @defgroup git_refdb Git custom refs backend API - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create a new reference database with no backends. - * - * Before the Ref DB can be used for read/writing, a custom database - * backend must be manually set using `git_refdb_set_backend()` - * - * @param out location to store the database pointer, if opened. - * Set to NULL if the open failed. - * @param repo the repository - * @return 0 or an error code - */ -GIT_EXTERN(int) git_refdb_new(git_refdb **out, git_repository *repo); - -/** - * Create a new reference database and automatically add - * the default backends: - * - * - git_refdb_dir: read and write loose and packed refs - * from disk, assuming the repository dir as the folder - * - * @param out location to store the database pointer, if opened. - * Set to NULL if the open failed. - * @param repo the repository - * @return 0 or an error code - */ -GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo); - -/** - * Suggests that the given refdb compress or optimize its references. - * This mechanism is implementation specific. For on-disk reference - * databases, for example, this may pack all loose references. - */ -GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb); - -/** - * Close an open reference database. - * - * @param refdb reference database pointer or NULL - */ -GIT_EXTERN(void) git_refdb_free(git_refdb *refdb); - -/** @} */ -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/reflog.h b/libgit2/include/git2/reflog.h deleted file mode 100644 index c949a28..0000000 --- a/libgit2/include/git2/reflog.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_reflog_h__ -#define INCLUDE_git_reflog_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" - -/** - * @file git2/reflog.h - * @brief Git reflog management routines - * @defgroup git_reflog Git reflog management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Read the reflog for the given reference - * - * If there is no reflog file for the given - * reference yet, an empty reflog object will - * be returned. - * - * The reflog must be freed manually by using - * git_reflog_free(). - * - * @param out pointer to reflog - * @param repo the repostiory - * @param name reference to look up - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reflog_read(git_reflog **out, git_repository *repo, const char *name); - -/** - * Write an existing in-memory reflog object back to disk - * using an atomic file lock. - * - * @param reflog an existing reflog object - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reflog_write(git_reflog *reflog); - -/** - * Add a new entry to the in-memory reflog. - * - * `msg` is optional and can be NULL. - * - * @param reflog an existing reflog object - * @param id the OID the reference is now pointing to - * @param committer the signature of the committer - * @param msg the reflog message - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reflog_append(git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg); - -/** - * Rename a reflog - * - * The reflog to be renamed is expected to already exist - * - * The new name will be checked for validity. - * See `git_reference_create_symbolic()` for rules about valid names. - * - * @param repo the repository - * @param old_name the old name of the reference - * @param name the new name of the reference - * @return 0 on success, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_reflog_rename(git_repository *repo, const char *old_name, const char *name); - -/** - * Delete the reflog for the given reference - * - * @param repo the repository - * @param name the reflog to delete - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reflog_delete(git_repository *repo, const char *name); - -/** - * Get the number of log entries in a reflog - * - * @param reflog the previously loaded reflog - * @return the number of log entries - */ -GIT_EXTERN(size_t) git_reflog_entrycount(git_reflog *reflog); - -/** - * Lookup an entry by its index - * - * Requesting the reflog entry with an index of 0 (zero) will - * return the most recently created entry. - * - * @param reflog a previously loaded reflog - * @param idx the position of the entry to lookup. Should be greater than or - * equal to 0 (zero) and less than `git_reflog_entrycount()`. - * @return the entry; NULL if not found - */ -GIT_EXTERN(const git_reflog_entry *) git_reflog_entry_byindex(const git_reflog *reflog, size_t idx); - -/** - * Remove an entry from the reflog by its index - * - * To ensure there's no gap in the log history, set `rewrite_previous_entry` - * param value to 1. When deleting entry `n`, member old_oid of entry `n-1` - * (if any) will be updated with the value of member new_oid of entry `n+1`. - * - * @param reflog a previously loaded reflog. - * - * @param idx the position of the entry to remove. Should be greater than or - * equal to 0 (zero) and less than `git_reflog_entrycount()`. - * - * @param rewrite_previous_entry 1 to rewrite the history; 0 otherwise. - * - * @return 0 on success, GIT_ENOTFOUND if the entry doesn't exist - * or an error code. - */ -GIT_EXTERN(int) git_reflog_drop( - git_reflog *reflog, - size_t idx, - int rewrite_previous_entry); - -/** - * Get the old oid - * - * @param entry a reflog entry - * @return the old oid - */ -GIT_EXTERN(const git_oid *) git_reflog_entry_id_old(const git_reflog_entry *entry); - -/** - * Get the new oid - * - * @param entry a reflog entry - * @return the new oid at this time - */ -GIT_EXTERN(const git_oid *) git_reflog_entry_id_new(const git_reflog_entry *entry); - -/** - * Get the committer of this entry - * - * @param entry a reflog entry - * @return the committer - */ -GIT_EXTERN(const git_signature *) git_reflog_entry_committer(const git_reflog_entry *entry); - -/** - * Get the log message - * - * @param entry a reflog entry - * @return the log msg - */ -GIT_EXTERN(const char *) git_reflog_entry_message(const git_reflog_entry *entry); - -/** - * Free the reflog - * - * @param reflog reflog to free - */ -GIT_EXTERN(void) git_reflog_free(git_reflog *reflog); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/refs.h b/libgit2/include/git2/refs.h deleted file mode 100644 index db84ed0..0000000 --- a/libgit2/include/git2/refs.h +++ /dev/null @@ -1,735 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_refs_h__ -#define INCLUDE_git_refs_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "strarray.h" - -/** - * @file git2/refs.h - * @brief Git reference management routines - * @defgroup git_reference Git reference management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a reference by name in a repository. - * - * The returned reference must be freed by the user. - * - * The name will be checked for validity. - * See `git_reference_symbolic_create()` for rules about valid names. - * - * @param out pointer to the looked-up reference - * @param repo the repository to look up the reference - * @param name the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...) - * @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code. - */ -GIT_EXTERN(int) git_reference_lookup(git_reference **out, git_repository *repo, const char *name); - -/** - * Lookup a reference by name and resolve immediately to OID. - * - * This function provides a quick way to resolve a reference name straight - * through to the object id that it refers to. This avoids having to - * allocate or free any `git_reference` objects for simple situations. - * - * The name will be checked for validity. - * See `git_reference_symbolic_create()` for rules about valid names. - * - * @param out Pointer to oid to be filled in - * @param repo The repository in which to look up the reference - * @param name The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...) - * @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code. - */ -GIT_EXTERN(int) git_reference_name_to_id( - git_oid *out, git_repository *repo, const char *name); - -/** - * Lookup a reference by DWIMing its short name - * - * Apply the git precendence rules to the given shorthand to determine - * which reference the user is referring to. - * - * @param out pointer in which to store the reference - * @param repo the repository in which to look - * @param shorthand the short name for the reference - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_dwim(git_reference **out, git_repository *repo, const char *shorthand); - -/** - * Conditionally create a new symbolic reference. - * - * A symbolic reference is a reference name that refers to another - * reference name. If the other name moves, the symbolic name will move, - * too. As a simple example, the "HEAD" reference might refer to - * "refs/heads/master" while on the "master" branch of a repository. - * - * The symbolic reference will be created in the repository and written to - * the disk. The generated reference object must be freed by the user. - * - * Valid reference names must follow one of two patterns: - * - * 1. Top-level names must contain only capital letters and underscores, - * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD"). - * 2. Names prefixed with "refs/" can be almost anything. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * This function will return an error if a reference already exists with the - * given name unless `force` is true, in which case it will be overwritten. - * - * The message for the reflog will be ignored if the reference does - * not belong in the standard set (HEAD, branches and remote-tracking - * branches) and it does not have a reflog. - * - * It will return GIT_EMODIFIED if the reference's value at the time - * of updating does not match the one passed through `current_value` - * (i.e. if the ref has changed since the user read it). - * - * @param out Pointer to the newly created reference - * @param repo Repository where that reference will live - * @param name The name of the reference - * @param target The target of the reference - * @param force Overwrite existing references - * @param current_value The expected value of the reference when updating - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code - */ -GIT_EXTERN(int) git_reference_symbolic_create_matching(git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message); - -/** - * Create a new symbolic reference. - * - * A symbolic reference is a reference name that refers to another - * reference name. If the other name moves, the symbolic name will move, - * too. As a simple example, the "HEAD" reference might refer to - * "refs/heads/master" while on the "master" branch of a repository. - * - * The symbolic reference will be created in the repository and written to - * the disk. The generated reference object must be freed by the user. - * - * Valid reference names must follow one of two patterns: - * - * 1. Top-level names must contain only capital letters and underscores, - * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD"). - * 2. Names prefixed with "refs/" can be almost anything. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * This function will return an error if a reference already exists with the - * given name unless `force` is true, in which case it will be overwritten. - * - * The message for the reflog will be ignored if the reference does - * not belong in the standard set (HEAD, branches and remote-tracking - * branches) and it does not have a reflog. - * - * @param out Pointer to the newly created reference - * @param repo Repository where that reference will live - * @param name The name of the reference - * @param target The target of the reference - * @param force Overwrite existing references - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_reference_symbolic_create(git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message); - -/** - * Create a new direct reference. - * - * A direct reference (also called an object id reference) refers directly - * to a specific object id (a.k.a. OID or SHA) in the repository. The id - * permanently refers to the object (although the reference itself can be - * moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" - * refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977. - * - * The direct reference will be created in the repository and written to - * the disk. The generated reference object must be freed by the user. - * - * Valid reference names must follow one of two patterns: - * - * 1. Top-level names must contain only capital letters and underscores, - * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD"). - * 2. Names prefixed with "refs/" can be almost anything. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * This function will return an error if a reference already exists with the - * given name unless `force` is true, in which case it will be overwritten. - * - * The message for the reflog will be ignored if the reference does - * not belong in the standard set (HEAD, branches and remote-tracking - * branches) and and it does not have a reflog. - * - * @param out Pointer to the newly created reference - * @param repo Repository where that reference will live - * @param name The name of the reference - * @param id The object id pointed to by the reference. - * @param force Overwrite existing references - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_reference_create(git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message); - -/** - * Conditionally create new direct reference - * - * A direct reference (also called an object id reference) refers directly - * to a specific object id (a.k.a. OID or SHA) in the repository. The id - * permanently refers to the object (although the reference itself can be - * moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" - * refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977. - * - * The direct reference will be created in the repository and written to - * the disk. The generated reference object must be freed by the user. - * - * Valid reference names must follow one of two patterns: - * - * 1. Top-level names must contain only capital letters and underscores, - * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD"). - * 2. Names prefixed with "refs/" can be almost anything. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * This function will return an error if a reference already exists with the - * given name unless `force` is true, in which case it will be overwritten. - * - * The message for the reflog will be ignored if the reference does - * not belong in the standard set (HEAD, branches and remote-tracking - * branches) and and it does not have a reflog. - * - * It will return GIT_EMODIFIED if the reference's value at the time - * of updating does not match the one passed through `current_id` - * (i.e. if the ref has changed since the user read it). - * - * @param out Pointer to the newly created reference - * @param repo Repository where that reference will live - * @param name The name of the reference - * @param id The object id pointed to by the reference. - * @param force Overwrite existing references - * @param current_id The expected value of the reference at the time of update - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EMODIFIED if the value of the reference - * has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_reference_create_matching(git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message); - -/** - * Get the OID pointed to by a direct reference. - * - * Only available if the reference is direct (i.e. an object id reference, - * not a symbolic one). - * - * To find the OID of a symbolic ref, call `git_reference_resolve()` and - * then this function (or maybe use `git_reference_name_to_id()` to - * directly resolve a reference name all the way through to an OID). - * - * @param ref The reference - * @return a pointer to the oid if available, NULL otherwise - */ -GIT_EXTERN(const git_oid *) git_reference_target(const git_reference *ref); - -/** - * Return the peeled OID target of this reference. - * - * This peeled OID only applies to direct references that point to - * a hard Tag object: it is the result of peeling such Tag. - * - * @param ref The reference - * @return a pointer to the oid if available, NULL otherwise - */ -GIT_EXTERN(const git_oid *) git_reference_target_peel(const git_reference *ref); - -/** - * Get full name to the reference pointed to by a symbolic reference. - * - * Only available if the reference is symbolic. - * - * @param ref The reference - * @return a pointer to the name if available, NULL otherwise - */ -GIT_EXTERN(const char *) git_reference_symbolic_target(const git_reference *ref); - -/** - * Get the type of a reference. - * - * Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC) - * - * @param ref The reference - * @return the type - */ -GIT_EXTERN(git_ref_t) git_reference_type(const git_reference *ref); - -/** - * Get the full name of a reference. - * - * See `git_reference_symbolic_create()` for rules about valid names. - * - * @param ref The reference - * @return the full name for the ref - */ -GIT_EXTERN(const char *) git_reference_name(const git_reference *ref); - -/** - * Resolve a symbolic reference to a direct reference. - * - * This method iteratively peels a symbolic reference until it resolves to - * a direct reference to an OID. - * - * The peeled reference is returned in the `resolved_ref` argument, and - * must be freed manually once it's no longer needed. - * - * If a direct reference is passed as an argument, a copy of that - * reference is returned. This copy must be manually freed too. - * - * @param out Pointer to the peeled reference - * @param ref The reference - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_resolve(git_reference **out, const git_reference *ref); - -/** - * Get the repository where a reference resides. - * - * @param ref The reference - * @return a pointer to the repo - */ -GIT_EXTERN(git_repository *) git_reference_owner(const git_reference *ref); - -/** - * Create a new reference with the same name as the given reference but a - * different symbolic target. The reference must be a symbolic reference, - * otherwise this will fail. - * - * The new reference will be written to disk, overwriting the given reference. - * - * The target name will be checked for validity. - * See `git_reference_symbolic_create()` for rules about valid names. - * - * The message for the reflog will be ignored if the reference does - * not belong in the standard set (HEAD, branches and remote-tracking - * branches) and and it does not have a reflog. - * - * @param out Pointer to the newly created reference - * @param ref The reference - * @param target The new target for the reference - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_reference_symbolic_set_target( - git_reference **out, - git_reference *ref, - const char *target, - const char *log_message); - -/** - * Conditionally create a new reference with the same name as the given reference but a - * different OID target. The reference must be a direct reference, otherwise - * this will fail. - * - * The new reference will be written to disk, overwriting the given reference. - * - * @param out Pointer to the newly created reference - * @param ref The reference - * @param id The new target OID for the reference - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EMODIFIED if the value of the reference - * has changed since it was read, or an error code - */ -GIT_EXTERN(int) git_reference_set_target( - git_reference **out, - git_reference *ref, - const git_oid *id, - const char *log_message); - -/** - * Rename an existing reference. - * - * This method works for both direct and symbolic references. - * - * The new name will be checked for validity. - * See `git_reference_symbolic_create()` for rules about valid names. - * - * If the `force` flag is not enabled, and there's already - * a reference with the given name, the renaming will fail. - * - * IMPORTANT: - * The user needs to write a proper reflog entry if the - * reflog is enabled for the repository. We only rename - * the reflog if it exists. - * - * @param ref The reference to rename - * @param new_name The new name for the reference - * @param force Overwrite an existing reference - * @param log_message The one line long message to be appended to the reflog - * @return 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code - * - */ -GIT_EXTERN(int) git_reference_rename( - git_reference **new_ref, - git_reference *ref, - const char *new_name, - int force, - const char *log_message); - -/** - * Delete an existing reference. - * - * This method works for both direct and symbolic references. The reference - * will be immediately removed on disk but the memory will not be freed. - * Callers must call `git_reference_free`. - * - * This function will return an error if the reference has changed - * from the time it was looked up. - * - * @param ref The reference to remove - * @return 0, GIT_EMODIFIED or an error code - */ -GIT_EXTERN(int) git_reference_delete(git_reference *ref); - -/** - * Delete an existing reference by name - * - * This method removes the named reference from the repository without - * looking at its old value. - * - * @param name The reference to remove - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_remove(git_repository *repo, const char *name); - -/** - * Fill a list with all the references that can be found in a repository. - * - * The string array will be filled with the names of all references; these - * values are owned by the user and should be free'd manually when no - * longer needed, using `git_strarray_free()`. - * - * @param array Pointer to a git_strarray structure where - * the reference names will be stored - * @param repo Repository where to find the refs - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_list(git_strarray *array, git_repository *repo); - -typedef int (*git_reference_foreach_cb)(git_reference *reference, void *payload); -typedef int (*git_reference_foreach_name_cb)(const char *name, void *payload); - -/** - * Perform a callback on each reference in the repository. - * - * The `callback` function will be called for each reference in the - * repository, receiving the reference object and the `payload` value - * passed to this method. Returning a non-zero value from the callback - * will terminate the iteration. - * - * @param repo Repository where to find the refs - * @param callback Function which will be called for every listed ref - * @param payload Additional data to pass to the callback - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_reference_foreach( - git_repository *repo, - git_reference_foreach_cb callback, - void *payload); - -/** - * Perform a callback on the fully-qualified name of each reference. - * - * The `callback` function will be called for each reference in the - * repository, receiving the name of the reference and the `payload` value - * passed to this method. Returning a non-zero value from the callback - * will terminate the iteration. - * - * @param repo Repository where to find the refs - * @param callback Function which will be called for every listed ref name - * @param payload Additional data to pass to the callback - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_reference_foreach_name( - git_repository *repo, - git_reference_foreach_name_cb callback, - void *payload); - -/** - * Free the given reference. - * - * @param ref git_reference - */ -GIT_EXTERN(void) git_reference_free(git_reference *ref); - -/** - * Compare two references. - * - * @param ref1 The first git_reference - * @param ref2 The second git_reference - * @return 0 if the same, else a stable but meaningless ordering. - */ -GIT_EXTERN(int) git_reference_cmp( - const git_reference *ref1, - const git_reference *ref2); - -/** - * Create an iterator for the repo's references - * - * @param out pointer in which to store the iterator - * @param repo the repository - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_iterator_new( - git_reference_iterator **out, - git_repository *repo); - -/** - * Create an iterator for the repo's references that match the - * specified glob - * - * @param out pointer in which to store the iterator - * @param repo the repository - * @param glob the glob to match against the reference names - * @return 0 or an error code - */ -GIT_EXTERN(int) git_reference_iterator_glob_new( - git_reference_iterator **out, - git_repository *repo, - const char *glob); - -/** - * Get the next reference - * - * @param out pointer in which to store the reference - * @param iter the iterator - * @return 0, GIT_ITEROVER if there are no more; or an error code - */ -GIT_EXTERN(int) git_reference_next(git_reference **out, git_reference_iterator *iter); - -/** - * Get the next reference's name - * - * This function is provided for convenience in case only the names - * are interesting as it avoids the allocation of the `git_reference` - * object which `git_reference_next()` needs. - * - * @param out pointer in which to store the string - * @param iter the iterator - * @return 0, GIT_ITEROVER if there are no more; or an error code - */ -GIT_EXTERN(int) git_reference_next_name(const char **out, git_reference_iterator *iter); - -/** - * Free the iterator and its associated resources - * - * @param iter the iterator to free - */ -GIT_EXTERN(void) git_reference_iterator_free(git_reference_iterator *iter); - -/** - * Perform a callback on each reference in the repository whose name - * matches the given pattern. - * - * This function acts like `git_reference_foreach()` with an additional - * pattern match being applied to the reference name before issuing the - * callback function. See that function for more information. - * - * The pattern is matched using fnmatch or "glob" style where a '*' matches - * any sequence of letters, a '?' matches any letter, and square brackets - * can be used to define character ranges (such as "[0-9]" for digits). - * - * @param repo Repository where to find the refs - * @param glob Pattern to match (fnmatch-style) against reference name. - * @param callback Function which will be called for every listed ref - * @param payload Additional data to pass to the callback - * @return 0 on success, GIT_EUSER on non-zero callback, or error code - */ -GIT_EXTERN(int) git_reference_foreach_glob( - git_repository *repo, - const char *glob, - git_reference_foreach_name_cb callback, - void *payload); - -/** - * Check if a reflog exists for the specified reference. - * - * @param repo the repository - * @param refname the reference's name - * @return 0 when no reflog can be found, 1 when it exists; - * otherwise an error code. - */ -GIT_EXTERN(int) git_reference_has_log(git_repository *repo, const char *refname); - -/** - * Ensure there is a reflog for a particular reference. - * - * Make sure that successive updates to the reference will append to - * its log. - * - * @param repo the repository - * @param refname the reference's name - * @return 0 or an error code. - */ -GIT_EXTERN(int) git_reference_ensure_log(git_repository *repo, const char *refname); - -/** - * Check if a reference is a local branch. - * - * @param ref A git reference - * - * @return 1 when the reference lives in the refs/heads - * namespace; 0 otherwise. - */ -GIT_EXTERN(int) git_reference_is_branch(const git_reference *ref); - -/** - * Check if a reference is a remote tracking branch - * - * @param ref A git reference - * - * @return 1 when the reference lives in the refs/remotes - * namespace; 0 otherwise. - */ -GIT_EXTERN(int) git_reference_is_remote(const git_reference *ref); - -/** - * Check if a reference is a tag - * - * @param ref A git reference - * - * @return 1 when the reference lives in the refs/tags - * namespace; 0 otherwise. - */ -GIT_EXTERN(int) git_reference_is_tag(const git_reference *ref); - -/** - * Check if a reference is a note - * - * @param ref A git reference - * - * @return 1 when the reference lives in the refs/notes - * namespace; 0 otherwise. - */ -GIT_EXTERN(int) git_reference_is_note(const git_reference *ref); - -/** - * Normalization options for reference lookup - */ -typedef enum { - /** - * No particular normalization. - */ - GIT_REF_FORMAT_NORMAL = 0u, - - /** - * Control whether one-level refnames are accepted - * (i.e., refnames that do not contain multiple /-separated - * components). Those are expected to be written only using - * uppercase letters and underscore (FETCH_HEAD, ...) - */ - GIT_REF_FORMAT_ALLOW_ONELEVEL = (1u << 0), - - /** - * Interpret the provided name as a reference pattern for a - * refspec (as used with remote repositories). If this option - * is enabled, the name is allowed to contain a single * () - * in place of a one full pathname component - * (e.g., foo//bar but not foo/bar). - */ - GIT_REF_FORMAT_REFSPEC_PATTERN = (1u << 1), - - /** - * Interpret the name as part of a refspec in shorthand form - * so the `ONELEVEL` naming rules aren't enforced and 'master' - * becomes a valid name. - */ - GIT_REF_FORMAT_REFSPEC_SHORTHAND = (1u << 2), -} git_reference_normalize_t; - -/** - * Normalize reference name and check validity. - * - * This will normalize the reference name by removing any leading slash - * '/' characters and collapsing runs of adjacent slashes between name - * components into a single slash. - * - * Once normalized, if the reference name is valid, it will be returned in - * the user allocated buffer. - * - * See `git_reference_symbolic_create()` for rules about valid names. - * - * @param buffer_out User allocated buffer to store normalized name - * @param buffer_size Size of buffer_out - * @param name Reference name to be checked. - * @param flags Flags to constrain name validation rules - see the - * GIT_REF_FORMAT constants above. - * @return 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC - * or an error code. - */ -GIT_EXTERN(int) git_reference_normalize_name( - char *buffer_out, - size_t buffer_size, - const char *name, - unsigned int flags); - -/** - * Recursively peel reference until object of the specified type is found. - * - * The retrieved `peeled` object is owned by the repository - * and should be closed with the `git_object_free` method. - * - * If you pass `GIT_OBJ_ANY` as the target type, then the object - * will be peeled until a non-tag object is met. - * - * @param out Pointer to the peeled git_object - * @param ref The reference to be processed - * @param type The type of the requested object (GIT_OBJ_COMMIT, - * GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY). - * @return 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code - */ -GIT_EXTERN(int) git_reference_peel( - git_object **out, - git_reference *ref, - git_otype type); - -/** - * Ensure the reference name is well-formed. - * - * Valid reference names must follow one of two patterns: - * - * 1. Top-level names must contain only capital letters and underscores, - * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD"). - * 2. Names prefixed with "refs/" can be almost anything. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * @param refname name to be checked. - * @return 1 if the reference name is acceptable; 0 if it isn't - */ -GIT_EXTERN(int) git_reference_is_valid_name(const char *refname); - -/** - * Get the reference's short name - * - * This will transform the reference name into a name "human-readable" - * version. If no shortname is appropriate, it will return the full - * name. - * - * The memory is owned by the reference and must not be freed. - * - * @param ref a reference - * @return the human-readable version of the name - */ -GIT_EXTERN(const char *) git_reference_shorthand(const git_reference *ref); - - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/refspec.h b/libgit2/include/git2/refspec.h deleted file mode 100644 index 9acdc72..0000000 --- a/libgit2/include/git2/refspec.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_refspec_h__ -#define INCLUDE_git_refspec_h__ - -#include "common.h" -#include "types.h" -#include "net.h" -#include "buffer.h" - -/** - * @file git2/refspec.h - * @brief Git refspec attributes - * @defgroup git_refspec Git refspec attributes - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Get the source specifier - * - * @param refspec the refspec - * @return the refspec's source specifier - */ -GIT_EXTERN(const char *) git_refspec_src(const git_refspec *refspec); - -/** - * Get the destination specifier - * - * @param refspec the refspec - * @return the refspec's destination specifier - */ -GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec); - -/** - * Get the refspec's string - * - * @param refspec the refspec - * @returns the refspec's original string - */ -GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec); - -/** - * Get the force update setting - * - * @param refspec the refspec - * @return 1 if force update has been set, 0 otherwise - */ -GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec); - -/** - * Get the refspec's direction. - * - * @param spec refspec - * @return GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH - */ -GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec); - -/** - * Check if a refspec's source descriptor matches a reference - * - * @param refspec the refspec - * @param refname the name of the reference to check - * @return 1 if the refspec matches, 0 otherwise - */ -GIT_EXTERN(int) git_refspec_src_matches(const git_refspec *refspec, const char *refname); - -/** - * Check if a refspec's destination descriptor matches a reference - * - * @param refspec the refspec - * @param refname the name of the reference to check - * @return 1 if the refspec matches, 0 otherwise - */ -GIT_EXTERN(int) git_refspec_dst_matches(const git_refspec *refspec, const char *refname); - -/** - * Transform a reference to its target following the refspec's rules - * - * @param out where to store the target name - * @param spec the refspec - * @param name the name of the reference to transform - * @return 0, GIT_EBUFS or another error - */ -GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, const char *name); - -/** - * Transform a target reference to its source reference following the refspec's rules - * - * @param out where to store the source reference name - * @param spec the refspec - * @param name the name of the reference to transform - * @return 0, GIT_EBUFS or another error - */ -GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/remote.h b/libgit2/include/git2/remote.h deleted file mode 100644 index c42d967..0000000 --- a/libgit2/include/git2/remote.h +++ /dev/null @@ -1,811 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_remote_h__ -#define INCLUDE_git_remote_h__ - -#include "common.h" -#include "repository.h" -#include "refspec.h" -#include "net.h" -#include "indexer.h" -#include "strarray.h" -#include "transport.h" -#include "pack.h" - -/** - * @file git2/remote.h - * @brief Git remote management functions - * @defgroup git_remote remote management functions - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -typedef int (*git_remote_rename_problem_cb)(const char *problematic_refspec, void *payload); - -/** - * Add a remote with the default fetch refspec to the repository's configuration. - * - * @param out the resulting remote - * @param repo the repository in which to create the remote - * @param name the remote's name - * @param url the remote's url - * @return 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code - */ -GIT_EXTERN(int) git_remote_create( - git_remote **out, - git_repository *repo, - const char *name, - const char *url); - -/** - * Add a remote with the provided fetch refspec (or default if NULL) to the repository's - * configuration. - * - * @param out the resulting remote - * @param repo the repository in which to create the remote - * @param name the remote's name - * @param url the remote's url - * @param fetch the remote fetch value - * @return 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code - */ -GIT_EXTERN(int) git_remote_create_with_fetchspec( - git_remote **out, - git_repository *repo, - const char *name, - const char *url, - const char *fetch); - -/** - * Create an anonymous remote - * - * Create a remote with the given url in-memory. You can use this when - * you have a URL instead of a remote's name. - * - * @param out pointer to the new remote objects - * @param repo the associated repository - * @param url the remote repository's URL - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_create_anonymous( - git_remote **out, - git_repository *repo, - const char *url); - -/** - * Get the information for a particular remote - * - * The name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param out pointer to the new remote object - * @param repo the associated repository - * @param name the remote's name - * @return 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_remote_lookup(git_remote **out, git_repository *repo, const char *name); - -/** - * Create a copy of an existing remote. All internal strings are also - * duplicated. Callbacks are not duplicated. - * - * Call `git_remote_free` to free the data. - * - * @param dest pointer where to store the copy - * @param source object to copy - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_dup(git_remote **dest, git_remote *source); - -/** - * Get the remote's repository - * - * @param remote the remote - * @return a pointer to the repository - */ -GIT_EXTERN(git_repository *) git_remote_owner(const git_remote *remote); - -/** - * Get the remote's name - * - * @param remote the remote - * @return a pointer to the name or NULL for in-memory remotes - */ -GIT_EXTERN(const char *) git_remote_name(const git_remote *remote); - -/** - * Get the remote's url - * - * If url.*.insteadOf has been configured for this URL, it will - * return the modified URL. - * - * @param remote the remote - * @return a pointer to the url - */ -GIT_EXTERN(const char *) git_remote_url(const git_remote *remote); - -/** - * Get the remote's url for pushing - * - * If url.*.pushInsteadOf has been configured for this URL, it - * will return the modified URL. - * - * @param remote the remote - * @return a pointer to the url or NULL if no special url for pushing is set - */ -GIT_EXTERN(const char *) git_remote_pushurl(const git_remote *remote); - -/** - * Set the remote's url in the configuration - * - * Remote objects already in memory will not be affected. This assumes - * the common case of a single-url remote and will otherwise return an error. - * - * @param repo the repository in which to perform the change - * @param remote the remote's name - * @param url the url to set - * @return 0 or an error value - */ -GIT_EXTERN(int) git_remote_set_url(git_repository *repo, const char *remote, const char* url); - -/** - * Set the remote's url for pushing in the configuration. - * - * Remote objects already in memory will not be affected. This assumes - * the common case of a single-url remote and will otherwise return an error. - * - * - * @param repo the repository in which to perform the change - * @param remote the remote's name - * @param url the url to set - */ -GIT_EXTERN(int) git_remote_set_pushurl(git_repository *repo, const char *remote, const char* url); - -/** - * Add a fetch refspec to the remote's configuration - * - * Add the given refspec to the fetch list in the configuration. No - * loaded remote instances will be affected. - * - * @param repo the repository in which to change the configuration - * @param remote the name of the remote to change - * @param refspec the new fetch refspec - * @return 0, GIT_EINVALIDSPEC if refspec is invalid or an error value - */ -GIT_EXTERN(int) git_remote_add_fetch(git_repository *repo, const char *remote, const char *refspec); - -/** - * Get the remote's list of fetch refspecs - * - * The memory is owned by the user and should be freed with - * `git_strarray_free`. - * - * @param array pointer to the array in which to store the strings - * @param remote the remote to query - */ -GIT_EXTERN(int) git_remote_get_fetch_refspecs(git_strarray *array, const git_remote *remote); - -/** - * Add a push refspec to the remote's configuration - * - * Add the given refspec to the push list in the configuration. No - * loaded remote instances will be affected. - * - * @param repo the repository in which to change the configuration - * @param remote the name of the remote to change - * @param refspec the new push refspec - * @return 0, GIT_EINVALIDSPEC if refspec is invalid or an error value - */ -GIT_EXTERN(int) git_remote_add_push(git_repository *repo, const char *remote, const char *refspec); - -/** - * Get the remote's list of push refspecs - * - * The memory is owned by the user and should be freed with - * `git_strarray_free`. - * - * @param array pointer to the array in which to store the strings - * @param remote the remote to query - */ -GIT_EXTERN(int) git_remote_get_push_refspecs(git_strarray *array, const git_remote *remote); - -/** - * Get the number of refspecs for a remote - * - * @param remote the remote - * @return the amount of refspecs configured in this remote - */ -GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote); - -/** - * Get a refspec from the remote - * - * @param remote the remote to query - * @param n the refspec to get - * @return the nth refspec - */ -GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n); - -/** - * Open a connection to a remote - * - * The transport is selected based on the URL. The direction argument - * is due to a limitation of the git protocol (over TCP or SSH) which - * starts up a specific binary which can only do the one or the other. - * - * @param remote the remote to connect to - * @param direction GIT_DIRECTION_FETCH if you want to fetch or - * GIT_DIRECTION_PUSH if you want to push - * @param callbacks the callbacks to use for this connection - * @param custom_headers extra HTTP headers to use in this connection - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers); - -/** - * Get the remote repository's reference advertisement list - * - * Get the list of references with which the server responds to a new - * connection. - * - * The remote (or more exactly its transport) must have connected to - * the remote repository. This list is available as soon as the - * connection to the remote is initiated and it remains available - * after disconnecting. - * - * The memory belongs to the remote. The pointer will be valid as long - * as a new connection is not initiated, but it is recommended that - * you make a copy in order to make use of the data. - * - * @param out pointer to the array - * @param size the number of remote heads - * @param remote the remote - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_remote_ls(const git_remote_head ***out, size_t *size, git_remote *remote); - -/** - * Check whether the remote is connected - * - * Check whether the remote's underlying transport is connected to the - * remote host. - * - * @param remote the remote - * @return 1 if it's connected, 0 otherwise. - */ -GIT_EXTERN(int) git_remote_connected(const git_remote *remote); - -/** - * Cancel the operation - * - * At certain points in its operation, the network code checks whether - * the operation has been cancelled and if so stops the operation. - * - * @param remote the remote - */ -GIT_EXTERN(void) git_remote_stop(git_remote *remote); - -/** - * Disconnect from the remote - * - * Close the connection to the remote. - * - * @param remote the remote to disconnect from - */ -GIT_EXTERN(void) git_remote_disconnect(git_remote *remote); - -/** - * Free the memory associated with a remote - * - * This also disconnects from the remote, if the connection - * has not been closed yet (using git_remote_disconnect). - * - * @param remote the remote to free - */ -GIT_EXTERN(void) git_remote_free(git_remote *remote); - -/** - * Get a list of the configured remotes for a repo - * - * The string array must be freed by the user. - * - * @param out a string array which receives the names of the remotes - * @param repo the repository to query - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_list(git_strarray *out, git_repository *repo); - -/** - * Argument to the completion callback which tells it which operation - * finished. - */ -typedef enum git_remote_completion_type { - GIT_REMOTE_COMPLETION_DOWNLOAD, - GIT_REMOTE_COMPLETION_INDEXING, - GIT_REMOTE_COMPLETION_ERROR, -} git_remote_completion_type; - -/** Push network progress notification function */ -typedef int (*git_push_transfer_progress)( - unsigned int current, - unsigned int total, - size_t bytes, - void* payload); -/** - * Represents an update which will be performed on the remote during push - */ -typedef struct { - /** - * The source name of the reference - */ - char *src_refname; - /** - * The name of the reference to update on the server - */ - char *dst_refname; - /** - * The current target of the reference - */ - git_oid src; - /** - * The new target for the reference - */ - git_oid dst; -} git_push_update; - -/** - * @param updates an array containing the updates which will be sent - * as commands to the destination. - * @param len number of elements in `updates` - * @param payload Payload provided by the caller - */ -typedef int (*git_push_negotiation)(const git_push_update **updates, size_t len, void *payload); - -/** - * The callback settings structure - * - * Set the callbacks to be called by the remote when informing the user - * about the progress of the network operations. - */ -struct git_remote_callbacks { - unsigned int version; - /** - * Textual progress from the remote. Text send over the - * progress side-band will be passed to this function (this is - * the 'counting objects' output. - */ - git_transport_message_cb sideband_progress; - - /** - * Completion is called when different parts of the download - * process are done (currently unused). - */ - int (*completion)(git_remote_completion_type type, void *data); - - /** - * This will be called if the remote host requires - * authentication in order to connect to it. - * - * Returning GIT_PASSTHROUGH will make libgit2 behave as - * though this field isn't set. - */ - git_cred_acquire_cb credentials; - - /** - * If cert verification fails, this will be called to let the - * user make the final decision of whether to allow the - * connection to proceed. Returns 1 to allow the connection, 0 - * to disallow it or a negative value to indicate an error. - */ - git_transport_certificate_check_cb certificate_check; - - /** - * During the download of new data, this will be regularly - * called with the current count of progress done by the - * indexer. - */ - git_transfer_progress_cb transfer_progress; - - /** - * Each time a reference is updated locally, this function - * will be called with information about it. - */ - int (*update_tips)(const char *refname, const git_oid *a, const git_oid *b, void *data); - - /** - * Function to call with progress information during pack - * building. Be aware that this is called inline with pack - * building operations, so performance may be affected. - */ - git_packbuilder_progress pack_progress; - - /** - * Function to call with progress information during the - * upload portion of a push. Be aware that this is called - * inline with pack building operations, so performance may be - * affected. - */ - git_push_transfer_progress push_transfer_progress; - - /** - * Called for each updated reference on push. If `status` is - * not `NULL`, the update was rejected by the remote server - * and `status` contains the reason given. - */ - int (*push_update_reference)(const char *refname, const char *status, void *data); - - /** - * Called once between the negotiation step and the upload. It - * provides information about what updates will be performed. - */ - git_push_negotiation push_negotiation; - - /** - * Create the transport to use for this operation. Leave NULL - * to auto-detect. - */ - git_transport_cb transport; - - /** - * This will be passed to each of the callbacks in this struct - * as the last parameter. - */ - void *payload; -}; - -#define GIT_REMOTE_CALLBACKS_VERSION 1 -#define GIT_REMOTE_CALLBACKS_INIT {GIT_REMOTE_CALLBACKS_VERSION} - -/** - * Initializes a `git_remote_callbacks` with default values. Equivalent to - * creating an instance with GIT_REMOTE_CALLBACKS_INIT. - * - * @param opts the `git_remote_callbacks` struct to initialize - * @param version Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_remote_init_callbacks( - git_remote_callbacks *opts, - unsigned int version); - -typedef enum { - /** - * Use the setting from the configuration - */ - GIT_FETCH_PRUNE_UNSPECIFIED, - /** - * Force pruning on - */ - GIT_FETCH_PRUNE, - /** - * Force pruning off - */ - GIT_FETCH_NO_PRUNE, -} git_fetch_prune_t; - -/** - * Automatic tag following option - * - * Lets us select the --tags option to use. - */ -typedef enum { - /** - * Use the setting from the configuration. - */ - GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED = 0, - /** - * Ask the server for tags pointing to objects we're already - * downloading. - */ - GIT_REMOTE_DOWNLOAD_TAGS_AUTO, - /** - * Don't ask for any tags beyond the refspecs. - */ - GIT_REMOTE_DOWNLOAD_TAGS_NONE, - /** - * Ask for the all the tags. - */ - GIT_REMOTE_DOWNLOAD_TAGS_ALL, -} git_remote_autotag_option_t; - -/** - * Fetch options structure. - * - * Zero out for defaults. Initialize with `GIT_FETCH_OPTIONS_INIT` macro to - * correctly set the `version` field. E.g. - * - * git_fetch_options opts = GIT_FETCH_OPTIONS_INIT; - */ -typedef struct { - int version; - - /** - * Callbacks to use for this fetch operation - */ - git_remote_callbacks callbacks; - - /** - * Whether to perform a prune after the fetch - */ - git_fetch_prune_t prune; - - /** - * Whether to write the results to FETCH_HEAD. Defaults to - * on. Leave this default in order to behave like git. - */ - int update_fetchhead; - - /** - * Determines how to behave regarding tags on the remote, such - * as auto-downloading tags for objects we're downloading or - * downloading all of them. - * - * The default is to auto-follow tags. - */ - git_remote_autotag_option_t download_tags; - - /** - * Extra headers for this fetch operation - */ - git_strarray custom_headers; -} git_fetch_options; - -#define GIT_FETCH_OPTIONS_VERSION 1 -#define GIT_FETCH_OPTIONS_INIT { GIT_FETCH_OPTIONS_VERSION, GIT_REMOTE_CALLBACKS_INIT, GIT_FETCH_PRUNE_UNSPECIFIED, 1 } - -/** - * Initializes a `git_fetch_options` with default values. Equivalent to - * creating an instance with GIT_FETCH_OPTIONS_INIT. - * - * @param opts the `git_push_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_FETCH_OPTIONS_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_fetch_init_options( - git_fetch_options *opts, - unsigned int version); - - -/** - * Controls the behavior of a git_push object. - */ -typedef struct { - unsigned int version; - - /** - * If the transport being used to push to the remote requires the creation - * of a pack file, this controls the number of worker threads used by - * the packbuilder when creating that pack file to be sent to the remote. - * - * If set to 0, the packbuilder will auto-detect the number of threads - * to create. The default value is 1. - */ - unsigned int pb_parallelism; - - /** - * Callbacks to use for this push operation - */ - git_remote_callbacks callbacks; - - /** - * Extra headers for this push operation - */ - git_strarray custom_headers; -} git_push_options; - -#define GIT_PUSH_OPTIONS_VERSION 1 -#define GIT_PUSH_OPTIONS_INIT { GIT_PUSH_OPTIONS_VERSION, 0, GIT_REMOTE_CALLBACKS_INIT } - -/** - * Initializes a `git_push_options` with default values. Equivalent to - * creating an instance with GIT_PUSH_OPTIONS_INIT. - * - * @param opts the `git_push_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_PUSH_OPTIONS_VERSION` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_push_init_options( - git_push_options *opts, - unsigned int version); - -/** - * Download and index the packfile - * - * Connect to the remote if it hasn't been done yet, negotiate with - * the remote git which objects are missing, download and index the - * packfile. - * - * The .idx file will be created and both it and the packfile with be - * renamed to their final name. - * - * @param remote the remote - * @param refspecs the refspecs to use for this negotiation and - * download. Use NULL or an empty array to use the base refspecs - * @param opts the options to use for this fetch - * @return 0 or an error code - */ - GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts); - -/** - * Create a packfile and send it to the server - * - * Connect to the remote if it hasn't been done yet, negotiate with - * the remote git which objects are missing, create a packfile with the missing objects and send it. - * - * @param remote the remote - * @param refspecs the refspecs to use for this negotiation and - * upload. Use NULL or an empty array to use the base refspecs - * @param opts the options to use for this push - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_upload(git_remote *remote, const git_strarray *refspecs, const git_push_options *opts); - -/** - * Update the tips to the new state - * - * @param remote the remote to update - * @param reflog_message The message to insert into the reflogs. If - * NULL and fetching, the default is "fetch ", where is - * the name of the remote (or its url, for in-memory remotes). This - * parameter is ignored when pushing. - * @param callbacks pointer to the callback structure to use - * @param update_fetchhead whether to write to FETCH_HEAD. Pass 1 to behave like git. - * @param download_tags what the behaviour for downloading tags is for this fetch. This is - * ignored for push. This must be the same value passed to `git_remote_download()`. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_update_tips( - git_remote *remote, - const git_remote_callbacks *callbacks, - int update_fetchhead, - git_remote_autotag_option_t download_tags, - const char *reflog_message); - -/** - * Download new data and update tips - * - * Convenience function to connect to a remote, download the data, - * disconnect and update the remote-tracking branches. - * - * @param remote the remote to fetch from - * @param refspecs the refspecs to use for this fetch. Pass NULL or an - * empty array to use the base refspecs. - * @param opts options to use for this fetch - * @param reflog_message The message to insert into the reflogs. If NULL, the - * default is "fetch" - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_fetch( - git_remote *remote, - const git_strarray *refspecs, - const git_fetch_options *opts, - const char *reflog_message); - -/** - * Prune tracking refs that are no longer present on remote - * - * @param remote the remote to prune - * @param callbacks callbacks to use for this prune - * @return 0 or an error code - */ -GIT_EXTERN(int) git_remote_prune(git_remote *remote, const git_remote_callbacks *callbacks); - -/** - * Perform a push - * - * Peform all the steps from a push. - * - * @param remote the remote to push to - * @param refspecs the refspecs to use for pushing. If none are - * passed, the configured refspecs will be used - * @param opts options to use for this push - */ -GIT_EXTERN(int) git_remote_push(git_remote *remote, - const git_strarray *refspecs, - const git_push_options *opts); - -/** - * Get the statistics structure that is filled in by the fetch operation. - */ -GIT_EXTERN(const git_transfer_progress *) git_remote_stats(git_remote *remote); - -/** - * Retrieve the tag auto-follow setting - * - * @param remote the remote to query - * @return the auto-follow setting - */ -GIT_EXTERN(git_remote_autotag_option_t) git_remote_autotag(const git_remote *remote); - -/** - * Set the remote's tag following setting. - * - * The change will be made in the configuration. No loaded remotes - * will be affected. - * - * @param repo the repository in which to make the change - * @param remote the name of the remote - * @param value the new value to take. - */ -GIT_EXTERN(int) git_remote_set_autotag(git_repository *repo, const char *remote, git_remote_autotag_option_t value); -/** - * Retrieve the ref-prune setting - * - * @param remote the remote to query - * @return the ref-prune setting - */ -GIT_EXTERN(int) git_remote_prune_refs(const git_remote *remote); - -/** - * Give the remote a new name - * - * All remote-tracking branches and configuration settings - * for the remote are updated. - * - * The new name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * No loaded instances of a the remote with the old name will change - * their name or their list of refspecs. - * - * @param problems non-default refspecs cannot be renamed and will be - * stored here for further processing by the caller. Always free this - * strarray on successful return. - * @param repo the repository in which to rename - * @param name the current name of the remote - * @param new_name the new name the remote should bear - * @return 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code - */ -GIT_EXTERN(int) git_remote_rename( - git_strarray *problems, - git_repository *repo, - const char *name, - const char *new_name); - -/** - * Ensure the remote name is well-formed. - * - * @param remote_name name to be checked. - * @return 1 if the reference name is acceptable; 0 if it isn't - */ -GIT_EXTERN(int) git_remote_is_valid_name(const char *remote_name); - -/** -* Delete an existing persisted remote. -* -* All remote-tracking branches and configuration settings -* for the remote will be removed. -* -* @param repo the repository in which to act -* @param name the name of the remove to delete -* @return 0 on success, or an error code. -*/ -GIT_EXTERN(int) git_remote_delete(git_repository *repo, const char *name); - -/** - * Retrieve the name of the remote's default branch - * - * The default branch of a repository is the branch which HEAD points - * to. If the remote does not support reporting this information - * directly, it performs the guess as git does; that is, if there are - * multiple branches which point to the same commit, the first one is - * chosen. If the master branch is a candidate, it wins. - * - * This function must only be called after connecting. - * - * @param out the buffern in which to store the reference name - * @param remote the remote - * @return 0, GIT_ENOTFOUND if the remote does not have any references - * or none of them point to HEAD's commit, or an error message. - */ -GIT_EXTERN(int) git_remote_default_branch(git_buf *out, git_remote *remote); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/repository.h b/libgit2/include/git2/repository.h deleted file mode 100644 index 85b7e68..0000000 --- a/libgit2/include/git2/repository.h +++ /dev/null @@ -1,756 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_repository_h__ -#define INCLUDE_git_repository_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "buffer.h" - -/** - * @file git2/repository.h - * @brief Git repository management routines - * @defgroup git_repository Git repository management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Open a git repository. - * - * The 'path' argument must point to either a git repository - * folder, or an existing work dir. - * - * The method will automatically detect if 'path' is a normal - * or bare repository or fail is 'path' is neither. - * - * @param out pointer to the repo which will be opened - * @param path the path to the repository - * @return 0 or an error code - */ -GIT_EXTERN(int) git_repository_open(git_repository **out, const char *path); - -/** - * Create a "fake" repository to wrap an object database - * - * Create a repository object to wrap an object database to be used - * with the API when all you have is an object database. This doesn't - * have any paths associated with it, so use with care. - * - * @param out pointer to the repo - * @param odb the object database to wrap - * @return 0 or an error code - */ -GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb); - -/** - * Look for a git repository and copy its path in the given buffer. - * The lookup start from base_path and walk across parent directories - * if nothing has been found. The lookup ends when the first repository - * is found, or when reaching a directory referenced in ceiling_dirs - * or when the filesystem changes (in case across_fs is true). - * - * The method will automatically detect if the repository is bare - * (if there is a repository). - * - * @param out A pointer to a user-allocated git_buf which will contain - * the found path. - * - * @param start_path The base path where the lookup starts. - * - * @param across_fs If true, then the lookup will not stop when a - * filesystem device change is detected while exploring parent directories. - * - * @param ceiling_dirs A GIT_PATH_LIST_SEPARATOR separated list of - * absolute symbolic link free paths. The lookup will stop when any - * of this paths is reached. Note that the lookup always performs on - * start_path no matter start_path appears in ceiling_dirs ceiling_dirs - * might be NULL (which is equivalent to an empty string) - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_repository_discover( - git_buf *out, - const char *start_path, - int across_fs, - const char *ceiling_dirs); - -/** - * Option flags for `git_repository_open_ext`. - * - * * GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be - * immediately found in the start_path. Do not walk up from the - * start_path looking at parent directories. - * * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not - * continue searching across filesystem boundaries (i.e. when `st_dev` - * changes from the `stat` system call). (E.g. Searching in a user's home - * directory "/home/user/source/" will not return "/.git/" as the found - * repo if "/" is a different filesystem than "/home".) - * * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless - * of core.bare config, and defer loading config file for faster setup. - * Unlike `git_repository_open_bare`, this can follow gitlinks. - */ -typedef enum { - GIT_REPOSITORY_OPEN_NO_SEARCH = (1 << 0), - GIT_REPOSITORY_OPEN_CROSS_FS = (1 << 1), - GIT_REPOSITORY_OPEN_BARE = (1 << 2), -} git_repository_open_flag_t; - -/** - * Find and open a repository with extended controls. - * - * @param out Pointer to the repo which will be opened. This can - * actually be NULL if you only want to use the error code to - * see if a repo at this path could be opened. - * @param path Path to open as git repository. If the flags - * permit "searching", then this can be a path to a subdirectory - * inside the working directory of the repository. - * @param flags A combination of the GIT_REPOSITORY_OPEN flags above. - * @param ceiling_dirs A GIT_PATH_LIST_SEPARATOR delimited list of path - * prefixes at which the search for a containing repository should - * terminate. - * @return 0 on success, GIT_ENOTFOUND if no repository could be found, - * or -1 if there was a repository but open failed for some reason - * (such as repo corruption or system errors). - */ -GIT_EXTERN(int) git_repository_open_ext( - git_repository **out, - const char *path, - unsigned int flags, - const char *ceiling_dirs); - -/** - * Open a bare repository on the serverside. - * - * This is a fast open for bare repositories that will come in handy - * if you're e.g. hosting git repositories and need to access them - * efficiently - * - * @param out Pointer to the repo which will be opened. - * @param bare_path Direct path to the bare repository - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_repository_open_bare(git_repository **out, const char *bare_path); - -/** - * Free a previously allocated repository - * - * Note that after a repository is free'd, all the objects it has spawned - * will still exist until they are manually closed by the user - * with `git_object_free`, but accessing any of the attributes of - * an object without a backing repository will result in undefined - * behavior - * - * @param repo repository handle to close. If NULL nothing occurs. - */ -GIT_EXTERN(void) git_repository_free(git_repository *repo); - -/** - * Creates a new Git repository in the given folder. - * - * TODO: - * - Reinit the repository - * - * @param out pointer to the repo which will be created or reinitialized - * @param path the path to the repository - * @param is_bare if true, a Git repository without a working directory is - * created at the pointed path. If false, provided path will be - * considered as the working directory into which the .git directory - * will be created. - * - * @return 0 or an error code - */ -GIT_EXTERN(int) git_repository_init( - git_repository **out, - const char *path, - unsigned is_bare); - -/** - * Option flags for `git_repository_init_ext`. - * - * These flags configure extra behaviors to `git_repository_init_ext`. - * In every case, the default behavior is the zero value (i.e. flag is - * not set). Just OR the flag values together for the `flags` parameter - * when initializing a new repo. Details of individual values are: - * - * * BARE - Create a bare repository with no working directory. - * * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to - * already be an git repository. - * * NO_DOTGIT_DIR - Normally a "/.git/" will be appended to the repo - * path for non-bare repos (if it is not already there), but - * passing this flag prevents that behavior. - * * MKDIR - Make the repo_path (and workdir_path) as needed. Init is - * always willing to create the ".git" directory even without this - * flag. This flag tells init to create the trailing component of - * the repo and workdir paths as needed. - * * MKPATH - Recursively make all components of the repo and workdir - * paths as necessary. - * * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to - * initialize a new repo. This flags enables external templates, - * looking the "template_path" from the options if set, or the - * `init.templatedir` global config if not, or falling back on - * "/usr/share/git-core/templates" if it exists. - * * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is - * specified, use relative paths for the gitdir and core.worktree. - */ -typedef enum { - GIT_REPOSITORY_INIT_BARE = (1u << 0), - GIT_REPOSITORY_INIT_NO_REINIT = (1u << 1), - GIT_REPOSITORY_INIT_NO_DOTGIT_DIR = (1u << 2), - GIT_REPOSITORY_INIT_MKDIR = (1u << 3), - GIT_REPOSITORY_INIT_MKPATH = (1u << 4), - GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE = (1u << 5), - GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6), -} git_repository_init_flag_t; - -/** - * Mode options for `git_repository_init_ext`. - * - * Set the mode field of the `git_repository_init_options` structure - * either to the custom mode that you would like, or to one of the - * following modes: - * - * * SHARED_UMASK - Use permissions configured by umask - the default. - * * SHARED_GROUP - Use "--shared=group" behavior, chmod'ing the new repo - * to be group writable and "g+sx" for sticky group assignment. - * * SHARED_ALL - Use "--shared=all" behavior, adding world readability. - * * Anything else - Set to custom value. - */ -typedef enum { - GIT_REPOSITORY_INIT_SHARED_UMASK = 0, - GIT_REPOSITORY_INIT_SHARED_GROUP = 0002775, - GIT_REPOSITORY_INIT_SHARED_ALL = 0002777, -} git_repository_init_mode_t; - -/** - * Extended options structure for `git_repository_init_ext`. - * - * This contains extra options for `git_repository_init_ext` that enable - * additional initialization features. The fields are: - * - * * flags - Combination of GIT_REPOSITORY_INIT flags above. - * * mode - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_... - * constants above, or to a custom value that you would like. - * * workdir_path - The path to the working dir or NULL for default (i.e. - * repo_path parent on non-bare repos). IF THIS IS RELATIVE PATH, - * IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH. If this is not - * the "natural" working directory, a .git gitlink file will be - * created here linking to the repo_path. - * * description - If set, this will be used to initialize the "description" - * file in the repository, instead of using the template content. - * * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set, - * this contains the path to use for the template directory. If - * this is NULL, the config or default directory options will be - * used instead. - * * initial_head - The name of the head to point HEAD at. If NULL, then - * this will be treated as "master" and the HEAD ref will be set - * to "refs/heads/master". If this begins with "refs/" it will be - * used verbatim; otherwise "refs/heads/" will be prefixed. - * * origin_url - If this is non-NULL, then after the rest of the - * repository initialization is completed, an "origin" remote - * will be added pointing to this URL. - */ -typedef struct { - unsigned int version; - uint32_t flags; - uint32_t mode; - const char *workdir_path; - const char *description; - const char *template_path; - const char *initial_head; - const char *origin_url; -} git_repository_init_options; - -#define GIT_REPOSITORY_INIT_OPTIONS_VERSION 1 -#define GIT_REPOSITORY_INIT_OPTIONS_INIT {GIT_REPOSITORY_INIT_OPTIONS_VERSION} - -/** - * Initializes a `git_repository_init_options` with default values. Equivalent - * to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT. - * - * @param opts the `git_repository_init_options` struct to initialize - * @param version Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_repository_init_init_options( - git_repository_init_options *opts, - unsigned int version); - -/** - * Create a new Git repository in the given folder with extended controls. - * - * This will initialize a new git repository (creating the repo_path - * if requested by flags) and working directory as needed. It will - * auto-detect the case sensitivity of the file system and if the - * file system supports file mode bits correctly. - * - * @param out Pointer to the repo which will be created or reinitialized. - * @param repo_path The path to the repository. - * @param opts Pointer to git_repository_init_options struct. - * @return 0 or an error code on failure. - */ -GIT_EXTERN(int) git_repository_init_ext( - git_repository **out, - const char *repo_path, - git_repository_init_options *opts); - -/** - * Retrieve and resolve the reference pointed at by HEAD. - * - * The returned `git_reference` will be owned by caller and - * `git_reference_free()` must be called when done with it to release the - * allocated memory and prevent a leak. - * - * @param out pointer to the reference which will be retrieved - * @param repo a repository object - * - * @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing - * branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise - */ -GIT_EXTERN(int) git_repository_head(git_reference **out, git_repository *repo); - -/** - * Check if a repository's HEAD is detached - * - * A repository's HEAD is detached when it points directly to a commit - * instead of a branch. - * - * @param repo Repo to test - * @return 1 if HEAD is detached, 0 if it's not; error code if there - * was an error. - */ -GIT_EXTERN(int) git_repository_head_detached(git_repository *repo); - -/** - * Check if the current branch is unborn - * - * An unborn branch is one named from HEAD but which doesn't exist in - * the refs namespace, because it doesn't have any commit to point to. - * - * @param repo Repo to test - * @return 1 if the current branch is unborn, 0 if it's not; error - * code if there was an error - */ -GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo); - -/** - * Check if a repository is empty - * - * An empty repository has just been initialized and contains no references - * apart from HEAD, which must be pointing to the unborn master branch. - * - * @param repo Repo to test - * @return 1 if the repository is empty, 0 if it isn't, error code - * if the repository is corrupted - */ -GIT_EXTERN(int) git_repository_is_empty(git_repository *repo); - -/** - * Get the path of this repository - * - * This is the path of the `.git` folder for normal repositories, - * or of the repository itself for bare repositories. - * - * @param repo A repository object - * @return the path to the repository - */ -GIT_EXTERN(const char *) git_repository_path(git_repository *repo); - -/** - * Get the path of the working directory for this repository - * - * If the repository is bare, this function will always return - * NULL. - * - * @param repo A repository object - * @return the path to the working dir, if it exists - */ -GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo); - -/** - * Set the path to the working directory for this repository - * - * The working directory doesn't need to be the same one - * that contains the `.git` folder for this repository. - * - * If this repository is bare, setting its working directory - * will turn it into a normal repository, capable of performing - * all the common workdir operations (checkout, status, index - * manipulation, etc). - * - * @param repo A repository object - * @param workdir The path to a working directory - * @param update_gitlink Create/update gitlink in workdir and set config - * "core.worktree" (if workdir is not the parent of the .git directory) - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_set_workdir( - git_repository *repo, const char *workdir, int update_gitlink); - -/** - * Check if a repository is bare - * - * @param repo Repo to test - * @return 1 if the repository is bare, 0 otherwise. - */ -GIT_EXTERN(int) git_repository_is_bare(git_repository *repo); - -/** - * Get the configuration file for this repository. - * - * If a configuration file has not been set, the default - * config set for the repository will be returned, including - * global and system configurations (if they are available). - * - * The configuration file must be freed once it's no longer - * being used by the user. - * - * @param out Pointer to store the loaded configuration - * @param repo A repository object - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_config(git_config **out, git_repository *repo); - -/** - * Get a snapshot of the repository's configuration - * - * Convenience function to take a snapshot from the repository's - * configuration. The contents of this snapshot will not change, - * even if the underlying config files are modified. - * - * The configuration file must be freed once it's no longer - * being used by the user. - * - * @param out Pointer to store the loaded configuration - * @param repo the repository - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_config_snapshot(git_config **out, git_repository *repo); - -/** - * Get the Object Database for this repository. - * - * If a custom ODB has not been set, the default - * database for the repository will be returned (the one - * located in `.git/objects`). - * - * The ODB must be freed once it's no longer being used by - * the user. - * - * @param out Pointer to store the loaded ODB - * @param repo A repository object - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_odb(git_odb **out, git_repository *repo); - -/** - * Get the Reference Database Backend for this repository. - * - * If a custom refsdb has not been set, the default database for - * the repository will be returned (the one that manipulates loose - * and packed references in the `.git` directory). - * - * The refdb must be freed once it's no longer being used by - * the user. - * - * @param out Pointer to store the loaded refdb - * @param repo A repository object - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_refdb(git_refdb **out, git_repository *repo); - -/** - * Get the Index file for this repository. - * - * If a custom index has not been set, the default - * index for the repository will be returned (the one - * located in `.git/index`). - * - * The index must be freed once it's no longer being used by - * the user. - * - * @param out Pointer to store the loaded index - * @param repo A repository object - * @return 0, or an error code - */ -GIT_EXTERN(int) git_repository_index(git_index **out, git_repository *repo); - -/** - * Retrieve git's prepared message - * - * Operations such as git revert/cherry-pick/merge with the -n option - * stop just short of creating a commit with the changes and save - * their prepared message in .git/MERGE_MSG so the next git-commit - * execution can present it to the user for them to amend if they - * wish. - * - * Use this function to get the contents of this file. Don't forget to - * remove the file after you create the commit. - * - * @param out git_buf to write data into - * @param repo Repository to read prepared message from - * @return 0, GIT_ENOTFOUND if no message exists or an error code - */ -GIT_EXTERN(int) git_repository_message(git_buf *out, git_repository *repo); - -/** - * Remove git's prepared message. - * - * Remove the message that `git_repository_message` retrieves. - */ -GIT_EXTERN(int) git_repository_message_remove(git_repository *repo); - -/** - * Remove all the metadata associated with an ongoing command like merge, - * revert, cherry-pick, etc. For example: MERGE_HEAD, MERGE_MSG, etc. - * - * @param repo A repository object - * @return 0 on success, or error - */ -GIT_EXTERN(int) git_repository_state_cleanup(git_repository *repo); - -typedef int (*git_repository_fetchhead_foreach_cb)(const char *ref_name, - const char *remote_url, - const git_oid *oid, - unsigned int is_merge, - void *payload); - -/** - * Invoke 'callback' for each entry in the given FETCH_HEAD file. - * - * Return a non-zero value from the callback to stop the loop. - * - * @param repo A repository object - * @param callback Callback function - * @param payload Pointer to callback data (optional) - * @return 0 on success, non-zero callback return value, GIT_ENOTFOUND if - * there is no FETCH_HEAD file, or other error code. - */ -GIT_EXTERN(int) git_repository_fetchhead_foreach( - git_repository *repo, - git_repository_fetchhead_foreach_cb callback, - void *payload); - -typedef int (*git_repository_mergehead_foreach_cb)(const git_oid *oid, - void *payload); - -/** - * If a merge is in progress, invoke 'callback' for each commit ID in the - * MERGE_HEAD file. - * - * Return a non-zero value from the callback to stop the loop. - * - * @param repo A repository object - * @param callback Callback function - * @param payload Pointer to callback data (optional) - * @return 0 on success, non-zero callback return value, GIT_ENOTFOUND if - * there is no MERGE_HEAD file, or other error code. - */ -GIT_EXTERN(int) git_repository_mergehead_foreach( - git_repository *repo, - git_repository_mergehead_foreach_cb callback, - void *payload); - -/** - * Calculate hash of file using repository filtering rules. - * - * If you simply want to calculate the hash of a file on disk with no filters, - * you can just use the `git_odb_hashfile()` API. However, if you want to - * hash a file in the repository and you want to apply filtering rules (e.g. - * crlf filters) before generating the SHA, then use this function. - * - * Note: if the repository has `core.safecrlf` set to fail and the - * filtering triggers that failure, then this function will return an - * error and not calculate the hash of the file. - * - * @param out Output value of calculated SHA - * @param repo Repository pointer - * @param path Path to file on disk whose contents should be hashed. If the - * repository is not NULL, this can be a relative path. - * @param type The object type to hash as (e.g. GIT_OBJ_BLOB) - * @param as_path The path to use to look up filtering rules. If this is - * NULL, then the `path` parameter will be used instead. If - * this is passed as the empty string, then no filters will be - * applied when calculating the hash. - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_repository_hashfile( - git_oid *out, - git_repository *repo, - const char *path, - git_otype type, - const char *as_path); - -/** - * Make the repository HEAD point to the specified reference. - * - * If the provided reference points to a Tree or a Blob, the HEAD is - * unaltered and -1 is returned. - * - * If the provided reference points to a branch, the HEAD will point - * to that branch, staying attached, or become attached if it isn't yet. - * If the branch doesn't exist yet, no error will be return. The HEAD - * will then be attached to an unborn branch. - * - * Otherwise, the HEAD will be detached and will directly point to - * the Commit. - * - * @param repo Repository pointer - * @param refname Canonical name of the reference the HEAD should point at - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_repository_set_head( - git_repository* repo, - const char* refname); - -/** - * Make the repository HEAD directly point to the Commit. - * - * If the provided committish cannot be found in the repository, the HEAD - * is unaltered and GIT_ENOTFOUND is returned. - * - * If the provided commitish cannot be peeled into a commit, the HEAD - * is unaltered and -1 is returned. - * - * Otherwise, the HEAD will eventually be detached and will directly point to - * the peeled Commit. - * - * @param repo Repository pointer - * @param commitish Object id of the Commit the HEAD should point to - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_repository_set_head_detached( - git_repository* repo, - const git_oid* commitish); - -/** - * Make the repository HEAD directly point to the Commit. - * - * This behaves like `git_repository_set_head_detached()` but takes an - * annotated commit, which lets you specify which extended sha syntax - * string was specified by a user, allowing for more exact reflog - * messages. - * - * See the documentation for `git_repository_set_head_detached()`. - * - * @see git_repository_set_head_detached - */ -GIT_EXTERN(int) git_repository_set_head_detached_from_annotated( - git_repository *repo, - const git_annotated_commit *commitish); - -/** - * Detach the HEAD. - * - * If the HEAD is already detached and points to a Commit, 0 is returned. - * - * If the HEAD is already detached and points to a Tag, the HEAD is - * updated into making it point to the peeled Commit, and 0 is returned. - * - * If the HEAD is already detached and points to a non commitish, the HEAD is - * unaltered, and -1 is returned. - * - * Otherwise, the HEAD will be detached and point to the peeled Commit. - * - * @param repo Repository pointer - * @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing - * branch or an error code - */ -GIT_EXTERN(int) git_repository_detach_head( - git_repository* repo); - -/** - * Repository state - * - * These values represent possible states for the repository to be in, - * based on the current operation which is ongoing. - */ -typedef enum { - GIT_REPOSITORY_STATE_NONE, - GIT_REPOSITORY_STATE_MERGE, - GIT_REPOSITORY_STATE_REVERT, - GIT_REPOSITORY_STATE_REVERT_SEQUENCE, - GIT_REPOSITORY_STATE_CHERRYPICK, - GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE, - GIT_REPOSITORY_STATE_BISECT, - GIT_REPOSITORY_STATE_REBASE, - GIT_REPOSITORY_STATE_REBASE_INTERACTIVE, - GIT_REPOSITORY_STATE_REBASE_MERGE, - GIT_REPOSITORY_STATE_APPLY_MAILBOX, - GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE, -} git_repository_state_t; - -/** - * Determines the status of a git repository - ie, whether an operation - * (merge, cherry-pick, etc) is in progress. - * - * @param repo Repository pointer - * @return The state of the repository - */ -GIT_EXTERN(int) git_repository_state(git_repository *repo); - -/** - * Sets the active namespace for this Git Repository - * - * This namespace affects all reference operations for the repo. - * See `man gitnamespaces` - * - * @param repo The repo - * @param nmspace The namespace. This should not include the refs - * folder, e.g. to namespace all references under `refs/namespaces/foo/`, - * use `foo` as the namespace. - * @return 0 on success, -1 on error - */ -GIT_EXTERN(int) git_repository_set_namespace(git_repository *repo, const char *nmspace); - -/** - * Get the currently active namespace for this repository - * - * @param repo The repo - * @return the active namespace, or NULL if there isn't one - */ -GIT_EXTERN(const char *) git_repository_get_namespace(git_repository *repo); - - -/** - * Determine if the repository was a shallow clone - * - * @param repo The repository - * @return 1 if shallow, zero if not - */ -GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo); - -/** - * Retrieve the configured identity to use for reflogs - * - * The memory is owned by the repository and must not be freed by the - * user. - * - * @param name where to store the pointer to the name - * @param email where to store the pointer to the email - * @param repo the repository - */ -GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, const git_repository *repo); - -/** - * Set the identity to be used for writing reflogs - * - * If both are set, this name and email will be used to write to the - * reflog. Pass NULL to unset. When unset, the identity will be taken - * from the repository's configuration. - * - * @param repo the repository to configure - * @param name the name to use for the reflog entries - * @param email the email to use for the reflog entries - */ -GIT_EXTERN(int) git_repository_set_ident(git_repository *repo, const char *name, const char *email); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/reset.h b/libgit2/include/git2/reset.h deleted file mode 100644 index 7907529..0000000 --- a/libgit2/include/git2/reset.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_reset_h__ -#define INCLUDE_git_reset_h__ - -#include "common.h" -#include "types.h" -#include "strarray.h" -#include "checkout.h" - -/** - * @file git2/reset.h - * @brief Git reset management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Kinds of reset operation - */ -typedef enum { - GIT_RESET_SOFT = 1, /**< Move the head to the given commit */ - GIT_RESET_MIXED = 2, /**< SOFT plus reset index to the commit */ - GIT_RESET_HARD = 3, /**< MIXED plus changes in working tree discarded */ -} git_reset_t; - -/** - * Sets the current head to the specified commit oid and optionally - * resets the index and working tree to match. - * - * SOFT reset means the Head will be moved to the commit. - * - * MIXED reset will trigger a SOFT reset, plus the index will be replaced - * with the content of the commit tree. - * - * HARD reset will trigger a MIXED reset and the working directory will be - * replaced with the content of the index. (Untracked and ignored files - * will be left alone, however.) - * - * TODO: Implement remaining kinds of resets. - * - * @param repo Repository where to perform the reset operation. - * - * @param target Committish to which the Head should be moved to. This object - * must belong to the given `repo` and can either be a git_commit or a - * git_tag. When a git_tag is being passed, it should be dereferencable - * to a git_commit which oid will be used as the target of the branch. - * - * @param reset_type Kind of reset operation to perform. - * - * @param checkout_opts Checkout options to be used for a HARD reset. - * The checkout_strategy field will be overridden (based on reset_type). - * This parameter can be used to propagate notify and progress callbacks. - * - * @return 0 on success or an error code - */ -GIT_EXTERN(int) git_reset( - git_repository *repo, - git_object *target, - git_reset_t reset_type, - const git_checkout_options *checkout_opts); - -/** - * Sets the current head to the specified commit oid and optionally - * resets the index and working tree to match. - * - * This behaves like `git_reset()` but takes an annotated commit, - * which lets you specify which extended sha syntax string was - * specified by a user, allowing for more exact reflog messages. - * - * See the documentation for `git_reset()`. - * - * @see git_reset - */ -GIT_EXTERN(int) git_reset_from_annotated( - git_repository *repo, - git_annotated_commit *commit, - git_reset_t reset_type, - const git_checkout_options *checkout_opts); - -/** - * Updates some entries in the index from the target commit tree. - * - * The scope of the updated entries is determined by the paths - * being passed in the `pathspec` parameters. - * - * Passing a NULL `target` will result in removing - * entries in the index matching the provided pathspecs. - * - * @param repo Repository where to perform the reset operation. - * - * @param target The committish which content will be used to reset the content - * of the index. - * - * @param pathspecs List of pathspecs to operate on. - * - * @return 0 on success or an error code < 0 - */ -GIT_EXTERN(int) git_reset_default( - git_repository *repo, - git_object *target, - git_strarray* pathspecs); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/revert.h b/libgit2/include/git2/revert.h deleted file mode 100644 index 2de1942..0000000 --- a/libgit2/include/git2/revert.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_revert_h__ -#define INCLUDE_git_revert_h__ - -#include "common.h" -#include "types.h" -#include "merge.h" - -/** - * @file git2/revert.h - * @brief Git revert routines - * @defgroup git_revert Git revert routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Options for revert - */ -typedef struct { - unsigned int version; - - /** For merge commits, the "mainline" is treated as the parent. */ - unsigned int mainline; - - git_merge_options merge_opts; /**< Options for the merging */ - git_checkout_options checkout_opts; /**< Options for the checkout */ -} git_revert_options; - -#define GIT_REVERT_OPTIONS_VERSION 1 -#define GIT_REVERT_OPTIONS_INIT {GIT_REVERT_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT} - -/** - * Initializes a `git_revert_options` with default values. Equivalent to - * creating an instance with GIT_REVERT_OPTIONS_INIT. - * - * @param opts the `git_revert_options` struct to initialize - * @param version Version of struct; pass `GIT_REVERT_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_revert_init_options( - git_revert_options *opts, - unsigned int version); - -/** - * Reverts the given commit against the given "our" commit, producing an - * index that reflects the result of the revert. - * - * The returned index must be freed explicitly with `git_index_free`. - * - * @param out pointer to store the index result in - * @param repo the repository that contains the given commits - * @param revert_commit the commit to revert - * @param our_commit the commit to revert against (eg, HEAD) - * @param mainline the parent of the revert commit, if it is a merge - * @param merge_options the merge options (or null for defaults) - * @return zero on success, -1 on failure. - */ -GIT_EXTERN(int) git_revert_commit( - git_index **out, - git_repository *repo, - git_commit *revert_commit, - git_commit *our_commit, - unsigned int mainline, - const git_merge_options *merge_options); - -/** - * Reverts the given commit, producing changes in the index and working directory. - * - * @param repo the repository to revert - * @param commit the commit to revert - * @param given_opts merge flags - * @return zero on success, -1 on failure. - */ -GIT_EXTERN(int) git_revert( - git_repository *repo, - git_commit *commit, - const git_revert_options *given_opts); - -/** @} */ -GIT_END_DECL -#endif - diff --git a/libgit2/include/git2/revparse.h b/libgit2/include/git2/revparse.h deleted file mode 100644 index d170e16..0000000 --- a/libgit2/include/git2/revparse.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_revparse_h__ -#define INCLUDE_git_revparse_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/revparse.h - * @brief Git revision parsing routines - * @defgroup git_revparse Git revision parsing routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Find a single object, as specified by a revision string. - * - * See `man gitrevisions`, or - * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for - * information on the syntax accepted. - * - * The returned object should be released with `git_object_free` when no - * longer needed. - * - * @param out pointer to output object - * @param repo the repository to search in - * @param spec the textual specification for an object - * @return 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_revparse_single( - git_object **out, git_repository *repo, const char *spec); - -/** - * Find a single object and intermediate reference by a revision string. - * - * See `man gitrevisions`, or - * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for - * information on the syntax accepted. - * - * In some cases (`@{<-n>}` or `@{upstream}`), the expression may - * point to an intermediate reference. When such expressions are being passed - * in, `reference_out` will be valued as well. - * - * The returned object should be released with `git_object_free` and the - * returned reference with `git_reference_free` when no longer needed. - * - * @param object_out pointer to output object - * @param reference_out pointer to output reference or NULL - * @param repo the repository to search in - * @param spec the textual specification for an object - * @return 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC - * or an error code - */ -GIT_EXTERN(int) git_revparse_ext( - git_object **object_out, - git_reference **reference_out, - git_repository *repo, - const char *spec); - -/** - * Revparse flags. These indicate the intended behavior of the spec passed to - * git_revparse. - */ -typedef enum { - /** The spec targeted a single object. */ - GIT_REVPARSE_SINGLE = 1 << 0, - /** The spec targeted a range of commits. */ - GIT_REVPARSE_RANGE = 1 << 1, - /** The spec used the '...' operator, which invokes special semantics. */ - GIT_REVPARSE_MERGE_BASE = 1 << 2, -} git_revparse_mode_t; - -/** - * Git Revision Spec: output of a `git_revparse` operation - */ -typedef struct { - /** The left element of the revspec; must be freed by the user */ - git_object *from; - /** The right element of the revspec; must be freed by the user */ - git_object *to; - /** The intent of the revspec (i.e. `git_revparse_mode_t` flags) */ - unsigned int flags; -} git_revspec; - -/** - * Parse a revision string for `from`, `to`, and intent. - * - * See `man gitrevisions` or - * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for - * information on the syntax accepted. - * - * @param revspec Pointer to an user-allocated git_revspec struct where - * the result of the rev-parse will be stored - * @param repo the repository to search in - * @param spec the rev-parse spec to parse - * @return 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code - */ -GIT_EXTERN(int) git_revparse( - git_revspec *revspec, - git_repository *repo, - const char *spec); - - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/revwalk.h b/libgit2/include/git2/revwalk.h deleted file mode 100644 index 2cc0053..0000000 --- a/libgit2/include/git2/revwalk.h +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_revwalk_h__ -#define INCLUDE_git_revwalk_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" - -/** - * @file git2/revwalk.h - * @brief Git revision traversal routines - * @defgroup git_revwalk Git revision traversal routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Flags to specify the sorting which a revwalk should perform. - */ -typedef enum { - /** - * Sort the repository contents in no particular ordering; - * this sorting is arbitrary, implementation-specific - * and subject to change at any time. - * This is the default sorting for new walkers. - */ - GIT_SORT_NONE = 0, - - /** - * Sort the repository contents in topological order - * (parents before children); this sorting mode - * can be combined with time sorting. - */ - GIT_SORT_TOPOLOGICAL = 1 << 0, - - /** - * Sort the repository contents by commit time; - * this sorting mode can be combined with - * topological sorting. - */ - GIT_SORT_TIME = 1 << 1, - - /** - * Iterate through the repository contents in reverse - * order; this sorting mode can be combined with - * any of the above. - */ - GIT_SORT_REVERSE = 1 << 2, -} git_sort_t; - -/** - * Allocate a new revision walker to iterate through a repo. - * - * This revision walker uses a custom memory pool and an internal - * commit cache, so it is relatively expensive to allocate. - * - * For maximum performance, this revision walker should be - * reused for different walks. - * - * This revision walker is *not* thread safe: it may only be - * used to walk a repository on a single thread; however, - * it is possible to have several revision walkers in - * several different threads walking the same repository. - * - * @param out pointer to the new revision walker - * @param repo the repo to walk through - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_new(git_revwalk **out, git_repository *repo); - -/** - * Reset the revision walker for reuse. - * - * This will clear all the pushed and hidden commits, and - * leave the walker in a blank state (just like at - * creation) ready to receive new commit pushes and - * start a new walk. - * - * The revision walk is automatically reset when a walk - * is over. - * - * @param walker handle to reset. - */ -GIT_EXTERN(void) git_revwalk_reset(git_revwalk *walker); - -/** - * Add a new root for the traversal - * - * The pushed commit will be marked as one of the roots from which to - * start the walk. This commit may not be walked if it or a child is - * hidden. - * - * At least one commit must be pushed onto the walker before a walk - * can be started. - * - * The given id must belong to a committish on the walked - * repository. - * - * @param walk the walker being used for the traversal. - * @param id the oid of the commit to start from. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_push(git_revwalk *walk, const git_oid *id); - -/** - * Push matching references - * - * The OIDs pointed to by the references that match the given glob - * pattern will be pushed to the revision walker. - * - * A leading 'refs/' is implied if not present as well as a trailing - * '/\*' if the glob lacks '?', '\*' or '['. - * - * Any references matching this glob which do not point to a - * committish will be ignored. - * - * @param walk the walker being used for the traversal - * @param glob the glob pattern references should match - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_push_glob(git_revwalk *walk, const char *glob); - -/** - * Push the repository's HEAD - * - * @param walk the walker being used for the traversal - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_push_head(git_revwalk *walk); - -/** - * Mark a commit (and its ancestors) uninteresting for the output. - * - * The given id must belong to a committish on the walked - * repository. - * - * The resolved commit and all its parents will be hidden from the - * output on the revision walk. - * - * @param walk the walker being used for the traversal. - * @param commit_id the oid of commit that will be ignored during the traversal - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_hide(git_revwalk *walk, const git_oid *commit_id); - -/** - * Hide matching references. - * - * The OIDs pointed to by the references that match the given glob - * pattern and their ancestors will be hidden from the output on the - * revision walk. - * - * A leading 'refs/' is implied if not present as well as a trailing - * '/\*' if the glob lacks '?', '\*' or '['. - * - * Any references matching this glob which do not point to a - * committish will be ignored. - * - * @param walk the walker being used for the traversal - * @param glob the glob pattern references should match - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_hide_glob(git_revwalk *walk, const char *glob); - -/** - * Hide the repository's HEAD - * - * @param walk the walker being used for the traversal - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_hide_head(git_revwalk *walk); - -/** - * Push the OID pointed to by a reference - * - * The reference must point to a committish. - * - * @param walk the walker being used for the traversal - * @param refname the reference to push - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_push_ref(git_revwalk *walk, const char *refname); - -/** - * Hide the OID pointed to by a reference - * - * The reference must point to a committish. - * - * @param walk the walker being used for the traversal - * @param refname the reference to hide - * @return 0 or an error code - */ -GIT_EXTERN(int) git_revwalk_hide_ref(git_revwalk *walk, const char *refname); - -/** - * Get the next commit from the revision walk. - * - * The initial call to this method is *not* blocking when - * iterating through a repo with a time-sorting mode. - * - * Iterating with Topological or inverted modes makes the initial - * call blocking to preprocess the commit list, but this block should be - * mostly unnoticeable on most repositories (topological preprocessing - * times at 0.3s on the git.git repo). - * - * The revision walker is reset when the walk is over. - * - * @param out Pointer where to store the oid of the next commit - * @param walk the walker to pop the commit from. - * @return 0 if the next commit was found; - * GIT_ITEROVER if there are no commits left to iterate - */ -GIT_EXTERN(int) git_revwalk_next(git_oid *out, git_revwalk *walk); - -/** - * Change the sorting mode when iterating through the - * repository's contents. - * - * Changing the sorting mode resets the walker. - * - * @param walk the walker being used for the traversal. - * @param sort_mode combination of GIT_SORT_XXX flags - */ -GIT_EXTERN(void) git_revwalk_sorting(git_revwalk *walk, unsigned int sort_mode); - -/** - * Push and hide the respective endpoints of the given range. - * - * The range should be of the form - * .. - * where each is in the form accepted by 'git_revparse_single'. - * The left-hand commit will be hidden and the right-hand commit pushed. - * - * @param walk the walker being used for the traversal - * @param range the range - * @return 0 or an error code - * - */ -GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range); - -/** - * Simplify the history by first-parent - * - * No parents other than the first for each commit will be enqueued. - */ -GIT_EXTERN(void) git_revwalk_simplify_first_parent(git_revwalk *walk); - - -/** - * Free a revision walker previously allocated. - * - * @param walk traversal handle to close. If NULL nothing occurs. - */ -GIT_EXTERN(void) git_revwalk_free(git_revwalk *walk); - -/** - * Return the repository on which this walker - * is operating. - * - * @param walk the revision walker - * @return the repository being walked - */ -GIT_EXTERN(git_repository *) git_revwalk_repository(git_revwalk *walk); - -/** - * This is a callback function that user can provide to hide a - * commit and its parents. If the callback function returns non-zero value, - * then this commit and its parents will be hidden. - * - * @param commit_id oid of Commit - * @param payload User-specified pointer to data to be passed as data payload - */ -typedef int(*git_revwalk_hide_cb)( - const git_oid *commit_id, - void *payload); - -/** - * Adds a callback function to hide a commit and its parents - * - * @param walk the revision walker - * @param hide_cb callback function to hide a commit and its parents - * @param payload data payload to be passed to callback function - */ -GIT_EXTERN(int) git_revwalk_add_hide_cb( - git_revwalk *walk, - git_revwalk_hide_cb hide_cb, - void *payload); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/signature.h b/libgit2/include/git2/signature.h deleted file mode 100644 index feb1b40..0000000 --- a/libgit2/include/git2/signature.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_signature_h__ -#define INCLUDE_git_signature_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/signature.h - * @brief Git signature creation - * @defgroup git_signature Git signature creation - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create a new action signature. - * - * Call `git_signature_free()` to free the data. - * - * Note: angle brackets ('<' and '>') characters are not allowed - * to be used in either the `name` or the `email` parameter. - * - * @param out new signature, in case of error NULL - * @param name name of the person - * @param email email of the person - * @param time time when the action happened - * @param offset timezone offset in minutes for the time - * @return 0 or an error code - */ -GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const char *email, git_time_t time, int offset); - -/** - * Create a new action signature with a timestamp of 'now'. - * - * Call `git_signature_free()` to free the data. - * - * @param out new signature, in case of error NULL - * @param name name of the person - * @param email email of the person - * @return 0 or an error code - */ -GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email); - -/** - * Create a new action signature with default user and now timestamp. - * - * This looks up the user.name and user.email from the configuration and - * uses the current time as the timestamp, and creates a new signature - * based on that information. It will return GIT_ENOTFOUND if either the - * user.name or user.email are not set. - * - * @param out new signature - * @param repo repository pointer - * @return 0 on success, GIT_ENOTFOUND if config is missing, or error code - */ -GIT_EXTERN(int) git_signature_default(git_signature **out, git_repository *repo); - -/** - * Create a copy of an existing signature. All internal strings are also - * duplicated. - * - * Call `git_signature_free()` to free the data. - * - * @param dest pointer where to store the copy - * @param sig signature to duplicate - * @return 0 or an error code - */ -GIT_EXTERN(int) git_signature_dup(git_signature **dest, const git_signature *sig); - -/** - * Free an existing signature. - * - * Because the signature is not an opaque structure, it is legal to free it - * manually, but be sure to free the "name" and "email" strings in addition - * to the structure itself. - * - * @param sig signature to free - */ -GIT_EXTERN(void) git_signature_free(git_signature *sig); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/stash.h b/libgit2/include/git2/stash.h deleted file mode 100644 index 733d75a..0000000 --- a/libgit2/include/git2/stash.h +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_stash_h__ -#define INCLUDE_git_stash_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/stash.h - * @brief Git stash management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Stash flags - */ -typedef enum { - /** - * No option, default - */ - GIT_STASH_DEFAULT = 0, - - /** - * All changes already added to the index are left intact in - * the working directory - */ - GIT_STASH_KEEP_INDEX = (1 << 0), - - /** - * All untracked files are also stashed and then cleaned up - * from the working directory - */ - GIT_STASH_INCLUDE_UNTRACKED = (1 << 1), - - /** - * All ignored files are also stashed and then cleaned up from - * the working directory - */ - GIT_STASH_INCLUDE_IGNORED = (1 << 2), -} git_stash_flags; - -/** - * Save the local modifications to a new stash. - * - * @param out Object id of the commit containing the stashed state. - * This commit is also the target of the direct reference refs/stash. - * - * @param repo The owning repository. - * - * @param stasher The identity of the person performing the stashing. - * - * @param message Optional description along with the stashed state. - * - * @param flags Flags to control the stashing process. (see GIT_STASH_* above) - * - * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash, - * or error code. - */ -GIT_EXTERN(int) git_stash_save( - git_oid *out, - git_repository *repo, - const git_signature *stasher, - const char *message, - uint32_t flags); - -/** Stash application flags. */ -typedef enum { - GIT_STASH_APPLY_DEFAULT = 0, - - /* Try to reinstate not only the working tree's changes, - * but also the index's changes. - */ - GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0), -} git_stash_apply_flags; - -typedef enum { - GIT_STASH_APPLY_PROGRESS_NONE = 0, - - /** Loading the stashed data from the object database. */ - GIT_STASH_APPLY_PROGRESS_LOADING_STASH, - - /** The stored index is being analyzed. */ - GIT_STASH_APPLY_PROGRESS_ANALYZE_INDEX, - - /** The modified files are being analyzed. */ - GIT_STASH_APPLY_PROGRESS_ANALYZE_MODIFIED, - - /** The untracked and ignored files are being analyzed. */ - GIT_STASH_APPLY_PROGRESS_ANALYZE_UNTRACKED, - - /** The untracked files are being written to disk. */ - GIT_STASH_APPLY_PROGRESS_CHECKOUT_UNTRACKED, - - /** The modified files are being written to disk. */ - GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED, - - /** The stash was applied successfully. */ - GIT_STASH_APPLY_PROGRESS_DONE, -} git_stash_apply_progress_t; - -/** - * Stash application progress notification function. - * Return 0 to continue processing, or a negative value to - * abort the stash application. - */ -typedef int (*git_stash_apply_progress_cb)( - git_stash_apply_progress_t progress, - void *payload); - -/** Stash application options structure. - * - * Initialize with the `GIT_STASH_APPLY_OPTIONS_INIT` macro to set - * sensible defaults; for example: - * - * git_stash_apply_options opts = GIT_STASH_APPLY_OPTIONS_INIT; - */ -typedef struct git_stash_apply_options { - unsigned int version; - - /** See `git_stash_apply_flags_t`, above. */ - git_stash_apply_flags flags; - - /** Options to use when writing files to the working directory. */ - git_checkout_options checkout_options; - - /** Optional callback to notify the consumer of application progress. */ - git_stash_apply_progress_cb progress_cb; - void *progress_payload; -} git_stash_apply_options; - -#define GIT_STASH_APPLY_OPTIONS_VERSION 1 -#define GIT_STASH_APPLY_OPTIONS_INIT { \ - GIT_STASH_APPLY_OPTIONS_VERSION, \ - GIT_STASH_APPLY_DEFAULT, \ - GIT_CHECKOUT_OPTIONS_INIT } - -/** - * Initializes a `git_stash_apply_options` with default values. Equivalent to - * creating an instance with GIT_STASH_APPLY_OPTIONS_INIT. - * - * @param opts the `git_stash_apply_options` instance to initialize. - * @param version the version of the struct; you should pass - * `GIT_STASH_APPLY_OPTIONS_INIT` here. - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_stash_apply_init_options( - git_stash_apply_options *opts, unsigned int version); - -/** - * Apply a single stashed state from the stash list. - * - * If local changes in the working directory conflict with changes in the - * stash then GIT_EMERGECONFLICT will be returned. In this case, the index - * will always remain unmodified and all files in the working directory will - * remain unmodified. However, if you are restoring untracked files or - * ignored files and there is a conflict when applying the modified files, - * then those files will remain in the working directory. - * - * If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be - * conflicts when reinstating the index, the function will return - * GIT_EMERGECONFLICT and both the working directory and index will be left - * unmodified. - * - * Note that a minimum checkout strategy of `GIT_CHECKOUT_SAFE` is implied. - * - * @param repo The owning repository. - * @param index The position within the stash list. 0 points to the - * most recent stashed state. - * @param options Options to control how stashes are applied. - * - * @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the - * given index, GIT_EMERGECONFLICT if changes exist in the working - * directory, or an error code - */ -GIT_EXTERN(int) git_stash_apply( - git_repository *repo, - size_t index, - const git_stash_apply_options *options); - -/** - * This is a callback function you can provide to iterate over all the - * stashed states that will be invoked per entry. - * - * @param index The position within the stash list. 0 points to the - * most recent stashed state. - * @param message The stash message. - * @param stash_id The commit oid of the stashed state. - * @param payload Extra parameter to callback function. - * @return 0 to continue iterating or non-zero to stop. - */ -typedef int (*git_stash_cb)( - size_t index, - const char* message, - const git_oid *stash_id, - void *payload); - -/** - * Loop over all the stashed states and issue a callback for each one. - * - * If the callback returns a non-zero value, this will stop looping. - * - * @param repo Repository where to find the stash. - * - * @param callback Callback to invoke per found stashed state. The most - * recent stash state will be enumerated first. - * - * @param payload Extra parameter to callback function. - * - * @return 0 on success, non-zero callback return value, or error code. - */ -GIT_EXTERN(int) git_stash_foreach( - git_repository *repo, - git_stash_cb callback, - void *payload); - -/** - * Remove a single stashed state from the stash list. - * - * @param repo The owning repository. - * - * @param index The position within the stash list. 0 points to the - * most recent stashed state. - * - * @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the given - * index, or error code. - */ -GIT_EXTERN(int) git_stash_drop( - git_repository *repo, - size_t index); - -/** - * Apply a single stashed state from the stash list and remove it from the list - * if successful. - * - * @param repo The owning repository. - * @param index The position within the stash list. 0 points to the - * most recent stashed state. - * @param options Options to control how stashes are applied. - * - * @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the given - * index, or error code. (see git_stash_apply() above for details) -*/ -GIT_EXTERN(int) git_stash_pop( - git_repository *repo, - size_t index, - const git_stash_apply_options *options); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/status.h b/libgit2/include/git2/status.h deleted file mode 100644 index 6711139..0000000 --- a/libgit2/include/git2/status.h +++ /dev/null @@ -1,370 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_status_h__ -#define INCLUDE_git_status_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/status.h - * @brief Git file status routines - * @defgroup git_status Git file status routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Status flags for a single file. - * - * A combination of these values will be returned to indicate the status of - * a file. Status compares the working directory, the index, and the - * current HEAD of the repository. The `GIT_STATUS_INDEX` set of flags - * represents the status of file in the index relative to the HEAD, and the - * `GIT_STATUS_WT` set of flags represent the status of the file in the - * working directory relative to the index. - */ -typedef enum { - GIT_STATUS_CURRENT = 0, - - GIT_STATUS_INDEX_NEW = (1u << 0), - GIT_STATUS_INDEX_MODIFIED = (1u << 1), - GIT_STATUS_INDEX_DELETED = (1u << 2), - GIT_STATUS_INDEX_RENAMED = (1u << 3), - GIT_STATUS_INDEX_TYPECHANGE = (1u << 4), - - GIT_STATUS_WT_NEW = (1u << 7), - GIT_STATUS_WT_MODIFIED = (1u << 8), - GIT_STATUS_WT_DELETED = (1u << 9), - GIT_STATUS_WT_TYPECHANGE = (1u << 10), - GIT_STATUS_WT_RENAMED = (1u << 11), - GIT_STATUS_WT_UNREADABLE = (1u << 12), - - GIT_STATUS_IGNORED = (1u << 14), - GIT_STATUS_CONFLICTED = (1u << 15), -} git_status_t; - -/** - * Function pointer to receive status on individual files - * - * `path` is the relative path to the file from the root of the repository. - * - * `status_flags` is a combination of `git_status_t` values that apply. - * - * `payload` is the value you passed to the foreach function as payload. - */ -typedef int (*git_status_cb)( - const char *path, unsigned int status_flags, void *payload); - -/** - * Select the files on which to report status. - * - * With `git_status_foreach_ext`, this will control which changes get - * callbacks. With `git_status_list_new`, these will control which - * changes are included in the list. - * - * - GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default. This roughly - * matches `git status --porcelain` regarding which files are - * included and in what order. - * - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index - * comparison, not looking at working directory changes. - * - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to - * working directory comparison, not comparing the index to the HEAD. - */ -typedef enum { - GIT_STATUS_SHOW_INDEX_AND_WORKDIR = 0, - GIT_STATUS_SHOW_INDEX_ONLY = 1, - GIT_STATUS_SHOW_WORKDIR_ONLY = 2, -} git_status_show_t; - -/** - * Flags to control status callbacks - * - * - GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made - * on untracked files. These will only be made if the workdir files are - * included in the status "show" option. - * - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks. - * Again, these callbacks will only be made if the workdir files are - * included in the status "show" option. - * - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be - * made even on unmodified files. - * - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be - * skipped. This only applies if there are no pending typechanges to - * the submodule (either from or to another type). - * - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in - * untracked directories should be included. Normally if an entire - * directory is new, then just the top-level directory is included (with - * a trailing slash on the entry name). This flag says to include all - * of the individual files in the directory instead. - * - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path - * should be treated as a literal path, and not as a pathspec pattern. - * - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of - * ignored directories should be included in the status. This is like - * doing `git ls-files -o -i --exclude-standard` with core git. - * - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection - * should be processed between the head and the index and enables - * the GIT_STATUS_INDEX_RENAMED as a possible status flag. - * - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename - * detection should be run between the index and the working directory - * and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - * - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case - * sensitivity for the file system and forces the output to be in - * case-sensitive order - * - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case - * sensitivity for the file system and forces the output to be in - * case-insensitive order - * - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection - * should include rewritten files - * - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of - * doing a "soft" index reload (i.e. reloading the index data if the - * file on disk has been modified outside libgit2). - * - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache - * in the index for files that are unchanged but have out of date stat - * information in the index. It will result in less work being done on - * subsequent calls to get status. This is mutually exclusive with the - * NO_REFRESH option. - * - * Calling `git_status_foreach()` is like calling the extended version - * with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, - * and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS. Those options are bundled - * together as `GIT_STATUS_OPT_DEFAULTS` if you want them as a baseline. - */ -typedef enum { - GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1u << 0), - GIT_STATUS_OPT_INCLUDE_IGNORED = (1u << 1), - GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1u << 2), - GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1u << 3), - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1u << 4), - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1u << 5), - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = (1u << 6), - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX = (1u << 7), - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR = (1u << 8), - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY = (1u << 9), - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY = (1u << 10), - GIT_STATUS_OPT_RENAMES_FROM_REWRITES = (1u << 11), - GIT_STATUS_OPT_NO_REFRESH = (1u << 12), - GIT_STATUS_OPT_UPDATE_INDEX = (1u << 13), - GIT_STATUS_OPT_INCLUDE_UNREADABLE = (1u << 14), - GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15), -} git_status_opt_t; - -#define GIT_STATUS_OPT_DEFAULTS \ - (GIT_STATUS_OPT_INCLUDE_IGNORED | \ - GIT_STATUS_OPT_INCLUDE_UNTRACKED | \ - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS) - -/** - * Options to control how `git_status_foreach_ext()` will issue callbacks. - * - * This structure is set so that zeroing it out will give you relatively - * sane defaults. - * - * The `show` value is one of the `git_status_show_t` constants that - * control which files to scan and in what order. - * - * The `flags` value is an OR'ed combination of the `git_status_opt_t` - * values above. - * - * The `pathspec` is an array of path patterns to match (using - * fnmatch-style matching), or just an array of paths to match exactly if - * `GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH` is specified in the flags. - */ -typedef struct { - unsigned int version; - git_status_show_t show; - unsigned int flags; - git_strarray pathspec; -} git_status_options; - -#define GIT_STATUS_OPTIONS_VERSION 1 -#define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION} - -/** - * Initializes a `git_status_options` with default values. Equivalent to - * creating an instance with GIT_STATUS_OPTIONS_INIT. - * - * @param opts The `git_status_options` instance to initialize. - * @param version Version of struct; pass `GIT_STATUS_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_status_init_options( - git_status_options *opts, - unsigned int version); - -/** - * A status entry, providing the differences between the file as it exists - * in HEAD and the index, and providing the differences between the index - * and the working directory. - * - * The `status` value provides the status flags for this file. - * - * The `head_to_index` value provides detailed information about the - * differences between the file in HEAD and the file in the index. - * - * The `index_to_workdir` value provides detailed information about the - * differences between the file in the index and the file in the - * working directory. - */ -typedef struct { - git_status_t status; - git_diff_delta *head_to_index; - git_diff_delta *index_to_workdir; -} git_status_entry; - - -/** - * Gather file statuses and run a callback for each one. - * - * The callback is passed the path of the file, the status (a combination of - * the `git_status_t` values above) and the `payload` data pointer passed - * into this function. - * - * If the callback returns a non-zero value, this function will stop looping - * and return that value to caller. - * - * @param repo A repository object - * @param callback The function to call on each file - * @param payload Pointer to pass through to callback function - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_status_foreach( - git_repository *repo, - git_status_cb callback, - void *payload); - -/** - * Gather file status information and run callbacks as requested. - * - * This is an extended version of the `git_status_foreach()` API that - * allows for more granular control over which paths will be processed and - * in what order. See the `git_status_options` structure for details - * about the additional controls that this makes available. - * - * Note that if a `pathspec` is given in the `git_status_options` to filter - * the status, then the results from rename detection (if you enable it) may - * not be accurate. To do rename detection properly, this must be called - * with no `pathspec` so that all files can be considered. - * - * @param repo Repository object - * @param opts Status options structure - * @param callback The function to call on each file - * @param payload Pointer to pass through to callback function - * @return 0 on success, non-zero callback return value, or error code - */ -GIT_EXTERN(int) git_status_foreach_ext( - git_repository *repo, - const git_status_options *opts, - git_status_cb callback, - void *payload); - -/** - * Get file status for a single file. - * - * This tries to get status for the filename that you give. If no files - * match that name (in either the HEAD, index, or working directory), this - * returns GIT_ENOTFOUND. - * - * If the name matches multiple files (for example, if the `path` names a - * directory or if running on a case- insensitive filesystem and yet the - * HEAD has two entries that both match the path), then this returns - * GIT_EAMBIGUOUS because it cannot give correct results. - * - * This does not do any sort of rename detection. Renames require a set of - * targets and because of the path filtering, there is not enough - * information to check renames correctly. To check file status with rename - * detection, there is no choice but to do a full `git_status_list_new` and - * scan through looking for the path that you are interested in. - * - * @param status_flags Output combination of git_status_t values for file - * @param repo A repository object - * @param path The exact path to retrieve status for relative to the - * repository working directory - * @return 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD, - * index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files - * or if it refers to a folder, and -1 on other errors. - */ -GIT_EXTERN(int) git_status_file( - unsigned int *status_flags, - git_repository *repo, - const char *path); - -/** - * Gather file status information and populate the `git_status_list`. - * - * Note that if a `pathspec` is given in the `git_status_options` to filter - * the status, then the results from rename detection (if you enable it) may - * not be accurate. To do rename detection properly, this must be called - * with no `pathspec` so that all files can be considered. - * - * @param out Pointer to store the status results in - * @param repo Repository object - * @param opts Status options structure - * @return 0 on success or error code - */ -GIT_EXTERN(int) git_status_list_new( - git_status_list **out, - git_repository *repo, - const git_status_options *opts); - -/** - * Gets the count of status entries in this list. - * - * If there are no changes in status (at least according the options given - * when the status list was created), this can return 0. - * - * @param statuslist Existing status list object - * @return the number of status entries - */ -GIT_EXTERN(size_t) git_status_list_entrycount( - git_status_list *statuslist); - -/** - * Get a pointer to one of the entries in the status list. - * - * The entry is not modifiable and should not be freed. - * - * @param statuslist Existing status list object - * @param idx Position of the entry - * @return Pointer to the entry; NULL if out of bounds - */ -GIT_EXTERN(const git_status_entry *) git_status_byindex( - git_status_list *statuslist, - size_t idx); - -/** - * Free an existing status list - * - * @param statuslist Existing status list object - */ -GIT_EXTERN(void) git_status_list_free( - git_status_list *statuslist); - -/** - * Test if the ignore rules apply to a given file. - * - * This function checks the ignore rules to see if they would apply to the - * given file. This indicates if the file would be ignored regardless of - * whether the file is already in the index or committed to the repository. - * - * One way to think of this is if you were to do "git add ." on the - * directory containing the file, would it be added or not? - * - * @param ignored Boolean returning 0 if the file is not ignored, 1 if it is - * @param repo A repository object - * @param path The file to check ignores for, rooted at the repo's workdir. - * @return 0 if ignore rules could be processed for the file (regardless - * of whether it exists or not), or an error < 0 if they could not. - */ -GIT_EXTERN(int) git_status_should_ignore( - int *ignored, - git_repository *repo, - const char *path); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/stdint.h b/libgit2/include/git2/stdint.h deleted file mode 100644 index c66fbb8..0000000 --- a/libgit2/include/git2/stdint.h +++ /dev/null @@ -1,247 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -extern "C" { -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] diff --git a/libgit2/include/git2/strarray.h b/libgit2/include/git2/strarray.h deleted file mode 100644 index 86fa25f..0000000 --- a/libgit2/include/git2/strarray.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_strarray_h__ -#define INCLUDE_git_strarray_h__ - -#include "common.h" - -/** - * @file git2/strarray.h - * @brief Git string array routines - * @defgroup git_strarray Git string array routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Array of strings */ -typedef struct git_strarray { - char **strings; - size_t count; -} git_strarray; - -/** - * Close a string array object - * - * This method should be called on `git_strarray` objects where the strings - * array is allocated and contains allocated strings, such as what you - * would get from `git_strarray_copy()`. Not doing so, will result in a - * memory leak. - * - * This does not free the `git_strarray` itself, since the library will - * never allocate that object directly itself (it is more commonly embedded - * inside another struct or created on the stack). - * - * @param array git_strarray from which to free string data - */ -GIT_EXTERN(void) git_strarray_free(git_strarray *array); - -/** - * Copy a string array object from source to target. - * - * Note: target is overwritten and hence should be empty, otherwise its - * contents are leaked. Call git_strarray_free() if necessary. - * - * @param tgt target - * @param src source - * @return 0 on success, < 0 on allocation failure - */ -GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src); - - -/** @} */ -GIT_END_DECL - -#endif - diff --git a/libgit2/include/git2/submodule.h b/libgit2/include/git2/submodule.h deleted file mode 100644 index bc94eac..0000000 --- a/libgit2/include/git2/submodule.h +++ /dev/null @@ -1,637 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_submodule_h__ -#define INCLUDE_git_submodule_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "remote.h" -#include "checkout.h" - -/** - * @file git2/submodule.h - * @brief Git submodule management utilities - * - * Submodule support in libgit2 builds a list of known submodules and keeps - * it in the repository. The list is built from the .gitmodules file, the - * .git/config file, the index, and the HEAD tree. Items in the working - * directory that look like submodules (i.e. a git repo) but are not - * mentioned in those places won't be tracked. - * - * @defgroup git_submodule Git submodule management routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Return codes for submodule status. - * - * A combination of these flags will be returned to describe the status of a - * submodule. Depending on the "ignore" property of the submodule, some of - * the flags may never be returned because they indicate changes that are - * supposed to be ignored. - * - * Submodule info is contained in 4 places: the HEAD tree, the index, config - * files (both .git/config and .gitmodules), and the working directory. Any - * or all of those places might be missing information about the submodule - * depending on what state the repo is in. We consider all four places to - * build the combination of status flags. - * - * There are four values that are not really status, but give basic info - * about what sources of submodule data are available. These will be - * returned even if ignore is set to "ALL". - * - * * IN_HEAD - superproject head contains submodule - * * IN_INDEX - superproject index contains submodule - * * IN_CONFIG - superproject gitmodules has submodule - * * IN_WD - superproject workdir has submodule - * - * The following values will be returned so long as ignore is not "ALL". - * - * * INDEX_ADDED - in index, not in head - * * INDEX_DELETED - in head, not in index - * * INDEX_MODIFIED - index and head don't match - * * WD_UNINITIALIZED - workdir contains empty directory - * * WD_ADDED - in workdir, not index - * * WD_DELETED - in index, not workdir - * * WD_MODIFIED - index and workdir head don't match - * - * The following can only be returned if ignore is "NONE" or "UNTRACKED". - * - * * WD_INDEX_MODIFIED - submodule workdir index is dirty - * * WD_WD_MODIFIED - submodule workdir has modified files - * - * Lastly, the following will only be returned for ignore "NONE". - * - * * WD_UNTRACKED - wd contains untracked files - */ -typedef enum { - GIT_SUBMODULE_STATUS_IN_HEAD = (1u << 0), - GIT_SUBMODULE_STATUS_IN_INDEX = (1u << 1), - GIT_SUBMODULE_STATUS_IN_CONFIG = (1u << 2), - GIT_SUBMODULE_STATUS_IN_WD = (1u << 3), - GIT_SUBMODULE_STATUS_INDEX_ADDED = (1u << 4), - GIT_SUBMODULE_STATUS_INDEX_DELETED = (1u << 5), - GIT_SUBMODULE_STATUS_INDEX_MODIFIED = (1u << 6), - GIT_SUBMODULE_STATUS_WD_UNINITIALIZED = (1u << 7), - GIT_SUBMODULE_STATUS_WD_ADDED = (1u << 8), - GIT_SUBMODULE_STATUS_WD_DELETED = (1u << 9), - GIT_SUBMODULE_STATUS_WD_MODIFIED = (1u << 10), - GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11), - GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = (1u << 12), - GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13), -} git_submodule_status_t; - -#define GIT_SUBMODULE_STATUS__IN_FLAGS 0x000Fu -#define GIT_SUBMODULE_STATUS__INDEX_FLAGS 0x0070u -#define GIT_SUBMODULE_STATUS__WD_FLAGS 0x3F80u - -#define GIT_SUBMODULE_STATUS_IS_UNMODIFIED(S) \ - (((S) & ~GIT_SUBMODULE_STATUS__IN_FLAGS) == 0) - -#define GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(S) \ - (((S) & GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0) - -#define GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(S) \ - (((S) & (GIT_SUBMODULE_STATUS__WD_FLAGS & \ - ~GIT_SUBMODULE_STATUS_WD_UNINITIALIZED)) == 0) - -#define GIT_SUBMODULE_STATUS_IS_WD_DIRTY(S) \ - (((S) & (GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED | \ - GIT_SUBMODULE_STATUS_WD_WD_MODIFIED | \ - GIT_SUBMODULE_STATUS_WD_UNTRACKED)) != 0) - -/** - * Function pointer to receive each submodule - * - * @param sm git_submodule currently being visited - * @param name name of the submodule - * @param payload value you passed to the foreach function as payload - * @return 0 on success or error code - */ -typedef int (*git_submodule_cb)( - git_submodule *sm, const char *name, void *payload); - -/** - * Submodule update options structure - * - * Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, - * like this: - * - * git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT; - */ -typedef struct git_submodule_update_options { - unsigned int version; - - /** - * These options are passed to the checkout step. To disable - * checkout, set the `checkout_strategy` to - * `GIT_CHECKOUT_NONE`. Generally you will want the use - * GIT_CHECKOUT_SAFE to update files in the working - * directory. Use the `clone_checkout_strategy` field - * to set the checkout strategy that will be used in - * the case where update needs to clone the repository. - */ - git_checkout_options checkout_opts; - - /** - * Options which control the fetch, including callbacks. - * - * The callbacks to use for reporting fetch progress, and for acquiring - * credentials in the event they are needed. - */ - git_fetch_options fetch_opts; - - /** - * The checkout strategy to use when the sub repository needs to - * be cloned. Use GIT_CHECKOUT_SAFE to create all files - * in the working directory for the newly cloned repository. - */ - unsigned int clone_checkout_strategy; -} git_submodule_update_options; - -#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1 -#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \ - { GIT_CHECKOUT_OPTIONS_VERSION, \ - { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \ - GIT_FETCH_OPTIONS_INIT, GIT_CHECKOUT_SAFE } - -/** - * Initializes a `git_submodule_update_options` with default values. - * Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT. - * - * @param opts The `git_submodule_update_options` instance to initialize. - * @param version Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_submodule_update_init_options( - git_submodule_update_options *opts, unsigned int version); - -/** - * Update a submodule. This will clone a missing submodule and - * checkout the subrepository to the commit specified in the index of - * containing repository. - * - * @param submodule Submodule object - * @param init If the submodule is not initialized, setting this flag to true - * will initialize the submodule before updating. Otherwise, this will - * return an error if attempting to update an uninitialzed repository. - * but setting this to true forces them to be updated. - * @param options configuration options for the update. If NULL, the - * function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed. - * @return 0 on success, any non-zero return value from a callback - * function, or a negative value to indicate an error (use - * `giterr_last` for a detailed error message). - */ -GIT_EXTERN(int) git_submodule_update(git_submodule *submodule, int init, git_submodule_update_options *options); - -/** - * Lookup submodule information by name or path. - * - * Given either the submodule name or path (they are usually the same), this - * returns a structure describing the submodule. - * - * There are two expected error scenarios: - * - * - The submodule is not mentioned in the HEAD, the index, and the config, - * but does "exist" in the working directory (i.e. there is a subdirectory - * that appears to be a Git repository). In this case, this function - * returns GIT_EEXISTS to indicate a sub-repository exists but not in a - * state where a git_submodule can be instantiated. - * - The submodule is not mentioned in the HEAD, index, or config and the - * working directory doesn't contain a value git repo at that path. - * There may or may not be anything else at that path, but nothing that - * looks like a submodule. In this case, this returns GIT_ENOTFOUND. - * - * You must call `git_submodule_free` when done with the submodule. - * - * @param out Output ptr to submodule; pass NULL to just get return code - * @param repo The parent repository - * @param name The name of or path to the submodule; trailing slashes okay - * @return 0 on success, GIT_ENOTFOUND if submodule does not exist, - * GIT_EEXISTS if a repository is found in working directory only, - * -1 on other errors. - */ -GIT_EXTERN(int) git_submodule_lookup( - git_submodule **out, - git_repository *repo, - const char *name); - -/** - * Release a submodule - * - * @param submodule Submodule object - */ -GIT_EXTERN(void) git_submodule_free(git_submodule *submodule); - -/** - * Iterate over all tracked submodules of a repository. - * - * See the note on `git_submodule` above. This iterates over the tracked - * submodules as described therein. - * - * If you are concerned about items in the working directory that look like - * submodules but are not tracked, the diff API will generate a diff record - * for workdir items that look like submodules but are not tracked, showing - * them as added in the workdir. Also, the status API will treat the entire - * subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item. - * - * @param repo The repository - * @param callback Function to be called with the name of each submodule. - * Return a non-zero value to terminate the iteration. - * @param payload Extra data to pass to callback - * @return 0 on success, -1 on error, or non-zero return value of callback - */ -GIT_EXTERN(int) git_submodule_foreach( - git_repository *repo, - git_submodule_cb callback, - void *payload); - -/** - * Set up a new git submodule for checkout. - * - * This does "git submodule add" up to the fetch and checkout of the - * submodule contents. It preps a new submodule, creates an entry in - * .gitmodules and creates an empty initialized repository either at the - * given path in the working directory or in .git/modules with a gitlink - * from the working directory to the new repo. - * - * To fully emulate "git submodule add" call this function, then open the - * submodule repo and perform the clone step as needed. Lastly, call - * `git_submodule_add_finalize()` to wrap up adding the new submodule and - * .gitmodules to the index to be ready to commit. - * - * You must call `git_submodule_free` on the submodule object when done. - * - * @param out The newly created submodule ready to open for clone - * @param repo The repository in which you want to create the submodule - * @param url URL for the submodule's remote - * @param path Path at which the submodule should be created - * @param use_gitlink Should workdir contain a gitlink to the repo in - * .git/modules vs. repo directly in workdir. - * @return 0 on success, GIT_EEXISTS if submodule already exists, - * -1 on other errors. - */ -GIT_EXTERN(int) git_submodule_add_setup( - git_submodule **out, - git_repository *repo, - const char *url, - const char *path, - int use_gitlink); - -/** - * Resolve the setup of a new git submodule. - * - * This should be called on a submodule once you have called add setup - * and done the clone of the submodule. This adds the .gitmodules file - * and the newly cloned submodule to the index to be ready to be committed - * (but doesn't actually do the commit). - * - * @param submodule The submodule to finish adding. - */ -GIT_EXTERN(int) git_submodule_add_finalize(git_submodule *submodule); - -/** - * Add current submodule HEAD commit to index of superproject. - * - * @param submodule The submodule to add to the index - * @param write_index Boolean if this should immediately write the index - * file. If you pass this as false, you will have to get the - * git_index and explicitly call `git_index_write()` on it to - * save the change. - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_submodule_add_to_index( - git_submodule *submodule, - int write_index); - -/** - * Get the containing repository for a submodule. - * - * This returns a pointer to the repository that contains the submodule. - * This is a just a reference to the repository that was passed to the - * original `git_submodule_lookup()` call, so if that repository has been - * freed, then this may be a dangling reference. - * - * @param submodule Pointer to submodule object - * @return Pointer to `git_repository` - */ -GIT_EXTERN(git_repository *) git_submodule_owner(git_submodule *submodule); - -/** - * Get the name of submodule. - * - * @param submodule Pointer to submodule object - * @return Pointer to the submodule name - */ -GIT_EXTERN(const char *) git_submodule_name(git_submodule *submodule); - -/** - * Get the path to the submodule. - * - * The path is almost always the same as the submodule name, but the - * two are actually not required to match. - * - * @param submodule Pointer to submodule object - * @return Pointer to the submodule path - */ -GIT_EXTERN(const char *) git_submodule_path(git_submodule *submodule); - -/** - * Get the URL for the submodule. - * - * @param submodule Pointer to submodule object - * @return Pointer to the submodule url - */ -GIT_EXTERN(const char *) git_submodule_url(git_submodule *submodule); - -/** - * Resolve a submodule url relative to the given repository. - * - * @param out buffer to store the absolute submodule url in - * @param repo Pointer to repository object - * @param url Relative url - * @return 0 or an error code - */ -GIT_EXTERN(int) git_submodule_resolve_url(git_buf *out, git_repository *repo, const char *url); - -/** -* Get the branch for the submodule. -* -* @param submodule Pointer to submodule object -* @return Pointer to the submodule branch -*/ -GIT_EXTERN(const char *) git_submodule_branch(git_submodule *submodule); - -/** - * Set the branch for the submodule in the configuration - * - * After calling this, you may wish to call `git_submodule_sync()` to - * write the changes to the checked out submodule repository. - * - * @param repo the repository to affect - * @param name the name of the submodule to configure - * @param branch Branch that should be used for the submodule - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_submodule_set_branch(git_repository *repo, const char *name, const char *branch); - -/** - * Set the URL for the submodule in the configuration - * - * - * After calling this, you may wish to call `git_submodule_sync()` to - * write the changes to the checked out submodule repository. - * - * @param repo the repository to affect - * @param name the name of the submodule to configure - * @param url URL that should be used for the submodule - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_submodule_set_url(git_repository *repo, const char *name, const char *url); - -/** - * Get the OID for the submodule in the index. - * - * @param submodule Pointer to submodule object - * @return Pointer to git_oid or NULL if submodule is not in index. - */ -GIT_EXTERN(const git_oid *) git_submodule_index_id(git_submodule *submodule); - -/** - * Get the OID for the submodule in the current HEAD tree. - * - * @param submodule Pointer to submodule object - * @return Pointer to git_oid or NULL if submodule is not in the HEAD. - */ -GIT_EXTERN(const git_oid *) git_submodule_head_id(git_submodule *submodule); - -/** - * Get the OID for the submodule in the current working directory. - * - * This returns the OID that corresponds to looking up 'HEAD' in the checked - * out submodule. If there are pending changes in the index or anything - * else, this won't notice that. You should call `git_submodule_status()` - * for a more complete picture about the state of the working directory. - * - * @param submodule Pointer to submodule object - * @return Pointer to git_oid or NULL if submodule is not checked out. - */ -GIT_EXTERN(const git_oid *) git_submodule_wd_id(git_submodule *submodule); - -/** - * Get the ignore rule that will be used for the submodule. - * - * These values control the behavior of `git_submodule_status()` for this - * submodule. There are four ignore values: - * - * - **GIT_SUBMODULE_IGNORE_NONE** will consider any change to the contents - * of the submodule from a clean checkout to be dirty, including the - * addition of untracked files. This is the default if unspecified. - * - **GIT_SUBMODULE_IGNORE_UNTRACKED** examines the contents of the - * working tree (i.e. call `git_status_foreach()` on the submodule) but - * UNTRACKED files will not count as making the submodule dirty. - * - **GIT_SUBMODULE_IGNORE_DIRTY** means to only check if the HEAD of the - * submodule has moved for status. This is fast since it does not need to - * scan the working tree of the submodule at all. - * - **GIT_SUBMODULE_IGNORE_ALL** means not to open the submodule repo. - * The working directory will be consider clean so long as there is a - * checked out version present. - * - * @param submodule The submodule to check - * @return The current git_submodule_ignore_t valyue what will be used for - * this submodule. - */ -GIT_EXTERN(git_submodule_ignore_t) git_submodule_ignore( - git_submodule *submodule); - -/** - * Set the ignore rule for the submodule in the configuration - * - * This does not affect any currently-loaded instances. - * - * @param repo the repository to affect - * @param name the name of the submdule - * @param ignore The new value for the ignore rule - * @return 0 or an error code - */ -GIT_EXTERN(int) git_submodule_set_ignore( - git_repository *repo, - const char *name, - git_submodule_ignore_t ignore); - -/** - * Get the update rule that will be used for the submodule. - * - * This value controls the behavior of the `git submodule update` command. - * There are four useful values documented with `git_submodule_update_t`. - * - * @param submodule The submodule to check - * @return The current git_submodule_update_t value that will be used - * for this submodule. - */ -GIT_EXTERN(git_submodule_update_t) git_submodule_update_strategy( - git_submodule *submodule); - -/** - * Set the update rule for the submodule in the configuration - * - * This setting won't affect any existing instances. - * - * @param repo the repository to affect - * @param name the name of the submodule to configure - * @param update The new value to use - * @return 0 or an error code - */ -GIT_EXTERN(int) git_submodule_set_update( - git_repository *repo, - const char *name, - git_submodule_update_t update); - -/** - * Read the fetchRecurseSubmodules rule for a submodule. - * - * This accesses the submodule..fetchRecurseSubmodules value for - * the submodule that controls fetching behavior for the submodule. - * - * Note that at this time, libgit2 does not honor this setting and the - * fetch functionality current ignores submodules. - * - * @return 0 if fetchRecurseSubmodules is false, 1 if true - */ -GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules( - git_submodule *submodule); - -/** - * Set the fetchRecurseSubmodules rule for a submodule in the configuration - * - * This setting won't affect any existing instances. - * - * @param repo the repository to affect - * @param name the submodule to configure - * @param fetch_recurse_submodules Boolean value - * @return old value for fetchRecurseSubmodules - */ -GIT_EXTERN(int) git_submodule_set_fetch_recurse_submodules( - git_repository *repo, - const char *name, - git_submodule_recurse_t fetch_recurse_submodules); - -/** - * Copy submodule info into ".git/config" file. - * - * Just like "git submodule init", this copies information about the - * submodule into ".git/config". You can use the accessor functions - * above to alter the in-memory git_submodule object and control what - * is written to the config, overriding what is in .gitmodules. - * - * @param submodule The submodule to write into the superproject config - * @param overwrite By default, existing entries will not be overwritten, - * but setting this to true forces them to be updated. - * @return 0 on success, <0 on failure. - */ -GIT_EXTERN(int) git_submodule_init(git_submodule *submodule, int overwrite); - -/** - * Set up the subrepository for a submodule in preparation for clone. - * - * This function can be called to init and set up a submodule - * repository from a submodule in preparation to clone it from - * its remote. - * - * @param out Output pointer to the created git repository. - * @param sm The submodule to create a new subrepository from. - * @param use_gitlink Should the workdir contain a gitlink to - * the repo in .git/modules vs. repo directly in workdir. - * @return 0 on success, <0 on failure. - */ -GIT_EXTERN(int) git_submodule_repo_init( - git_repository **out, - const git_submodule *sm, - int use_gitlink); - -/** - * Copy submodule remote info into submodule repo. - * - * This copies the information about the submodules URL into the checked out - * submodule config, acting like "git submodule sync". This is useful if - * you have altered the URL for the submodule (or it has been altered by a - * fetch of upstream changes) and you need to update your local repo. - */ -GIT_EXTERN(int) git_submodule_sync(git_submodule *submodule); - -/** - * Open the repository for a submodule. - * - * This is a newly opened repository object. The caller is responsible for - * calling `git_repository_free()` on it when done. Multiple calls to this - * function will return distinct `git_repository` objects. This will only - * work if the submodule is checked out into the working directory. - * - * @param repo Pointer to the submodule repo which was opened - * @param submodule Submodule to be opened - * @return 0 on success, <0 if submodule repo could not be opened. - */ -GIT_EXTERN(int) git_submodule_open( - git_repository **repo, - git_submodule *submodule); - -/** - * Reread submodule info from config, index, and HEAD. - * - * Call this to reread cached submodule information for this submodule if - * you have reason to believe that it has changed. - * - * @param submodule The submodule to reload - * @param force Force reload even if the data doesn't seem out of date - * @return 0 on success, <0 on error - */ -GIT_EXTERN(int) git_submodule_reload(git_submodule *submodule, int force); - -/** - * Get the status for a submodule. - * - * This looks at a submodule and tries to determine the status. It - * will return a combination of the `GIT_SUBMODULE_STATUS` values above. - * How deeply it examines the working directory to do this will depend - * on the `git_submodule_ignore_t` value for the submodule. - * - * @param status Combination of `GIT_SUBMODULE_STATUS` flags - * @param repo the repository in which to look - * @param name name of the submodule - * @param ignore the ignore rules to follow - * @return 0 on success, <0 on error - */ -GIT_EXTERN(int) git_submodule_status( - unsigned int *status, - git_repository *repo, - const char *name, - git_submodule_ignore_t ignore); - -/** - * Get the locations of submodule information. - * - * This is a bit like a very lightweight version of `git_submodule_status`. - * It just returns a made of the first four submodule status values (i.e. - * the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the - * submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). - * This can be useful if you want to know if the submodule is present in the - * working directory at this point in time, etc. - * - * @param location_status Combination of first four `GIT_SUBMODULE_STATUS` flags - * @param submodule Submodule for which to get status - * @return 0 on success, <0 on error - */ -GIT_EXTERN(int) git_submodule_location( - unsigned int *location_status, - git_submodule *submodule); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/commit.h b/libgit2/include/git2/sys/commit.h deleted file mode 100644 index 627d3ae..0000000 --- a/libgit2/include/git2/sys/commit.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_commit_h__ -#define INCLUDE_sys_git_commit_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" - -/** - * @file git2/sys/commit.h - * @brief Low-level Git commit creation - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create new commit in the repository from a list of `git_oid` values. - * - * See documentation for `git_commit_create()` for information about the - * parameters, as the meaning is identical excepting that `tree` and - * `parents` now take `git_oid`. This is a dangerous API in that nor - * the `tree`, neither the `parents` list of `git_oid`s are checked for - * validity. - * - * @see git_commit_create - */ -GIT_EXTERN(int) git_commit_create_from_ids( - git_oid *id, - git_repository *repo, - const char *update_ref, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message, - const git_oid *tree, - size_t parent_count, - const git_oid *parents[]); - -/** - * Callback function to return parents for commit. - * - * This is invoked with the count of the number of parents processed so far - * along with the user supplied payload. This should return a git_oid of - * the next parent or NULL if all parents have been provided. - */ -typedef const git_oid *(*git_commit_parent_callback)(size_t idx, void *payload); - -/** - * Create a new commit in the repository with an callback to supply parents. - * - * See documentation for `git_commit_create()` for information about the - * parameters, as the meaning is identical excepting that `tree` takes a - * `git_oid` and doesn't check for validity, and `parent_cb` is invoked - * with `parent_payload` and should return `git_oid` values or NULL to - * indicate that all parents are accounted for. - * - * @see git_commit_create - */ -GIT_EXTERN(int) git_commit_create_from_callback( - git_oid *id, - git_repository *repo, - const char *update_ref, - const git_signature *author, - const git_signature *committer, - const char *message_encoding, - const char *message, - const git_oid *tree, - git_commit_parent_callback parent_cb, - void *parent_payload); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/config.h b/libgit2/include/git2/sys/config.h deleted file mode 100644 index 4dad6da..0000000 --- a/libgit2/include/git2/sys/config.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_config_backend_h__ -#define INCLUDE_sys_git_config_backend_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/config.h" - -/** - * @file git2/sys/config.h - * @brief Git config backend routines - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Every iterator must have this struct as its first element, so the - * API can talk to it. You'd define your iterator as - * - * struct my_iterator { - * git_config_iterator parent; - * ... - * } - * - * and assign `iter->parent.backend` to your `git_config_backend`. - */ -struct git_config_iterator { - git_config_backend *backend; - unsigned int flags; - - /** - * Return the current entry and advance the iterator. The - * memory belongs to the library. - */ - int (*next)(git_config_entry **entry, git_config_iterator *iter); - - /** - * Free the iterator - */ - void (*free)(git_config_iterator *iter); -}; - -/** - * Generic backend that implements the interface to - * access a configuration file - */ -struct git_config_backend { - unsigned int version; - /** True if this backend is for a snapshot */ - int readonly; - struct git_config *cfg; - - /* Open means open the file/database and parse if necessary */ - int (*open)(struct git_config_backend *, git_config_level_t level); - int (*get)(struct git_config_backend *, const char *key, git_config_entry **entry); - int (*set)(struct git_config_backend *, const char *key, const char *value); - int (*set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value); - int (*del)(struct git_config_backend *, const char *key); - int (*del_multivar)(struct git_config_backend *, const char *key, const char *regexp); - int (*iterator)(git_config_iterator **, struct git_config_backend *); - /** Produce a read-only version of this backend */ - int (*snapshot)(struct git_config_backend **, struct git_config_backend *); - /** - * Lock this backend. - * - * Prevent any writes to the data store backing this - * backend. Any updates must not be visible to any other - * readers. - */ - int (*lock)(struct git_config_backend *); - /** - * Unlock the data store backing this backend. If success is - * true, the changes should be committed, otherwise rolled - * back. - */ - int (*unlock)(struct git_config_backend *, int success); - void (*free)(struct git_config_backend *); -}; -#define GIT_CONFIG_BACKEND_VERSION 1 -#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION} - -/** - * Initializes a `git_config_backend` with default values. Equivalent to - * creating an instance with GIT_CONFIG_BACKEND_INIT. - * - * @param backend the `git_config_backend` struct to initialize. - * @param version Version of struct; pass `GIT_CONFIG_BACKEND_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_config_init_backend( - git_config_backend *backend, - unsigned int version); - -/** - * Add a generic config file instance to an existing config - * - * Note that the configuration object will free the file - * automatically. - * - * Further queries on this config object will access each - * of the config file instances in order (instances with - * a higher priority level will be accessed first). - * - * @param cfg the configuration to add the file to - * @param file the configuration file (backend) to add - * @param level the priority level of the backend - * @param force if a config file already exists for the given - * priority level, replace it - * @return 0 on success, GIT_EEXISTS when adding more than one file - * for a given priority level (and force_replace set to 0), or error code - */ -GIT_EXTERN(int) git_config_add_backend( - git_config *cfg, - git_config_backend *file, - git_config_level_t level, - int force); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/diff.h b/libgit2/include/git2/sys/diff.h deleted file mode 100644 index aefd7b9..0000000 --- a/libgit2/include/git2/sys/diff.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_diff_h__ -#define INCLUDE_sys_git_diff_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" -#include "git2/diff.h" -#include "git2/status.h" - -/** - * @file git2/sys/diff.h - * @brief Low-level Git diff utilities - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Diff print callback that writes to a git_buf. - * - * This function is provided not for you to call it directly, but instead - * so you can use it as a function pointer to the `git_diff_print` or - * `git_patch_print` APIs. When using those APIs, you specify a callback - * to actually handle the diff and/or patch data. - * - * Use this callback to easily write that data to a `git_buf` buffer. You - * must pass a `git_buf *` value as the payload to the `git_diff_print` - * and/or `git_patch_print` function. The data will be appended to the - * buffer (after any existing content). - */ -GIT_EXTERN(int) git_diff_print_callback__to_buf( - const git_diff_delta *delta, - const git_diff_hunk *hunk, - const git_diff_line *line, - void *payload); /**< payload must be a `git_buf *` */ - -/** - * Diff print callback that writes to stdio FILE handle. - * - * This function is provided not for you to call it directly, but instead - * so you can use it as a function pointer to the `git_diff_print` or - * `git_patch_print` APIs. When using those APIs, you specify a callback - * to actually handle the diff and/or patch data. - * - * Use this callback to easily write that data to a stdio FILE handle. You - * must pass a `FILE *` value (such as `stdout` or `stderr` or the return - * value from `fopen()`) as the payload to the `git_diff_print` - * and/or `git_patch_print` function. If you pass NULL, this will write - * data to `stdout`. - */ -GIT_EXTERN(int) git_diff_print_callback__to_file_handle( - const git_diff_delta *delta, - const git_diff_hunk *hunk, - const git_diff_line *line, - void *payload); /**< payload must be a `FILE *` */ - - -/** - * Performance data from diffing - */ -typedef struct { - unsigned int version; - size_t stat_calls; /**< Number of stat() calls performed */ - size_t oid_calculations; /**< Number of ID calculations */ -} git_diff_perfdata; - -#define GIT_DIFF_PERFDATA_VERSION 1 -#define GIT_DIFF_PERFDATA_INIT {GIT_DIFF_PERFDATA_VERSION,0,0} - -/** - * Get performance data for a diff object. - * - * @param out Structure to be filled with diff performance data - * @param diff Diff to read performance data from - * @return 0 for success, <0 for error - */ -GIT_EXTERN(int) git_diff_get_perfdata( - git_diff_perfdata *out, const git_diff *diff); - -/** - * Get performance data for diffs from a git_status_list - */ -GIT_EXTERN(int) git_status_list_get_perfdata( - git_diff_perfdata *out, const git_status_list *status); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/filter.h b/libgit2/include/git2/sys/filter.h deleted file mode 100644 index d0e5d4d..0000000 --- a/libgit2/include/git2/sys/filter.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_filter_h__ -#define INCLUDE_sys_git_filter_h__ - -#include "git2/filter.h" - -/** - * @file git2/sys/filter.h - * @brief Git filter backend and plugin routines - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Look up a filter by name - * - * @param name The name of the filter - * @return Pointer to the filter object or NULL if not found - */ -GIT_EXTERN(git_filter *) git_filter_lookup(const char *name); - -#define GIT_FILTER_CRLF "crlf" -#define GIT_FILTER_IDENT "ident" - -/** - * This is priority that the internal CRLF filter will be registered with - */ -#define GIT_FILTER_CRLF_PRIORITY 0 - -/** - * This is priority that the internal ident filter will be registered with - */ -#define GIT_FILTER_IDENT_PRIORITY 100 - -/** - * This is priority to use with a custom filter to imitate a core Git - * filter driver, so that it will be run last on checkout and first on - * checkin. You do not have to use this, but it helps compatibility. - */ -#define GIT_FILTER_DRIVER_PRIORITY 200 - -/** - * Create a new empty filter list - * - * Normally you won't use this because `git_filter_list_load` will create - * the filter list for you, but you can use this in combination with the - * `git_filter_lookup` and `git_filter_list_push` functions to assemble - * your own chains of filters. - */ -GIT_EXTERN(int) git_filter_list_new( - git_filter_list **out, - git_repository *repo, - git_filter_mode_t mode, - uint32_t options); - -/** - * Add a filter to a filter list with the given payload. - * - * Normally you won't have to do this because the filter list is created - * by calling the "check" function on registered filters when the filter - * attributes are set, but this does allow more direct manipulation of - * filter lists when desired. - * - * Note that normally the "check" function can set up a payload for the - * filter. Using this function, you can either pass in a payload if you - * know the expected payload format, or you can pass NULL. Some filters - * may fail with a NULL payload. Good luck! - */ -GIT_EXTERN(int) git_filter_list_push( - git_filter_list *fl, git_filter *filter, void *payload); - -/** - * Look up how many filters are in the list - * - * We will attempt to apply all of these filters to any data passed in, - * but note that the filter apply action still has the option of skipping - * data that is passed in (for example, the CRLF filter will skip data - * that appears to be binary). - * - * @param fl A filter list - * @return The number of filters in the list - */ -GIT_EXTERN(size_t) git_filter_list_length(const git_filter_list *fl); - -/** - * A filter source represents a file/blob to be processed - */ -typedef struct git_filter_source git_filter_source; - -/** - * Get the repository that the source data is coming from. - */ -GIT_EXTERN(git_repository *) git_filter_source_repo(const git_filter_source *src); - -/** - * Get the path that the source data is coming from. - */ -GIT_EXTERN(const char *) git_filter_source_path(const git_filter_source *src); - -/** - * Get the file mode of the source file - * If the mode is unknown, this will return 0 - */ -GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src); - -/** - * Get the OID of the source - * If the OID is unknown (often the case with GIT_FILTER_CLEAN) then - * this will return NULL. - */ -GIT_EXTERN(const git_oid *) git_filter_source_id(const git_filter_source *src); - -/** - * Get the git_filter_mode_t to be used - */ -GIT_EXTERN(git_filter_mode_t) git_filter_source_mode(const git_filter_source *src); - -/** - * Get the combination git_filter_flag_t options to be applied - */ -GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src); - -/** - * Initialize callback on filter - * - * Specified as `filter.initialize`, this is an optional callback invoked - * before a filter is first used. It will be called once at most. - * - * If non-NULL, the filter's `initialize` callback will be invoked right - * before the first use of the filter, so you can defer expensive - * initialization operations (in case libgit2 is being used in a way that - * doesn't need the filter). - */ -typedef int (*git_filter_init_fn)(git_filter *self); - -/** - * Shutdown callback on filter - * - * Specified as `filter.shutdown`, this is an optional callback invoked - * when the filter is unregistered or when libgit2 is shutting down. It - * will be called once at most and should release resources as needed. - * This may be called even if the `initialize` callback was not made. - * - * Typically this function will free the `git_filter` object itself. - */ -typedef void (*git_filter_shutdown_fn)(git_filter *self); - -/** - * Callback to decide if a given source needs this filter - * - * Specified as `filter.check`, this is an optional callback that checks - * if filtering is needed for a given source. - * - * It should return 0 if the filter should be applied (i.e. success), - * GIT_PASSTHROUGH if the filter should not be applied, or an error code - * to fail out of the filter processing pipeline and return to the caller. - * - * The `attr_values` will be set to the values of any attributes given in - * the filter definition. See `git_filter` below for more detail. - * - * The `payload` will be a pointer to a reference payload for the filter. - * This will start as NULL, but `check` can assign to this pointer for - * later use by the `apply` callback. Note that the value should be heap - * allocated (not stack), so that it doesn't go away before the `apply` - * callback can use it. If a filter allocates and assigns a value to the - * `payload`, it will need a `cleanup` callback to free the payload. - */ -typedef int (*git_filter_check_fn)( - git_filter *self, - void **payload, /* points to NULL ptr on entry, may be set */ - const git_filter_source *src, - const char **attr_values); - -/** - * Callback to actually perform the data filtering - * - * Specified as `filter.apply`, this is the callback that actually filters - * data. If it successfully writes the output, it should return 0. Like - * `check`, it can return GIT_PASSTHROUGH to indicate that the filter - * doesn't want to run. Other error codes will stop filter processing and - * return to the caller. - * - * The `payload` value will refer to any payload that was set by the - * `check` callback. It may be read from or written to as needed. - */ -typedef int (*git_filter_apply_fn)( - git_filter *self, - void **payload, /* may be read and/or set */ - git_buf *to, - const git_buf *from, - const git_filter_source *src); - -typedef int (*git_filter_stream_fn)( - git_writestream **out, - git_filter *self, - void **payload, - const git_filter_source *src, - git_writestream *next); - -/** - * Callback to clean up after filtering has been applied - * - * Specified as `filter.cleanup`, this is an optional callback invoked - * after the filter has been applied. If the `check` or `apply` callbacks - * allocated a `payload` to keep per-source filter state, use this - * callback to free that payload and release resources as required. - */ -typedef void (*git_filter_cleanup_fn)( - git_filter *self, - void *payload); - -/** - * Filter structure used to register custom filters. - * - * To associate extra data with a filter, allocate extra data and put the - * `git_filter` struct at the start of your data buffer, then cast the - * `self` pointer to your larger structure when your callback is invoked. - */ -struct git_filter { - /** The `version` field should be set to `GIT_FILTER_VERSION`. */ - unsigned int version; - - /** - * A whitespace-separated list of attribute names to check for this - * filter (e.g. "eol crlf text"). If the attribute name is bare, it - * will be simply loaded and passed to the `check` callback. If it - * has a value (i.e. "name=value"), the attribute must match that - * value for the filter to be applied. The value may be a wildcard - * (eg, "name=*"), in which case the filter will be invoked for any - * value for the given attribute name. See the attribute parameter - * of the `check` callback for the attribute value that was specified. - */ - const char *attributes; - - /** Called when the filter is first used for any file. */ - git_filter_init_fn initialize; - - /** Called when the filter is removed or unregistered from the system. */ - git_filter_shutdown_fn shutdown; - - /** - * Called to determine whether the filter should be invoked for a - * given file. If this function returns `GIT_PASSTHROUGH` then the - * `apply` function will not be invoked and the contents will be passed - * through unmodified. - */ - git_filter_check_fn check; - - /** - * Called to actually apply the filter to file contents. If this - * function returns `GIT_PASSTHROUGH` then the contents will be passed - * through unmodified. - */ - git_filter_apply_fn apply; - - /** - * Called to apply the filter in a streaming manner. If this is not - * specified then the system will call `apply` with the whole buffer. - */ - git_filter_stream_fn stream; - - /** Called when the system is done filtering for a file. */ - git_filter_cleanup_fn cleanup; -}; - -#define GIT_FILTER_VERSION 1 - -/** - * Register a filter under a given name with a given priority. - * - * As mentioned elsewhere, the initialize callback will not be invoked - * immediately. It is deferred until the filter is used in some way. - * - * A filter's attribute checks and `check` and `apply` callbacks will be - * issued in order of `priority` on smudge (to workdir), and in reverse - * order of `priority` on clean (to odb). - * - * Two filters are preregistered with libgit2: - * - GIT_FILTER_CRLF with priority 0 - * - GIT_FILTER_IDENT with priority 100 - * - * Currently the filter registry is not thread safe, so any registering or - * deregistering of filters must be done outside of any possible usage of - * the filters (i.e. during application setup or shutdown). - * - * @param name A name by which the filter can be referenced. Attempting - * to register with an in-use name will return GIT_EEXISTS. - * @param filter The filter definition. This pointer will be stored as is - * by libgit2 so it must be a durable allocation (either static - * or on the heap). - * @param priority The priority for filter application - * @return 0 on successful registry, error code <0 on failure - */ -GIT_EXTERN(int) git_filter_register( - const char *name, git_filter *filter, int priority); - -/** - * Remove the filter with the given name - * - * Attempting to remove the builtin libgit2 filters is not permitted and - * will return an error. - * - * Currently the filter registry is not thread safe, so any registering or - * deregistering of filters must be done outside of any possible usage of - * the filters (i.e. during application setup or shutdown). - * - * @param name The name under which the filter was registered - * @return 0 on success, error code <0 on failure - */ -GIT_EXTERN(int) git_filter_unregister(const char *name); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/hashsig.h b/libgit2/include/git2/sys/hashsig.h deleted file mode 100644 index 09c19ae..0000000 --- a/libgit2/include/git2/sys/hashsig.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_hashsig_h__ -#define INCLUDE_sys_hashsig_h__ - -#include "git2/common.h" - -GIT_BEGIN_DECL - -/** - * Similarity signature of arbitrary text content based on line hashes - */ -typedef struct git_hashsig git_hashsig; - -/** - * Options for hashsig computation - * - * The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, - * GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined. - */ -typedef enum { - /** - * Use all data - */ - GIT_HASHSIG_NORMAL = 0, - - /** - * Ignore whitespace - */ - GIT_HASHSIG_IGNORE_WHITESPACE = (1 << 0), - - /** - * Ignore \r and all space after \n - */ - GIT_HASHSIG_SMART_WHITESPACE = (1 << 1), - - /** - * Allow hashing of small files - */ - GIT_HASHSIG_ALLOW_SMALL_FILES = (1 << 2) -} git_hashsig_option_t; - -/** - * Compute a similarity signature for a text buffer - * - * If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the - * whitespace will be removed from the buffer while it is being processed, - * modifying the buffer in place. Sorry about that! - * - * @param out The computed similarity signature. - * @param buf The input buffer. - * @param buflen The input buffer size. - * @param opts The signature computation options (see above). - * @return 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to - * compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or - * error code. - */ -GIT_EXTERN(int) git_hashsig_create( - git_hashsig **out, - const char *buf, - size_t buflen, - git_hashsig_option_t opts); - -/** - * Compute a similarity signature for a text file - * - * This walks through the file, only loading a maximum of 4K of file data at - * a time. Otherwise, it acts just like `git_hashsig_create`. - * - * @param out The computed similarity signature. - * @param path The path to the input file. - * @param opts The signature computation options (see above). - * @return 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to - * compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or - * error code. - */ -GIT_EXTERN(int) git_hashsig_create_fromfile( - git_hashsig **out, - const char *path, - git_hashsig_option_t opts); - -/** - * Release memory for a content similarity signature - * - * @param sig The similarity signature to free. - */ -GIT_EXTERN(void) git_hashsig_free(git_hashsig *sig); - -/** - * Measure similarity score between two similarity signatures - * - * @param a The first similarity signature to compare. - * @param b The second similarity signature to compare. - * @return [0 to 100] on success as the similarity score, or error code. - */ -GIT_EXTERN(int) git_hashsig_compare( - const git_hashsig *a, - const git_hashsig *b); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/index.h b/libgit2/include/git2/sys/index.h deleted file mode 100644 index 2e2b87e..0000000 --- a/libgit2/include/git2/sys/index.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_index_h__ -#define INCLUDE_sys_git_index_h__ - -/** - * @file git2/sys/index.h - * @brief Low-level Git index manipulation routines - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Representation of a rename conflict entry in the index. */ -typedef struct git_index_name_entry { - char *ancestor; - char *ours; - char *theirs; -} git_index_name_entry; - -/** Representation of a resolve undo entry in the index. */ -typedef struct git_index_reuc_entry { - uint32_t mode[3]; - git_oid oid[3]; - char *path; -} git_index_reuc_entry; - -/** @name Conflict Name entry functions - * - * These functions work on rename conflict entries. - */ -/**@{*/ - -/** - * Get the count of filename conflict entries currently in the index. - * - * @param index an existing index object - * @return integer of count of current filename conflict entries - */ -GIT_EXTERN(size_t) git_index_name_entrycount(git_index *index); - -/** - * Get a filename conflict entry from the index. - * - * The returned entry is read-only and should not be modified - * or freed by the caller. - * - * @param index an existing index object - * @param n the position of the entry - * @return a pointer to the filename conflict entry; NULL if out of bounds - */ -GIT_EXTERN(const git_index_name_entry *) git_index_name_get_byindex( - git_index *index, size_t n); - -/** - * Record the filenames involved in a rename conflict. - * - * @param index an existing index object - * @param ancestor the path of the file as it existed in the ancestor - * @param ours the path of the file as it existed in our tree - * @param theirs the path of the file as it existed in their tree - */ -GIT_EXTERN(int) git_index_name_add(git_index *index, - const char *ancestor, const char *ours, const char *theirs); - -/** - * Remove all filename conflict entries. - * - * @param index an existing index object - */ -GIT_EXTERN(void) git_index_name_clear(git_index *index); - -/**@}*/ - -/** @name Resolve Undo (REUC) index entry manipulation. - * - * These functions work on the Resolve Undo index extension and contains - * data about the original files that led to a merge conflict. - */ -/**@{*/ - -/** - * Get the count of resolve undo entries currently in the index. - * - * @param index an existing index object - * @return integer of count of current resolve undo entries - */ -GIT_EXTERN(size_t) git_index_reuc_entrycount(git_index *index); - -/** - * Finds the resolve undo entry that points to the given path in the Git - * index. - * - * @param at_pos the address to which the position of the reuc entry is written (optional) - * @param index an existing index object - * @param path path to search - * @return 0 if found, < 0 otherwise (GIT_ENOTFOUND) - */ -GIT_EXTERN(int) git_index_reuc_find(size_t *at_pos, git_index *index, const char *path); - -/** - * Get a resolve undo entry from the index. - * - * The returned entry is read-only and should not be modified - * or freed by the caller. - * - * @param index an existing index object - * @param path path to search - * @return the resolve undo entry; NULL if not found - */ -GIT_EXTERN(const git_index_reuc_entry *) git_index_reuc_get_bypath(git_index *index, const char *path); - -/** - * Get a resolve undo entry from the index. - * - * The returned entry is read-only and should not be modified - * or freed by the caller. - * - * @param index an existing index object - * @param n the position of the entry - * @return a pointer to the resolve undo entry; NULL if out of bounds - */ -GIT_EXTERN(const git_index_reuc_entry *) git_index_reuc_get_byindex(git_index *index, size_t n); - -/** - * Adds a resolve undo entry for a file based on the given parameters. - * - * The resolve undo entry contains the OIDs of files that were involved - * in a merge conflict after the conflict has been resolved. This allows - * conflicts to be re-resolved later. - * - * If there exists a resolve undo entry for the given path in the index, - * it will be removed. - * - * This method will fail in bare index instances. - * - * @param index an existing index object - * @param path filename to add - * @param ancestor_mode mode of the ancestor file - * @param ancestor_id oid of the ancestor file - * @param our_mode mode of our file - * @param our_id oid of our file - * @param their_mode mode of their file - * @param their_id oid of their file - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_reuc_add(git_index *index, const char *path, - int ancestor_mode, const git_oid *ancestor_id, - int our_mode, const git_oid *our_id, - int their_mode, const git_oid *their_id); - -/** - * Remove an resolve undo entry from the index - * - * @param index an existing index object - * @param n position of the resolve undo entry to remove - * @return 0 or an error code - */ -GIT_EXTERN(int) git_index_reuc_remove(git_index *index, size_t n); - -/** - * Remove all resolve undo entries from the index - * - * @param index an existing index object - */ -GIT_EXTERN(void) git_index_reuc_clear(git_index *index); - -/**@}*/ - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/mempack.h b/libgit2/include/git2/sys/mempack.h deleted file mode 100644 index 96074fb..0000000 --- a/libgit2/include/git2/sys/mempack.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_odb_mempack_h__ -#define INCLUDE_sys_git_odb_mempack_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" -#include "git2/odb.h" - -/** - * @file git2/sys/mempack.h - * @brief Custom ODB backend that permits packing objects in-memory - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Instantiate a new mempack backend. - * - * The backend must be added to an existing ODB with the highest - * priority. - * - * git_mempack_new(&mempacker); - * git_repository_odb(&odb, repository); - * git_odb_add_backend(odb, mempacker, 999); - * - * Once the backend has been loaded, all writes to the ODB will - * instead be queued in memory, and can be finalized with - * `git_mempack_dump`. - * - * Subsequent reads will also be served from the in-memory store - * to ensure consistency, until the memory store is dumped. - * - * @param out Poiter where to store the ODB backend - * @return 0 on success; error code otherwise - */ -int git_mempack_new(git_odb_backend **out); - -/** - * Dump all the queued in-memory writes to a packfile. - * - * The contents of the packfile will be stored in the given buffer. - * It is the caller's responsibility to ensure that the generated - * packfile is available to the repository (e.g. by writing it - * to disk, or doing something crazy like distributing it across - * several copies of the repository over a network). - * - * Once the generated packfile is available to the repository, - * call `git_mempack_reset` to cleanup the memory store. - * - * Calling `git_mempack_reset` before the packfile has been - * written to disk will result in an inconsistent repository - * (the objects in the memory store won't be accessible). - * - * @param pack Buffer where to store the raw packfile - * @param repo The active repository where the backend is loaded - * @param backend The mempack backend - * @return 0 on success; error code otherwise - */ -int git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_backend *backend); - -/** - * Reset the memory packer by clearing all the queued objects. - * - * This assumes that `git_mempack_dump` has been called before to - * store all the queued objects into a single packfile. - * - * Alternatively, call `reset` without a previous dump to "undo" - * all the recently written objects, giving transaction-like - * semantics to the Git repository. - * - * @param backend The mempack backend - */ -void git_mempack_reset(git_odb_backend *backend); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/odb_backend.h b/libgit2/include/git2/sys/odb_backend.h deleted file mode 100644 index e423a92..0000000 --- a/libgit2/include/git2/sys/odb_backend.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_odb_backend_h__ -#define INCLUDE_sys_git_odb_backend_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" -#include "git2/odb.h" - -/** - * @file git2/sys/backend.h - * @brief Git custom backend implementors functions - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * An instance for a custom backend - */ -struct git_odb_backend { - unsigned int version; - git_odb *odb; - - /* read and read_prefix each return to libgit2 a buffer which - * will be freed later. The buffer should be allocated using - * the function git_odb_backend_malloc to ensure that it can - * be safely freed later. */ - int (* read)( - void **, size_t *, git_otype *, git_odb_backend *, const git_oid *); - - /* To find a unique object given a prefix of its oid. The oid given - * must be so that the remaining (GIT_OID_HEXSZ - len)*4 bits are 0s. - */ - int (* read_prefix)( - git_oid *, void **, size_t *, git_otype *, - git_odb_backend *, const git_oid *, size_t); - - int (* read_header)( - size_t *, git_otype *, git_odb_backend *, const git_oid *); - - /** - * Write an object into the backend. The id of the object has - * already been calculated and is passed in. - */ - int (* write)( - git_odb_backend *, const git_oid *, const void *, size_t, git_otype); - - int (* writestream)( - git_odb_stream **, git_odb_backend *, git_off_t, git_otype); - - int (* readstream)( - git_odb_stream **, git_odb_backend *, const git_oid *); - - int (* exists)( - git_odb_backend *, const git_oid *); - - int (* exists_prefix)( - git_oid *, git_odb_backend *, const git_oid *, size_t); - - /** - * If the backend implements a refreshing mechanism, it should be exposed - * through this endpoint. Each call to `git_odb_refresh()` will invoke it. - * - * However, the backend implementation should try to stay up-to-date as much - * as possible by itself as libgit2 will not automatically invoke - * `git_odb_refresh()`. For instance, a potential strategy for the backend - * implementation to achieve this could be to internally invoke this - * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`). - */ - int (* refresh)(git_odb_backend *); - - int (* foreach)( - git_odb_backend *, git_odb_foreach_cb cb, void *payload); - - int (* writepack)( - git_odb_writepack **, git_odb_backend *, git_odb *odb, - git_transfer_progress_cb progress_cb, void *progress_payload); - - /** - * Frees any resources held by the odb (including the `git_odb_backend` - * itself). An odb backend implementation must provide this function. - */ - void (* free)(git_odb_backend *); -}; - -#define GIT_ODB_BACKEND_VERSION 1 -#define GIT_ODB_BACKEND_INIT {GIT_ODB_BACKEND_VERSION} - -/** - * Initializes a `git_odb_backend` with default values. Equivalent to - * creating an instance with GIT_ODB_BACKEND_INIT. - * - * @param backend the `git_odb_backend` struct to initialize. - * @param version Version the struct; pass `GIT_ODB_BACKEND_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_odb_init_backend( - git_odb_backend *backend, - unsigned int version); - -GIT_EXTERN(void *) git_odb_backend_malloc(git_odb_backend *backend, size_t len); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/openssl.h b/libgit2/include/git2/sys/openssl.h deleted file mode 100644 index b41c55c..0000000 --- a/libgit2/include/git2/sys/openssl.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_openssl_h__ -#define INCLUDE_git_openssl_h__ - -#include "git2/common.h" - -GIT_BEGIN_DECL - -/** - * Initialize the OpenSSL locks - * - * OpenSSL requires the application to determine how it performs - * locking. - * - * This is a last-resort convenience function which libgit2 provides for - * allocating and initializing the locks as well as setting the - * locking function to use the system's native locking functions. - * - * The locking function will be cleared and the memory will be freed - * when you call git_threads_sutdown(). - * - * If your programming language has an OpenSSL package/bindings, it - * likely sets up locking. You should very strongly prefer that over - * this function. - * - * @return 0 on success, -1 if there are errors or if libgit2 was not - * built with OpenSSL and threading support. - */ -GIT_EXTERN(int) git_openssl_set_locking(void); - -GIT_END_DECL -#endif - diff --git a/libgit2/include/git2/sys/refdb_backend.h b/libgit2/include/git2/sys/refdb_backend.h deleted file mode 100644 index 5129ad8..0000000 --- a/libgit2/include/git2/sys/refdb_backend.h +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_refdb_backend_h__ -#define INCLUDE_sys_git_refdb_backend_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" - -/** - * @file git2/refdb_backend.h - * @brief Git custom refs backend functions - * @defgroup git_refdb_backend Git custom refs backend API - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - - -/** - * Every backend's iterator must have a pointer to itself as the first - * element, so the API can talk to it. You'd define your iterator as - * - * struct my_iterator { - * git_reference_iterator parent; - * ... - * } - * - * and assign `iter->parent.backend` to your `git_refdb_backend`. - */ -struct git_reference_iterator { - git_refdb *db; - - /** - * Return the current reference and advance the iterator. - */ - int (*next)( - git_reference **ref, - git_reference_iterator *iter); - - /** - * Return the name of the current reference and advance the iterator - */ - int (*next_name)( - const char **ref_name, - git_reference_iterator *iter); - - /** - * Free the iterator - */ - void (*free)( - git_reference_iterator *iter); -}; - -/** An instance for a custom backend */ -struct git_refdb_backend { - unsigned int version; - - /** - * Queries the refdb backend to determine if the given ref_name - * exists. A refdb implementation must provide this function. - */ - int (*exists)( - int *exists, - git_refdb_backend *backend, - const char *ref_name); - - /** - * Queries the refdb backend for a given reference. A refdb - * implementation must provide this function. - */ - int (*lookup)( - git_reference **out, - git_refdb_backend *backend, - const char *ref_name); - - /** - * Allocate an iterator object for the backend. - * - * A refdb implementation must provide this function. - */ - int (*iterator)( - git_reference_iterator **iter, - struct git_refdb_backend *backend, - const char *glob); - - /* - * Writes the given reference to the refdb. A refdb implementation - * must provide this function. - */ - int (*write)(git_refdb_backend *backend, - const git_reference *ref, int force, - const git_signature *who, const char *message, - const git_oid *old, const char *old_target); - - int (*rename)( - git_reference **out, git_refdb_backend *backend, - const char *old_name, const char *new_name, int force, - const git_signature *who, const char *message); - - /** - * Deletes the given reference (and if necessary its reflog) - * from the refdb. A refdb implementation must provide this - * function. - */ - int (*del)(git_refdb_backend *backend, const char *ref_name, const git_oid *old_id, const char *old_target); - - /** - * Suggests that the given refdb compress or optimize its references. - * This mechanism is implementation specific. (For on-disk reference - * databases, this may pack all loose references.) A refdb - * implementation may provide this function; if it is not provided, - * nothing will be done. - */ - int (*compress)(git_refdb_backend *backend); - - /** - * Query whether a particular reference has a log (may be empty) - */ - int (*has_log)(git_refdb_backend *backend, const char *refname); - - /** - * Make sure a particular reference will have a reflog which - * will be appended to on writes. - */ - int (*ensure_log)(git_refdb_backend *backend, const char *refname); - - /** - * Frees any resources held by the refdb (including the `git_refdb_backend` - * itself). A refdb backend implementation must provide this function. - */ - void (*free)(git_refdb_backend *backend); - - /** - * Read the reflog for the given reference name. - */ - int (*reflog_read)(git_reflog **out, git_refdb_backend *backend, const char *name); - - /** - * Write a reflog to disk. - */ - int (*reflog_write)(git_refdb_backend *backend, git_reflog *reflog); - - /** - * Rename a reflog - */ - int (*reflog_rename)(git_refdb_backend *_backend, const char *old_name, const char *new_name); - - /** - * Remove a reflog. - */ - int (*reflog_delete)(git_refdb_backend *backend, const char *name); - - /** - * Lock a reference. The opaque parameter will be passed to the unlock function - */ - int (*lock)(void **payload_out, git_refdb_backend *backend, const char *refname); - - /** - * Unlock a reference. Only one of target or symbolic_target - * will be set. success indicates whether to update the - * reference or discard the lock (if it's false) - */ - int (*unlock)(git_refdb_backend *backend, void *payload, int success, int update_reflog, - const git_reference *ref, const git_signature *sig, const char *message); -}; - -#define GIT_REFDB_BACKEND_VERSION 1 -#define GIT_REFDB_BACKEND_INIT {GIT_REFDB_BACKEND_VERSION} - -/** - * Initializes a `git_refdb_backend` with default values. Equivalent to - * creating an instance with GIT_REFDB_BACKEND_INIT. - * - * @param backend the `git_refdb_backend` struct to initialize - * @param version Version of struct; pass `GIT_REFDB_BACKEND_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_refdb_init_backend( - git_refdb_backend *backend, - unsigned int version); - -/** - * Constructors for default filesystem-based refdb backend - * - * Under normal usage, this is called for you when the repository is - * opened / created, but you can use this to explicitly construct a - * filesystem refdb backend for a repository. - * - * @param backend_out Output pointer to the git_refdb_backend object - * @param repo Git repository to access - * @return 0 on success, <0 error code on failure - */ -GIT_EXTERN(int) git_refdb_backend_fs( - git_refdb_backend **backend_out, - git_repository *repo); - -/** - * Sets the custom backend to an existing reference DB - * - * The `git_refdb` will take ownership of the `git_refdb_backend` so you - * should NOT free it after calling this function. - * - * @param refdb database to add the backend to - * @param backend pointer to a git_refdb_backend instance - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_refdb_set_backend( - git_refdb *refdb, - git_refdb_backend *backend); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/reflog.h b/libgit2/include/git2/sys/reflog.h deleted file mode 100644 index c9d0041..0000000 --- a/libgit2/include/git2/sys/reflog.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_reflog_h__ -#define INCLUDE_sys_git_reflog_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" - -GIT_BEGIN_DECL - -GIT_EXTERN(git_reflog_entry *) git_reflog_entry__alloc(void); -GIT_EXTERN(void) git_reflog_entry__free(git_reflog_entry *entry); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/refs.h b/libgit2/include/git2/sys/refs.h deleted file mode 100644 index d2ce2e0..0000000 --- a/libgit2/include/git2/sys/refs.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_refdb_h__ -#define INCLUDE_sys_git_refdb_h__ - -#include "git2/common.h" -#include "git2/types.h" -#include "git2/oid.h" - -/** - * @file git2/sys/refs.h - * @brief Low-level Git ref creation - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create a new direct reference from an OID. - * - * @param name the reference name - * @param oid the object id for a direct reference - * @param peel the first non-tag object's OID, or NULL - * @return the created git_reference or NULL on error - */ -GIT_EXTERN(git_reference *) git_reference__alloc( - const char *name, - const git_oid *oid, - const git_oid *peel); - -/** - * Create a new symbolic reference. - * - * @param name the reference name - * @param target the target for a symbolic reference - * @return the created git_reference or NULL on error - */ -GIT_EXTERN(git_reference *) git_reference__alloc_symbolic( - const char *name, - const char *target); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/repository.h b/libgit2/include/git2/sys/repository.h deleted file mode 100644 index 800396c..0000000 --- a/libgit2/include/git2/sys/repository.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_repository_h__ -#define INCLUDE_sys_git_repository_h__ - -#include "git2/common.h" -#include "git2/types.h" - -/** - * @file git2/sys/repository.h - * @brief Git repository custom implementation routines - * @defgroup git_backend Git custom backend APIs - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Create a new repository with neither backends nor config object - * - * Note that this is only useful if you wish to associate the repository - * with a non-filesystem-backed object database and config store. - * - * @param out The blank repository - * @return 0 on success, or an error code - */ -GIT_EXTERN(int) git_repository_new(git_repository **out); - -/** - * Reset all the internal state in a repository. - * - * This will free all the mapped memory and internal objects - * of the repository and leave it in a "blank" state. - * - * There's no need to call this function directly unless you're - * trying to aggressively cleanup the repo before its - * deallocation. `git_repository_free` already performs this operation - * before deallocation the repo. - */ -GIT_EXTERN(void) git_repository__cleanup(git_repository *repo); - -/** - * Update the filesystem config settings for an open repository - * - * When a repository is initialized, config values are set based on the - * properties of the filesystem that the repository is on, such as - * "core.ignorecase", "core.filemode", "core.symlinks", etc. If the - * repository is moved to a new filesystem, these properties may no - * longer be correct and API calls may not behave as expected. This - * call reruns the phase of repository initialization that sets those - * properties to compensate for the current filesystem of the repo. - * - * @param repo A repository object - * @param recurse_submodules Should submodules be updated recursively - * @return 0 on success, < 0 on error - */ -GIT_EXTERN(int) git_repository_reinit_filesystem( - git_repository *repo, - int recurse_submodules); - -/** - * Set the configuration file for this repository - * - * This configuration file will be used for all configuration - * queries involving this repository. - * - * The repository will keep a reference to the config file; - * the user must still free the config after setting it - * to the repository, or it will leak. - * - * @param repo A repository object - * @param config A Config object - */ -GIT_EXTERN(void) git_repository_set_config(git_repository *repo, git_config *config); - -/** - * Set the Object Database for this repository - * - * The ODB will be used for all object-related operations - * involving this repository. - * - * The repository will keep a reference to the ODB; the user - * must still free the ODB object after setting it to the - * repository, or it will leak. - * - * @param repo A repository object - * @param odb An ODB object - */ -GIT_EXTERN(void) git_repository_set_odb(git_repository *repo, git_odb *odb); - -/** - * Set the Reference Database Backend for this repository - * - * The refdb will be used for all reference related operations - * involving this repository. - * - * The repository will keep a reference to the refdb; the user - * must still free the refdb object after setting it to the - * repository, or it will leak. - * - * @param repo A repository object - * @param refdb An refdb object - */ -GIT_EXTERN(void) git_repository_set_refdb(git_repository *repo, git_refdb *refdb); - -/** - * Set the index file for this repository - * - * This index will be used for all index-related operations - * involving this repository. - * - * The repository will keep a reference to the index file; - * the user must still free the index after setting it - * to the repository, or it will leak. - * - * @param repo A repository object - * @param index An index object - */ -GIT_EXTERN(void) git_repository_set_index(git_repository *repo, git_index *index); - -/** - * Set a repository to be bare. - * - * Clear the working directory and set core.bare to true. You may also - * want to call `git_repository_set_index(repo, NULL)` since a bare repo - * typically does not have an index, but this function will not do that - * for you. - * - * @param repo Repo to make bare - * @return 0 on success, <0 on failure - */ -GIT_EXTERN(int) git_repository_set_bare(git_repository *repo); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/sys/stream.h b/libgit2/include/git2/sys/stream.h deleted file mode 100644 index 2b4ff7f..0000000 --- a/libgit2/include/git2/sys/stream.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_sys_git_stream_h__ -#define INCLUDE_sys_git_stream_h__ - -#include "git2/common.h" -#include "git2/types.h" - -GIT_BEGIN_DECL - -#define GIT_STREAM_VERSION 1 - -/** - * Every stream must have this struct as its first element, so the - * API can talk to it. You'd define your stream as - * - * struct my_stream { - * git_stream parent; - * ... - * } - * - * and fill the functions - */ -typedef struct git_stream { - int version; - - int encrypted; - int proxy_support; - int (*connect)(struct git_stream *); - int (*certificate)(git_cert **, struct git_stream *); - int (*set_proxy)(struct git_stream *, const char *proxy_url); - ssize_t (*read)(struct git_stream *, void *, size_t); - ssize_t (*write)(struct git_stream *, const char *, size_t, int); - int (*close)(struct git_stream *); - void (*free)(struct git_stream *); -} git_stream; - -typedef int (*git_stream_cb)(git_stream **out, const char *host, const char *port); - -/** - * Register a TLS stream constructor for the library to use - * - * If a constructor is already set, it will be overwritten. Pass - * `NULL` in order to deregister the current constructor. - * - * @param ctor the constructor to use - * @return 0 or an error code - */ -GIT_EXTERN(int) git_stream_register_tls(git_stream_cb ctor); - -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/sys/transport.h b/libgit2/include/git2/sys/transport.h deleted file mode 100644 index ce0234a..0000000 --- a/libgit2/include/git2/sys/transport.h +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ - -#ifndef INCLUDE_sys_git_transport_h -#define INCLUDE_sys_git_transport_h - -#include "git2/net.h" -#include "git2/types.h" -#include "git2/strarray.h" - -/** - * @file git2/sys/transport.h - * @brief Git custom transport registration interfaces and functions - * @defgroup git_transport Git custom transport registration - * @ingroup Git - * @{ - */ - -GIT_BEGIN_DECL - -/** - * Flags to pass to transport - * - * Currently unused. - */ -typedef enum { - GIT_TRANSPORTFLAGS_NONE = 0, -} git_transport_flags_t; - -struct git_transport { - unsigned int version; - /* Set progress and error callbacks */ - int (*set_callbacks)( - git_transport *transport, - git_transport_message_cb progress_cb, - git_transport_message_cb error_cb, - git_transport_certificate_check_cb certificate_check_cb, - void *payload); - - /* Set custom headers for HTTP requests */ - int (*set_custom_headers)( - git_transport *transport, - const git_strarray *custom_headers); - - /* Connect the transport to the remote repository, using the given - * direction. */ - int (*connect)( - git_transport *transport, - const char *url, - git_cred_acquire_cb cred_acquire_cb, - void *cred_acquire_payload, - int direction, - int flags); - - /* This function may be called after a successful call to - * connect(). The array returned is owned by the transport and - * is guaranteed until the next call of a transport function. */ - int (*ls)( - const git_remote_head ***out, - size_t *size, - git_transport *transport); - - /* Executes the push whose context is in the git_push object. */ - int (*push)(git_transport *transport, git_push *push, const git_remote_callbacks *callbacks); - - /* This function may be called after a successful call to connect(), when - * the direction is FETCH. The function performs a negotiation to calculate - * the wants list for the fetch. */ - int (*negotiate_fetch)( - git_transport *transport, - git_repository *repo, - const git_remote_head * const *refs, - size_t count); - - /* This function may be called after a successful call to negotiate_fetch(), - * when the direction is FETCH. This function retrieves the pack file for - * the fetch from the remote end. */ - int (*download_pack)( - git_transport *transport, - git_repository *repo, - git_transfer_progress *stats, - git_transfer_progress_cb progress_cb, - void *progress_payload); - - /* Checks to see if the transport is connected */ - int (*is_connected)(git_transport *transport); - - /* Reads the flags value previously passed into connect() */ - int (*read_flags)(git_transport *transport, int *flags); - - /* Cancels any outstanding transport operation */ - void (*cancel)(git_transport *transport); - - /* This function is the reverse of connect() -- it terminates the - * connection to the remote end. */ - int (*close)(git_transport *transport); - - /* Frees/destructs the git_transport object. */ - void (*free)(git_transport *transport); -}; - -#define GIT_TRANSPORT_VERSION 1 -#define GIT_TRANSPORT_INIT {GIT_TRANSPORT_VERSION} - -/** - * Initializes a `git_transport` with default values. Equivalent to - * creating an instance with GIT_TRANSPORT_INIT. - * - * @param opts the `git_transport` struct to initialize - * @param version Version of struct; pass `GIT_TRANSPORT_VERSION` - * @return Zero on success; -1 on failure. - */ -GIT_EXTERN(int) git_transport_init( - git_transport *opts, - unsigned int version); - -/** - * Function to use to create a transport from a URL. The transport database - * is scanned to find a transport that implements the scheme of the URI (i.e. - * git:// or http://) and a transport object is returned to the caller. - * - * @param out The newly created transport (out) - * @param owner The git_remote which will own this transport - * @param url The URL to connect to - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_new(git_transport **out, git_remote *owner, const char *url); - -/** - * Create an ssh transport with custom git command paths - * - * This is a factory function suitable for setting as the transport - * callback in a remote (or for a clone in the options). - * - * The payload argument must be a strarray pointer with the paths for - * the `git-upload-pack` and `git-receive-pack` at index 0 and 1. - * - * @param out the resulting transport - * @param owner the owning remote - * @param payload a strarray with the paths - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_ssh_with_paths(git_transport **out, git_remote *owner, void *payload); - -/** - * Add a custom transport definition, to be used in addition to the built-in - * set of transports that come with libgit2. - * - * The caller is responsible for synchronizing calls to git_transport_register - * and git_transport_unregister with other calls to the library that - * instantiate transports. - * - * @param prefix The scheme (ending in "://") to match, i.e. "git://" - * @param cb The callback used to create an instance of the transport - * @param param A fixed parameter to pass to cb at creation time - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_register( - const char *prefix, - git_transport_cb cb, - void *param); - -/** - * - * Unregister a custom transport definition which was previously registered - * with git_transport_register. - * - * @param prefix From the previous call to git_transport_register - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_unregister( - const char *prefix); - -/* Transports which come with libgit2 (match git_transport_cb). The expected - * value for "param" is listed in-line below. */ - -/** - * Create an instance of the dummy transport. - * - * @param out The newly created transport (out) - * @param owner The git_remote which will own this transport - * @param payload You must pass NULL for this parameter. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_dummy( - git_transport **out, - git_remote *owner, - /* NULL */ void *payload); - -/** - * Create an instance of the local transport. - * - * @param out The newly created transport (out) - * @param owner The git_remote which will own this transport - * @param payload You must pass NULL for this parameter. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_local( - git_transport **out, - git_remote *owner, - /* NULL */ void *payload); - -/** - * Create an instance of the smart transport. - * - * @param out The newly created transport (out) - * @param owner The git_remote which will own this transport - * @param payload A pointer to a git_smart_subtransport_definition - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transport_smart( - git_transport **out, - git_remote *owner, - /* (git_smart_subtransport_definition *) */ void *payload); - -/** - * Call the certificate check for this transport. - * - * @param transport a smart transport - * @param cert the certificate to pass to the caller - * @param valid whether we believe the certificate is valid - * @param hostname the hostname we connected to - * @return the return value of the callback - */ -GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport, git_cert *cert, int valid, const char *hostname); - -/** - * Call the credentials callback for this transport - * - * @param out the pointer where the creds are to be stored - * @param transport a smart transport - * @param user the user we saw on the url (if any) - * @param methods available methods for authentication - * @return the return value of the callback - */ -GIT_EXTERN(int) git_transport_smart_credentials(git_cred **out, git_transport *transport, const char *user, int methods); - -/* - *** End of base transport interface *** - *** Begin interface for subtransports for the smart transport *** - */ - -/* The smart transport knows how to speak the git protocol, but it has no - * knowledge of how to establish a connection between it and another endpoint, - * or how to move data back and forth. For this, a subtransport interface is - * declared, and the smart transport delegates this work to the subtransports. - * Three subtransports are implemented: git, http, and winhttp. (The http and - * winhttp transports each implement both http and https.) */ - -/* Subtransports can either be RPC = 0 (persistent connection) or RPC = 1 - * (request/response). The smart transport handles the differences in its own - * logic. The git subtransport is RPC = 0, while http and winhttp are both - * RPC = 1. */ - -/* Actions that the smart transport can ask - * a subtransport to perform */ -typedef enum { - GIT_SERVICE_UPLOADPACK_LS = 1, - GIT_SERVICE_UPLOADPACK = 2, - GIT_SERVICE_RECEIVEPACK_LS = 3, - GIT_SERVICE_RECEIVEPACK = 4, -} git_smart_service_t; - -typedef struct git_smart_subtransport git_smart_subtransport; -typedef struct git_smart_subtransport_stream git_smart_subtransport_stream; - -/* A stream used by the smart transport to read and write data - * from a subtransport */ -struct git_smart_subtransport_stream { - /* The owning subtransport */ - git_smart_subtransport *subtransport; - - int (*read)( - git_smart_subtransport_stream *stream, - char *buffer, - size_t buf_size, - size_t *bytes_read); - - int (*write)( - git_smart_subtransport_stream *stream, - const char *buffer, - size_t len); - - void (*free)( - git_smart_subtransport_stream *stream); -}; - -/* An implementation of a subtransport which carries data for the - * smart transport */ -struct git_smart_subtransport { - int (* action)( - git_smart_subtransport_stream **out, - git_smart_subtransport *transport, - const char *url, - git_smart_service_t action); - - /* Subtransports are guaranteed a call to close() between - * calls to action(), except for the following two "natural" progressions - * of actions against a constant URL. - * - * 1. UPLOADPACK_LS -> UPLOADPACK - * 2. RECEIVEPACK_LS -> RECEIVEPACK */ - int (*close)(git_smart_subtransport *transport); - - void (*free)(git_smart_subtransport *transport); -}; - -/* A function which creates a new subtransport for the smart transport */ -typedef int (*git_smart_subtransport_cb)( - git_smart_subtransport **out, - git_transport* owner, - void* param); - -/** - * Definition for a "subtransport" - * - * This is used to let the smart protocol code know about the protocol - * which you are implementing. - */ -typedef struct git_smart_subtransport_definition { - /** The function to use to create the git_smart_subtransport */ - git_smart_subtransport_cb callback; - - /** - * True if the protocol is stateless; false otherwise. For example, - * http:// is stateless, but git:// is not. - */ - unsigned rpc; - - /** Param of the callback - */ - void* param; -} git_smart_subtransport_definition; - -/* Smart transport subtransports that come with libgit2 */ - -/** - * Create an instance of the http subtransport. This subtransport - * also supports https. On Win32, this subtransport may be implemented - * using the WinHTTP library. - * - * @param out The newly created subtransport - * @param owner The smart transport to own this subtransport - * @return 0 or an error code - */ -GIT_EXTERN(int) git_smart_subtransport_http( - git_smart_subtransport **out, - git_transport* owner, - void *param); - -/** - * Create an instance of the git subtransport. - * - * @param out The newly created subtransport - * @param owner The smart transport to own this subtransport - * @return 0 or an error code - */ -GIT_EXTERN(int) git_smart_subtransport_git( - git_smart_subtransport **out, - git_transport* owner, - void *param); - -/** - * Create an instance of the ssh subtransport. - * - * @param out The newly created subtransport - * @param owner The smart transport to own this subtransport - * @return 0 or an error code - */ -GIT_EXTERN(int) git_smart_subtransport_ssh( - git_smart_subtransport **out, - git_transport* owner, - void *param); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/tag.h b/libgit2/include/git2/tag.h deleted file mode 100644 index c822cee..0000000 --- a/libgit2/include/git2/tag.h +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_tag_h__ -#define INCLUDE_git_tag_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "object.h" -#include "strarray.h" - -/** - * @file git2/tag.h - * @brief Git tag parsing routines - * @defgroup git_tag Git tag management - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a tag object from the repository. - * - * @param out pointer to the looked up tag - * @param repo the repo to use when locating the tag. - * @param id identity of the tag to locate. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_lookup( - git_tag **out, git_repository *repo, const git_oid *id); - -/** - * Lookup a tag object from the repository, - * given a prefix of its identifier (short id). - * - * @see git_object_lookup_prefix - * - * @param out pointer to the looked up tag - * @param repo the repo to use when locating the tag. - * @param id identity of the tag to locate. - * @param len the length of the short identifier - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_lookup_prefix( - git_tag **out, git_repository *repo, const git_oid *id, size_t len); - -/** - * Close an open tag - * - * You can no longer use the git_tag pointer after this call. - * - * IMPORTANT: You MUST call this method when you are through with a tag to - * release memory. Failure to do so will cause a memory leak. - * - * @param tag the tag to close - */ -GIT_EXTERN(void) git_tag_free(git_tag *tag); - -/** - * Get the id of a tag. - * - * @param tag a previously loaded tag. - * @return object identity for the tag. - */ -GIT_EXTERN(const git_oid *) git_tag_id(const git_tag *tag); - -/** - * Get the repository that contains the tag. - * - * @param tag A previously loaded tag. - * @return Repository that contains this tag. - */ -GIT_EXTERN(git_repository *) git_tag_owner(const git_tag *tag); - -/** - * Get the tagged object of a tag - * - * This method performs a repository lookup for the - * given object and returns it - * - * @param target_out pointer where to store the target - * @param tag a previously loaded tag. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_target(git_object **target_out, const git_tag *tag); - -/** - * Get the OID of the tagged object of a tag - * - * @param tag a previously loaded tag. - * @return pointer to the OID - */ -GIT_EXTERN(const git_oid *) git_tag_target_id(const git_tag *tag); - -/** - * Get the type of a tag's tagged object - * - * @param tag a previously loaded tag. - * @return type of the tagged object - */ -GIT_EXTERN(git_otype) git_tag_target_type(const git_tag *tag); - -/** - * Get the name of a tag - * - * @param tag a previously loaded tag. - * @return name of the tag - */ -GIT_EXTERN(const char *) git_tag_name(const git_tag *tag); - -/** - * Get the tagger (author) of a tag - * - * @param tag a previously loaded tag. - * @return reference to the tag's author or NULL when unspecified - */ -GIT_EXTERN(const git_signature *) git_tag_tagger(const git_tag *tag); - -/** - * Get the message of a tag - * - * @param tag a previously loaded tag. - * @return message of the tag or NULL when unspecified - */ -GIT_EXTERN(const char *) git_tag_message(const git_tag *tag); - - -/** - * Create a new tag in the repository from an object - * - * A new reference will also be created pointing to - * this tag object. If `force` is true and a reference - * already exists with the given name, it'll be replaced. - * - * The message will not be cleaned up. This can be achieved - * through `git_message_prettify()`. - * - * The tag name will be checked for validity. You must avoid - * the characters '~', '^', ':', '\\', '?', '[', and '*', and the - * sequences ".." and "@{" which have special meaning to revparse. - * - * @param oid Pointer where to store the OID of the - * newly created tag. If the tag already exists, this parameter - * will be the oid of the existing tag, and the function will - * return a GIT_EEXISTS error code. - * - * @param repo Repository where to store the tag - * - * @param tag_name Name for the tag; this name is validated - * for consistency. It should also not conflict with an - * already existing tag name - * - * @param target Object to which this tag points. This object - * must belong to the given `repo`. - * - * @param tagger Signature of the tagger for this tag, and - * of the tagging time - * - * @param message Full message for this tag - * - * @param force Overwrite existing references - * - * @return 0 on success, GIT_EINVALIDSPEC or an error code - * A tag object is written to the ODB, and a proper reference - * is written in the /refs/tags folder, pointing to it - */ -GIT_EXTERN(int) git_tag_create( - git_oid *oid, - git_repository *repo, - const char *tag_name, - const git_object *target, - const git_signature *tagger, - const char *message, - int force); - -/** - * Create a new tag in the object database pointing to a git_object - * - * The message will not be cleaned up. This can be achieved - * through `git_message_prettify()`. - * - * @param oid Pointer where to store the OID of the - * newly created tag - * - * @param repo Repository where to store the tag - * - * @param tag_name Name for the tag - * - * @param target Object to which this tag points. This object - * must belong to the given `repo`. - * - * @param tagger Signature of the tagger for this tag, and - * of the tagging time - * - * @param message Full message for this tag - * - * @return 0 on success or an error code - */ -GIT_EXTERN(int) git_tag_annotation_create( - git_oid *oid, - git_repository *repo, - const char *tag_name, - const git_object *target, - const git_signature *tagger, - const char *message); - -/** - * Create a new tag in the repository from a buffer - * - * @param oid Pointer where to store the OID of the newly created tag - * @param repo Repository where to store the tag - * @param buffer Raw tag data - * @param force Overwrite existing tags - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_tag_create_frombuffer( - git_oid *oid, - git_repository *repo, - const char *buffer, - int force); - -/** - * Create a new lightweight tag pointing at a target object - * - * A new direct reference will be created pointing to - * this target object. If `force` is true and a reference - * already exists with the given name, it'll be replaced. - * - * The tag name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param oid Pointer where to store the OID of the provided - * target object. If the tag already exists, this parameter - * will be filled with the oid of the existing pointed object - * and the function will return a GIT_EEXISTS error code. - * - * @param repo Repository where to store the lightweight tag - * - * @param tag_name Name for the tag; this name is validated - * for consistency. It should also not conflict with an - * already existing tag name - * - * @param target Object to which this tag points. This object - * must belong to the given `repo`. - * - * @param force Overwrite existing references - * - * @return 0 on success, GIT_EINVALIDSPEC or an error code - * A proper reference is written in the /refs/tags folder, - * pointing to the provided target object - */ -GIT_EXTERN(int) git_tag_create_lightweight( - git_oid *oid, - git_repository *repo, - const char *tag_name, - const git_object *target, - int force); - -/** - * Delete an existing tag reference. - * - * The tag name will be checked for validity. - * See `git_tag_create()` for rules about valid names. - * - * @param repo Repository where lives the tag - * - * @param tag_name Name of the tag to be deleted; - * this name is validated for consistency. - * - * @return 0 on success, GIT_EINVALIDSPEC or an error code - */ -GIT_EXTERN(int) git_tag_delete( - git_repository *repo, - const char *tag_name); - -/** - * Fill a list with all the tags in the Repository - * - * The string array will be filled with the names of the - * matching tags; these values are owned by the user and - * should be free'd manually when no longer needed, using - * `git_strarray_free`. - * - * @param tag_names Pointer to a git_strarray structure where - * the tag names will be stored - * @param repo Repository where to find the tags - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_list( - git_strarray *tag_names, - git_repository *repo); - -/** - * Fill a list with all the tags in the Repository - * which name match a defined pattern - * - * If an empty pattern is provided, all the tags - * will be returned. - * - * The string array will be filled with the names of the - * matching tags; these values are owned by the user and - * should be free'd manually when no longer needed, using - * `git_strarray_free`. - * - * @param tag_names Pointer to a git_strarray structure where - * the tag names will be stored - * @param pattern Standard fnmatch pattern - * @param repo Repository where to find the tags - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_list_match( - git_strarray *tag_names, - const char *pattern, - git_repository *repo); - - -typedef int (*git_tag_foreach_cb)(const char *name, git_oid *oid, void *payload); - -/** - * Call callback `cb' for each tag in the repository - * - * @param repo Repository - * @param callback Callback function - * @param payload Pointer to callback data (optional) - */ -GIT_EXTERN(int) git_tag_foreach( - git_repository *repo, - git_tag_foreach_cb callback, - void *payload); - - -/** - * Recursively peel a tag until a non tag git_object is found - * - * The retrieved `tag_target` object is owned by the repository - * and should be closed with the `git_object_free` method. - * - * @param tag_target_out Pointer to the peeled git_object - * @param tag The tag to be processed - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tag_peel( - git_object **tag_target_out, - const git_tag *tag); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/trace.h b/libgit2/include/git2/trace.h deleted file mode 100644 index f9b4d6f..0000000 --- a/libgit2/include/git2/trace.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_trace_h__ -#define INCLUDE_git_trace_h__ - -#include "common.h" -#include "types.h" - -/** - * @file git2/trace.h - * @brief Git tracing configuration routines - * @defgroup git_trace Git tracing configuration routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Available tracing levels. When tracing is set to a particular level, - * callers will be provided tracing at the given level and all lower levels. - */ -typedef enum { - /** No tracing will be performed. */ - GIT_TRACE_NONE = 0, - - /** Severe errors that may impact the program's execution */ - GIT_TRACE_FATAL = 1, - - /** Errors that do not impact the program's execution */ - GIT_TRACE_ERROR = 2, - - /** Warnings that suggest abnormal data */ - GIT_TRACE_WARN = 3, - - /** Informational messages about program execution */ - GIT_TRACE_INFO = 4, - - /** Detailed data that allows for debugging */ - GIT_TRACE_DEBUG = 5, - - /** Exceptionally detailed debugging data */ - GIT_TRACE_TRACE = 6 -} git_trace_level_t; - -/** - * An instance for a tracing function - */ -typedef void (*git_trace_callback)(git_trace_level_t level, const char *msg); - -/** - * Sets the system tracing configuration to the specified level with the - * specified callback. When system events occur at a level equal to, or - * lower than, the given level they will be reported to the given callback. - * - * @param level Level to set tracing to - * @param cb Function to call with trace data - * @return 0 or an error code - */ -GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_callback cb); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/transaction.h b/libgit2/include/git2/transaction.h deleted file mode 100644 index 64abb0c..0000000 --- a/libgit2/include/git2/transaction.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_transaction_h__ -#define INCLUDE_git_transaction_h__ - -#include "common.h" -GIT_BEGIN_DECL - -/** - * Create a new transaction object - * - * This does not lock anything, but sets up the transaction object to - * know from which repository to lock. - * - * @param out the resulting transaction - * @param repo the repository in which to lock - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transaction_new(git_transaction **out, git_repository *repo); - -/** - * Lock a reference - * - * Lock the specified reference. This is the first step to updating a - * reference. - * - * @param tx the transaction - * @param refname the reference to lock - * @return 0 or an error message - */ -GIT_EXTERN(int) git_transaction_lock_ref(git_transaction *tx, const char *refname); - -/** - * Set the target of a reference - * - * Set the target of the specified reference. This reference must be - * locked. - * - * @param tx the transaction - * @param refname reference to update - * @param target target to set the reference to - * @param sig signature to use in the reflog; pass NULL to read the identity from the config - * @param msg message to use in the reflog - * @return 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code - */ -GIT_EXTERN(int) git_transaction_set_target(git_transaction *tx, const char *refname, const git_oid *target, const git_signature *sig, const char *msg); - -/** - * Set the target of a reference - * - * Set the target of the specified reference. This reference must be - * locked. - * - * @param tx the transaction - * @param refname reference to update - * @param target target to set the reference to - * @param sig signature to use in the reflog; pass NULL to read the identity from the config - * @param msg message to use in the reflog - * @return 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code - */ -GIT_EXTERN(int) git_transaction_set_symbolic_target(git_transaction *tx, const char *refname, const char *target, const git_signature *sig, const char *msg); - -/** - * Set the reflog of a reference - * - * Set the specified reference's reflog. If this is combined with - * setting the target, that update won't be written to the reflog. - * - * @param tx the transaction - * @param refname the reference whose reflog to set - * @param reflog the reflog as it should be written out - * @return 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code - */ -GIT_EXTERN(int) git_transaction_set_reflog(git_transaction *tx, const char *refname, const git_reflog *reflog); - -/** - * Remove a reference - * - * @param tx the transaction - * @param refname the reference to remove - * @return 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code - */ -GIT_EXTERN(int) git_transaction_remove(git_transaction *tx, const char *refname); - -/** - * Commit the changes from the transaction - * - * Perform the changes that have been queued. The updates will be made - * one by one, and the first failure will stop the processing. - * - * @param tx the transaction - * @return 0 or an error code - */ -GIT_EXTERN(int) git_transaction_commit(git_transaction *tx); - -/** - * Free the resources allocated by this transaction - * - * If any references remain locked, they will be unlocked without any - * changes made to them. - * - * @param tx the transaction - */ -GIT_EXTERN(void) git_transaction_free(git_transaction *tx); - -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/transport.h b/libgit2/include/git2/transport.h deleted file mode 100644 index 0ec2416..0000000 --- a/libgit2/include/git2/transport.h +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_transport_h__ -#define INCLUDE_git_transport_h__ - -#include "indexer.h" -#include "net.h" -#include "types.h" - -/** - * @file git2/transport.h - * @brief Git transport interfaces and functions - * @defgroup git_transport interfaces and functions - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** Signature of a function which creates a transport */ -typedef int (*git_transport_cb)(git_transport **out, git_remote *owner, void *param); - -/** - * Type of SSH host fingerprint - */ -typedef enum { - /** MD5 is available */ - GIT_CERT_SSH_MD5 = (1 << 0), - /** SHA-1 is available */ - GIT_CERT_SSH_SHA1 = (1 << 1), -} git_cert_ssh_t; - -/** - * Hostkey information taken from libssh2 - */ -typedef struct { - git_cert parent; - - /** - * A hostkey type from libssh2, either - * `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1` - */ - git_cert_ssh_t type; - - /** - * Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will - * have the MD5 hash of the hostkey. - */ - unsigned char hash_md5[16]; - - /** - * Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will - * have the SHA-1 hash of the hostkey. - */ - unsigned char hash_sha1[20]; -} git_cert_hostkey; - -/** - * X.509 certificate information - */ -typedef struct { - git_cert parent; - /** - * Pointer to the X.509 certificate data - */ - void *data; - /** - * Length of the memory block pointed to by `data`. - */ - size_t len; -} git_cert_x509; - -/* - *** Begin interface for credentials acquisition *** - */ - -/** Authentication type requested */ -typedef enum { - /* git_cred_userpass_plaintext */ - GIT_CREDTYPE_USERPASS_PLAINTEXT = (1u << 0), - - /* git_cred_ssh_key */ - GIT_CREDTYPE_SSH_KEY = (1u << 1), - - /* git_cred_ssh_custom */ - GIT_CREDTYPE_SSH_CUSTOM = (1u << 2), - - /* git_cred_default */ - GIT_CREDTYPE_DEFAULT = (1u << 3), - - /* git_cred_ssh_interactive */ - GIT_CREDTYPE_SSH_INTERACTIVE = (1u << 4), - - /** - * Username-only information - * - * If the SSH transport does not know which username to use, - * it will ask via this credential type. - */ - GIT_CREDTYPE_USERNAME = (1u << 5), - - /** - * Credentials read from memory. - * - * Only available for libssh2+OpenSSL for now. - */ - GIT_CREDTYPE_SSH_MEMORY = (1u << 6), -} git_credtype_t; - -/* The base structure for all credential types */ -typedef struct git_cred git_cred; - -struct git_cred { - git_credtype_t credtype; - void (*free)(git_cred *cred); -}; - -/** A plaintext username and password */ -typedef struct { - git_cred parent; - char *username; - char *password; -} git_cred_userpass_plaintext; - - -/* - * If the user hasn't included libssh2.h before git2.h, we need to - * define a few types for the callback signatures. - */ -#ifndef LIBSSH2_VERSION -typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION; -typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT; -typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE; -#endif - -typedef int (*git_cred_sign_callback)(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, const unsigned char *data, size_t data_len, void **abstract); -typedef void (*git_cred_ssh_interactive_callback)(const char* name, int name_len, const char* instruction, int instruction_len, int num_prompts, const LIBSSH2_USERAUTH_KBDINT_PROMPT* prompts, LIBSSH2_USERAUTH_KBDINT_RESPONSE* responses, void **abstract); - -/** - * A ssh key from disk - */ -typedef struct git_cred_ssh_key { - git_cred parent; - char *username; - char *publickey; - char *privatekey; - char *passphrase; -} git_cred_ssh_key; - -/** - * Keyboard-interactive based ssh authentication - */ -typedef struct git_cred_ssh_interactive { - git_cred parent; - char *username; - git_cred_ssh_interactive_callback prompt_callback; - void *payload; -} git_cred_ssh_interactive; - -/** - * A key with a custom signature function - */ -typedef struct git_cred_ssh_custom { - git_cred parent; - char *username; - char *publickey; - size_t publickey_len; - git_cred_sign_callback sign_callback; - void *payload; -} git_cred_ssh_custom; - -/** A key for NTLM/Kerberos "default" credentials */ -typedef struct git_cred git_cred_default; - -/** Username-only credential information */ -typedef struct git_cred_username { - git_cred parent; - char username[1]; -} git_cred_username; - -/** - * Check whether a credential object contains username information. - * - * @param cred object to check - * @return 1 if the credential object has non-NULL username, 0 otherwise - */ -GIT_EXTERN(int) git_cred_has_username(git_cred *cred); - -/** - * Create a new plain-text username and password credential object. - * The supplied credential parameter will be internally duplicated. - * - * @param out The newly created credential object. - * @param username The username of the credential. - * @param password The password of the credential. - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_userpass_plaintext_new( - git_cred **out, - const char *username, - const char *password); - -/** - * Create a new passphrase-protected ssh key credential object. - * The supplied credential parameter will be internally duplicated. - * - * @param out The newly created credential object. - * @param username username to use to authenticate - * @param publickey The path to the public key of the credential. - * @param privatekey The path to the private key of the credential. - * @param passphrase The passphrase of the credential. - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_ssh_key_new( - git_cred **out, - const char *username, - const char *publickey, - const char *privatekey, - const char *passphrase); - -/** - * Create a new ssh keyboard-interactive based credential object. - * The supplied credential parameter will be internally duplicated. - * - * @param username Username to use to authenticate. - * @param prompt_callback The callback method used for prompts. - * @param payload Additional data to pass to the callback. - * @return 0 for success or an error code for failure. - */ -GIT_EXTERN(int) git_cred_ssh_interactive_new( - git_cred **out, - const char *username, - git_cred_ssh_interactive_callback prompt_callback, - void *payload); - -/** - * Create a new ssh key credential object used for querying an ssh-agent. - * The supplied credential parameter will be internally duplicated. - * - * @param out The newly created credential object. - * @param username username to use to authenticate - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_ssh_key_from_agent( - git_cred **out, - const char *username); - -/** - * Create an ssh key credential with a custom signing function. - * - * This lets you use your own function to sign the challenge. - * - * This function and its credential type is provided for completeness - * and wraps `libssh2_userauth_publickey()`, which is undocumented. - * - * The supplied credential parameter will be internally duplicated. - * - * @param out The newly created credential object. - * @param username username to use to authenticate - * @param publickey The bytes of the public key. - * @param publickey_len The length of the public key in bytes. - * @param sign_callback The callback method to sign the data during the challenge. - * @param payload Additional data to pass to the callback. - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_ssh_custom_new( - git_cred **out, - const char *username, - const char *publickey, - size_t publickey_len, - git_cred_sign_callback sign_callback, - void *payload); - -/** - * Create a "default" credential usable for Negotiate mechanisms like NTLM - * or Kerberos authentication. - * - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_default_new(git_cred **out); - -/** - * Create a credential to specify a username. - * - * This is used with ssh authentication to query for the username if - * none is specified in the url. - */ -GIT_EXTERN(int) git_cred_username_new(git_cred **cred, const char *username); - -/** - * Create a new ssh key credential object reading the keys from memory. - * - * @param out The newly created credential object. - * @param username username to use to authenticate. - * @param publickey The public key of the credential. - * @param privatekey The private key of the credential. - * @param passphrase The passphrase of the credential. - * @return 0 for success or an error code for failure - */ -GIT_EXTERN(int) git_cred_ssh_key_memory_new( - git_cred **out, - const char *username, - const char *publickey, - const char *privatekey, - const char *passphrase); - - -/** - * Free a credential. - * - * This is only necessary if you own the object; that is, if you are a - * transport. - * - * @param cred the object to free - */ -GIT_EXTERN(void) git_cred_free(git_cred *cred); - -/** - * Signature of a function which acquires a credential object. - * - * - cred: The newly created credential object. - * - url: The resource for which we are demanding a credential. - * - username_from_url: The username that was embedded in a "user\@host" - * remote url, or NULL if not included. - * - allowed_types: A bitmask stating which cred types are OK to return. - * - payload: The payload provided when specifying this callback. - * - returns 0 for success, < 0 to indicate an error, > 0 to indicate - * no credential was acquired - */ -typedef int (*git_cred_acquire_cb)( - git_cred **cred, - const char *url, - const char *username_from_url, - unsigned int allowed_types, - void *payload); - -/** @} */ -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/tree.h b/libgit2/include/git2/tree.h deleted file mode 100644 index 550a448..0000000 --- a/libgit2/include/git2/tree.h +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_tree_h__ -#define INCLUDE_git_tree_h__ - -#include "common.h" -#include "types.h" -#include "oid.h" -#include "object.h" - -/** - * @file git2/tree.h - * @brief Git tree parsing, loading routines - * @defgroup git_tree Git tree parsing, loading routines - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Lookup a tree object from the repository. - * - * @param out Pointer to the looked up tree - * @param repo The repo to use when locating the tree. - * @param id Identity of the tree to locate. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tree_lookup( - git_tree **out, git_repository *repo, const git_oid *id); - -/** - * Lookup a tree object from the repository, - * given a prefix of its identifier (short id). - * - * @see git_object_lookup_prefix - * - * @param out pointer to the looked up tree - * @param repo the repo to use when locating the tree. - * @param id identity of the tree to locate. - * @param len the length of the short identifier - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tree_lookup_prefix( - git_tree **out, - git_repository *repo, - const git_oid *id, - size_t len); - -/** - * Close an open tree - * - * You can no longer use the git_tree pointer after this call. - * - * IMPORTANT: You MUST call this method when you stop using a tree to - * release memory. Failure to do so will cause a memory leak. - * - * @param tree The tree to close - */ -GIT_EXTERN(void) git_tree_free(git_tree *tree); - -/** - * Get the id of a tree. - * - * @param tree a previously loaded tree. - * @return object identity for the tree. - */ -GIT_EXTERN(const git_oid *) git_tree_id(const git_tree *tree); - -/** - * Get the repository that contains the tree. - * - * @param tree A previously loaded tree. - * @return Repository that contains this tree. - */ -GIT_EXTERN(git_repository *) git_tree_owner(const git_tree *tree); - -/** - * Get the number of entries listed in a tree - * - * @param tree a previously loaded tree. - * @return the number of entries in the tree - */ -GIT_EXTERN(size_t) git_tree_entrycount(const git_tree *tree); - -/** - * Lookup a tree entry by its filename - * - * This returns a git_tree_entry that is owned by the git_tree. You don't - * have to free it, but you must not use it after the git_tree is released. - * - * @param tree a previously loaded tree. - * @param filename the filename of the desired entry - * @return the tree entry; NULL if not found - */ -GIT_EXTERN(const git_tree_entry *) git_tree_entry_byname( - const git_tree *tree, const char *filename); - -/** - * Lookup a tree entry by its position in the tree - * - * This returns a git_tree_entry that is owned by the git_tree. You don't - * have to free it, but you must not use it after the git_tree is released. - * - * @param tree a previously loaded tree. - * @param idx the position in the entry list - * @return the tree entry; NULL if not found - */ -GIT_EXTERN(const git_tree_entry *) git_tree_entry_byindex( - const git_tree *tree, size_t idx); - -/** - * Lookup a tree entry by SHA value. - * - * This returns a git_tree_entry that is owned by the git_tree. You don't - * have to free it, but you must not use it after the git_tree is released. - * - * Warning: this must examine every entry in the tree, so it is not fast. - * - * @param tree a previously loaded tree. - * @param id the sha being looked for - * @return the tree entry; NULL if not found - */ -GIT_EXTERN(const git_tree_entry *) git_tree_entry_byid( - const git_tree *tree, const git_oid *id); - -/** - * Retrieve a tree entry contained in a tree or in any of its subtrees, - * given its relative path. - * - * Unlike the other lookup functions, the returned tree entry is owned by - * the user and must be freed explicitly with `git_tree_entry_free()`. - * - * @param out Pointer where to store the tree entry - * @param root Previously loaded tree which is the root of the relative path - * @param path Path to the contained entry - * @return 0 on success; GIT_ENOTFOUND if the path does not exist - */ -GIT_EXTERN(int) git_tree_entry_bypath( - git_tree_entry **out, - const git_tree *root, - const char *path); - -/** - * Duplicate a tree entry - * - * Create a copy of a tree entry. The returned copy is owned by the user, - * and must be freed explicitly with `git_tree_entry_free()`. - * - * @param dest pointer where to store the copy - * @param source tree entry to duplicate - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tree_entry_dup(git_tree_entry **dest, const git_tree_entry *source); - -/** - * Free a user-owned tree entry - * - * IMPORTANT: This function is only needed for tree entries owned by the - * user, such as the ones returned by `git_tree_entry_dup()` or - * `git_tree_entry_bypath()`. - * - * @param entry The entry to free - */ -GIT_EXTERN(void) git_tree_entry_free(git_tree_entry *entry); - -/** - * Get the filename of a tree entry - * - * @param entry a tree entry - * @return the name of the file - */ -GIT_EXTERN(const char *) git_tree_entry_name(const git_tree_entry *entry); - -/** - * Get the id of the object pointed by the entry - * - * @param entry a tree entry - * @return the oid of the object - */ -GIT_EXTERN(const git_oid *) git_tree_entry_id(const git_tree_entry *entry); - -/** - * Get the type of the object pointed by the entry - * - * @param entry a tree entry - * @return the type of the pointed object - */ -GIT_EXTERN(git_otype) git_tree_entry_type(const git_tree_entry *entry); - -/** - * Get the UNIX file attributes of a tree entry - * - * @param entry a tree entry - * @return filemode as an integer - */ -GIT_EXTERN(git_filemode_t) git_tree_entry_filemode(const git_tree_entry *entry); - -/** - * Get the raw UNIX file attributes of a tree entry - * - * This function does not perform any normalization and is only useful - * if you need to be able to recreate the original tree object. - * - * @param entry a tree entry - * @return filemode as an integer - */ - -GIT_EXTERN(git_filemode_t) git_tree_entry_filemode_raw(const git_tree_entry *entry); -/** - * Compare two tree entries - * - * @param e1 first tree entry - * @param e2 second tree entry - * @return <0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2 - */ -GIT_EXTERN(int) git_tree_entry_cmp(const git_tree_entry *e1, const git_tree_entry *e2); - -/** - * Convert a tree entry to the git_object it points to. - * - * You must call `git_object_free()` on the object when you are done with it. - * - * @param object_out pointer to the converted object - * @param repo repository where to lookup the pointed object - * @param entry a tree entry - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tree_entry_to_object( - git_object **object_out, - git_repository *repo, - const git_tree_entry *entry); - -/** - * Create a new tree builder. - * - * The tree builder can be used to create or modify trees in memory and - * write them as tree objects to the database. - * - * If the `source` parameter is not NULL, the tree builder will be - * initialized with the entries of the given tree. - * - * If the `source` parameter is NULL, the tree builder will start with no - * entries and will have to be filled manually. - * - * @param out Pointer where to store the tree builder - * @param repo Repository in which to store the object - * @param source Source tree to initialize the builder (optional) - * @return 0 on success; error code otherwise - */ -GIT_EXTERN(int) git_treebuilder_new( - git_treebuilder **out, git_repository *repo, const git_tree *source); - -/** - * Clear all the entires in the builder - * - * @param bld Builder to clear - */ -GIT_EXTERN(void) git_treebuilder_clear(git_treebuilder *bld); - -/** - * Get the number of entries listed in a treebuilder - * - * @param bld a previously loaded treebuilder. - * @return the number of entries in the treebuilder - */ -GIT_EXTERN(unsigned int) git_treebuilder_entrycount(git_treebuilder *bld); - -/** - * Free a tree builder - * - * This will clear all the entries and free to builder. - * Failing to free the builder after you're done using it - * will result in a memory leak - * - * @param bld Builder to free - */ -GIT_EXTERN(void) git_treebuilder_free(git_treebuilder *bld); - -/** - * Get an entry from the builder from its filename - * - * The returned entry is owned by the builder and should - * not be freed manually. - * - * @param bld Tree builder - * @param filename Name of the entry - * @return pointer to the entry; NULL if not found - */ -GIT_EXTERN(const git_tree_entry *) git_treebuilder_get( - git_treebuilder *bld, const char *filename); - -/** - * Add or update an entry to the builder - * - * Insert a new entry for `filename` in the builder with the - * given attributes. - * - * If an entry named `filename` already exists, its attributes - * will be updated with the given ones. - * - * The optional pointer `out` can be used to retrieve a pointer to the - * newly created/updated entry. Pass NULL if you do not need it. The - * pointer may not be valid past the next operation in this - * builder. Duplicate the entry if you want to keep it. - * - * No attempt is being made to ensure that the provided oid points - * to an existing git object in the object database, nor that the - * attributes make sense regarding the type of the pointed at object. - * - * @param out Pointer to store the entry (optional) - * @param bld Tree builder - * @param filename Filename of the entry - * @param id SHA1 oid of the entry - * @param filemode Folder attributes of the entry. This parameter must - * be valued with one of the following entries: 0040000, 0100644, - * 0100755, 0120000 or 0160000. - * @return 0 or an error code - */ -GIT_EXTERN(int) git_treebuilder_insert( - const git_tree_entry **out, - git_treebuilder *bld, - const char *filename, - const git_oid *id, - git_filemode_t filemode); - -/** - * Remove an entry from the builder by its filename - * - * @param bld Tree builder - * @param filename Filename of the entry to remove - */ -GIT_EXTERN(int) git_treebuilder_remove( - git_treebuilder *bld, const char *filename); - -/** - * Callback for git_treebuilder_filter - * - * The return value is treated as a boolean, with zero indicating that the - * entry should be left alone and any non-zero value meaning that the - * entry should be removed from the treebuilder list (i.e. filtered out). - */ -typedef int (*git_treebuilder_filter_cb)( - const git_tree_entry *entry, void *payload); - -/** - * Selectively remove entries in the tree - * - * The `filter` callback will be called for each entry in the tree with a - * pointer to the entry and the provided `payload`; if the callback returns - * non-zero, the entry will be filtered (removed from the builder). - * - * @param bld Tree builder - * @param filter Callback to filter entries - * @param payload Extra data to pass to filter callback - */ -GIT_EXTERN(void) git_treebuilder_filter( - git_treebuilder *bld, - git_treebuilder_filter_cb filter, - void *payload); - -/** - * Write the contents of the tree builder as a tree object - * - * The tree builder will be written to the given `repo`, and its - * identifying SHA1 hash will be stored in the `id` pointer. - * - * @param id Pointer to store the OID of the newly written tree - * @param bld Tree builder to write - * @return 0 or an error code - */ -GIT_EXTERN(int) git_treebuilder_write( - git_oid *id, git_treebuilder *bld); - - -/** Callback for the tree traversal method */ -typedef int (*git_treewalk_cb)( - const char *root, const git_tree_entry *entry, void *payload); - -/** Tree traversal modes */ -typedef enum { - GIT_TREEWALK_PRE = 0, /* Pre-order */ - GIT_TREEWALK_POST = 1, /* Post-order */ -} git_treewalk_mode; - -/** - * Traverse the entries in a tree and its subtrees in post or pre order. - * - * The entries will be traversed in the specified order, children subtrees - * will be automatically loaded as required, and the `callback` will be - * called once per entry with the current (relative) root for the entry and - * the entry data itself. - * - * If the callback returns a positive value, the passed entry will be - * skipped on the traversal (in pre mode). A negative value stops the walk. - * - * @param tree The tree to walk - * @param mode Traversal mode (pre or post-order) - * @param callback Function to call on each tree entry - * @param payload Opaque pointer to be passed on each callback - * @return 0 or an error code - */ -GIT_EXTERN(int) git_tree_walk( - const git_tree *tree, - git_treewalk_mode mode, - git_treewalk_cb callback, - void *payload); - -/** @} */ - -GIT_END_DECL -#endif diff --git a/libgit2/include/git2/types.h b/libgit2/include/git2/types.h deleted file mode 100644 index 6f41014..0000000 --- a/libgit2/include/git2/types.h +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_types_h__ -#define INCLUDE_git_types_h__ - -#include "common.h" - -/** - * @file git2/types.h - * @brief libgit2 base & compatibility types - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -/** - * Cross-platform compatibility types for off_t / time_t - * - * NOTE: This needs to be in a public header so that both the library - * implementation and client applications both agree on the same types. - * Otherwise we get undefined behavior. - * - * Use the "best" types that each platform provides. Currently we truncate - * these intermediate representations for compatibility with the git ABI, but - * if and when it changes to support 64 bit types, our code will naturally - * adapt. - * NOTE: These types should match those that are returned by our internal - * stat() functions, for all platforms. - */ -#include -#ifdef __amigaos4__ -#include -#endif - -#if defined(_MSC_VER) - -typedef __int64 git_off_t; -typedef __time64_t git_time_t; - -#elif defined(__MINGW32__) - -typedef off64_t git_off_t; -typedef __time64_t git_time_t; - -#elif defined(__HAIKU__) - -typedef __haiku_std_int64 git_off_t; -typedef __haiku_std_int64 git_time_t; - -#else /* POSIX */ - -/* - * Note: Can't use off_t since if a client program includes - * before us (directly or indirectly), they'll get 32 bit off_t in their client - * app, even though /we/ define _FILE_OFFSET_BITS=64. - */ -typedef int64_t git_off_t; -typedef int64_t git_time_t; - -#endif - -/** Basic type (loose or packed) of any Git object. */ -typedef enum { - GIT_OBJ_ANY = -2, /**< Object can be any of the following */ - GIT_OBJ_BAD = -1, /**< Object is invalid. */ - GIT_OBJ__EXT1 = 0, /**< Reserved for future use. */ - GIT_OBJ_COMMIT = 1, /**< A commit object. */ - GIT_OBJ_TREE = 2, /**< A tree (directory listing) object. */ - GIT_OBJ_BLOB = 3, /**< A file revision object. */ - GIT_OBJ_TAG = 4, /**< An annotated tag object. */ - GIT_OBJ__EXT2 = 5, /**< Reserved for future use. */ - GIT_OBJ_OFS_DELTA = 6, /**< A delta, base is given by an offset. */ - GIT_OBJ_REF_DELTA = 7, /**< A delta, base is given by object id. */ -} git_otype; - -/** An open object database handle. */ -typedef struct git_odb git_odb; - -/** A custom backend in an ODB */ -typedef struct git_odb_backend git_odb_backend; - -/** An object read from the ODB */ -typedef struct git_odb_object git_odb_object; - -/** A stream to read/write from the ODB */ -typedef struct git_odb_stream git_odb_stream; - -/** A stream to write a packfile to the ODB */ -typedef struct git_odb_writepack git_odb_writepack; - -/** An open refs database handle. */ -typedef struct git_refdb git_refdb; - -/** A custom backend for refs */ -typedef struct git_refdb_backend git_refdb_backend; - -/** - * Representation of an existing git repository, - * including all its object contents - */ -typedef struct git_repository git_repository; - -/** Representation of a generic object in a repository */ -typedef struct git_object git_object; - -/** Representation of an in-progress walk through the commits in a repo */ -typedef struct git_revwalk git_revwalk; - -/** Parsed representation of a tag object. */ -typedef struct git_tag git_tag; - -/** In-memory representation of a blob object. */ -typedef struct git_blob git_blob; - -/** Parsed representation of a commit object. */ -typedef struct git_commit git_commit; - -/** Representation of each one of the entries in a tree object. */ -typedef struct git_tree_entry git_tree_entry; - -/** Representation of a tree object. */ -typedef struct git_tree git_tree; - -/** Constructor for in-memory trees */ -typedef struct git_treebuilder git_treebuilder; - -/** Memory representation of an index file. */ -typedef struct git_index git_index; - -/** An iterator for conflicts in the index. */ -typedef struct git_index_conflict_iterator git_index_conflict_iterator; - -/** Memory representation of a set of config files */ -typedef struct git_config git_config; - -/** Interface to access a configuration file */ -typedef struct git_config_backend git_config_backend; - -/** Representation of a reference log entry */ -typedef struct git_reflog_entry git_reflog_entry; - -/** Representation of a reference log */ -typedef struct git_reflog git_reflog; - -/** Representation of a git note */ -typedef struct git_note git_note; - -/** Representation of a git packbuilder */ -typedef struct git_packbuilder git_packbuilder; - -/** Time in a signature */ -typedef struct git_time { - git_time_t time; /**< time in seconds from epoch */ - int offset; /**< timezone offset, in minutes */ -} git_time; - -/** An action signature (e.g. for committers, taggers, etc) */ -typedef struct git_signature { - char *name; /**< full name of the author */ - char *email; /**< email of the author */ - git_time when; /**< time when the action happened */ -} git_signature; - -/** In-memory representation of a reference. */ -typedef struct git_reference git_reference; - -/** Iterator for references */ -typedef struct git_reference_iterator git_reference_iterator; - -/** Transactional interface to references */ -typedef struct git_transaction git_transaction; - -/** Annotated commits, the input to merge and rebase. */ -typedef struct git_annotated_commit git_annotated_commit; - -/** Merge result */ -typedef struct git_merge_result git_merge_result; - -/** Representation of a status collection */ -typedef struct git_status_list git_status_list; - -/** Representation of a rebase */ -typedef struct git_rebase git_rebase; - -/** Basic type of any Git reference. */ -typedef enum { - GIT_REF_INVALID = 0, /**< Invalid reference */ - GIT_REF_OID = 1, /**< A reference which points at an object id */ - GIT_REF_SYMBOLIC = 2, /**< A reference which points at another reference */ - GIT_REF_LISTALL = GIT_REF_OID|GIT_REF_SYMBOLIC, -} git_ref_t; - -/** Basic type of any Git branch. */ -typedef enum { - GIT_BRANCH_LOCAL = 1, - GIT_BRANCH_REMOTE = 2, - GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE, -} git_branch_t; - -/** Valid modes for index and tree entries. */ -typedef enum { - GIT_FILEMODE_UNREADABLE = 0000000, - GIT_FILEMODE_TREE = 0040000, - GIT_FILEMODE_BLOB = 0100644, - GIT_FILEMODE_BLOB_EXECUTABLE = 0100755, - GIT_FILEMODE_LINK = 0120000, - GIT_FILEMODE_COMMIT = 0160000, -} git_filemode_t; - -/* - * A refspec specifies the mapping between remote and local reference - * names when fetch or pushing. - */ -typedef struct git_refspec git_refspec; - -/** - * Git's idea of a remote repository. A remote can be anonymous (in - * which case it does not have backing configuration entires). - */ -typedef struct git_remote git_remote; - -/** - * Interface which represents a transport to communicate with a - * remote. - */ -typedef struct git_transport git_transport; - -/** - * Preparation for a push operation. Can be used to configure what to - * push and the level of parallelism of the packfile builder. - */ -typedef struct git_push git_push; - -/* documentation in the definition */ -typedef struct git_remote_head git_remote_head; -typedef struct git_remote_callbacks git_remote_callbacks; - -/** - * This is passed as the first argument to the callback to allow the - * user to see the progress. - * - * - total_objects: number of objects in the packfile being downloaded - * - indexed_objects: received objects that have been hashed - * - received_objects: objects which have been downloaded - * - local_objects: locally-available objects that have been injected - * in order to fix a thin pack. - * - received-bytes: size of the packfile received up to now - */ -typedef struct git_transfer_progress { - unsigned int total_objects; - unsigned int indexed_objects; - unsigned int received_objects; - unsigned int local_objects; - unsigned int total_deltas; - unsigned int indexed_deltas; - size_t received_bytes; -} git_transfer_progress; - -/** - * Type for progress callbacks during indexing. Return a value less than zero - * to cancel the transfer. - * - * @param stats Structure containing information about the state of the transfer - * @param payload Payload provided by caller - */ -typedef int (*git_transfer_progress_cb)(const git_transfer_progress *stats, void *payload); - -/** - * Type for messages delivered by the transport. Return a negative value - * to cancel the network operation. - * - * @param str The message from the transport - * @param len The length of the message - * @param payload Payload provided by the caller - */ -typedef int (*git_transport_message_cb)(const char *str, int len, void *payload); - - -/** - * Type of host certificate structure that is passed to the check callback - */ -typedef enum git_cert_t { - /** - * No information about the certificate is available. This may - * happen when using curl. - */ - GIT_CERT_NONE, - /** - * The `data` argument to the callback will be a pointer to - * the DER-encoded data. - */ - GIT_CERT_X509, - /** - * The `data` argument to the callback will be a pointer to a - * `git_cert_hostkey` structure. - */ - GIT_CERT_HOSTKEY_LIBSSH2, - /** - * The `data` argument to the callback will be a pointer to a - * `git_strarray` with `name:content` strings containing - * information about the certificate. This is used when using - * curl. - */ - GIT_CERT_STRARRAY, -} git_cert_t; - -/** - * Parent type for `git_cert_hostkey` and `git_cert_x509`. - */ -typedef struct { - /** - * Type of certificate. A `GIT_CERT_` value. - */ - git_cert_t cert_type; -} git_cert; - -/** - * Callback for the user's custom certificate checks. - * - * @param cert The host certificate - * @param valid Whether the libgit2 checks (OpenSSL or WinHTTP) think - * this certificate is valid - * @param host Hostname of the host libgit2 connected to - * @param payload Payload provided by the caller - */ -typedef int (*git_transport_certificate_check_cb)(git_cert *cert, int valid, const char *host, void *payload); - -/** - * Opaque structure representing a submodule. - */ -typedef struct git_submodule git_submodule; - -/** - * Submodule update values - * - * These values represent settings for the `submodule.$name.update` - * configuration value which says how to handle `git submodule update` for - * this submodule. The value is usually set in the ".gitmodules" file and - * copied to ".git/config" when the submodule is initialized. - * - * You can override this setting on a per-submodule basis with - * `git_submodule_set_update()` and write the changed value to disk using - * `git_submodule_save()`. If you have overwritten the value, you can - * revert it by passing `GIT_SUBMODULE_UPDATE_RESET` to the set function. - * - * The values are: - * - * - GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is - * updated, checkout the new detached HEAD to the submodule directory. - * - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked - * out branch onto the commit from the superproject. - * - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the - * superproject into the current checkout out branch of the submodule. - * - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when - * the commit in the superproject is updated. - * - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer - * when we don't want any particular update rule to be specified. - */ -typedef enum { - GIT_SUBMODULE_UPDATE_CHECKOUT = 1, - GIT_SUBMODULE_UPDATE_REBASE = 2, - GIT_SUBMODULE_UPDATE_MERGE = 3, - GIT_SUBMODULE_UPDATE_NONE = 4, - - GIT_SUBMODULE_UPDATE_DEFAULT = 0 -} git_submodule_update_t; - -/** - * Submodule ignore values - * - * These values represent settings for the `submodule.$name.ignore` - * configuration value which says how deeply to look at the working - * directory when getting submodule status. - * - * You can override this value in memory on a per-submodule basis with - * `git_submodule_set_ignore()` and can write the changed value to disk - * with `git_submodule_save()`. If you have overwritten the value, you - * can revert to the on disk value by using `GIT_SUBMODULE_IGNORE_RESET`. - * - * The values are: - * - * - GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule's configuration - * - GIT_SUBMODULE_IGNORE_NONE: don't ignore any change - i.e. even an - * untracked file, will mark the submodule as dirty. Ignored files are - * still ignored, of course. - * - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes - * to tracked files, or the index or the HEAD commit will matter. - * - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory, - * only considering changes if the HEAD of submodule has moved from the - * value in the superproject. - * - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - * - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer - * when we don't want any particular ignore rule to be specified. - */ -typedef enum { - GIT_SUBMODULE_IGNORE_UNSPECIFIED = -1, /**< use the submodule's configuration */ - - GIT_SUBMODULE_IGNORE_NONE = 1, /**< any change or untracked == dirty */ - GIT_SUBMODULE_IGNORE_UNTRACKED = 2, /**< dirty if tracked files change */ - GIT_SUBMODULE_IGNORE_DIRTY = 3, /**< only dirty if HEAD moved */ - GIT_SUBMODULE_IGNORE_ALL = 4, /**< never dirty */ -} git_submodule_ignore_t; - -/** - * Options for submodule recurse. - * - * Represent the value of `submodule.$name.fetchRecurseSubmodules` - * - * * GIT_SUBMODULE_RECURSE_NO - do no recurse into submodules - * * GIT_SUBMODULE_RECURSE_YES - recurse into submodules - * * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when - * commit not already in local clone - */ -typedef enum { - GIT_SUBMODULE_RECURSE_NO = 0, - GIT_SUBMODULE_RECURSE_YES = 1, - GIT_SUBMODULE_RECURSE_ONDEMAND = 2, -} git_submodule_recurse_t; - -/** A type to write in a streaming fashion, for example, for filters. */ -typedef struct git_writestream git_writestream; - -struct git_writestream { - int (*write)(git_writestream *stream, const char *buffer, size_t len); - int (*close)(git_writestream *stream); - void (*free)(git_writestream *stream); -}; - -/** @} */ -GIT_END_DECL - -#endif diff --git a/libgit2/include/git2/version.h b/libgit2/include/git2/version.h deleted file mode 100644 index bde80fe..0000000 --- a/libgit2/include/git2/version.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ -#ifndef INCLUDE_git_version_h__ -#define INCLUDE_git_version_h__ - -#define LIBGIT2_VERSION "0.24.3" -#define LIBGIT2_VER_MAJOR 0 -#define LIBGIT2_VER_MINOR 24 -#define LIBGIT2_VER_REVISION 3 -#define LIBGIT2_VER_PATCH 0 - -#define LIBGIT2_SOVERSION 24 - -#endif diff --git a/libgit2/lib/Win32/git2.dll b/libgit2/lib/Win32/git2.dll deleted file mode 100644 index a6e1a2d7692cc4b73411ef072ead37e2fc33179b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829952 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

JLrcQabRGSxOJ=(o%Za_BpA( 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

`&>OrV)H_@2|2o`cH4X|{lcvJ{a&EI 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,o>9*LQ2ZtiM){<1 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

3q?1yeGmYxUXI7fknb|#ZhEP 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խ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�TR>Ga}Ml&--785rg1Rbv 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℘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

}Qw>z3~jXk#6=`o)ar208y6D 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

~ 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 R+|NX4@~^m$0R+GB@fXiwD6s$l diff --git a/libgit2/lib/x64/git2.lib b/libgit2/lib/x64/git2.lib deleted file mode 100644 index 05c224ee13a7ee2e6aa522f1deb1ab4c34f5a3d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169022 zcmeEvd%R_1{r|I8k|arzBu$bei800{X$YY)rZF^xJ?FB|oMX<}`#6`mB_tt9NRlK; zl2no;Ns?45Ns=VpB&j4{NmBjZpXc*jKF?(>_TJ;4->dU_ea_nJbA9gj^?6>tYv07c z@NR3rZbtaG-K-sVp1u9fJ8id9h~L({&YC%UTP7`DTd8OMNEQ1Zsfq(mR>k~lRk2__ zh65i}g@#pl0v4RWuy9xv1P7K33-7@@;GnA+4u&2Lo8d|D2*W}9fetw2A%?ddrV0%= z;R!foZH7f>tAgN=V;B}~gLlAT+cF$Jp$dXSZ)bS>KB~}g4W58Q7c(?YQ-y{Zcmn!h zn_%!thUONkAQ;?}VQ5WN5H!zX7#LRtLI1f71E3M~UB%G9CGdcOyBHQD4Kxhm31~dV zFtiGK0ZU+)U>IQ`7`mTf$vofzBS$a{p9nf&l!!#Pr!<03@5FD^Z=ZA7Q_2)g&n|2Qw%Ha10Uc$$PG91J2n@L#ftM1jWCR4+Q^( z9fE(4GW=(*Dl{OD{{cMlABM-Fo8XDl4a~q3@FCO(f`9G8aMny!5d7;3hO;ihJK*de zXeiY<>?1B8`>ug`cmn==KEruPbAk&_VE8z65nQkV!}TV zB>3pL8p;nMz657p$ne2C@J`UuP+WKe((eXU?skfX;?uJf!=-ovE25Ca@S=iTb5uSic z&Stm_@hA99$?!eoA;EXSPjJ~I22Q{e@HwOh!RN0sFb7Y-=Wb`X9I^yoIL!d!_yxeX z9%J~%=BgmL{9cByudfP%>*g|Cb)G5+z5*P<_247;)+P)$AWRxA!4vRJqz%FKD;U1H z0Plcn{%qhlJON+3#lWF>0fNR!e_!8wiS zZbX_Bd>v^)aK$+WAbSPiTcL%^*I7;b+^6&g0g6Yvx85!{A+&~PW7fS=4^xcx-%0dBpX z;m2F4g5WmA@KfLketb5=PZ!}G@N>kQ;Lcqb?l?;o1V2Z55!?YC1i!eH;jYE1AovCN z34XpQ!(F!m5BS*-!yQjR4)C*E81B3b`T<8=&2acS7&ie9yNKZkq$|PU_h=~J@p+|T z#jUE;a3r39RcL24tcfS!{r57QdXXwM?20Gg{Zj_k#&d0qHD)s$wWTTu#^*8|g)nM3 z9Z$e-*JrqYSQP}nyqn5pe%)3=eDpKEQpz5j=pjB=|M*o8S*9 z9~!{(2ZB=>egz&4TjL4%HS(F@_xCc~{g^5UetkQ`Z|_4m0e5d~;1oOozderOHz@xa zF2NIU?=}p-L)|C%{W1e<;R*QNLWXo@dP}ykAbW31pIAth6gWI z1;O7CKMiN%3HU40li<&@82&V@3JoY1e**laWO%q=6&h~F6Yy7*1A;#zEChdD!SEM^ zi{QaI41c);?|}bM=z)+rg*+5~jKvtUQV z<#+;~eG9|dd#I9Nt%n(&eHie7wJ&3M?sclva4?>Lbsk_?_dlxCa5kO<+c2ziH0XfM zz(?>(#FyX|H!*C!iz+oh|K@;KEM$1)>EHuwb_~N7x2uw1Go%T@tL89laU}2rieb|s zRT6A?Kf@-ws*>P^=P+!z3U~sHSqNUZ1;hHssghuWs~FZpI0#;{h+!j)VF+Gy1jEMn zsZs-UZ47u3!bY&sJcbwat5U-qcmmc(dJ?=8d8lDSJOMAemEon2;2p5(oeVFV4?JMK z>lvPp^dy)um*M3zRY@@8MuwN%f^Y&}d>+HgF9sd3{ss&iBd!E5h7N*FE@5~+cnCJw zkKuVORcg2!Pr$1#Wq38>L-3l78MZ_`2)07n5^VV>!&aZiJ77!j5xn{~h8+=Bg4Zu& zcpbu`;b=So+b?FA`H(6Jb^@JXCel_zi6`JSDE}Hx!4t4O(wtx?@Da?ufnlfn@DA8| zh+!AlCYZH1!*(bS1h2cFVVCnj2fTJShS#r&Z~|s8V%QF8MzAg333k|oVe8wVAF%Vm z3_C&x!Ok}^y#BY)1K8m~14y$S0JAP<*cN;Q+iYauG&}*XMO`46do;uDSE!QUO)Z8! zZ&oG20p}Xn8c)C*E@F7g!>ZJ<0#5?Oh2V{dFTvhhGVFCV#wmdPW-z=7G=h1+5zJqY zVISBc*mDuX?nozsIfokfE}noro-lwo>;c&KVum+Pz%F3_#SC*FM7#id%wU+eH|zoS z-HBoUJHQ8c^EwRsor&-P-av5#?0PN3ZX01<0hoUr!<$!tAF$6NhBx1bcfj5kFuZXM zgafeaehhC#c_EnpFvDAsj|2yThhV`h1LxogIB*%mLWGszz`Ge1UWs?Wp$6V|g(?Z& zj`(Rf4^P0Mdomofg(?Z&whzO>cd3%#kRbzz`yqgXk7QW%s458#dYoa=iFgMbbUMSL zP4K=6<|^kieCH;NV*%e=rlCA+ZKdJx>r_c_*eZs@7vLRm*nJFryQ-34@vwng@dPwZ zHt;Z>fWC_un(M2QU;sJ^ng}C7Kk`5W%6>m!U>?IDyCk z!I5_`EJZ#NOd#9@<5LVH2s6RBVwidy`T#BP5{$JNTF^@{j4%-_xq_j68sY&M-hyES zvIJw$M{x9p3@c};Qp34;0#<-VupGJwmR-)U9PuZZzMWy&KEMN3-NSJ7(a;BY2XF-M zyxPEAJOM}F%dlh)!Us48;nMIQJP8n1g5$0=0GZl+@MN=)4{I+;XWO3#zKY< zAPorKcMHRbTdGpS*?0m@T9W~5Xe9yGyfmD$0p1CYV|Xv(MR4+U1{UB6c<;pwC*21< zfFZ<3!|iz9u8Q|#>_~9>Oomf2{v&w*Lky?gsR|7k*PaIWz&ryt;t4ooU557`2Y$fm z7iuVv*h*$)X+qGtTEACHaXrL$jb*DPo`<8IW;gm-0Z6ei`M0N zYP5~E+e@d%^C2>{8fg>ep}f4K3Jp_J6OF#X!NyqMz(kwHLR7>%)ShVe4Geoui-`D^ zG^e1mwbC;>Ov)KB$y}qLEbAMcHbuj~Mmh!%q-JAibb3;ROd>sh|7hP>voX>_nQM8!V;)M3;px`WM*qsuk(OkSDK(NKt-mbWLC4vyF&5Qeb#^2w1^wr~hUWCMHy?I_g+PH<23wFZVMd0kW0AEFZ8NfgxS@yRJ9{1_)0 z3k3K?DktG^3HL;Etc_f4p<+rC5}n9cZD_+uSjxquYT4MLlhlMnE@sbji5A=>ZqjZW z{8)Qg5ODpTSRFyV>YHj$_%71sSwN_kYc-e4g*&mCc}w}%w^7TYD|XH_b!e# z?o~jTm{>VJGO#oo_AD*1WH@xfdSxPQJ<<#mBUXzQT1VThO#eQRq9YmBOl;CVk4{l3 zCi(`Z8j~YST76T~6DA3(h(a^7P;N9)gGZX9JVG?1-TNn0|B(_Nneg{bPYs9V*I-i4 zv1Ti%A{Z0^k??W15t!Fw!zxZaW<-JD5u-^|+4m5s!b)RVY6rL~ZavK!=o=mF?;GG@ zX2zVOOD(OTktN)clBiFJ6rV_;3{N&2<9$;+0YX1Wx&*dDVx%>-{Y(=*A;Rctnc1_l zGC)_z^tapGAqOGT*hGTIOPD^6i^-pnOK6GobZfNj(p^W%U=q%lProNz?Qt~0gUzA7 z=}{g5n2-ecL~00qWn+Azy=08LAGcCgHB}J$kB~8)Hc3k!5|hWzo@yNr?rT zjpPIad?IBf8ZP{HsBD6iXGrwul?@Z@hFuS#@uX3crDwHZo`v?C#-Xyjki4MONam%| z+$W83Tj6k7{c-&z?tJYfO46!$WL7))!xqKx=h_n@p=lUz+HOJ@5rNHGz);AnFo;ZH zWWrCShSOW7r@&?<;uIqOdm0Y0%}3NF$XOPMm_At8}7 zU6n2PseGOx(UYk-7M1Y23QJ8@BdWD2v0A=LG@KioB17w>nT}ba6HB_67;P?V2F4g4v;~7sWGIrflG#Y*Vp1X-C2}@x<1Qtd zLz^J#BJCGKQmnT<*qj`g80j}tL6jtv>tMyVmZ3_ITrv(7SV~56qB)7)!3Wz3NoZEWQLyyrJ;6%6Wk+1SkK_ZYmW7ejHVO)!FrZh7mbUO)pypB zkRsWNNP_yG@#e&k8|&#P1=vUeOHY&S3EBc1 z8R(njiJ=yX36UJ>L`!all+FyJBHq^Y81qhIuG*MdIWEj(XqD1F4ZM^XRdBFrH=;4s zM()~ei5xz%p(o`KG6l7VTwz5@fvH?^L@$~5jl^` za`S$VjGq>;XfLDl+oD~evqJ2AvQ0xIKd-B{VY6k2##)u}u=m5%O}bXO?!Nk&z^gw$0(J z1ew=wC#{k_oVgmxWP5sIfDRw^E#WRLhfi!6sj>E8P`o6%O2+Kdg=T_%x{!o7oRP@d zail6+=$&{iC{(G@RWel3Wp0`{X>=kZPD>aQ$!Q6LpKeVwm!MTJn@%Y<(VgRWIL|#g z(vQ}1W@B=AdTOw}yrsjQAX9#79|K;E@O)VMA0O6JaqQ&uVeHZ7aX}6rOZDmIv%fiv z352%6LIK*#4EIeAV{4jbwX~P11!7#v?P`!^jcSiYi(N7#dZgVS$kMdbirA=%DHkzn0bAzicx2X+DrJ*;>aV=yKDWBPV#bgPkidHQ>(i)%UCN`F3N-SAnGC)T%Ix^8p zRD-ScVKBXNa)irWgo?D7ERd|6DYBHZ3L1n;K7RN5#8QzKs9Q@)8N430){osaX^r1= zTs|SN&yOv+98aT-E(7Zs5wAn%WF~Pa!h8xPg2c!ie~vxRO_MHs0uk;nvyFrlTha`A z-$7Rl5uuoplZ@Ddw9?0PsY{-k8X4l=)t*CjNUsxL0^;Kj``v+mi#U?8mF5hvRT8dU z2}Po|OcUj6Q1#=IkjV$^n1ePcU}z}BN9H^eIJ=bc+FnF;g;w`hEJi* zbQ||ZMxqlLVxB3EuL(OAoyhnF1j8M#AP6P8;>-6$n<@E*Cs>&@I9Ge*d!k3I4H~{= zZ7{&gNkEq1E$CfPA8YX%@tC-1h9D*yn8hUlz}PG`X^$|sgp8b0v; z&FdkY3A*_i(p?T(kcV*nMLTiffeBo5MG->n>hHlgu}(d@I)~&*fcI#LZV&7ClC-ZY7gQ&TiW51 zCmIu^*GwdI85nEu;8(tfT=u-@7#1(v{Bb=oN9a(7=Wyfpg9+jnsE}8mQ=C8xXFo|L z?f@C`GpCxm`~sxa0mx=)nifqxe*p1I;aDB{gf$Pbq~#Muz-4qRVr!x5$t` zRGiZ&hdgB5zK41!@<9U&PKisoT{2|SO-u6EZvmVA@+s8TT!DR`$=G^`%}F@b%o>$` zR|R#XQSBqTo}^NHMs)oW+Mop#Izx*^dcEslK8Pjm3@Mb=>muSC9}<$dkeg03nd-yy z4q^|GAwQYV2g+kpiMSykEfyDY+j+7MM(`CeVch)Ky@b+4rx}LJ9ft_{*a>SIm*sYQ?t(koX%`gJUxb)YuWdfjwA%qBLLFlB z5<#nK1vE0xPv6gGWgJ1sjSTXDojy}F+ZOEzm*@7iPq4@NDoC!(MYvG=$mFV~@nb^4 zFs~sGwVg+C;Uiu8E#Vj#V<#*+GE)=u8uGLxhkgm^&7-Exr&Xka-$D+lAk{xG&J$;n zrr)6~P224Uo5W$?L$0YdV&`JYZyAn;X;h#`^WZ(?qD9c5FG<}7&Nar+6037Rv416OdIUCBc*6S%*&f_VOM6Fi>;Ioh_&*xoS1~%h-+G{G!K}oEOFQDL8~rQ}88)-aRs*eG(>Vy`EJT=cmG1uUQ}atPiJP zsn=DnhN(|MLwy9b8fK~2<(koK28HA6h=pRD%QlU#v?}U(kS|Fc52${zI|>97Dy`WM zK)3=0DlMr>7AKL(Rwjm)l95c4Ga4Pa;QK0LLKW2)oXAWM^U{&b5bMJ*(WLDU-!IDd zgbSS@{1d^ET5zt$h@`|Cd9?b@Wl17$i8b<~q*5j&Dg-^zg5v@sW@W?1mN5xuUq9BT zbygZiMkIWqA2Ezc-(m10tuY)8!@+4^H1m|ihTAnU{L$$Yr^Ospl<$eIV24noUw}`f z^t@Pb>vzdDgjtGKVW*PJoS!A@AN3E?t(fN$Wl081|4*A;%@r?iU4; zo>U==@xO>Qg^*1ee6>{D_&y5EL5lDdQu3r;AZ7`9Ip3j4p|}q-H2nz*j~7Esq8p8q zbx~(H4JP3fhYk#9a^}F`{SYufBpUS^nyEUJ=Fys(5tfyPxYAk!AC2%P#dCK0^2s!0 zaBLajgAf=hPJ_Z5CuOuqhb%28?Y7epSR)kesCfb`(H3D8I*ZL|2Mt>ksQ@7>_-Q9I zXT#ttq}cmjYRKSoQkW&eXBc)S;_wMVP7YItjF83VB^qfV< zC7Q=Ll1UF?7|blJK>>(D9guQ%Ekhu=-4xn6FW>cjVPaY4&*)TAVn;2FW3r0`Lfl$`CX$r?+3YuVdiTuytY zu4q(_*KHGc#nCQ-Ck!qh;j^3(DyNqW(kFsu@!v}bLQYO>?s^%6%<+o@Jf1%}#p6lg zfXEaVgUspAH0qV(4*Hv(4HMNr7UH6h6+8YV36Lr(~yr{ON;M1&~jT!R+1Vu{zlb)(

PVzqpdN~AQOvV+Yj+#%!d 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 diff --git a/CmdLine.cpp b/src/CmdLine.cpp similarity index 91% rename from CmdLine.cpp rename to src/CmdLine.cpp index 0f36e5c..973ccae 100644 --- a/CmdLine.cpp +++ b/src/CmdLine.cpp @@ -42,14 +42,16 @@ static pair GetUserPrefixRange(const CmdLine &cmdLine) { return pair(start, end); } -wstring GetUserPrefix(const CmdLine &cmdLine) { - Range range = GetUserPrefixRange(cmdLine); +static wstring GetRange(const CmdLine &cmdLine, Range range) { return cmdLine.line.substr(range.first, RangeLength(range)); } +wstring GetUserPrefix(const CmdLine &cmdLine) { + return GetRange(cmdLine, GetUserPrefixRange(cmdLine)); +} + wstring GetSuggestedSuffix(const CmdLine &cmdLine) { - Range range = GetSuggestedSuffixRange(cmdLine); - return cmdLine.line.substr(range.first, RangeLength(range)); + return GetRange(cmdLine, GetSuggestedSuffixRange(cmdLine)); } static Range ReplaceRange(CmdLine &cmdLine, Range range, const wstring &str) { diff --git a/CmdLine.hpp b/src/CmdLine.hpp similarity index 100% rename from CmdLine.hpp rename to src/CmdLine.hpp diff --git a/GitAutoComp.cpp b/src/GitAutocomplete.cpp similarity index 90% rename from GitAutoComp.cpp rename to src/GitAutocomplete.cpp index 74a9028..5576200 100644 --- a/GitAutoComp.cpp +++ b/src/GitAutocomplete.cpp @@ -1,4 +1,4 @@ -#include "GitAutoComp.hpp" +#include "GitAutocomplete.hpp" #include #include @@ -9,9 +9,9 @@ #include #include -#include "GitAutoCompLng.hpp" -#include "version.hpp" -#include "guid.hpp" +#include "GitAutocompleteLng.hpp" +#include "Version.hpp" +#include "Guid.hpp" #include "CmdLine.hpp" #include "Logic.hpp" #include "Trie.hpp" @@ -74,6 +74,7 @@ static void LoadGlobalOptionsFromPluginSettings() { PluginSettings settings(MainGuid, Info.SettingsControl); globalOptions.showDialog = settings.Get(0, OPT_SHOW_DIALOG, true); globalOptions.stripRemoteName = settings.Get(0, OPT_STRIP_REMOTE_NAME, true); + globalOptions.suggestNextSuffix = true; // it is always true in global options } static void StoreGlobalOptionsToPluginSettings() { @@ -89,7 +90,7 @@ void WINAPI SetStartupInfoW(const struct PluginStartupInfo *psi) { } intptr_t WINAPI ConfigureW(const ConfigureInfo* CfgInfo) { - PluginDialogBuilder Builder(Info, MainGuid, DialogGuid, MTitle, L"Config"); + PluginDialogBuilder Builder(Info, MainGuid, ConfigDialogGuid, MTitle, L"Config"); Builder.AddCheckbox(MShowDialog, &globalOptions.showDialog); Builder.AddCheckbox(MStripRemoteName, &globalOptions.stripRemoteName); @@ -174,6 +175,8 @@ static void ParseOption(Options &options, const wstring &str) { options.stripRemoteName = true; } else if (wstring(L"FullRemoteName") == str) { options.stripRemoteName = false; + } else if (wstring(L"ShowPreviousInlineSuggestion") == str) { + options.suggestNextSuffix = false; } else { *logFile << "Unknown option \"" << str << "\"" << endl; } @@ -214,7 +217,8 @@ HANDLE WINAPI OpenW(const struct OpenInfo *OInfo) { } *logFile << "options: " << "showDialog = " << options.showDialog << " " - << "stripRemoteName = " << options.stripRemoteName << endl; + << "stripRemoteName = " << options.stripRemoteName << " " + << "suggestNextSuffix = " << options.suggestNextSuffix << endl; wstring curDir = GetActivePanelDir(); if (curDir.empty()) { diff --git a/GitAutoComp.hpp b/src/GitAutocomplete.hpp similarity index 100% rename from GitAutoComp.hpp rename to src/GitAutocomplete.hpp diff --git a/GitAutoComp.rc b/src/GitAutocomplete.rc similarity index 94% rename from GitAutoComp.rc rename to src/GitAutocomplete.rc index 5263b0e..7752004 100644 --- a/GitAutoComp.rc +++ b/src/GitAutocomplete.rc @@ -1,4 +1,4 @@ -#include "version.hpp" +#include "Version.hpp" 1 VERSIONINFO FILEVERSION PLUGIN_VERSION_MAJOR, PLUGIN_VERSION_MINOR, PLUGIN_VERSION_BUILD, 0 diff --git a/GitAutoComp.sln b/src/GitAutocomplete.sln similarity index 61% rename from GitAutoComp.sln rename to src/GitAutocomplete.sln index ca426b4..570c6d4 100644 --- a/GitAutoComp.sln +++ b/src/GitAutocomplete.sln @@ -3,24 +3,24 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gitautocomp", "GitAutoComp.vcxproj", "{A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GitAutocomplete", "GitAutocomplete.vcxproj", "{A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 + Debug|Win32 = Debug|Win32 Release|x64 = Release|x64 - Release|x86 = Release|x86 + Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|x64.ActiveCfg = Debug|x64 {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|x64.Build.0 = Debug|x64 - {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|x86.ActiveCfg = Debug|Win32 - {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|x86.Build.0 = Debug|Win32 + {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|Win32.ActiveCfg = Debug|Win32 + {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Debug|Win32.Build.0 = Debug|Win32 {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|x64.ActiveCfg = Release|x64 {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|x64.Build.0 = Release|x64 - {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|x86.ActiveCfg = Release|Win32 - {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|x86.Build.0 = Release|Win32 + {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|Win32.ActiveCfg = Release|Win32 + {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/GitAutocomplete.vcxproj b/src/GitAutocomplete.vcxproj new file mode 100644 index 0000000..a715b1f --- /dev/null +++ b/src/GitAutocomplete.vcxproj @@ -0,0 +1,60 @@ + + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 32 + + + 64 + + + GitAutocomplete + {A0EEDB6F-87F0-459A-94FF-C683CE2CE8C1} + DynamicLibrary + plugins\$(ProjectName) + $(ProjectName)_$(Bitness) + + + + + + + + $(ProjectDir)..\libgit2\include + + + $(ProjectDir)..\libgit2\build_$(Bitness)\$(Configuration) + git2_$(Bitness).lib + + + + + + + + Copy libgit2 + xcopy /y "$(ProjectDir)..\libgit2\build_$(Bitness)\$(Configuration)\git2_$(Bitness).dll" "$(OutDir)" + + + 4530;4577;%(DisableSpecificWarnings) + + + diff --git a/src/GitAutocomplete.vcxproj.filters b/src/GitAutocomplete.vcxproj.filters new file mode 100644 index 0000000..baa9d35 --- /dev/null +++ b/src/GitAutocomplete.vcxproj.filters @@ -0,0 +1,4 @@ + + + + diff --git a/GitAutoCompLng.hpp b/src/GitAutocompleteLng.hpp similarity index 100% rename from GitAutoCompLng.hpp rename to src/GitAutocompleteLng.hpp diff --git a/GitAutoCompW.vc.def b/src/GitAutocompleteW.vc.def similarity index 54% rename from GitAutoCompW.vc.def rename to src/GitAutocompleteW.vc.def index 2aa3cc3..508b270 100644 --- a/GitAutoCompW.vc.def +++ b/src/GitAutocompleteW.vc.def @@ -1,5 +1,3 @@ -LIBRARY GitAutoComp -; DESCRIPTION 'GitAutoComp Far Plugin' EXPORTS GetGlobalInfoW SetStartupInfoW diff --git a/src/GitAutocomplete_en.hlf b/src/GitAutocomplete_en.hlf new file mode 100644 index 0000000..8d41e38 --- /dev/null +++ b/src/GitAutocomplete_en.hlf @@ -0,0 +1,53 @@ +.Language=English,English (English) +.PluginContents=GitAutocomplete +.Options CtrlStartPosChar=^ + +@Contents +$ #Git Autocomplete# + This plugin completes names of Git branches and tags in the command line. + + Let's assume that you have branches: + + #master# + #feature/inline-suggestions# + #feature/suggestions-dialog# + #origin/fix/help-typo# + + The plugin completes: + + #m# -> #master# + #fe# -> #feature/# + + And even this (punctuation and upper case are treated like anchors): + + #f/h# -> #fix/help-typo# + + If there is no single completion (e.g. #feature/#) the plugin shows a dialog with the list of all possible references. Note that you could easily filter this list using ~standard command~@:MenuCmd@ #Ctrl-Alt-F#. + + + See also: ~Configuring~@Config@ the plugin + + +@Config +$ #Configuring Git Autocomplete# + There are following options: + + #Show dialog# ^Show dialog with the list of all possible references. + #with references# Otherwise they are suggested right in the command line. + + #Complete remote references# ^Complete remote references (e.g. "origin/fix/help-typo") + #by their short name# by their short name without remote name prefix (e.g. "fix/help-typo"). + + Note that you can override these options for the single plugin invocation via #Plugin.Call# function in ~macro command~@:KeyMacroSetting@: + + #Plugin.Call("89DF1D5B-F5BB-415B-993D-D34C5FFE049F", "Option 1", "Option 2", ...)# + + Option names (enabled/disabled variant): + + #SuggestionsDialog# / #InlineSuggestions# + #ShortRemoteName# / #FullRemoteName# + + Also there is a handy option to iterate inline suggestions backwards: #ShowPreviousInlineSuggestion#. + + + See also: ~Contents~@Contents@ diff --git a/GitAutoComp_en.lng b/src/GitAutocomplete_en.lng similarity index 82% rename from GitAutoComp_en.lng rename to src/GitAutocomplete_en.lng index ea91b01..0bbe8b4 100644 --- a/GitAutoComp_en.lng +++ b/src/GitAutocomplete_en.lng @@ -1,6 +1,6 @@ .Language=English,English -"Git AutoComplete" +"Git Autocomplete" "Show &dialog with references" "Complete &remote references by their short name" diff --git a/src/GitAutocomplete_ru.hlf b/src/GitAutocomplete_ru.hlf new file mode 100644 index 0000000..7b5738d --- /dev/null +++ b/src/GitAutocomplete_ru.hlf @@ -0,0 +1,53 @@ +.Language=Russian,Russian (Русский) +.PluginContents=GitAutocomplete +.Options CtrlStartPosChar=^ + +@Contents +$ #Git Автодополнение# + Этот плагин дополняет имена Git веток и тегов в командной строке. + + Предположим у вас есть ветки: + + #master# + #feature/inline-suggestions# + #feature/suggestions-dialog# + #origin/fix/help-typo# + + Плагин дополнит: + + #m# -> #master# + #fe# -> #feature/# + + И даже так (пунктуация и прописные буквы играют роль якорей): + + #f/h# -> #fix/help-typo# + + Если не существует однозначного дополнения (например, #feature/#), то плагин показывает диалог со списком всех возможных ссылок. Заметьте, что вы можете легко фильтровать этот список с помощью ~стандартной команды~@:MenuCmd@ #Ctrl-Alt-F#. + + + См. также: ~Настройка плагина~@Config@ + + +@Config +$ #Настройка Git Автодополнение# + Присутствуют следующие опции: + + #Показывать диалог# ^Показывать диалог со списком всех возможных ссылок. + #со ссылками# Иначе они подставляются прямо в командной строке. + + #Дополнять имена удаленных ссылок# ^Дополнять имена удаленных ссылок (например, "origin/fix/help-typo") + #по их короткому имени# по их короткому имени без имени удаленного сервера (например, "fix/help-typo"). + + Эти опции можно переопределять для одиночного запуска плагина с помощью функции #Plugin.Call# в ~макрокоманде~@:KeyMacroSetting@: + + #Plugin.Call("89DF1D5B-F5BB-415B-993D-D34C5FFE049F", "Опция 1", "Опция 2", ...)# + + Имена опций (включенный/выключенный вариант): + + #SuggestionsDialog# / #InlineSuggestions# + #ShortRemoteName# / #FullRemoteName# + + Также имеется удобная опция для итерации ссылок в командной строке в обратном порядке: #ShowPreviousInlineSuggestion#. + + + См. также: ~Содержание~@Contents@ diff --git a/GitAutoComp_ru.lng b/src/GitAutocomplete_ru.lng similarity index 84% rename from GitAutoComp_ru.lng rename to src/GitAutocomplete_ru.lng index dfccf7e..ee47923 100644 --- a/GitAutoComp_ru.lng +++ b/src/GitAutocomplete_ru.lng @@ -1,6 +1,6 @@ .Language=Russian,Russian (Русский) -"Git Авто.Доп." +"Git Автодополнение" "Показывать &диалог со ссылками" "Дополнять имена &удаленных ссылок по их короткому имени" diff --git a/guid.hpp b/src/Guid.hpp similarity index 63% rename from guid.hpp rename to src/Guid.hpp index b73a2ae..0a326a1 100644 --- a/guid.hpp +++ b/src/Guid.hpp @@ -7,5 +7,8 @@ DEFINE_GUID(MenuGuid, 0x39518aec, 0xdcc1, 0x4e98, 0x84, 0x53, 0x6b, 0xd8, 0x0f, // {7ED6B1A4-9100-439E-BFBE-56322171459C} DEFINE_GUID(ConfigMenuGuid, 0x7ed6b1a4, 0x9100, 0x439e, 0xbf, 0xbe, 0x56, 0x32, 0x21, 0x71, 0x45, 0x9c); +// {F8FD2D64-0D35-481D-BD85-06F5315B9935} +DEFINE_GUID(ConfigDialogGuid, 0xf8fd2d64, 0x0d35, 0x481d, 0xbd, 0x85, 0x06, 0xf5, 0x31, 0x5b, 0x99, 0x35); + // {5390359D-C885-4531-8565-379E59754F13} -DEFINE_GUID(DialogGuid, 0x5390359d, 0xc885, 0x4531, 0x85, 0x65, 0x37, 0x9e, 0x59, 0x75, 0x4f, 0x13); \ No newline at end of file +DEFINE_GUID(RefsDialogGuid, 0x5390359d, 0xc885, 0x4531, 0x85, 0x65, 0x37, 0x9e, 0x59, 0x75, 0x4f, 0x13); \ No newline at end of file diff --git a/Logic.cpp b/src/Logic.cpp similarity index 72% rename from Logic.cpp rename to src/Logic.cpp index 2f7613f..d4447af 100644 --- a/Logic.cpp +++ b/src/Logic.cpp @@ -5,7 +5,7 @@ #include #include -#include "GitAutoComp.hpp" +#include "GitAutocomplete.hpp" #include "Utils.hpp" #include "Trie.hpp" #include "RefsDialog.h" @@ -114,17 +114,15 @@ static string FindCommonPrefix(vector &suitableRefs) { return maxCommonPrefix; } -static string ObtainNextSuggestedSuffix(string currentPrefix, string currentSuffix, vector &suitableRefs) { - auto it = find(suitableRefs.begin(), suitableRefs.end(), currentPrefix + currentSuffix); - if (it == suitableRefs.end()) { - it = suitableRefs.begin(); +static string ObtainNextSuggestedSuffix(bool forwardSearch, string currentPrefix, string currentSuffix, vector &suitableRefs) { + size_t size = suitableRefs.size(); + size_t idx = distance(suitableRefs.begin(), find(suitableRefs.begin(), suitableRefs.end(), currentPrefix + currentSuffix)); + if (idx == size) { + idx = forwardSearch ? 0 : (size - 1); } else { - it++; - if (it == suitableRefs.end()) { - it = suitableRefs.begin(); - } + idx = (idx + (forwardSearch ? 1 : -1) + size) % size; } - return DropPrefix(*it, currentPrefix); + return DropPrefix(suitableRefs[idx], currentPrefix); } void TransformCmdLine(const Options &options, CmdLine &cmdLine, git_repository *repo) { @@ -161,20 +159,26 @@ void TransformCmdLine(const Options &options, CmdLine &cmdLine, git_repository * ReplaceUserPrefix(cmdLine, mb2w(newPrefix)); } else { + string currentSuffix = w2mb(GetSuggestedSuffix(cmdLine)); + *logFile << "currentSuffix = \"" << currentSuffix.c_str() << "\"" << endl; + if (options.showDialog) { // Yes, we show dialog even if there is only one suitable ref. *logFile << "Showing dialog..." << endl; - string selectedRef = ShowRefsDialog(suitableRefs); + string selectedRef = ShowRefsDialog(suitableRefs, currentPrefix + currentSuffix); *logFile << "Dialog closed, selectedRef = \"" << selectedRef.c_str() << "\"" << endl; if (!selectedRef.empty()) { + // Use case: we iterate over branches with suggested suffixes + // but then we understand that we do not remember branch name + // and want to see them as dialog (via extra hotkey). + // In this case we should drop last suggested suffix. + ReplaceSuggestedSuffix(cmdLine, wstring(L"")); + ReplaceUserPrefix(cmdLine, mb2w(selectedRef)); } } else { - string currentSuffix = w2mb(GetSuggestedSuffix(cmdLine)); - *logFile << "currentSuffix = \"" << currentSuffix.c_str() << "\"" << endl; - - string newSuffix = ObtainNextSuggestedSuffix(currentPrefix, currentSuffix, suitableRefs); + string newSuffix = ObtainNextSuggestedSuffix(options.suggestNextSuffix, currentPrefix, currentSuffix, suitableRefs); *logFile << "nextSuffx = \"" << newSuffix.c_str() << "\"" << endl; ReplaceSuggestedSuffix(cmdLine, mb2w(newSuffix)); } @@ -201,15 +205,19 @@ void LogicTest() { { vector suitableRefs = { string("abcfoo"), string("abcxyz"), string("abcbar") }; - assert(string("bar") == ObtainNextSuggestedSuffix(string("abc"), string("xyz"), suitableRefs)); - assert(string("foo") == ObtainNextSuggestedSuffix(string("abc"), string("bar"), suitableRefs)); - assert(string("foo") == ObtainNextSuggestedSuffix(string("abc"), string(""), suitableRefs)); + assert(string("bar") == ObtainNextSuggestedSuffix(true, string("abc"), string("xyz"), suitableRefs)); + assert(string("foo") == ObtainNextSuggestedSuffix(true, string("abc"), string("bar"), suitableRefs)); + assert(string("foo") == ObtainNextSuggestedSuffix(true, string("abc"), string(""), suitableRefs)); + assert(string("foo") == ObtainNextSuggestedSuffix(false, string("abc"), string("xyz"), suitableRefs)); + assert(string("bar") == ObtainNextSuggestedSuffix(false, string("abc"), string("foo"), suitableRefs)); + assert(string("bar") == ObtainNextSuggestedSuffix(false, string("abc"), string(""), suitableRefs)); } { vector suitableRefs = { string("abc"), string("abcxyz"), string("abcbar") }; - assert(string("bar") == ObtainNextSuggestedSuffix(string("abc"), string("xyz"), suitableRefs)); - assert(string("") == ObtainNextSuggestedSuffix(string("abc"), string("bar"), suitableRefs)); - assert(string("xyz") == ObtainNextSuggestedSuffix(string("abc"), string(""), suitableRefs)); + assert(string("") == ObtainNextSuggestedSuffix(true, string("abc"), string("bar"), suitableRefs)); + assert(string("xyz") == ObtainNextSuggestedSuffix(true, string("abc"), string(""), suitableRefs)); + assert(string("bar") == ObtainNextSuggestedSuffix(false, string("abc"), string(""), suitableRefs)); + assert(string("") == ObtainNextSuggestedSuffix(false, string("abc"), string("xyz"), suitableRefs)); } } #endif diff --git a/Logic.hpp b/src/Logic.hpp similarity index 87% rename from Logic.hpp rename to src/Logic.hpp index 377aaae..5cca664 100644 --- a/Logic.hpp +++ b/src/Logic.hpp @@ -8,6 +8,7 @@ typedef struct tOptions { int showDialog; int stripRemoteName; + int suggestNextSuffix; } Options; git_repository* OpenGitRepo(std::wstring dir); diff --git a/src/RefsDialog.cpp b/src/RefsDialog.cpp new file mode 100644 index 0000000..5fac127 --- /dev/null +++ b/src/RefsDialog.cpp @@ -0,0 +1,157 @@ +#include "RefsDialog.h" + +#include +#include + +#include "GitAutocomplete.hpp" +#include "Guid.hpp" +#include "GitAutocompleteLng.hpp" +#include "Utils.hpp" + +using namespace std; + +static size_t MaxLength(const vector &list) { + return (*max_element(list.begin(), list.end(), [](string x, string y) -> bool { + return x.length() < y.length(); + })).length(); +} + +static SMALL_RECT GetFarRect() { + SMALL_RECT farRect; + Info.AdvControl(&MainGuid, ACTL_GETFARRECT, 0, &farRect); + *logFile << "Far rect (l, t, r, b) = (" << farRect.Left << ", " << farRect.Top << ", " << farRect.Right << ", " << farRect.Bottom << ")" << endl; + return farRect; +} + +static FarListItem * InitializeListItems(const vector &list, const string &initiallySelectedItem) { + size_t size = list.size(); + FarListItem *listItems = new FarListItem[size]; + size_t initiallySelected = 0; + for (size_t i = 0; i < size; ++i) { + wstring wstr = mb2w(list[i]); + listItems[i].Text = (const wchar_t *)wcsdup(wstr.c_str()); + listItems[i].Flags = LIF_NONE; + if (list[i] == initiallySelectedItem) { + initiallySelected = i; + } + } + listItems[initiallySelected].Flags |= LIF_SELECTED; + return listItems; +} + +static void FreeListItems(FarListItem *listItems, size_t size) { + for (size_t i = 0; i < size; ++i) { + free((wchar_t*)listItems[i].Text); + } + delete[] listItems; +} + +typedef struct tGeometry { + int left; + int top; + size_t width; + size_t height; +} Geometry; + +static pair CalculateListBoxAndDialogGeometry(size_t maxLineLength, size_t linesCount) { + // Example of list geometry: + // (left padding is added inside of ListBox automatically) + // + // +-- Title --+ + // |..bar ..| + // |..feature..| + // +-----------+ + + size_t listBoxWidth = maxLineLength + 6; + size_t listBoxHeight = linesCount + 2; + + // Example of dialog geometry: + // + // .......... + // ..+----+.. + // ..| |.. + // ..+----+.. + // .......... + + size_t dialogWidth = listBoxWidth + 4; + size_t dialogHeight = listBoxHeight + 2; + + // Some pretty double padding for the maximum dialog: + SMALL_RECT farRect = GetFarRect(); + size_t dialogMaxWidth = (farRect.Right - farRect.Left + 1) - 8; + size_t dialogMaxHeight = (farRect.Bottom - farRect.Top + 1) - 4; + + if (dialogWidth > dialogMaxWidth) { + size_t delta = dialogWidth - dialogMaxWidth; + dialogWidth -= delta; + listBoxWidth -= delta; + } + if (dialogHeight > dialogMaxHeight) { + size_t delta = dialogHeight - dialogMaxHeight; + dialogHeight -= delta; + listBoxHeight -= delta; + } + + Geometry list = {2, 1, listBoxWidth, listBoxHeight}; + Geometry dialog = {-1, -1, dialogWidth, dialogHeight}; // auto centering + return pair(list, dialog); +} + +static int ShowListAndGetSelected(const vector &list, const string &initiallySelectedItem) { + FarList listDesc; + listDesc.StructSize = sizeof(listDesc); + listDesc.Items = InitializeListItems(list, initiallySelectedItem); + listDesc.ItemsNumber = list.size(); + + FarDialogItem listBox; + memset(&listBox, 0, sizeof(listBox)); + listBox.Type = DI_LISTBOX; + listBox.Data = GetMsg(MTitle); + listBox.Flags = DIF_NONE; + listBox.ListItems = &listDesc; + + auto listAndDialogGeometry = CalculateListBoxAndDialogGeometry(MaxLength(list), list.size()); + Geometry listGeometry = listAndDialogGeometry.first; + Geometry dialogGeometry = listAndDialogGeometry.second; + + listBox.X1 = listGeometry.left; + listBox.Y1 = listGeometry.top; + listBox.X2 = listGeometry.left + listGeometry.width - 1; + listBox.Y2 = listGeometry.top + listGeometry.height - 1; + + FarDialogItem *items = &listBox; + size_t itemsCount = 1; + int listBoxID = 0; + + assert(dialogGeometry.left == -1 && dialogGeometry.top == -1); // auto centering + HANDLE dialog = Info.DialogInit(&MainGuid, &RefsDialogGuid, -1, -1, dialogGeometry.width, dialogGeometry.height, L"Contents", items, itemsCount, 0, FDLG_NONE, nullptr, nullptr); + + int runResult = (int)Info.DialogRun(dialog); + + int selected; + if (runResult != -1) { + selected = (int)Info.SendDlgMessage(dialog, DM_LISTGETCURPOS, listBoxID, nullptr); + assert(0 <= selected && selected < (int)listBox.ListItems->ItemsNumber); + } else { + selected = -1; + } + + Info.DialogFree(dialog); + FreeListItems(listDesc.Items, listDesc.ItemsNumber); + + return selected; +} + +string ShowRefsDialog(const vector &suitableRefs, const string &initiallySelectedRef) { + assert(!suitableRefs.empty()); + + int selected = ShowListAndGetSelected(suitableRefs, initiallySelectedRef); + if (selected >= 0) { + *logFile << "Dialog succeeded. Selected = " << selected << endl; + assert(0 <= selected && selected < (int)suitableRefs.size()); + return suitableRefs[selected]; + } else { + *logFile << "Dialog failed." << endl; + return string(""); + } +} diff --git a/src/RefsDialog.h b/src/RefsDialog.h new file mode 100644 index 0000000..de2e42a --- /dev/null +++ b/src/RefsDialog.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +std::string ShowRefsDialog(const std::vector &suitableRefs, const std::string &initiallySelectedRef); \ No newline at end of file diff --git a/Trie.cpp b/src/Trie.cpp similarity index 100% rename from Trie.cpp rename to src/Trie.cpp diff --git a/Trie.hpp b/src/Trie.hpp similarity index 100% rename from Trie.hpp rename to src/Trie.hpp diff --git a/Utils.cpp b/src/Utils.cpp similarity index 94% rename from Utils.cpp rename to src/Utils.cpp index 38cda16..a3b8dfd 100644 --- a/Utils.cpp +++ b/src/Utils.cpp @@ -2,7 +2,7 @@ #include -#include "GitAutoComp.hpp" +#include "GitAutocomplete.hpp" using namespace std; diff --git a/Utils.hpp b/src/Utils.hpp similarity index 100% rename from Utils.hpp rename to src/Utils.hpp diff --git a/version.hpp b/src/Version.hpp similarity index 70% rename from version.hpp rename to src/Version.hpp index efe0734..ef28b46 100644 --- a/version.hpp +++ b/src/Version.hpp @@ -1,13 +1,13 @@ #include "farversion.hpp" #define PLUGIN_BUILD 1 -#define PLUGIN_DESC L"Git AutoComplete Plugin for Far Manager" -#define PLUGIN_NAME L"GitAutoComp" -#define PLUGIN_FILENAME L"GitAutoComp.dll" +#define PLUGIN_DESC L"Git Autocomplete Plugin for Far Manager" +#define PLUGIN_NAME L"GitAutocomplete" +#define PLUGIN_FILENAME L"GitAutocomplete.dll" #define PLUGIN_COPYRIGHT L"Copyright (c) 2016 Excelsior LLC" #define PLUGIN_AUTHOR L"Vladimir Parfinenko & Ivan Kireev, " PLUGIN_COPYRIGHT #define PLUGIN_VERSION_MAJOR 1 -#define PLUGIN_VERSION_MINOR 0 +#define PLUGIN_VERSION_MINOR 1 #define PLUGIN_VERSION_BUILD 1 #define PLUGIN_VERSION MAKEFARVERSION(PLUGIN_VERSION_MAJOR,PLUGIN_VERSION_MINOR,0,PLUGIN_VERSION_BUILD,VS_RELEASE)

|zDUyVGY{7BwM`*&eQ>v0g~ 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 QFJ#k`)Q0)v{~!PT8+F~|l>h($ diff --git a/libgit2/lib/Win32/git2.lib b/libgit2/lib/Win32/git2.lib deleted file mode 100644 index e7f49e945260b85e2c0ca18493856775130c5c7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172718 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