diff --git a/CMakeLists.txt b/CMakeLists.txt index 47533a282..e9972fd41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,7 +288,11 @@ ENDIF () IF (BUILD_EXAMPLES) FILE(GLOB_RECURSE EXAMPLE_SRC examples/network/*.c) ADD_EXECUTABLE(cgit2 ${EXAMPLE_SRC}) - TARGET_LINK_LIBRARIES(cgit2 git2 pthread) + IF(WIN32) + TARGET_LINK_LIBRARIES(cgit2 git2) + ELSE() + TARGET_LINK_LIBRARIES(cgit2 git2 pthread) + ENDIF() ADD_EXECUTABLE(git-diff examples/diff.c) TARGET_LINK_LIBRARIES(git-diff git2) diff --git a/examples/network/clone.c b/examples/network/clone.c index 9b323ff73..63072eea0 100644 --- a/examples/network/clone.c +++ b/examples/network/clone.c @@ -4,8 +4,10 @@ #include #include #include -#include -#include +#ifndef _WIN32 +# include +# include +#endif /* Shamelessly borrowed from http://stackoverflow.com/questions/3417837/ */ #ifdef UNUSED @@ -94,7 +96,7 @@ int do_clone(git_repository *repo, int argc, char **argv) } // Set up options - checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; + checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE; checkout_opts.progress_cb = checkout_progress; checkout_opts.progress_payload = &pd; clone_opts.checkout_opts = checkout_opts; diff --git a/examples/network/fetch.c b/examples/network/fetch.c index 416788b63..d5caad4de 100644 --- a/examples/network/fetch.c +++ b/examples/network/fetch.c @@ -3,8 +3,10 @@ #include #include #include -#include -#include +#ifndef _WIN32 +# include +# include +#endif struct dl_data { git_remote *remote; @@ -68,9 +70,11 @@ int fetch(git_repository *repo, int argc, char **argv) { git_remote *remote = NULL; const git_transfer_progress *stats; - pthread_t worker; struct dl_data data; git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT; +#ifndef _WIN32 + pthread_t worker; +#endif argc = argc; // Figure out whether it's a named remote or a URL @@ -92,6 +96,9 @@ int fetch(git_repository *repo, int argc, char **argv) stats = git_remote_stats(remote); +#ifdef _WIN32 + download(&data); +#else pthread_create(&worker, NULL, download, &data); // Loop while the worker thread is still running. Here we show processed @@ -111,6 +118,8 @@ int fetch(git_repository *repo, int argc, char **argv) goto on_error; pthread_join(worker, NULL); +#endif + printf("\rReceived %d/%d objects in %zu bytes\n", stats->indexed_objects, stats->total_objects, stats->received_bytes); diff --git a/examples/network/index-pack.c b/examples/network/index-pack.c index 4d3dc84d6..3fc4f3288 100644 --- a/examples/network/index-pack.c +++ b/examples/network/index-pack.c @@ -5,7 +5,18 @@ #include #include #include -#include +#ifdef _WIN32 +# include +# include + +# define open _open +# define read _read +# define close _close + +#define ssize_t unsigned int +#else +# include +#endif #include "common.h" // This could be run in the main loop whilst the application waits for @@ -22,8 +33,9 @@ int index_pack(git_repository *repo, int argc, char **argv) { git_indexer_stream *idx; git_transfer_progress stats = {0, 0}; - int error, fd; + int error; char hash[GIT_OID_HEXSZ + 1] = {0}; + int fd; ssize_t read_bytes; char buf[512];