Commit 1082eabb680cf6083f59071918d007d5314c59ea

Edward Thomson 2017-11-06T11:36:34

Merge pull request #4397 from pks-t/pks/appveyor-examples appveyor: build examples

diff --git a/appveyor.yml b/appveyor.yml
index 1ba8abb..e0c7b9b 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -36,7 +36,7 @@ build_script:
     mkdir build
     cd build
     if ($env:GENERATOR -ne "MSYS Makefiles") {
-      cmake -D ENABLE_TRACE=ON -D BUILD_CLAR=ON -D MSVC_CRTDBG=ON .. -G"$env:GENERATOR"
+      cmake -D ENABLE_TRACE=ON -D BUILD_CLAR=ON -D BUILD_EXAMPLES=ON -D MSVC_CRTDBG=ON .. -G"$env:GENERATOR"
       cmake --build . --config Debug
     }
 - cmd: |
diff --git a/examples/network/common.c b/examples/network/common.c
index 1a81a10..b0afb02 100644
--- a/examples/network/common.c
+++ b/examples/network/common.c
@@ -16,6 +16,43 @@
 # define UNUSED(x) x
 #endif
 
+static int readline(char **out)
+{
+	int c, error = 0, length = 0, allocated = 0;
+	char *line = NULL;
+
+	errno = 0;
+
+	while ((c = getchar()) != EOF) {
+		if (length == allocated) {
+			allocated += 16;
+
+			if ((line = realloc(line, allocated)) == NULL) {
+				error = -1;
+				goto error;
+			}
+		}
+
+		if (c == '\n')
+			break;
+
+		line[length++] = c;
+	}
+
+	if (errno != 0) {
+		error = -1;
+		goto error;
+	}
+
+	line[length] = '\0';
+	*out = line;
+	line = NULL;
+	error = length;
+error:
+	free(line);
+	return error;
+}
+
 int cred_acquire_cb(git_cred **out,
 		const char * UNUSED(url),
 		const char * UNUSED(username_from_url),
@@ -26,14 +63,14 @@ int cred_acquire_cb(git_cred **out,
 	int error;
 
 	printf("Username: ");
-	if (getline(&username, NULL, stdin) < 0) {
+	if (readline(&username) < 0) {
 		fprintf(stderr, "Unable to read username: %s", strerror(errno));
 		return -1;
 	}
 
 	/* Yup. Right there on your terminal. Careful where you copy/paste output. */
 	printf("Password: ");
-	if (getline(&password, NULL, stdin) < 0) {
+	if (readline(&password) < 0) {
 		fprintf(stderr, "Unable to read password: %s", strerror(errno));
 		free(username);
 		return -1;
diff --git a/script/appveyor-mingw.sh b/script/appveyor-mingw.sh
index d171a72..6b2a942 100755
--- a/script/appveyor-mingw.sh
+++ b/script/appveyor-mingw.sh
@@ -19,5 +19,5 @@ fi
 cd build
 gcc --version
 cmake --version
-cmake -D ENABLE_TRACE=ON -D BUILD_CLAR=ON .. -G"$GENERATOR"
+cmake -D ENABLE_TRACE=ON -D BUILD_CLAR=ON -D BUILD_EXAMPLES=ON .. -G"$GENERATOR"
 cmake --build . --config RelWithDebInfo