mirror of
https://github.com/systemd/systemd
synced 2024-11-02 19:41:12 +00:00
1fe6d37ea5
Quoting Richard Fontana in [1]: CC0 has been listed by Fedora as a 'good' license for code and content (corresponding to allowed and allowed-content under the new system). We plan to classify CC0 as allowed-content only, so that CC0 would no longer be allowed for code. Over a long period of time a consensus has been building in FOSS that licenses that preclude any form of patent licensing or patent forbearance cannot be considered FOSS. CC0 has a clause that says: "No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document." (The trademark side of that clause is nonproblematic from a FOSS licensing norms standpoint.) The regular Creative Commons licenses have similar clauses. For the case of our documentation snippets, patent issues do not matter much. But it is always nicer to have a license that is considerred acceptable without any further considerations. So let's change the license to the (now recommended replacement) MIT-0. [1] https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/NO7KGDNL5GX3KCB7T3XTGFA3QPSUJA6R/ Using 'git blame -b' and 'git log -p --follow', I identified the following folks as having made non-trivial changes to those snippets: Lennart Poettering Tom Gundersen Luca Bocassi Zbigniew Jędrzejewski-Szmek Thomas Mühlbacher Daan De Meyer I'll ask for confirmation in the pull request.
67 lines
1.8 KiB
C
67 lines
1.8 KiB
C
/* SPDX-License-Identifier: MIT-0 */
|
|
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
|
|
#include <systemd/sd-bus.h>
|
|
#define _cleanup_(f) __attribute__((cleanup(f)))
|
|
|
|
/* This is equivalent to:
|
|
* busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 \
|
|
* org.freedesktop.systemd1.Manager GetUnitByPID $$
|
|
*
|
|
* Compile with 'cc -lsystemd print-unit-path.c'
|
|
*/
|
|
|
|
#define DESTINATION "org.freedesktop.systemd1"
|
|
#define PATH "/org/freedesktop/systemd1"
|
|
#define INTERFACE "org.freedesktop.systemd1.Manager"
|
|
#define MEMBER "GetUnitByPID"
|
|
|
|
static int log_error(int error, const char *message) {
|
|
errno = -error;
|
|
fprintf(stderr, "%s: %m\n", message);
|
|
return error;
|
|
}
|
|
|
|
static int print_unit_path(sd_bus *bus) {
|
|
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
|
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
|
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
|
|
int r;
|
|
|
|
r = sd_bus_message_new_method_call(bus, &m,
|
|
DESTINATION, PATH, INTERFACE, MEMBER);
|
|
if (r < 0)
|
|
return log_error(r, "Failed to create bus message");
|
|
|
|
r = sd_bus_message_append(m, "u", (unsigned) getpid());
|
|
if (r < 0)
|
|
return log_error(r, "Failed to append to bus message");
|
|
|
|
r = sd_bus_call(bus, m, -1, &error, &reply);
|
|
if (r < 0)
|
|
return log_error(r, "Call failed");
|
|
|
|
const char *ans;
|
|
r = sd_bus_message_read(reply, "o", &ans);
|
|
if (r < 0)
|
|
return log_error(r, "Failed to read reply");
|
|
|
|
printf("Unit path is \"%s\".\n", ans);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
|
|
int r;
|
|
|
|
r = sd_bus_open_system(&bus);
|
|
if (r < 0)
|
|
return log_error(r, "Failed to acquire bus");
|
|
|
|
print_unit_path(bus);
|
|
}
|