From: Karsten Blees <karsten.blees@gmail.com>
To: git@vger.kernel.org
Cc: kusmabite@gmail.com, msysgit@googlegroups.com,
Jeff King <peff@peff.net>
Subject: [PATCH v2 0/2] improve-wincred-compatibility
Date: Thu, 10 Jan 2013 13:10:02 +0100 [thread overview]
Message-ID: <50EEAF9A.6020302@gmail.com> (raw)
In-Reply-To: <CABPQNSb7MjTKgmeB9TcUV0+-FfjPZ1sgKPsfVDg6+uaw2f_azQ@mail.gmail.com>
Changes since initial version (see attached diff for details):
- split in two patches
- removed unused variables
- improved the dll error message
- changed ?: to if else
- added comments
Also available here:
https://github.com/kblees/git/tree/kb/improve-wincred-compatibility-v2
git pull git://github.com/kblees/git.git kb/improve-wincred-compatibility-v2
Karsten Blees (2):
wincred: accept CRLF on stdin to simplify console usage
wincred: improve compatibility with windows versions
.../credential/wincred/git-credential-wincred.c | 206 ++++++++-------------
1 file changed, 75 insertions(+), 131 deletions(-)
> git diff kb/improve-wincred-compatibility..kb/improve-wincred-compatibility-v2
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 3464080..dac19ea 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -66,7 +66,7 @@ typedef BOOL (WINAPI *CredEnumerateWT)(LPCWSTR, DWORD, DWORD *,
typedef VOID (WINAPI *CredFreeT)(PVOID);
typedef BOOL (WINAPI *CredDeleteWT)(LPCWSTR, DWORD, DWORD);
-static HMODULE advapi, credui;
+static HMODULE advapi;
static CredWriteWT CredWriteW;
static CredEnumerateWT CredEnumerateW;
static CredFreeT CredFree;
@@ -77,7 +77,7 @@ static void load_cred_funcs(void)
/* load DLLs */
advapi = LoadLibrary("advapi32.dll");
if (!advapi)
- die("failed to load DLLs");
+ die("failed to load advapi32.dll");
/* get function pointers */
CredWriteW = (CredWriteWT)GetProcAddress(advapi, "CredWriteW");
@@ -107,14 +107,34 @@ static void write_item(const char *what, LPCWSTR wbuf, int wlen)
free(buf);
}
+/*
+ * Match an (optional) expected string and a delimiter in the target string,
+ * consuming the matched text by updating the target pointer.
+ */
static int match_part(LPCWSTR *ptarget, LPCWSTR want, LPCWSTR delim)
{
- LPCWSTR start = *ptarget;
- LPCWSTR end = *delim ? wcsstr(start, delim) : start + wcslen(start);
- int len = end ? end - start : wcslen(start);
+ LPCWSTR delim_pos, start = *ptarget;
+ int len;
+
+ /* find start of delimiter (or end-of-string if delim is empty) */
+ if (*delim)
+ delim_pos = wcsstr(start, delim);
+ else
+ delim_pos = start + wcslen(start);
+
+ /*
+ * match text up to delimiter, or end of string (e.g. the '/' after
+ * host is optional if not followed by a path)
+ */
+ if (delim_pos)
+ len = delim_pos - start;
+ else
+ len = wcslen(start);
+
/* update ptarget if we either found a delimiter or need a match */
- if (end || want)
- *ptarget = end ? end + wcslen(delim) : start + len;
+ if (delim_pos || want)
+ *ptarget = delim_pos ? delim_pos + wcslen(delim) : start + len;
+
return !want || (!wcsncmp(want, start, len) && !want[len]);
}
@@ -157,9 +177,6 @@ static void get_credential(void)
static void store_credential(void)
{
CREDENTIALW cred;
- BYTE *auth_buf;
- DWORD auth_buf_size = 0;
- CREDENTIAL_ATTRIBUTEW attrs[CRED_MAX_ATTRIBUTES];
if (!wusername || !password)
return;
--
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.
You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en
next prev parent reply other threads:[~2013-01-10 12:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 20:28 [PATCH] wincred: improve compatibility with windows versions Karsten Blees
2013-01-04 21:57 ` Erik Faye-Lund
2013-01-08 16:20 ` Karsten Blees
2013-01-08 20:13 ` Erik Faye-Lund
2013-01-10 12:10 ` Karsten Blees [this message]
2013-01-11 16:20 ` [PATCH v2 0/2] improve-wincred-compatibility Erik Faye-Lund
2013-02-25 6:43 ` Junio C Hamano
2013-02-25 23:39 ` Karsten Blees
2013-02-25 23:51 ` Junio C Hamano
2013-02-26 16:55 ` Erik Faye-Lund
2013-02-26 17:29 ` Junio C Hamano
2013-02-26 16:19 ` Johannes Schindelin
2013-01-10 12:10 ` [PATCH v2 1/2] wincred: accept CRLF on stdin to simplify console usage Karsten Blees
2013-01-10 12:10 ` [PATCH v2 2/2] wincred: improve compatibility with windows versions Karsten Blees
2014-09-10 22:32 ` Erik Faye-Lund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50EEAF9A.6020302@gmail.com \
--to=karsten.blees@gmail.com \
--cc=blees@dcon.de \
--cc=git@vger.kernel.org \
--cc=kusmabite@gmail.com \
--cc=msysgit@googlegroups.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).