]> git.ipfire.org Git - pakfire.git/commitdiff
cli: Return auth result in exit code
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Jun 2025 15:34:04 +0000 (15:34 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Jun 2025 15:34:04 +0000 (15:34 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/lib/auth.c

index f30d1195dceb2b6e490e96646e35f9b650b8bd36..f245a43ae3aa7a907e1ec8b6340cfb3cb1bf5f4d 100644 (file)
@@ -55,10 +55,21 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) {
        return 0;
 }
 
+static int auth_callback(struct pakfire_client* client,
+               pakfire_client_auth_status status, void* data) {
+       int* r = data;
+
+       // Set the status
+       *r = status;
+
+       return 0;
+}
+
 int cli_auth(void* data, int argc, char* argv[]) {
        struct cli_global_args* global_args = data;
        struct cli_local_args local_args = {};
        struct pakfire_client* client = NULL;
+       int status = 0;
        int r;
 
        // Parse the command line
@@ -71,6 +82,11 @@ int cli_auth(void* data, int argc, char* argv[]) {
        if (r < 0)
                goto ERROR;
 
+       // Set the authentication callback
+       r = pakfire_client_set_auth_callback(client, auth_callback, &status);
+       if (r < 0)
+               goto ERROR;
+
        // Authenticate
        r = pakfire_client_auth_user(client, local_args.username, local_args.password);
        if (r < 0)
@@ -78,6 +94,11 @@ int cli_auth(void* data, int argc, char* argv[]) {
 
        // Run the client
        r = pakfire_client_run(client);
+       if (r < 0)
+               goto ERROR;
+
+       // Set status
+       r = status;
 
 ERROR:
        if (client)