• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eclipse-bluechi / bluechi / 16142519133

08 Jul 2025 11:56AM UTC coverage: 74.418% (-8.0%) from 82.434%
16142519133

push

github

engelmi
Added epel10 target for copr_build via packit

Signed-off-by: Michael Engel <mengel@redhat.com>

5117 of 6876 relevant lines covered (74.42%)

870.33 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/client/method-default-target.c
1
/*
2
 * Copyright Contributors to the Eclipse BlueChi project
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
#include "method-default-target.h"
7
#include "client.h"
8
#include "usage.h"
9

10
#include "libbluechi/common/opt.h"
11

12
static int method_get_default_target_on(Client *client, char *node_name) {
×
13
        _cleanup_sd_bus_error_ sd_bus_error error = SD_BUS_ERROR_NULL;
×
14
        _cleanup_sd_bus_message_ sd_bus_message *message = NULL;
×
15
        char *result = NULL;
×
16
        int r = 0;
×
17

18
        r = assemble_object_path_string(NODE_OBJECT_PATH_PREFIX, node_name, &client->object_path);
×
19
        if (r < 0) {
×
20
                return r;
21
        }
22

23
        r = sd_bus_call_method(
×
24
                        client->api_bus,
25
                        BC_INTERFACE_BASE_NAME,
26
                        client->object_path,
×
27
                        NODE_INTERFACE,
28
                        "GetDefaultTarget",
29
                        &error,
30
                        &message,
31
                        "");
32
        if (r < 0) {
×
33
                fprintf(stderr, "Failed to issue method call: %s\n", error.message);
×
34
                return r;
35
        }
36

37
        r = sd_bus_message_read(message, "s", &result);
×
38
        if (r < 0) {
×
39
                fprintf(stderr, "Failed to parse response message: %s\n", strerror(-r));
×
40
                return r;
41
        }
42

43
        printf("%s\n", result);
×
44

45
        return r;
46
}
47

48

49
static int method_set_default_target_on(Client *client, char *node_name, char *target, int force) {
×
50
        _cleanup_sd_bus_error_ sd_bus_error error = SD_BUS_ERROR_NULL;
×
51
        _cleanup_sd_bus_message_ sd_bus_message *message = NULL;
×
52
        int r = 0;
×
53

54
        r = assemble_object_path_string(NODE_OBJECT_PATH_PREFIX, node_name, &client->object_path);
×
55
        if (r < 0) {
×
56
                return r;
57
        }
58

59
        r = sd_bus_call_method(
×
60
                        client->api_bus,
61
                        BC_INTERFACE_BASE_NAME,
62
                        client->object_path,
×
63
                        NODE_INTERFACE,
64
                        "SetDefaultTarget",
65
                        &error,
66
                        &message,
67
                        "sb",
68
                        target,
69
                        force);
70
        if (r < 0) {
×
71
                fprintf(stderr, "Failed to issue method call: %s\n", error.message);
×
72
                return r;
73
        }
74

75
        r = sd_bus_message_enter_container(message, SD_BUS_TYPE_ARRAY, "(sss)");
×
76
        if (r < 0) {
×
77
                fprintf(stderr, "Failed to open the strings array container: %s\n", strerror(-r));
×
78
                return r;
79
        }
80
        printf("[");
×
81
        for (;;) {
×
82
                const char *result1 = NULL;
×
83
                const char *result2 = NULL;
×
84
                const char *result3 = NULL;
×
85

86
                r = sd_bus_message_read(message, "(sss)", &result1, &result2, &result3);
×
87
                if (r < 0) {
×
88
                        fprintf(stderr, "Failed to read the SetDefaultTarget response: %s\n", strerror(-r));
×
89
                        return r;
×
90
                }
91
                if (r == 0) {
×
92
                        break;
93
                }
94
                printf("(%s %s %s),", result1, result2, result3);
×
95
        }
96
        printf("]\n");
×
97

98
        return r;
99
}
100

101
void usage_method_get_default_target() {
×
102
        usage_print_header();
×
103
        usage_print_usage("bluechictl get-default [nodename] [options]");
×
104
        printf("\n");
×
105
        printf("Available options:\n");
×
106
        printf("  --%s \t shows this help message\n", ARG_HELP);
×
107
}
×
108

109
void usage_method_set_default_target() {
×
110
        usage_print_header();
×
111
        usage_print_usage("bluechictl set-default [nodename] [target] [options]");
×
112
        printf("\n");
×
113
        printf("Available options:\n");
×
114
        printf("  --%s \t shows this help message\n", ARG_HELP);
×
115
}
×
116

117

118
int method_get_default_target(Command *command, void *userdata) {
×
119
        return method_get_default_target_on(userdata, command->opargv[0]);
×
120
}
121

122
static const char *glob_systemd_target = "*target";
123

124
int method_set_default_target(Command *command, void *userdata) {
×
125
        if (!match_glob(command->opargv[1], glob_systemd_target)) {
×
126
                fprintf(stderr, "Error: Unit '%s' is not a target unit\n", command->opargv[1]);
×
127
                return 1;
×
128
        }
129

130
        // mimicking systemctl here and setting the force parameter to 1
131
        // https://github.com/systemd/systemd/blob/7c52d5236a3bc85db1755de6a458934be095cd1c/src/systemctl/systemctl-set-default.c#L130
132
        return method_set_default_target_on(userdata, command->opargv[0], command->opargv[1], 1);
×
133
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc