From e9ca852e4d77e1b1723a2dceddfa2037677e2fb4 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Thu, 23 Aug 2012 09:20:17 -0700 Subject: [PATCH] Fix warnings and merge issues on Win64 --- include/git2/repository.h | 5 +++++ src/message.c | 2 +- src/repository.c | 28 ++++++++-------------------- src/transports/http.c | 2 +- src/win32/posix.h | 8 -------- tests-clar/checkout/checkout.c | 2 +- tests-clar/clar_libgit2.h | 2 ++ tests-clar/core/buffer.c | 2 +- tests-clar/refs/list.c | 2 +- tests-clar/status/status_data.h | 8 ++++---- tests-clar/status/status_helpers.h | 8 ++++---- tests-clar/status/worktree.c | 4 ++-- 12 files changed, 30 insertions(+), 43 deletions(-) diff --git a/include/git2/repository.h b/include/git2/repository.h index a986859d4..f520d5433 100644 --- a/include/git2/repository.h +++ b/include/git2/repository.h @@ -466,6 +466,11 @@ GIT_EXTERN(void) git_repository_set_index(git_repository *repo, git_index *index * * Use this function to get the contents of this file. Don't forget to * remove the file after you create the commit. + * + * @param buffer Buffer to write data into or NULL to just read required size + * @param len Length of buffer in bytes + * @param repo Repository to read prepared message from + * @return Bytes written to buffer, GIT_ENOTFOUND if no message, or -1 on error */ GIT_EXTERN(int) git_repository_message(char *buffer, size_t len, git_repository *repo); diff --git a/src/message.c b/src/message.c index e6dedc9fb..791b69455 100644 --- a/src/message.c +++ b/src/message.c @@ -82,5 +82,5 @@ int git_message_prettify(char *message_out, size_t buffer_size, const char *mess done: git_buf_free(&buf); - return out_size; + return (int)out_size; } diff --git a/src/repository.c b/src/repository.c index 8005797b2..bf19d0706 100644 --- a/src/repository.c +++ b/src/repository.c @@ -1328,39 +1328,27 @@ int git_repository_message(char *buffer, size_t len, git_repository *repo) { git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT; struct stat st; - ssize_t size; int error; if (git_buf_joinpath(&path, repo->path_repository, MERGE_MSG_FILE) < 0) return -1; - error = p_stat(git_buf_cstr(&path), &st); - if (error < 0) { + if ((error = p_stat(git_buf_cstr(&path), &st)) < 0) { if (errno == ENOENT) error = GIT_ENOTFOUND; - - git_buf_free(&path); - return error; } - - if (buffer == NULL) { - git_buf_free(&path); - return (int)st.st_size; + else if (buffer != NULL) { + error = git_futils_readbuffer(&buf, git_buf_cstr(&path)); + git_buf_copy_cstr(buffer, len, &buf); } - if (git_futils_readbuffer(&buf, git_buf_cstr(&path)) < 0) - goto on_error; - - memcpy(buffer, git_buf_cstr(&buf), len); - size = git_buf_len(&buf); - git_buf_free(&path); git_buf_free(&buf); - return size; -on_error: - git_buf_free(&path); - return -1; + if (!error) + error = (int)st.st_size + 1; /* add 1 for NUL byte */ + + return error; } int git_repository_message_remove(git_repository *repo) diff --git a/src/transports/http.c b/src/transports/http.c index 85fec413a..ce382c3ad 100644 --- a/src/transports/http.c +++ b/src/transports/http.c @@ -233,7 +233,7 @@ static int http_recv_cb(gitno_buffer *buf) if (t->error < 0) return t->error; - return buf->offset - old_len; + return (int)(buf->offset - old_len); } /* Set up the gitno_buffer so calling gitno_recv() grabs data from the HTTP response */ diff --git a/src/win32/posix.h b/src/win32/posix.h index def3a766a..14caae418 100644 --- a/src/win32/posix.h +++ b/src/win32/posix.h @@ -19,14 +19,6 @@ GIT_INLINE(int) p_link(const char *old, const char *new) return -1; } -GIT_INLINE(int) p_symlink(const char *old, const char *new) -{ - GIT_UNUSED(old); - GIT_UNUSED(new); - errno = ENOSYS; - return -1; -} - GIT_INLINE(int) p_mkdir(const char *path, mode_t mode) { wchar_t* buf = gitwin_to_utf16(path); diff --git a/tests-clar/checkout/checkout.c b/tests-clar/checkout/checkout.c index d6b79b4ac..ba14194c4 100644 --- a/tests-clar/checkout/checkout.c +++ b/tests-clar/checkout/checkout.c @@ -33,7 +33,7 @@ static void test_file_contents(const char *path, const char *expectedcontents) actuallen = p_read(fd, buffer, 1024); cl_git_pass(p_close(fd)); - cl_assert_equal_i(actuallen, expectedlen); + cl_assert_equal_sz(actuallen, expectedlen); cl_assert_equal_s(buffer, expectedcontents); } diff --git a/tests-clar/clar_libgit2.h b/tests-clar/clar_libgit2.h index eab6c3d3e..b4ee74cdb 100644 --- a/tests-clar/clar_libgit2.h +++ b/tests-clar/clar_libgit2.h @@ -25,6 +25,8 @@ */ #define cl_git_fail(expr) cl_must_fail(expr) +#define cl_assert_equal_sz(sz1,sz2) cl_assert((sz1) == (sz2)) + /* * Some utility macros for building long strings */ diff --git a/tests-clar/core/buffer.c b/tests-clar/core/buffer.c index b6274b012..972567e55 100644 --- a/tests-clar/core/buffer.c +++ b/tests-clar/core/buffer.c @@ -665,7 +665,7 @@ static void assert_unescape(char *expected, char *to_unescape) { cl_git_pass(git_buf_sets(&buf, to_unescape)); git_buf_unescape(&buf); cl_assert_equal_s(expected, buf.ptr); - cl_assert_equal_i(strlen(expected), buf.size); + cl_assert_equal_sz(strlen(expected), buf.size); git_buf_free(&buf); } diff --git a/tests-clar/refs/list.c b/tests-clar/refs/list.c index ac3cc0058..f92bf4862 100644 --- a/tests-clar/refs/list.c +++ b/tests-clar/refs/list.c @@ -36,7 +36,7 @@ void test_refs_list__all(void) /* We have exactly 9 refs in total if we include the packed ones: * there is a reference that exists both in the packfile and as * loose, but we only list it once */ - cl_assert_equal_i(ref_list.count, 10); + cl_assert_equal_i((int)ref_list.count, 10); git_strarray_free(&ref_list); } diff --git a/tests-clar/status/status_data.h b/tests-clar/status/status_data.h index 043b83009..85a7cd6b5 100644 --- a/tests-clar/status/status_data.h +++ b/tests-clar/status/status_data.h @@ -44,7 +44,7 @@ static const unsigned int entry_statuses0[] = { GIT_STATUS_WT_NEW, }; -static const size_t entry_count0 = 16; +static const int entry_count0 = 16; /* entries for a copy of tests/resources/status with all content * deleted from the working directory @@ -86,7 +86,7 @@ static const unsigned int entry_statuses2[] = { GIT_STATUS_WT_DELETED, }; -static const size_t entry_count2 = 15; +static const int entry_count2 = 15; /* entries for a copy of tests/resources/status with some mods */ @@ -140,7 +140,7 @@ static const unsigned int entry_statuses3[] = { GIT_STATUS_WT_NEW, }; -static const size_t entry_count3 = 22; +static const int entry_count3 = 22; /* entries for a copy of tests/resources/status with some mods @@ -199,4 +199,4 @@ static const unsigned int entry_statuses4[] = { GIT_STATUS_WT_NEW, }; -static const size_t entry_count4 = 23; +static const int entry_count4 = 23; diff --git a/tests-clar/status/status_helpers.h b/tests-clar/status/status_helpers.h index cffca66a5..3f9c1f57d 100644 --- a/tests-clar/status/status_helpers.h +++ b/tests-clar/status/status_helpers.h @@ -2,12 +2,12 @@ #define INCLUDE_cl_status_helpers_h__ typedef struct { - size_t wrong_status_flags_count; - size_t wrong_sorted_path; - size_t entry_count; + int wrong_status_flags_count; + int wrong_sorted_path; + int entry_count; const unsigned int* expected_statuses; const char** expected_paths; - size_t expected_entry_count; + int expected_entry_count; } status_entry_counts; /* cb_status__normal takes payload of "status_entry_counts *" */ diff --git a/tests-clar/status/worktree.c b/tests-clar/status/worktree.c index 2abf36833..75975c988 100644 --- a/tests-clar/status/worktree.c +++ b/tests-clar/status/worktree.c @@ -683,7 +683,7 @@ static unsigned int filemode_statuses[] = { GIT_STATUS_WT_NEW }; -static const size_t filemode_count = 8; +static const int filemode_count = 8; void test_status_worktree__filemode_changes(void) { @@ -697,7 +697,7 @@ void test_status_worktree__filemode_changes(void) if (cl_is_chmod_supported()) cl_git_pass(git_config_set_bool(cfg, "core.filemode", true)); else { - unsigned int i; + int i; cl_git_pass(git_config_set_bool(cfg, "core.filemode", false)); /* won't trust filesystem mode diffs, so these will appear unchanged */ -- 2.39.5