chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
activate: port to use new getpeername_pretty()/getsockname_pretty() calls
[elogind.git]
/
src
/
core
/
device.c
diff --git
a/src/core/device.c
b/src/core/device.c
index e83e797787905aa19a2cd5322af53ffead491730..6fc4c95ea0388e1bee3e4806618489b33326dd19 100644
(file)
--- a/
src/core/device.c
+++ b/
src/core/device.c
@@
-48,7
+48,7
@@
static void device_unset_sysfs(Device *d) {
/* Remove this unit from the chain of devices which share the
* same sysfs path. */
first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, d->sysfs);
/* Remove this unit from the chain of devices which share the
* same sysfs path. */
first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, d->sysfs);
- LIST_REMOVE(
Device,
same_sysfs, first, d);
+ LIST_REMOVE(same_sysfs, first, d);
if (first)
hashmap_remove_and_replace(UNIT(d)->manager->devices_by_sysfs, d->sysfs, first->sysfs, first);
if (first)
hashmap_remove_and_replace(UNIT(d)->manager->devices_by_sysfs, d->sysfs, first->sysfs, first);
@@
-70,7
+70,7
@@
static void device_init(Unit *u) {
* indefinitely for plugged in devices, something which cannot
* happen for the other units since their operations time out
* anyway. */
* indefinitely for plugged in devices, something which cannot
* happen for the other units since their operations time out
* anyway. */
- UNIT(d)->job_timeout =
DEFAULT_TIMEOUT_USEC
;
+ UNIT(d)->job_timeout =
u->manager->default_timeout_start_usec
;
UNIT(d)->ignore_on_isolate = true;
UNIT(d)->ignore_on_snapshot = true;
UNIT(d)->ignore_on_isolate = true;
UNIT(d)->ignore_on_snapshot = true;
@@
-189,10
+189,12
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
assert(m);
assert(m);
- if (!(sysfs = udev_device_get_syspath(dev)))
+ sysfs = udev_device_get_syspath(dev);
+ if (!sysfs)
return -ENOMEM;
return -ENOMEM;
- if ((r = device_find_escape_name(m, path, &u)) < 0)
+ r = device_find_escape_name(m, path, &u);
+ if (r < 0)
return r;
if (u && DEVICE(u)->sysfs && !path_equal(DEVICE(u)->sysfs, sysfs))
return r;
if (u && DEVICE(u)->sysfs && !path_equal(DEVICE(u)->sysfs, sysfs))
@@
-232,19
+234,23
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
}
first = hashmap_get(m->devices_by_sysfs, sysfs);
}
first = hashmap_get(m->devices_by_sysfs, sysfs);
- LIST_PREPEND(
Device,
same_sysfs, first, DEVICE(u));
+ LIST_PREPEND(same_sysfs, first, DEVICE(u));
- if ((r = hashmap_replace(m->devices_by_sysfs, DEVICE(u)->sysfs, first)) < 0)
+ r = hashmap_replace(m->devices_by_sysfs, DEVICE(u)->sysfs, first);
+ if (r < 0)
goto fail;
}
if ((model = udev_device_get_property_value(dev, "ID_MODEL_FROM_DATABASE")) ||
(model = udev_device_get_property_value(dev, "ID_MODEL"))) {
goto fail;
}
if ((model = udev_device_get_property_value(dev, "ID_MODEL_FROM_DATABASE")) ||
(model = udev_device_get_property_value(dev, "ID_MODEL"))) {
- if ((r = unit_set_description(u, model)) < 0)
+ r = unit_set_description(u, model);
+ if (r < 0)
goto fail;
goto fail;
- } else
- if ((r = unit_set_description(u, path)) < 0)
+ } else {
+ r = unit_set_description(u, path);
+ if (r < 0)
goto fail;
goto fail;
+ }
if (main) {
/* The additional systemd udev properties we only
if (main) {
/* The additional systemd udev properties we only
@@
-257,7
+263,7
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
size_t l;
FOREACH_WORD_QUOTED(w, l, alias, state) {
size_t l;
FOREACH_WORD_QUOTED(w, l, alias, state) {
- char *e;
+
_cleanup_free_
char *e;
e = strndup(w, l);
if (!e) {
e = strndup(w, l);
if (!e) {
@@
-265,13
+271,10
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
goto fail;
}
goto fail;
}
- if (!is_path(e)) {
- log_warning("SYSTEMD_ALIAS for %s is not a path, ignoring: %s", sysfs, e);
- free(e);
- } else {
+ if (is_path(e))
device_update_unit(m, dev, e, false);
device_update_unit(m, dev, e, false);
- free(e);
- }
+ else
+ log_warning("SYSTEMD_ALIAS for %s is not a path, ignoring: %s", sysfs, e);
}
}
}
}
@@
-281,7
+284,7
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
size_t l;
FOREACH_WORD_QUOTED(w, l, wants, state) {
size_t l;
FOREACH_WORD_QUOTED(w, l, wants, state) {
-
char *e
;
+
_cleanup_free_ char *e, *n = NULL
;
e = strndup(w, l);
if (!e) {
e = strndup(w, l);
if (!e) {
@@
-289,8
+292,13
@@
static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
goto fail;
}
goto fail;
}
- r = unit_add_dependency_by_name(u, UNIT_WANTS, e, NULL, true);
- free(e);
+ n = unit_name_mangle(e);
+ if (!n) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true);
if (r < 0)
goto fail;
}
if (r < 0)
goto fail;
}