- BUGFIX #2133 (@fourplusone) in smart_protocol.c - added MSVC cmake definitions to disable warnings - general.c is rewritten so it is ansi-c compatible and compiles ok on microsoft windows - some MSVC reported warning fixes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d6b3275..27cf1a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,7 +21,8 @@ INCLUDE(CheckLibraryExists)
# Build options
#
-OPTION( SONAME "Set the (SO)VERSION of the target" ON )
+OPTION( SONAME
+ "Set the (SO)VERSION of the target" ON )
OPTION( BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON )
OPTION( THREADSAFE "Build libgit2 as threadsafe" OFF )
OPTION( BUILD_CLAR "Build Tests using the Clar suite" ON )
@@ -57,6 +58,10 @@ IF(MSVC)
# By default, libgit2 is built with WinHTTP. To use the built-in
# HTTP transport, invoke CMake with the "-DWINHTTP=OFF" argument.
OPTION( WINHTTP "Use Win32 WinHTTP routines" ON )
+
+ ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
+ ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
+ ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
ENDIF()
# This variable will contain the libraries we need to put into
diff --git a/examples/add.c b/examples/add.c
index 336596b..0c6076e 100644
--- a/examples/add.c
+++ b/examples/add.c
@@ -78,7 +78,7 @@ int print_matched_cb(const char *path, const char *matched_pathspec, void *paylo
git_status_t status;
(void)matched_pathspec;
- if (git_status_file(&status, p.repo, path)) {
+ if (git_status_file((unsigned int*)(&status), p.repo, path)) {
return -1; //abort
}
diff --git a/examples/blame.c b/examples/blame.c
index 1f5db69..d7b843c 100644
--- a/examples/blame.c
+++ b/examples/blame.c
@@ -105,8 +105,9 @@ int main(int argc, char *argv[])
if (break_on_null_hunk && !hunk) break;
if (hunk) {
- break_on_null_hunk = 1;
char sig[128] = {0};
+ break_on_null_hunk = 1;
+
git_oid_tostr(oid, 10, &hunk->final_commit_id);
snprintf(sig, 30, "%s <%s>", hunk->final_signature->name, hunk->final_signature->email);
diff --git a/examples/cat-file.c b/examples/cat-file.c
index fa6add0..52399fa 100644
--- a/examples/cat-file.c
+++ b/examples/cat-file.c
@@ -42,7 +42,7 @@ static void print_signature(const char *header, const git_signature *sig)
static void show_blob(const git_blob *blob)
{
/* ? Does this need crlf filtering? */
- fwrite(git_blob_rawcontent(blob), git_blob_rawsize(blob), 1, stdout);
+ fwrite(git_blob_rawcontent(blob), (size_t)git_blob_rawsize(blob), 1, stdout);
}
/** Show each entry with its type, id and attributes */
diff --git a/examples/common.c b/examples/common.c
index 12dbccf..a066c15 100644
--- a/examples/common.c
+++ b/examples/common.c
@@ -156,7 +156,7 @@ int diff_output(
const git_diff_line *l,
void *p)
{
- FILE *fp = p;
+ FILE *fp = (FILE*)p;
(void)d; (void)h;
diff --git a/examples/general.c b/examples/general.c
index ae87563..2350559 100644
--- a/examples/general.c
+++ b/examples/general.c
@@ -71,6 +71,43 @@ int main (int argc, char** argv)
int error;
const char *repo_path = (argc > 1) ? argv[1] : "/opt/libgit2-test/.git";
git_repository *repo;
+ char* hex;
+ git_oid oid;
+ char out[41];
+ git_odb* odb;
+ git_odb_object *obj;
+ git_otype otype;
+ const unsigned char *data;
+ const char *str_type;
+ git_commit* commit;
+ const git_signature *author, *cmtter;
+ const char *message;
+ time_t ctime;
+ unsigned int parents, p;
+ git_oid tree_id, parent_id, commit_id;
+ git_tree *tree;
+ git_commit *parent;
+ git_tag *tag;
+ const char *tmessage, *tname;
+ git_otype ttype;
+ const git_tree_entry *entry;
+ git_object *objt;
+ size_t cnt;
+ git_blob *blob;
+ git_revwalk *walk;
+ git_commit *wcommit;
+ const git_signature *cauth;
+ const char *cmsg;
+ git_index *index;
+ unsigned int i, ecount;
+ git_strarray ref_list;
+ const char *refname;
+ git_reference *ref;
+ const char *email;
+ int32_t j;
+ git_config *cfg;
+ char config_path[256];
+
error = git_repository_open(&repo, repo_path);
check_error(error, "opening repository");
@@ -80,12 +117,11 @@ int main (int argc, char** argv)
// For our first example, we will convert a 40 character hex value to the
// 20 byte raw SHA1 value.
printf("*Hex to Raw*\n");
- char hex[] = "4a202b346bb0fb0db7eff3cffeb3c70babbd2045";
+ hex = "4a202b346bb0fb0db7eff3cffeb3c70babbd2045";
// The `git_oid` is the structure that keeps the SHA value. We will use
// this throughout the example for storing the value of the current SHA
// key we're working with.
- git_oid oid;
git_oid_fromstr(&oid, hex);
// Once we've converted the string into the oid value, we can get the raw
@@ -94,7 +130,6 @@ int main (int argc, char** argv)
// Next we will convert the 20 byte raw SHA1 value to a human readable 40
// char hex value.
printf("\n*Raw to Hex*\n");
- char out[41];
out[40] = '\0';
// If you have a oid, you can easily get the hex value of the SHA as well.
@@ -109,16 +144,11 @@ int main (int argc, char** argv)
// repository.
//
// [odb]: http://libgit2.github.com/libgit2/#HEAD/group/odb
- git_odb *odb;
git_repository_odb(&odb, repo);
// #### Raw Object Reading
printf("\n*Raw Object Read*\n");
- git_odb_object *obj;
- git_otype otype;
- const unsigned char *data;
- const char *str_type;
// We can read raw objects directly from the object database if we have
// the oid (SHA) of the object. This allows us to access objects without
@@ -177,17 +207,11 @@ int main (int argc, char** argv)
printf("\n*Commit Parsing*\n");
- git_commit *commit;
git_oid_fromstr(&oid, "8496071c1b46c854b31185ea97743be6a8774479");
error = git_commit_lookup(&commit, repo, &oid);
check_error(error, "looking up commit");
- const git_signature *author, *cmtter;
- const char *message;
- time_t ctime;
- unsigned int parents, p;
-
// Each of the properties of the commit object are accessible via methods,
// including commonly needed variations, such as `git_commit_time` which
// returns the author time and `git_commit_message` which gives you the
@@ -229,9 +253,6 @@ int main (int argc, char** argv)
// [cd]: http://libgit2.github.com/libgit2/#HEAD/group/commit
printf("\n*Commit Writing*\n");
- git_oid tree_id, parent_id, commit_id;
- git_tree *tree;
- git_commit *parent;
// Creating signatures for an authoring identity and time is simple. You
// will need to do this to specify who created a commit and when. Default
@@ -277,9 +298,6 @@ int main (int argc, char** argv)
//
// [tm]: http://libgit2.github.com/libgit2/#HEAD/group/tag
printf("\n*Tag Parsing*\n");
- git_tag *tag;
- const char *tmessage, *tname;
- git_otype ttype;
// We create an oid for the tag object if we know the SHA and look it up
// the same way that we would a commit (or any other object).
@@ -310,16 +328,13 @@ int main (int argc, char** argv)
// [tp]: http://libgit2.github.com/libgit2/#HEAD/group/tree
printf("\n*Tree Parsing*\n");
- const git_tree_entry *entry;
- git_object *objt;
-
// Create the oid and lookup the tree object just like the other objects.
git_oid_fromstr(&oid, "2a741c18ac5ff082a7caaec6e74db3075a1906b5");
git_tree_lookup(&tree, repo, &oid);
// Getting the count of entries in the tree so you can iterate over them
// if you want to.
- size_t cnt = git_tree_entrycount(tree); // 3
+ cnt = git_tree_entrycount(tree); // 3
printf("tree entries: %d\n", (int)cnt);
entry = git_tree_entry_byindex(tree, 0);
@@ -351,7 +366,6 @@ int main (int argc, char** argv)
// [ba]: http://libgit2.github.com/libgit2/#HEAD/group/blob
printf("\n*Blob Parsing*\n");
- git_blob *blob;
git_oid_fromstr(&oid, "1385f264afb75a56a5bec74243be9b367ba4ca08");
git_blob_lookup(&blob, repo, &oid);
@@ -376,8 +390,6 @@ int main (int argc, char** argv)
// [rw]: http://libgit2.github.com/libgit2/#HEAD/group/revwalk
printf("\n*Revwalking*\n");
- git_revwalk *walk;
- git_commit *wcommit;
git_oid_fromstr(&oid, "5b5b025afb0b4c913b4c338a42934a3863bf3644");
@@ -393,9 +405,6 @@ int main (int argc, char** argv)
git_revwalk_sorting(walk, GIT_SORT_TOPOLOGICAL | GIT_SORT_REVERSE);
git_revwalk_push(walk, &oid);
- const git_signature *cauth;
- const char *cmsg;
-
// Now that we have the starting point pushed onto the walker, we start
// asking for ancestors. It will return them in the sorting order we asked
// for as commit oids. We can then lookup and parse the commited pointed
@@ -427,9 +436,6 @@ int main (int argc, char** argv)
printf("\n*Index Walking*\n");
- git_index *index;
- unsigned int i, ecount;
-
// You can either open the index from the standard location in an open
// repository, as we're doing here, or you can open and manipulate any
// index file with `git_index_open_bare()`. The index for the repository
@@ -465,12 +471,8 @@ int main (int argc, char** argv)
// Here we will implement something like `git for-each-ref` simply listing
// out all available references and the object SHA they resolve to.
- git_strarray ref_list;
git_reference_list(&ref_list, repo);
- const char *refname;
- git_reference *ref;
-
// Now that we have the list of reference names, we can lookup each ref
// one at a time and resolve them to the SHA, then print both values out.
for (i = 0; i < ref_list.count; ++i) {
@@ -503,13 +505,7 @@ int main (int argc, char** argv)
printf("\n*Config Listing*\n");
- const char *email;
- int32_t j;
-
- git_config *cfg;
-
// Open a config object so we can read global values from it.
- char config_path[256];
sprintf(config_path, "%s/config", repo_path);
check_error(git_config_open_ondisk(&cfg, config_path), "opening config");
diff --git a/examples/network/clone.c b/examples/network/clone.c
index 4df47eb..a982c13 100644
--- a/examples/network/clone.c
+++ b/examples/network/clone.c
@@ -22,7 +22,7 @@ static void print_progress(const progress_data *pd)
int index_percent = (100*pd->fetch_progress.indexed_objects) / pd->fetch_progress.total_objects;
int checkout_percent = pd->total_steps > 0
? (100 * pd->completed_steps) / pd->total_steps
- : 0.f;
+ : 0;
int kbytes = pd->fetch_progress.received_bytes / 1024;
if (pd->fetch_progress.received_objects == pd->fetch_progress.total_objects) {
diff --git a/src/transports/smart_protocol.c b/src/transports/smart_protocol.c
index dd9b5e0..7e8fcdd 100644
--- a/src/transports/smart_protocol.c
+++ b/src/transports/smart_protocol.c
@@ -579,6 +579,10 @@ int git_smart__download_pack(
done:
if (writepack)
writepack->free(writepack);
+ if (progress_cb) {
+ t->packetsize_cb = NULL;
+ t->packetsize_payload = NULL;
+ }
return error;
}
diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index 37f1708..bece0b4 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -53,6 +53,7 @@ static void ssh_error(LIBSSH2_SESSION *session, const char *errmsg)
static int gen_proto(git_buf *request, const char *cmd, const char *url)
{
char *repo;
+ int len;
if (!git__prefixcmp(url, prefix_ssh)) {
url = url + strlen(prefix_ssh);
@@ -67,7 +68,7 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url)
return -1;
}
- int len = strlen(cmd) + 1 /* Space */ + 1 /* Quote */ + strlen(repo) + 1 /* Quote */ + 1;
+ len = strlen(cmd) + 1 /* Space */ + 1 /* Quote */ + strlen(repo) + 1 /* Quote */ + 1;
git_buf_grow(request, len);
git_buf_printf(request, "%s '%s'", cmd, repo);