]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/credential.c
The fifth batch
[thirdparty/git.git] / builtin / credential.c
index 70107529876372c693fa15bbf6aff54ca63b4ce7..5100d441f24256019b6a9fffa639ffaa643921b5 100644 (file)
@@ -17,15 +17,24 @@ int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)
                usage(usage_msg);
        op = argv[1];
 
-       if (credential_read(&c, stdin) < 0)
+       if (!strcmp(op, "capability")) {
+               credential_set_all_capabilities(&c, CREDENTIAL_OP_INITIAL);
+               credential_announce_capabilities(&c, stdout);
+               return 0;
+       }
+
+       if (credential_read(&c, stdin, CREDENTIAL_OP_INITIAL) < 0)
                die("unable to read credential from stdin");
 
        if (!strcmp(op, "fill")) {
-               credential_fill(&c);
-               credential_write(&c, stdout);
+               credential_fill(&c, 0);
+               credential_next_state(&c);
+               credential_write(&c, stdout, CREDENTIAL_OP_RESPONSE);
        } else if (!strcmp(op, "approve")) {
+               credential_set_all_capabilities(&c, CREDENTIAL_OP_HELPER);
                credential_approve(&c);
        } else if (!strcmp(op, "reject")) {
+               credential_set_all_capabilities(&c, CREDENTIAL_OP_HELPER);
                credential_reject(&c);
        } else {
                usage(usage_msg);