From e52e38d3801f194d8c463266f6acb279856ccf8c Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Wed, 12 Jan 2011 01:42:07 +0200 Subject: [PATCH] Move the compat definitions to types.h Don't need a brand new header for two typedefs when we already have a types.h header. Change comment style to ANSI C. Signed-off-by: Vicent Marti --- src/common.h | 2 +- src/git2.h | 1 - src/git2/compat.h | 70 ----------------------------------------------- src/git2/types.h | 40 ++++++++++++++++++++++++++- 4 files changed, 40 insertions(+), 73 deletions(-) delete mode 100644 src/git2/compat.h diff --git a/src/common.h b/src/common.h index addad6a98..1ca00471b 100644 --- a/src/common.h +++ b/src/common.h @@ -47,7 +47,7 @@ typedef SSIZE_T ssize_t; #endif #include "git2/common.h" -#include "git2/compat.h" +#include "git2/types.h" #include "util.h" #include "thread-utils.h" #include "bswap.h" diff --git a/src/git2.h b/src/git2.h index fbd972b03..9eb9294df 100644 --- a/src/git2.h +++ b/src/git2.h @@ -27,7 +27,6 @@ #define INCLUDE_git_git_h__ #include "git2/common.h" -#include "git2/compat.h" #include "git2/errors.h" #include "git2/zlib.h" diff --git a/src/git2/compat.h b/src/git2/compat.h deleted file mode 100644 index 76efae0ab..000000000 --- a/src/git2/compat.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, version 2, - * as published by the Free Software Foundation. - * - * In addition to the permissions in the GNU General Public License, - * the authors give you unlimited permission to link the compiled - * version of this file into combinations with other programs, - * and to distribute those combinations without any restriction - * coming from the use of this file. (The General Public License - * restrictions do apply in other respects; for example, they cover - * modification of the file, and distribution when not linked into - * a combined executable.) - * - * This file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -#ifndef INCLUDE_git_compat_h__ -#define INCLUDE_git_compat_h__ - -/** - * @file git2/compat.h - * @brief Type compatibility layer necessary for clients of the library. - * @ingroup Git - * @{ - */ -GIT_BEGIN_DECL - -// 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. -#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 time_t 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 long long git_off_t; -typedef time_t git_time_t; - -#endif - -/** @} */ -GIT_END_DECL - -#endif diff --git a/src/git2/types.h b/src/git2/types.h index 99de33218..de7b9bcd3 100644 --- a/src/git2/types.h +++ b/src/git2/types.h @@ -27,12 +27,49 @@ /** * @file git2/types.h - * @brief libgit2 base types + * @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. + */ +#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 time_t 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 long long git_off_t; +typedef time_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 */ @@ -62,6 +99,7 @@ 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. */