|
|
|
@ -94,6 +94,12 @@ static WCHAR *wusername, *password, *protocol, *host, *path, target[1024];
@@ -94,6 +94,12 @@ static WCHAR *wusername, *password, *protocol, *host, *path, target[1024];
|
|
|
|
|
static void write_item(const char *what, LPCWSTR wbuf, int wlen) |
|
|
|
|
{ |
|
|
|
|
char *buf; |
|
|
|
|
|
|
|
|
|
if (!wbuf || !wlen) { |
|
|
|
|
printf("%s=\n", what); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int len = WideCharToMultiByte(CP_UTF8, 0, wbuf, wlen, NULL, 0, NULL, |
|
|
|
|
FALSE); |
|
|
|
|
buf = xmalloc(len); |
|
|
|
@ -160,7 +166,7 @@ static int match_part_last(LPCWSTR *ptarget, LPCWSTR want, LPCWSTR delim)
@@ -160,7 +166,7 @@ static int match_part_last(LPCWSTR *ptarget, LPCWSTR want, LPCWSTR delim)
|
|
|
|
|
static int match_cred(const CREDENTIALW *cred) |
|
|
|
|
{ |
|
|
|
|
LPCWSTR target = cred->TargetName; |
|
|
|
|
if (wusername && wcscmp(wusername, cred->UserName)) |
|
|
|
|
if (wusername && wcscmp(wusername, cred->UserName ? cred->UserName : L"")) |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
return match_part(&target, L"git", L":") && |
|
|
|
@ -183,7 +189,7 @@ static void get_credential(void)
@@ -183,7 +189,7 @@ static void get_credential(void)
|
|
|
|
|
for (i = 0; i < num_creds; ++i) |
|
|
|
|
if (match_cred(creds[i])) { |
|
|
|
|
write_item("username", creds[i]->UserName, |
|
|
|
|
wcslen(creds[i]->UserName)); |
|
|
|
|
creds[i]->UserName ? wcslen(creds[i]->UserName) : 0); |
|
|
|
|
write_item("password", |
|
|
|
|
(LPCWSTR)creds[i]->CredentialBlob, |
|
|
|
|
creds[i]->CredentialBlobSize / sizeof(WCHAR)); |
|
|
|
|