mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-08 19:51:31 +00:00
commit
dec1ac755d
134
src/settings.c
Normal file
134
src/settings.c
Normal file
@ -0,0 +1,134 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
123
src/util.c
123
src/util.c
@ -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;
|
||||
|
@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "repository.h"
|
||||
#include "vector.h"
|
||||
|
||||
/* In elements, not bytes */
|
||||
|
Loading…
Reference in New Issue
Block a user