Commit e85bbd52 by Edward Thomson

Move libgit2 settings out of util

parent 39c2302a
/*
* 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.
*/
#include <stdarg.h>
#include <git2.h>
#include "common.h"
#include "fileops.h"
#include "cache.h"
void git_libgit2_version(int *major, int *minor, int *rev)
{
*major = LIBGIT2_VER_MAJOR;
*minor = LIBGIT2_VER_MINOR;
*rev = LIBGIT2_VER_REVISION;
}
int git_libgit2_capabilities()
{
return 0
#ifdef GIT_THREADS
| GIT_CAP_THREADS
#endif
#if defined(GIT_SSL) || defined(GIT_WINHTTP)
| GIT_CAP_HTTPS
#endif
#if defined(GIT_SSH)
| GIT_CAP_SSH
#endif
;
}
/* Declarations for tuneable settings */
extern size_t git_mwindow__window_size;
extern size_t git_mwindow__mapped_limit;
static int config_level_to_futils_dir(int config_level)
{
int val = -1;
switch (config_level) {
case GIT_CONFIG_LEVEL_SYSTEM: val = GIT_FUTILS_DIR_SYSTEM; break;
case GIT_CONFIG_LEVEL_XDG: val = GIT_FUTILS_DIR_XDG; break;
case GIT_CONFIG_LEVEL_GLOBAL: val = GIT_FUTILS_DIR_GLOBAL; break;
default:
giterr_set(
GITERR_INVALID, "Invalid config path selector %d", config_level);
}
return val;
}
int git_libgit2_opts(int key, ...)
{
int error = 0;
va_list ap;
va_start(ap, key);
switch (key) {
case GIT_OPT_SET_MWINDOW_SIZE:
git_mwindow__window_size = va_arg(ap, size_t);
break;
case GIT_OPT_GET_MWINDOW_SIZE:
*(va_arg(ap, size_t *)) = git_mwindow__window_size;
break;
case GIT_OPT_SET_MWINDOW_MAPPED_LIMIT:
git_mwindow__mapped_limit = va_arg(ap, size_t);
break;
case GIT_OPT_GET_MWINDOW_MAPPED_LIMIT:
*(va_arg(ap, size_t *)) = git_mwindow__mapped_limit;
break;
case GIT_OPT_GET_SEARCH_PATH:
if ((error = config_level_to_futils_dir(va_arg(ap, int))) >= 0) {
char *out = va_arg(ap, char *);
size_t outlen = va_arg(ap, size_t);
error = git_futils_dirs_get_str(out, outlen, error);
}
break;
case GIT_OPT_SET_SEARCH_PATH:
if ((error = config_level_to_futils_dir(va_arg(ap, int))) >= 0)
error = git_futils_dirs_set(error, va_arg(ap, const char *));
break;
case GIT_OPT_SET_CACHE_OBJECT_LIMIT:
{
git_otype type = (git_otype)va_arg(ap, int);
size_t size = va_arg(ap, size_t);
error = git_cache_set_max_object_size(type, size);
break;
}
case GIT_OPT_SET_CACHE_MAX_SIZE:
git_cache__max_storage = va_arg(ap, ssize_t);
break;
case GIT_OPT_ENABLE_CACHING:
git_cache__enabled = (va_arg(ap, int) != 0);
break;
case GIT_OPT_GET_CACHED_MEMORY:
*(va_arg(ap, ssize_t *)) = git_cache__current_storage.val;
*(va_arg(ap, ssize_t *)) = git_cache__max_storage;
break;
case GIT_OPT_GET_TEMPLATE_PATH:
{
char *out = va_arg(ap, char *);
size_t outlen = va_arg(ap, size_t);
error = git_futils_dirs_get_str(out, outlen, GIT_FUTILS_DIR_TEMPLATE);
}
break;
case GIT_OPT_SET_TEMPLATE_PATH:
error = git_futils_dirs_set(GIT_FUTILS_DIR_TEMPLATE, va_arg(ap, const char *));
break;
}
va_end(ap);
return error;
}
......@@ -6,137 +6,14 @@
*/
#include <git2.h>
#include "common.h"
#include <stdarg.h>
#include <stdio.h>
#include <ctype.h>
#include "posix.h"
#include "fileops.h"
#include "cache.h"
#ifdef _MSC_VER
# include <Shlwapi.h>
#endif
void git_libgit2_version(int *major, int *minor, int *rev)
{
*major = LIBGIT2_VER_MAJOR;
*minor = LIBGIT2_VER_MINOR;
*rev = LIBGIT2_VER_REVISION;
}
int git_libgit2_capabilities()
{
return 0
#ifdef GIT_THREADS
| GIT_CAP_THREADS
#endif
#if defined(GIT_SSL) || defined(GIT_WINHTTP)
| GIT_CAP_HTTPS
#endif
#if defined(GIT_SSH)
| GIT_CAP_SSH
#endif
;
}
/* Declarations for tuneable settings */
extern size_t git_mwindow__window_size;
extern size_t git_mwindow__mapped_limit;
static int config_level_to_futils_dir(int config_level)
{
int val = -1;
switch (config_level) {
case GIT_CONFIG_LEVEL_SYSTEM: val = GIT_FUTILS_DIR_SYSTEM; break;
case GIT_CONFIG_LEVEL_XDG: val = GIT_FUTILS_DIR_XDG; break;
case GIT_CONFIG_LEVEL_GLOBAL: val = GIT_FUTILS_DIR_GLOBAL; break;
default:
giterr_set(
GITERR_INVALID, "Invalid config path selector %d", config_level);
}
return val;
}
int git_libgit2_opts(int key, ...)
{
int error = 0;
va_list ap;
va_start(ap, key);
switch (key) {
case GIT_OPT_SET_MWINDOW_SIZE:
git_mwindow__window_size = va_arg(ap, size_t);
break;
case GIT_OPT_GET_MWINDOW_SIZE:
*(va_arg(ap, size_t *)) = git_mwindow__window_size;
break;
case GIT_OPT_SET_MWINDOW_MAPPED_LIMIT:
git_mwindow__mapped_limit = va_arg(ap, size_t);
break;
case GIT_OPT_GET_MWINDOW_MAPPED_LIMIT:
*(va_arg(ap, size_t *)) = git_mwindow__mapped_limit;
break;
case GIT_OPT_GET_SEARCH_PATH:
if ((error = config_level_to_futils_dir(va_arg(ap, int))) >= 0) {
char *out = va_arg(ap, char *);
size_t outlen = va_arg(ap, size_t);
error = git_futils_dirs_get_str(out, outlen, error);
}
break;
case GIT_OPT_SET_SEARCH_PATH:
if ((error = config_level_to_futils_dir(va_arg(ap, int))) >= 0)
error = git_futils_dirs_set(error, va_arg(ap, const char *));
break;
case GIT_OPT_SET_CACHE_OBJECT_LIMIT:
{
git_otype type = (git_otype)va_arg(ap, int);
size_t size = va_arg(ap, size_t);
error = git_cache_set_max_object_size(type, size);
break;
}
case GIT_OPT_SET_CACHE_MAX_SIZE:
git_cache__max_storage = va_arg(ap, ssize_t);
break;
case GIT_OPT_ENABLE_CACHING:
git_cache__enabled = (va_arg(ap, int) != 0);
break;
case GIT_OPT_GET_CACHED_MEMORY:
*(va_arg(ap, ssize_t *)) = git_cache__current_storage.val;
*(va_arg(ap, ssize_t *)) = git_cache__max_storage;
break;
case GIT_OPT_GET_TEMPLATE_PATH:
{
char *out = va_arg(ap, char *);
size_t outlen = va_arg(ap, size_t);
error = git_futils_dirs_get_str(out, outlen, GIT_FUTILS_DIR_TEMPLATE);
}
break;
case GIT_OPT_SET_TEMPLATE_PATH:
error = git_futils_dirs_set(GIT_FUTILS_DIR_TEMPLATE, va_arg(ap, const char *));
break;
}
va_end(ap);
return error;
}
void git_strarray_free(git_strarray *array)
{
size_t i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment