Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

Re: [PATCH] add Android support

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:51:15

Rafael Gieschke [off-list ref] writes:
quoted hunk
diff --git a/connect.c b/connect.c
index 57dc20c..15b285e 100644
--- a/connect.c
+++ b/connect.c
@@ -632,7 +632,11 @@ char *git_getpass(const char *prompt)
 	if (!askpass)
 		askpass = getenv("SSH_ASKPASS");
 	if (!askpass || !(*askpass)) {
+		#ifndef NO_GETPASS
 		char *result = getpass(prompt);
+		#else
+		char *result = NULL;
+		#endif
 		if (!result)
 			die_errno("Could not read password");
 		return result;
diff --git a/ident.c b/ident.c
index 1c4adb0..76fa786 100644
--- a/ident.c
+++ b/ident.c
@@ -20,7 +20,12 @@ static void copy_gecos(const struct passwd *w, char *name, size_t sz)
 	 * with commas.  Also & stands for capitalized form of the login name.
 	 */
 
-	for (len = 0, dst = name, src = w->pw_gecos; len < sz; src++) {
+	#ifndef NO_PW_GECOS
+	src = w->pw_gecos;
+	#else
+	src = "&";
+	#endif
+	for (len = 0, dst = name; len < sz; src++) {
 		int ch = *src;
 		if (ch != '&') {
 			*dst++ = ch;
Please do not throw in conditional compilation in a codepath that is
otherwise generic.

Do something like this near the beginning of the file (or if they are
common, in an appropriate header):

        #ifdef NO_GETPASS
        #define getpass(ignored) NULL
        #endif

        #ifdef NO_PW_GECOS
        #define get_gecos(ignored) "&"
        #else
        #define get_gecos(struct_passwd) (struct_passwd->pw_gecos)
        #endif

That way, you do not have to change connect.c at all, and the code that
accesses gecos field would get a slight abstraction, i.e.

	for (len = 0, dst = name, src = get_gecos(w); len < sz; src++) {
		...

I however suspect that NO_GETPASS would be a useless thing in the longer
term. Wouldn't you rather wish to have a native Android UI that asks a
password and plug that implementation as a replacement for git_getpass()?

It might be worthwhile to study how mingw folks do this part before you
dive in and butcher this codepath in a way you may regret later.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help