https://github.com/git/git
Revision e8b000fb9564bde11d48b836c195b8c70f7f33f7 authored by Luis Marsano on 16 April 2018, 06:08:00 UTC, committed by Luis Marsano on 09 May 2018, 16:55:02 UTC
git-credential-netrc was hardcoded to decrypt with 'gpg' regardless of the gpg.program option
this now uses the gpg command option if set, else, the gpg.program option set in the git repository or global configuration, else defaults to 'gpg'
for git-credential-netrc
- use Git.pm for repository and global option queries
- add -g|--gpg command option & document it in command usage
- test repository & command options
- support unicode

Signed-off-by: Luis Marsano <luis.marsano@gmail.com>
1 parent 0061b41
Raw File
Tip revision: e8b000fb9564bde11d48b836c195b8c70f7f33f7 authored by Luis Marsano on 16 April 2018, 06:08:00 UTC
git-credential-netrc: accept gpg option
Tip revision: e8b000f
oidmap.c
#include "cache.h"
#include "oidmap.h"

static int cmpfn(const void *hashmap_cmp_fn_data,
		 const void *entry, const void *entry_or_key,
		 const void *keydata)
{
	const struct oidmap_entry *entry_ = entry;
	if (keydata)
		return oidcmp(&entry_->oid, (const struct object_id *) keydata);
	return oidcmp(&entry_->oid,
		      &((const struct oidmap_entry *) entry_or_key)->oid);
}

static int hash(const struct object_id *oid)
{
	int hash;
	memcpy(&hash, oid->hash, sizeof(hash));
	return hash;
}

void oidmap_init(struct oidmap *map, size_t initial_size)
{
	hashmap_init(&map->map, cmpfn, NULL, initial_size);
}

void oidmap_free(struct oidmap *map, int free_entries)
{
	if (!map)
		return;
	hashmap_free(&map->map, free_entries);
}

void *oidmap_get(const struct oidmap *map, const struct object_id *key)
{
	if (!map->map.cmpfn)
		return NULL;

	return hashmap_get_from_hash(&map->map, hash(key), key);
}

void *oidmap_remove(struct oidmap *map, const struct object_id *key)
{
	struct hashmap_entry entry;

	if (!map->map.cmpfn)
		oidmap_init(map, 0);

	hashmap_entry_init(&entry, hash(key));
	return hashmap_remove(&map->map, &entry, key);
}

void *oidmap_put(struct oidmap *map, void *entry)
{
	struct oidmap_entry *to_put = entry;

	if (!map->map.cmpfn)
		oidmap_init(map, 0);

	hashmap_entry_init(&to_put->internal_entry, hash(&to_put->oid));
	return hashmap_put(&map->map, to_put);
}
back to top