X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Fsd-login.c;h=ef67040ebc065f0570a6d30ffdb1bd416cb8b8b7;hb=90e633a7901060063e62bf53948c4c239a9f55d1;hp=c795765620321147baf857672815f3b52531d4b4;hpb=5b04fe60004e7c5cd5a43648ede3e6a965e70b8c;p=elogind.git diff --git a/src/login/sd-login.c b/src/login/sd-login.c index c79576562..ef67040eb 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -630,7 +630,32 @@ _public_ int sd_get_uids(uid_t **users) { } _public_ int sd_get_machine_names(char ***machines) { - return get_files_in_directory("/run/systemd/machines/", machines); + char **l = NULL, **a, **b; + int r; + + r = get_files_in_directory("/run/systemd/machines/", &l); + if (r < 0) + return r; + + if (l) { + r = 0; + + /* Filter out the unit: symlinks */ + for (a = l, b = l; *a; a++) { + if (startswith(*a, "unit:")) + free(*a); + else { + *b = *a; + b++; + r++; + } + } + + *b = NULL; + } + + *machines = l; + return r; } static inline int MONITOR_TO_FD(sd_login_monitor *m) {