summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common.h1
-rw-r--r--src/errors.c28
-rw-r--r--src/errors.h24
-rw-r--r--src/fileops.c20
-rw-r--r--src/git2/errors.h10
-rw-r--r--src/unix/map.c2
-rw-r--r--src/util.c24
-rw-r--r--src/util.h32
8 files changed, 21 insertions, 120 deletions
diff --git a/src/common.h b/src/common.h
index 821ee8844..287df60e2 100644
--- a/src/common.h
+++ b/src/common.h
@@ -49,7 +49,6 @@ typedef SSIZE_T ssize_t;
#include "git2/common.h"
#include "util.h"
#include "thread-utils.h"
-#include "errors.h"
#include "bswap.h"
#define GIT_PATH_MAX 4096
diff --git a/src/errors.c b/src/errors.c
index ac73402ee..df8b82200 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -1,34 +1,6 @@
#include "common.h"
#include "thread-utils.h" /* for GIT_TLS */
-#if defined(GIT_TLS)
-/* compile-time constant initialization required */
-GIT_TLS int git_errno = 0;
-
-#elif defined(GIT_HAS_PTHREAD)
-
-static pthread_key_t errno_key;
-
-static void init_errno(void) __attribute__((constructor));
-static void init_errno(void)
-{
- pthread_key_create(&errno_key, free);
-}
-
-int *git__errno_storage(void)
-{
- int *e = pthread_getspecific(errno_key);
- if (!e) {
-#undef calloc
- e = calloc(1, sizeof(*e));
-#define calloc(a,b) GIT__FORBID_MALLOC
- pthread_setspecific(errno_key, e);
- }
- return e;
-}
-
-#endif
-
static struct {
int num;
const char *str;
diff --git a/src/errors.h b/src/errors.h
deleted file mode 100644
index d22a03b33..000000000
--- a/src/errors.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef INCLUDE_errors_h__
-#define INCLUDE_errors_h__
-
-#include "git2/errors.h"
-
-/* convenience functions */
-GIT_INLINE(int) git_int_error(int code)
-{
- git_errno = code;
- return code;
-}
-
-GIT_INLINE(int) git_os_error(void)
-{
- return git_int_error(GIT_EOSERR);
-}
-
-GIT_INLINE(void) *git_ptr_error(int code)
-{
- git_errno = code;
- return NULL;
-}
-
-#endif
diff --git a/src/fileops.c b/src/fileops.c
index a25796a7b..5d7e92978 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -4,13 +4,13 @@
int gitfo_open(const char *path, int flags)
{
int fd = open(path, flags | O_BINARY);
- return fd >= 0 ? fd : git_os_error();
+ return fd >= 0 ? fd : GIT_EOSERR;
}
int gitfo_creat(const char *path, int mode)
{
int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, mode);
- return fd >= 0 ? fd : git_os_error();
+ return fd >= 0 ? fd : GIT_EOSERR;
}
int gitfo_read(git_file fd, void *buf, size_t cnt)
@@ -21,11 +21,11 @@ int gitfo_read(git_file fd, void *buf, size_t cnt)
if (r < 0) {
if (errno == EINTR || errno == EAGAIN)
continue;
- return git_os_error();
+ return GIT_EOSERR;
}
if (!r) {
errno = EPIPE;
- return git_os_error();
+ return GIT_EOSERR;
}
cnt -= r;
b += r;
@@ -41,11 +41,11 @@ int gitfo_write(git_file fd, void *buf, size_t cnt)
if (r < 0) {
if (errno == EINTR || errno == EAGAIN)
continue;
- return git_os_error();
+ return GIT_EOSERR;
}
if (!r) {
errno = EPIPE;
- return git_os_error();
+ return GIT_EOSERR;
}
cnt -= r;
b += r;
@@ -92,7 +92,7 @@ off_t gitfo_size(git_file fd)
{
struct stat sb;
if (gitfo_fstat(fd, &sb))
- return git_os_error();
+ return GIT_EOSERR;
return sb.st_size;
}
@@ -151,13 +151,13 @@ int gitfo_move_file(char *from, char *to)
if (!rename(from, to))
return GIT_SUCCESS;
- return git_os_error();
+ return GIT_EOSERR;
}
int gitfo_map_ro(git_map *out, git_file fd, off_t begin, size_t len)
{
if (git__mmap(out, len, GIT_PROT_READ, GIT_MAP_SHARED, fd, begin) < GIT_SUCCESS)
- return git_os_error();
+ return GIT_EOSERR;
return GIT_SUCCESS;
}
@@ -275,7 +275,7 @@ int gitfo_dirent(
dir = opendir(path);
if (!dir)
- return git_os_error();
+ return GIT_EOSERR;
while ((de = readdir(dir)) != NULL) {
size_t de_len;
diff --git a/src/git2/errors.h b/src/git2/errors.h
index 98bce4857..627e67c70 100644
--- a/src/git2/errors.h
+++ b/src/git2/errors.h
@@ -33,16 +33,6 @@
*/
GIT_BEGIN_DECL
-/** The git errno. */
-#if defined(GIT_TLS)
-GIT_EXTERN_TLS(int) git_errno;
-
-#elif defined(GIT_HAS_PTHREAD)
-# define git_errno (*git__errno_storage())
-GIT_EXTERN(int *) git__errno_storage(void);
-
-#endif
-
/**
* strerror() for the Git library
* @param num The error code to explain
diff --git a/src/unix/map.c b/src/unix/map.c
index a41bae0b8..3008008a6 100644
--- a/src/unix/map.c
+++ b/src/unix/map.c
@@ -40,7 +40,7 @@ int git__mmap(git_map *out, size_t len, int prot, int flags, int fd, off_t offse
out->data = mmap(NULL, len, mprot, mflag, fd, offset);
if (!out->data || out->data == MAP_FAILED)
- return git_os_error();
+ return GIT_EOSERR;
out->len = len;
return GIT_SUCCESS;
diff --git a/src/util.c b/src/util.c
index debf526d2..a3b62effa 100644
--- a/src/util.c
+++ b/src/util.c
@@ -3,30 +3,6 @@
#include <stdarg.h>
#include <stdio.h>
-void *git__malloc(size_t n)
-{
- void *r = malloc(n);
- if (!r)
- return git_ptr_error(GIT_ENOMEM);
- return r;
-}
-
-void *git__calloc(size_t a, size_t b)
-{
- void *r = calloc(a, b);
- if (!r)
- return git_ptr_error(GIT_ENOMEM);
- return r;
-}
-
-char *git__strdup(const char *s)
-{
- char *r = strdup(s);
- if (!r)
- return git_ptr_error(GIT_ENOMEM);
- return r;
-}
-
int git__fmt(char *buf, size_t buf_sz, const char *fmt, ...)
{
va_list va;
diff --git a/src/util.h b/src/util.h
index 05f5a3443..5204185b9 100644
--- a/src/util.h
+++ b/src/util.h
@@ -3,28 +3,16 @@
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
-GIT_EXTERN(void *) git__malloc(size_t);
-GIT_EXTERN(void *) git__calloc(size_t, size_t);
-GIT_EXTERN(char *) git__strdup(const char *);
-
-#ifndef GIT__NO_HIDE_MALLOC
-# define GIT__FORBID_MALLOC do_not_use_malloc_directly
-
-# ifdef malloc
-# undef malloc
-# endif
-# define malloc(a) GIT__FORBID_MALLOC
-
-# ifdef calloc
-# undef calloc
-# endif
-# define calloc(a,b) GIT__FORBID_MALLOC
-
-# ifdef strdup
-# undef strdup
-# endif
-# define strdup(a) GIT__FORBID_MALLOC
-#endif
+/*
+ * Don't wrap malloc/calloc.
+ * Use the default versions in glibc, and make
+ * sure that any methods that allocate memory
+ * return a GIT_ENOMEM error when allocation
+ * fails.
+ */
+#define git__malloc malloc
+#define git__calloc calloc
+#define git__strdup strdup
GIT_EXTERN(int) git__fmt(char *, size_t, const char *, ...)
GIT_FORMAT_PRINTF(3, 4);