Commit 0657e46d by Romain Geissler

Fix: GIT_PATH_PATH_SEPARATOR is now a semi-colon under Windows.

GIT_PATH_LIST_SEPARATOR and GIT_PATH_MAX are made public so
that it's can be used by a client.
parent efcc87c9
...@@ -76,6 +76,10 @@ ...@@ -76,6 +76,10 @@
# define GIT_FORMAT_PRINTF(a,b) /* empty */ # define GIT_FORMAT_PRINTF(a,b) /* empty */
#endif #endif
#if defined(_WIN32) && !defined(__CYGWIN__)
#define GIT_WIN32 1
#endif
/** /**
* @file git2/common.h * @file git2/common.h
* @brief Git common platform definitions * @brief Git common platform definitions
...@@ -86,6 +90,22 @@ ...@@ -86,6 +90,22 @@
GIT_BEGIN_DECL GIT_BEGIN_DECL
/**
* The separator used in path list strings (ie like in the PATH
* environment variable). A semi-colon ";" is used on Windows, and
* a colon ":" for all other systems.
*/
#ifdef GIT_WIN32
#define GIT_PATH_LIST_SEPARATOR ';'
#else
#define GIT_PATH_LIST_SEPARATOR ':'
#endif
/**
* The maximum length of a git valid git path.
*/
#define GIT_PATH_MAX 4096
typedef struct { typedef struct {
char **strings; char **strings;
size_t count; size_t count;
......
...@@ -151,9 +151,9 @@ GIT_EXTERN(int) git_repository_open3(git_repository **repository, ...@@ -151,9 +151,9 @@ GIT_EXTERN(int) git_repository_open3(git_repository **repository,
* @param across_fs If true, then the lookup will not stop when a filesystem device change * @param across_fs If true, then the lookup will not stop when a filesystem device change
* is detected while exploring parent directories. * is detected while exploring parent directories.
* *
* @param ceiling_dirs A colon separated of absolute symbolic link free paths. The lookup will * @param ceiling_dirs A GIT_PATH_LIST_SEPARATOR separated list of absolute symbolic link
* stop when any of this paths is reached. Note that the lookup always performs on start_path * free paths. The lookup will stop when any of this paths is reached. Note that the
* no matter start_path appears in ceiling_dirs * lookup always performs on start_path no matter start_path appears in ceiling_dirs
* ceiling_dirs might be NULL (which is equivalent to an empty string) * ceiling_dirs might be NULL (which is equivalent to an empty string)
* *
* @return 0 on success; error code otherwise * @return 0 on success; error code otherwise
......
#ifndef INCLUDE_common_h__ #ifndef INCLUDE_common_h__
#define INCLUDE_common_h__ #define INCLUDE_common_h__
#include "git2/common.h"
/** Force 64 bit off_t size on POSIX. */ /** Force 64 bit off_t size on POSIX. */
#define _FILE_OFFSET_BITS 64 #define _FILE_OFFSET_BITS 64
#if defined(_WIN32) && !defined(__CYGWIN__)
#define GIT_WIN32 1
#endif
#include "git2/thread-utils.h" #include "git2/thread-utils.h"
#include "cc-compat.h" #include "cc-compat.h"
...@@ -48,13 +46,11 @@ typedef SSIZE_T ssize_t; ...@@ -48,13 +46,11 @@ typedef SSIZE_T ssize_t;
# endif # endif
#endif #endif
#include "git2/common.h"
#include "git2/types.h" #include "git2/types.h"
#include "git2/errors.h" #include "git2/errors.h"
#include "thread-utils.h" #include "thread-utils.h"
#include "bswap.h" #include "bswap.h"
#define GIT_PATH_MAX 4096
extern int git__throw(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3); extern int git__throw(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3);
extern int git__rethrow(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3); extern int git__rethrow(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3);
......
...@@ -12,8 +12,6 @@ ...@@ -12,8 +12,6 @@
#include <fcntl.h> #include <fcntl.h>
#include <time.h> #include <time.h>
#define GIT_PATH_LIST_SEPARATOR ':'
#ifdef GIT_WIN32 #ifdef GIT_WIN32
#define GIT_PLATFORM_PATH_SEP '\\' #define GIT_PLATFORM_PATH_SEP '\\'
#else #else
......
...@@ -334,7 +334,7 @@ static int append_ceiling_dir(char *ceiling_dirs, const char *path) ...@@ -334,7 +334,7 @@ static int append_ceiling_dir(char *ceiling_dirs, const char *path)
return git__rethrow(error, "Failed to append ceiling directory."); return git__rethrow(error, "Failed to append ceiling directory.");
if (len) if (len)
ceiling_dirs[len] = ':'; ceiling_dirs[len] = GIT_PATH_LIST_SEPARATOR;
return GIT_SUCCESS; return GIT_SUCCESS;
} }
......
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