Commit ef4ef36e by Vicent Martí

Merge pull request #1275 from ethomson/examples_windows

update examples to work on windows
parents 0d52cb4a c27e2112
...@@ -288,7 +288,11 @@ ENDIF () ...@@ -288,7 +288,11 @@ ENDIF ()
IF (BUILD_EXAMPLES) IF (BUILD_EXAMPLES)
FILE(GLOB_RECURSE EXAMPLE_SRC examples/network/*.c) FILE(GLOB_RECURSE EXAMPLE_SRC examples/network/*.c)
ADD_EXECUTABLE(cgit2 ${EXAMPLE_SRC}) ADD_EXECUTABLE(cgit2 ${EXAMPLE_SRC})
IF(WIN32)
TARGET_LINK_LIBRARIES(cgit2 git2)
ELSE()
TARGET_LINK_LIBRARIES(cgit2 git2 pthread) TARGET_LINK_LIBRARIES(cgit2 git2 pthread)
ENDIF()
ADD_EXECUTABLE(git-diff examples/diff.c) ADD_EXECUTABLE(git-diff examples/diff.c)
TARGET_LINK_LIBRARIES(git-diff git2) TARGET_LINK_LIBRARIES(git-diff git2)
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <pthread.h> #ifndef _WIN32
#include <unistd.h> # include <pthread.h>
# include <unistd.h>
#endif
/* Shamelessly borrowed from http://stackoverflow.com/questions/3417837/ */ /* Shamelessly borrowed from http://stackoverflow.com/questions/3417837/ */
#ifdef UNUSED #ifdef UNUSED
...@@ -94,7 +96,7 @@ int do_clone(git_repository *repo, int argc, char **argv) ...@@ -94,7 +96,7 @@ int do_clone(git_repository *repo, int argc, char **argv)
} }
// Set up options // 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_cb = checkout_progress;
checkout_opts.progress_payload = &pd; checkout_opts.progress_payload = &pd;
clone_opts.checkout_opts = checkout_opts; clone_opts.checkout_opts = checkout_opts;
......
...@@ -3,8 +3,10 @@ ...@@ -3,8 +3,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <pthread.h> #ifndef _WIN32
#include <unistd.h> # include <pthread.h>
# include <unistd.h>
#endif
struct dl_data { struct dl_data {
git_remote *remote; git_remote *remote;
...@@ -68,9 +70,11 @@ int fetch(git_repository *repo, int argc, char **argv) ...@@ -68,9 +70,11 @@ int fetch(git_repository *repo, int argc, char **argv)
{ {
git_remote *remote = NULL; git_remote *remote = NULL;
const git_transfer_progress *stats; const git_transfer_progress *stats;
pthread_t worker;
struct dl_data data; struct dl_data data;
git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT; git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT;
#ifndef _WIN32
pthread_t worker;
#endif
argc = argc; argc = argc;
// Figure out whether it's a named remote or a URL // Figure out whether it's a named remote or a URL
...@@ -92,6 +96,9 @@ int fetch(git_repository *repo, int argc, char **argv) ...@@ -92,6 +96,9 @@ int fetch(git_repository *repo, int argc, char **argv)
stats = git_remote_stats(remote); stats = git_remote_stats(remote);
#ifdef _WIN32
download(&data);
#else
pthread_create(&worker, NULL, download, &data); pthread_create(&worker, NULL, download, &data);
// Loop while the worker thread is still running. Here we show processed // 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) ...@@ -111,6 +118,8 @@ int fetch(git_repository *repo, int argc, char **argv)
goto on_error; goto on_error;
pthread_join(worker, NULL); pthread_join(worker, NULL);
#endif
printf("\rReceived %d/%d objects in %zu bytes\n", printf("\rReceived %d/%d objects in %zu bytes\n",
stats->indexed_objects, stats->total_objects, stats->received_bytes); stats->indexed_objects, stats->total_objects, stats->received_bytes);
......
...@@ -5,7 +5,18 @@ ...@@ -5,7 +5,18 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #ifdef _WIN32
# include <io.h>
# include <Windows.h>
# define open _open
# define read _read
# define close _close
#define ssize_t unsigned int
#else
# include <unistd.h>
#endif
#include "common.h" #include "common.h"
// This could be run in the main loop whilst the application waits for // 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) ...@@ -22,8 +33,9 @@ int index_pack(git_repository *repo, int argc, char **argv)
{ {
git_indexer_stream *idx; git_indexer_stream *idx;
git_transfer_progress stats = {0, 0}; git_transfer_progress stats = {0, 0};
int error, fd; int error;
char hash[GIT_OID_HEXSZ + 1] = {0}; char hash[GIT_OID_HEXSZ + 1] = {0};
int fd;
ssize_t read_bytes; ssize_t read_bytes;
char buf[512]; char buf[512];
......
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