X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=9705e64da9e4f2e8604296c22e476face9254381;hb=821d4b6e068b2afaad94d43db22171c34a30400e;hp=7653850cd4273296470398cea5775c8490b5c096;hpb=ee33e53a70c0d3f9d8aeafe4b8fd84a0d5e1d8d9;p=elogind.git diff --git a/src/core/manager.c b/src/core/manager.c index 7653850cd..9705e64da 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -946,20 +946,29 @@ Manager* manager_free(Manager *m) { } int manager_enumerate(Manager *m) { - int r = 0, q; + int r = 0; UnitType c; assert(m); /* Let's ask every type to load all units from disk/kernel * that it might know */ - for (c = 0; c < _UNIT_TYPE_MAX; c++) - if (unit_vtable[c]->enumerate) { - q = unit_vtable[c]->enumerate(m); - if (q < 0) - r = q; + for (c = 0; c < _UNIT_TYPE_MAX; c++) { + int q; + + if (unit_vtable[c]->supported && !unit_vtable[c]->supported(m)) { + log_info("Unit type .%s is not supported on this system.", unit_type_to_string(c)); + continue; } + if (!unit_vtable[c]->enumerate) + continue; + + q = unit_vtable[c]->enumerate(m); + if (q < 0) + r = q; + } + manager_dispatch_load_queue(m); return r; } @@ -1019,7 +1028,7 @@ static void manager_build_unit_path_cache(Manager *m) { while ((de = readdir(d))) { char *p; - if (ignore_file(de->d_name)) + if (hidden_file(de->d_name)) continue; p = strjoin(streq(*i, "/") ? "" : *i, "/", de->d_name, NULL);