diff --git a/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch b/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch deleted file mode 100644 index 28c2835..0000000 --- a/0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 3e4aca291a6ab914e08108acbd5d96600370c20d Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Wed, 2 Oct 2013 13:39:49 +0200 -Subject: [PATCH] acpi-fptd: fix memory leak in acpi_get_boot_usec - ---- - src/shared/acpi-fpdt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c -index b094f34..a7c83ed 100644 ---- a/src/shared/acpi-fpdt.c -+++ b/src/shared/acpi-fpdt.c -@@ -81,7 +81,7 @@ struct acpi_fpdt_boot { - }; - - int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { -- char *buf; -+ _cleanup_free_ char *buf; - struct acpi_table_header *tbl; - size_t l; - struct acpi_fpdt_header *rec; diff --git a/0002-fix-lingering-references-to-var-lib-backlight-random.patch b/0002-fix-lingering-references-to-var-lib-backlight-random.patch deleted file mode 100644 index bbefb42..0000000 --- a/0002-fix-lingering-references-to-var-lib-backlight-random.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 80c0a135afe5d801903ac742c386a5468837175c Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Wed, 2 Oct 2013 07:46:24 -0400 -Subject: [PATCH] fix lingering references to /var/lib/{backlight,random-seed} - -This should have been part of ef5bfcf668e6029faa78534dfe. ---- - man/systemd-backlight@.service.xml | 2 +- - man/systemd-random-seed.service.xml | 2 +- - units/systemd-backlight@.service.in | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml -index 2b73625..4318964 100644 ---- a/man/systemd-backlight@.service.xml -+++ b/man/systemd-backlight@.service.xml -@@ -58,7 +58,7 @@ - is a service that restores the display backlight - brightness at early-boot and saves it at shutdown. On - disk, the backlight brightness is stored in -- /var/lib/backlight/. Note that by -+ /var/lib/systemd/backlight/. Note that by - default, only firmware backlight devices are - saved/restored. - -diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml -index 8cd14b7..e5cd037 100644 ---- a/man/systemd-random-seed.service.xml -+++ b/man/systemd-random-seed.service.xml -@@ -61,7 +61,7 @@ - for details. Saving/restoring the random seed across - boots increases the amount of available entropy early - at boot. On disk the random seed is stored in -- /var/lib/random-seed. -+ /var/lib/systemd/random-seed. - - - -diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in -index b0e75db..5caa5d5 100644 ---- a/units/systemd-backlight@.service.in -+++ b/units/systemd-backlight@.service.in -@@ -9,7 +9,7 @@ - Description=Load/Save Screen Backlight Brightness of %I - Documentation=man:systemd-backlight@.service(8) - DefaultDependencies=no --RequiresMountsFor=/var/lib/backlight -+RequiresMountsFor=/var/lib/systemd/backlight - Conflicts=shutdown.target - After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service - Before=sysinit.target shutdown.target diff --git a/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch b/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch deleted file mode 100644 index 4be984a..0000000 --- a/0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 4294dcefec5bd85c17d671612fac3b4b8cd20eac Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 14:03:56 +0200 -Subject: [PATCH] acpi: make sure we never free an uninitialized pointer - ---- - src/shared/acpi-fpdt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c -index a7c83ed..af58c7c 100644 ---- a/src/shared/acpi-fpdt.c -+++ b/src/shared/acpi-fpdt.c -@@ -81,7 +81,7 @@ struct acpi_fpdt_boot { - }; - - int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { -- _cleanup_free_ char *buf; -+ _cleanup_free_ char *buf = NULL; - struct acpi_table_header *tbl; - size_t l; - struct acpi_fpdt_header *rec; diff --git a/0004-systemctl-fix-name-mangling-for-sysv-units.patch b/0004-systemctl-fix-name-mangling-for-sysv-units.patch deleted file mode 100644 index 9e5a25a..0000000 --- a/0004-systemctl-fix-name-mangling-for-sysv-units.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 5103e16f5e12e1754a2dcfabafb7618eb15ccf98 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= -Date: Wed, 2 Oct 2013 16:42:42 +0200 -Subject: [PATCH] systemctl: fix name mangling for sysv units - ---- - src/systemctl/systemctl.c | 45 ++++++++++++++++++--------------------------- - 1 file changed, 18 insertions(+), 27 deletions(-) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index bb7ada9..d75281f 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -4218,11 +4218,10 @@ static int set_environment(DBusConnection *bus, char **args) { - return 0; - } - --static int enable_sysv_units(char **args) { -+static int enable_sysv_units(const char *verb, char **args) { - int r = 0; - - #if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG) -- const char *verb = args[0]; - unsigned f = 1, t = 1; - LookupPaths paths = {}; - -@@ -4242,7 +4241,7 @@ static int enable_sysv_units(char **args) { - return r; - - r = 0; -- for (f = 1; args[f]; f++) { -+ for (f = 0; args[f]; f++) { - const char *name; - _cleanup_free_ char *p = NULL, *q = NULL; - bool found_native = false, found_sysv; -@@ -4365,7 +4364,7 @@ finish: - lookup_paths_free(&paths); - - /* Drop all SysV units */ -- for (f = 1, t = 1; args[f]; f++) { -+ for (f = 0, t = 0; args[f]; f++) { - - if (isempty(args[f])) - continue; -@@ -4423,16 +4422,16 @@ static int enable_unit(DBusConnection *bus, char **args) { - - dbus_error_init(&error); - -- r = enable_sysv_units(args); -- if (r < 0) -- return r; -- - if (!args[1]) - return 0; - - r = mangle_names(args+1, &mangled_names); - if (r < 0) -- goto finish; -+ return r; -+ -+ r = enable_sysv_units(verb, mangled_names); -+ if (r < 0) -+ return r; - - if (!bus || avoid_bus()) { - if (streq(verb, "enable")) { -@@ -4624,11 +4623,15 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { - _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - bool enabled; - char **name; -- char *n; -+ _cleanup_strv_free_ char **mangled_names = NULL; - - dbus_error_init(&error); - -- r = enable_sysv_units(args); -+ r = mangle_names(args+1, &mangled_names); -+ if (r < 0) -+ return r; -+ -+ r = enable_sysv_units(args[0], mangled_names); - if (r < 0) - return r; - -@@ -4636,16 +4639,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { - - if (!bus || avoid_bus()) { - -- STRV_FOREACH(name, args+1) { -+ STRV_FOREACH(name, mangled_names) { - UnitFileState state; - -- n = unit_name_mangle(*name); -- if (!n) -- return log_oom(); -- -- state = unit_file_get_state(arg_scope, arg_root, n); -- -- free(n); -+ state = unit_file_get_state(arg_scope, arg_root, *name); - - if (state < 0) - return state; -@@ -4660,13 +4657,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { - } - - } else { -- STRV_FOREACH(name, args+1) { -+ STRV_FOREACH(name, mangled_names) { - const char *s; - -- n = unit_name_mangle(*name); -- if (!n) -- return log_oom(); -- - r = bus_method_call_with_reply ( - bus, - "org.freedesktop.systemd1", -@@ -4675,11 +4668,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { - "GetUnitFileState", - &reply, - NULL, -- DBUS_TYPE_STRING, &n, -+ DBUS_TYPE_STRING, name, - DBUS_TYPE_INVALID); - -- free(n); -- - if (r) - return r; - diff --git a/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch b/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch deleted file mode 100644 index 559376e..0000000 --- a/0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 0f1ed3485115fd6bc7217658412ea6d7be511b5a Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:36:28 +0200 -Subject: [PATCH] cryptsetup: fix OOM handling when parsing mount options - ---- - src/cryptsetup/cryptsetup.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index 22b5eea..769c3e4 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -74,7 +74,7 @@ static int parse_one_option(const char *option) { - - t = strdup(option+7); - if (!t) -- return -ENOMEM; -+ return log_oom(); - - free(opt_cipher); - opt_cipher = t; -@@ -89,9 +89,10 @@ static int parse_one_option(const char *option) { - } else if (startswith(option, "tcrypt-keyfile=")) { - - opt_type = CRYPT_TCRYPT; -- if (path_is_absolute(option+15)) -- opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15)); -- else -+ if (path_is_absolute(option+15)) { -+ if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0) -+ return log_oom(); -+ } else - log_error("Key file path '%s' is not absolute. Ignoring.", option+15); - - } else if (startswith(option, "keyfile-size=")) { -@@ -113,7 +114,7 @@ static int parse_one_option(const char *option) { - - t = strdup(option+5); - if (!t) -- return -ENOMEM; -+ return log_oom(); - - free(opt_hash); - opt_hash = t; diff --git a/0006-journald-add-missing-error-check.patch b/0006-journald-add-missing-error-check.patch deleted file mode 100644 index 8ed0124..0000000 --- a/0006-journald-add-missing-error-check.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 71ff575fffcd22db42de59abbeaf150bcf6ac144 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:36:43 +0200 -Subject: [PATCH] journald: add missing error check - ---- - src/journal/journal-file.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 1236403..81c344f 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -907,6 +907,8 @@ static int journal_file_append_field( - - osize = offsetof(Object, field.payload) + size; - r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p); -+ if (r < 0) -+ return r; - - o->field.hash = htole64(hash); - memcpy(o->field.payload, field, size); diff --git a/0007-bus-fix-potentially-uninitialized-memory-access.patch b/0007-bus-fix-potentially-uninitialized-memory-access.patch deleted file mode 100644 index 8807b85..0000000 --- a/0007-bus-fix-potentially-uninitialized-memory-access.patch +++ /dev/null @@ -1,31 +0,0 @@ -From f20403c231e9c7f5446066f01f2f5245238d978c Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:37:11 +0200 -Subject: [PATCH] bus: fix potentially uninitialized memory access - ---- - src/libsystemd-bus/bus-internal.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c -index 0e66f3d..cac948e 100644 ---- a/src/libsystemd-bus/bus-internal.c -+++ b/src/libsystemd-bus/bus-internal.c -@@ -63,7 +63,7 @@ bool object_path_is_valid(const char *p) { - - bool interface_name_is_valid(const char *p) { - const char *q; -- bool dot, found_dot; -+ bool dot, found_dot = false; - - if (isempty(p)) - return false; -@@ -103,7 +103,7 @@ bool interface_name_is_valid(const char *p) { - - bool service_name_is_valid(const char *p) { - const char *q; -- bool dot, found_dot, unique; -+ bool dot, found_dot = false, unique; - - if (isempty(p)) - return false; diff --git a/0008-dbus-fix-return-value-of-dispatch_rqueue.patch b/0008-dbus-fix-return-value-of-dispatch_rqueue.patch deleted file mode 100644 index 3b4244b..0000000 --- a/0008-dbus-fix-return-value-of-dispatch_rqueue.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 27d066e733e369873328e7bc0b67d91f07687cb0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:37:30 +0200 -Subject: [PATCH] dbus: fix return value of dispatch_rqueue() - ---- - src/libsystemd-bus/sd-bus.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c -index 3f766fb..db0880f 100644 ---- a/src/libsystemd-bus/sd-bus.c -+++ b/src/libsystemd-bus/sd-bus.c -@@ -1215,11 +1215,11 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { - if (r == 0) - return ret; - -- r = 1; -+ ret = 1; - } while (!z); - - *m = z; -- return 1; -+ return ret; - } - - int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { diff --git a/0009-modules-load-fix-error-handling.patch b/0009-modules-load-fix-error-handling.patch deleted file mode 100644 index 9b8740e..0000000 --- a/0009-modules-load-fix-error-handling.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 3afab028b6bdeadd32e2c87b6f5a64019945358f Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:37:44 +0200 -Subject: [PATCH] modules-load: fix error handling - ---- - src/modules-load/modules-load.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c -index 7b19ee0..49ee420 100644 ---- a/src/modules-load/modules-load.c -+++ b/src/modules-load/modules-load.c -@@ -302,8 +302,8 @@ int main(int argc, char *argv[]) { - - STRV_FOREACH(i, arg_proc_cmdline_modules) { - k = load_module(ctx, *i); -- if (k < 0) -- r = EXIT_FAILURE; -+ if (k < 0 && r == 0) -+ r = k; - } - - r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); diff --git a/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch b/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch deleted file mode 100644 index d320265..0000000 --- a/0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch +++ /dev/null @@ -1,23 +0,0 @@ -From e0cbed4dbb7c21798b5eecf3d326fb778c4d0be2 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:38:09 +0200 -Subject: [PATCH] efi: never call qsort on potentially NULL arrays - ---- - src/shared/efivars.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/shared/efivars.c b/src/shared/efivars.c -index 1d5b6f9..c015b16 100644 ---- a/src/shared/efivars.c -+++ b/src/shared/efivars.c -@@ -384,7 +384,8 @@ int efi_get_boot_options(uint16_t **options) { - list[count ++] = id; - } - -- qsort(list, count, sizeof(uint16_t), cmp_uint16); -+ if (list) -+ qsort(list, count, sizeof(uint16_t), cmp_uint16); - - *options = list; - return count; diff --git a/0011-strv-don-t-access-potentially-NULL-string-arrays.patch b/0011-strv-don-t-access-potentially-NULL-string-arrays.patch deleted file mode 100644 index e9d6b84..0000000 --- a/0011-strv-don-t-access-potentially-NULL-string-arrays.patch +++ /dev/null @@ -1,24 +0,0 @@ -From b430e6ff0580b962c0b36dd5817dac681c159a58 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:38:28 +0200 -Subject: [PATCH] strv: don't access potentially NULL string arrays - ---- - src/shared/env-util.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/shared/env-util.c b/src/shared/env-util.c -index 5e29629..7976881 100644 ---- a/src/shared/env-util.c -+++ b/src/shared/env-util.c -@@ -405,7 +405,9 @@ char **strv_env_clean_log(char **e, const char *message) { - e[k++] = *p; - } - -- e[k] = NULL; -+ if (e) -+ e[k] = NULL; -+ - return e; - } - diff --git a/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch b/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch deleted file mode 100644 index e591844..0000000 --- a/0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 77c2f8448bc13bb796b9b8dbc93c684428ab38c2 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 2 Oct 2013 19:38:52 +0200 -Subject: [PATCH] mkdir: pass a proper function pointer to mkdir_safe_internal - ---- - src/shared/mkdir.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c -index b7e5c6e..43c6ea6 100644 ---- a/src/shared/mkdir.c -+++ b/src/shared/mkdir.c -@@ -53,7 +53,7 @@ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkd - } - - int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) { -- return mkdir_safe_internal(path, mode, uid, gid, false); -+ return mkdir_safe_internal(path, mode, uid, gid, mkdir); - } - - static int is_dir(const char* path) { diff --git a/0013-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch b/0013-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch deleted file mode 100644 index 2aca9b7..0000000 --- a/0013-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 4e1d571d8564b6383ced03316f0d84b96e1299a4 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Wed, 2 Oct 2013 15:35:16 -0400 -Subject: [PATCH] tmpfiles.d: include setgid perms for /run/log/journal - -4608af4333d0f7f5 set permissions for journal storage on persistent disk -but not the volatile storage. - -ref: https://bugs.archlinux.org/task/37170 ---- - tmpfiles.d/systemd.conf | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf -index b630440..a05c657 100644 ---- a/tmpfiles.d/systemd.conf -+++ b/tmpfiles.d/systemd.conf -@@ -26,3 +26,5 @@ F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)" - - m /var/log/journal 2755 root systemd-journal - - - m /var/log/journal/%m 2755 root systemd-journal - - -+m /run/log/journal 2755 root systemd-journal - - -+m /run/log/journal/%m 2755 root systemd-journal - - diff --git a/0014-execute.c-always-set-SHELL.patch b/0014-execute.c-always-set-SHELL.patch deleted file mode 100644 index 9c93c23..0000000 --- a/0014-execute.c-always-set-SHELL.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 0a1d15d3b802128cc9be10c849c29b76a8fae3ed Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 2 Oct 2013 13:23:10 +0200 -Subject: [PATCH] execute.c: always set $SHELL - -In e6dca81 $SHELL was added to user@.service. Let's -instead provide it to all units which have a user. ---- - TODO | 2 -- - man/systemd.exec.xml | 21 +++++++++++++++++-- - src/core/execute.c | 56 +++++++++++++++++--------------------------------- - units/user@.service.in | 1 - - 4 files changed, 38 insertions(+), 42 deletions(-) - -diff --git a/TODO b/TODO -index 07269f4..425f673 100644 ---- a/TODO -+++ b/TODO -@@ -54,8 +54,6 @@ CGroup Rework Completion: - - Features: - --* set $SHELL where we set $HOME and $USER when User= is set of a service, drop its manual setting from user@.service -- - * we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend() - - * move config_parse_path_strv() out of conf-parser.c -diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml -index f50161f..e213ec4 100644 ---- a/man/systemd.exec.xml -+++ b/man/systemd.exec.xml -@@ -1021,10 +1021,13 @@ - - - $USER -+ $LOGNAME - $HOME -+ $SHELL - -- User name and home -- directory. Set for the units which -+ User name (twice), home -+ directory, and the login shell. -+ Set for the units which - have User= set, - which includes user - systemd instances. -@@ -1080,6 +1083,20 @@ - sd_listen_fds3. - - -+ -+ -+ $TERM -+ -+ Terminal type, set -+ only for units connected to a terminal -+ (StandardInput=tty, -+ StandardOutput=tty, -+ or -+ StandardError=tty). -+ See -+ termcap5. -+ -+ - - - Additional variables may be configured by the -diff --git a/src/core/execute.c b/src/core/execute.c -index a53ef48..3979f35 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -1094,7 +1094,7 @@ int exec_spawn(ExecCommand *command, - if (pid == 0) { - int i, err; - sigset_t ss; -- const char *username = NULL, *home = NULL; -+ const char *username = NULL, *home = NULL, *shell = NULL; - uid_t uid = (uid_t) -1; - gid_t gid = (gid_t) -1; - _cleanup_strv_free_ char **our_env = NULL, **pam_env = NULL, -@@ -1277,7 +1277,7 @@ int exec_spawn(ExecCommand *command, - - if (context->user) { - username = context->user; -- err = get_user_creds(&username, &uid, &gid, &home, NULL); -+ err = get_user_creds(&username, &uid, &gid, &home, &shell); - if (err < 0) { - r = EXIT_USER; - goto fail_child; -@@ -1462,46 +1462,28 @@ int exec_spawn(ExecCommand *command, - } - } - -- our_env = new0(char*, 7); -- if (!our_env) { -+ our_env = new(char*, 8); -+ if (!our_env || -+ (n_fds > 0 && ( -+ asprintf(our_env + n_env++, "LISTEN_PID=%lu", (unsigned long) getpid()) < 0 || -+ asprintf(our_env + n_env++, "LISTEN_FDS=%u", n_fds) < 0)) || -+ (home && asprintf(our_env + n_env++, "HOME=%s", home) < 0) || -+ (username && ( -+ asprintf(our_env + n_env++, "LOGNAME=%s", username) < 0 || -+ asprintf(our_env + n_env++, "USER=%s", username) < 0)) || -+ (shell && asprintf(our_env + n_env++, "SHELL=%s", shell) < 0) || -+ ((is_terminal_input(context->std_input) || -+ context->std_output == EXEC_OUTPUT_TTY || -+ context->std_error == EXEC_OUTPUT_TTY) && ( -+ !(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))))) { -+ - err = -ENOMEM; - r = EXIT_MEMORY; - goto fail_child; - } - -- if (n_fds > 0) -- if (asprintf(our_env + n_env++, "LISTEN_PID=%lu", (unsigned long) getpid()) < 0 || -- asprintf(our_env + n_env++, "LISTEN_FDS=%u", n_fds) < 0) { -- err = -ENOMEM; -- r = EXIT_MEMORY; -- goto fail_child; -- } -- -- if (home) -- if (asprintf(our_env + n_env++, "HOME=%s", home) < 0) { -- err = -ENOMEM; -- r = EXIT_MEMORY; -- goto fail_child; -- } -- -- if (username) -- if (asprintf(our_env + n_env++, "LOGNAME=%s", username) < 0 || -- asprintf(our_env + n_env++, "USER=%s", username) < 0) { -- err = -ENOMEM; -- r = EXIT_MEMORY; -- goto fail_child; -- } -- -- if (is_terminal_input(context->std_input) || -- context->std_output == EXEC_OUTPUT_TTY || -- context->std_error == EXEC_OUTPUT_TTY) -- if (!(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))) { -- err = -ENOMEM; -- r = EXIT_MEMORY; -- goto fail_child; -- } -- -- assert(n_env <= 7); -+ our_env[n_env++] = NULL; -+ assert(n_env <= 8); - - final_env = strv_env_merge(5, - environment, -diff --git a/units/user@.service.in b/units/user@.service.in -index 3718a57..3f8b59d 100644 ---- a/units/user@.service.in -+++ b/units/user@.service.in -@@ -13,7 +13,6 @@ After=systemd-user-sessions.service - User=%I - PAMName=systemd-user - Type=notify --Environment=SHELL=%s - ExecStart=-@rootlibexecdir@/systemd --user - Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket - Slice=user-%i.slice diff --git a/0015-man-Improve-the-description-of-parameter-X-in-tmpfil.patch b/0015-man-Improve-the-description-of-parameter-X-in-tmpfil.patch deleted file mode 100644 index 9161601..0000000 --- a/0015-man-Improve-the-description-of-parameter-X-in-tmpfil.patch +++ /dev/null @@ -1,42 +0,0 @@ -From f4c2f322509191d38f6e94fac06607d1dd99b4ac Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= -Date: Thu, 3 Oct 2013 15:47:26 +0200 -Subject: [PATCH] man: Improve the description of parameter X in tmpfiles.d - page - ---- - man/tmpfiles.d.xml | 21 ++++++++++++--------- - 1 file changed, 12 insertions(+), 9 deletions(-) - -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index 9fc4b7c..e8b630d 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -184,15 +184,18 @@ L /tmp/foobar - - - - /dev/null - - X - Ignore a path -- during cleanup. Use this type -- to prevent path removal as -- controlled with the Age parameter. -- Note that if path is a directory, -- content of a directory is not -- excluded from clean-up, only -- directory itself. Lines of this -- type accept shell-style globs -- in place of normal path -+ during cleaning. Use this type -+ to exclude paths from clean-up -+ as controlled with the Age -+ parameter. Unlike x this -+ parameter will not exclude the -+ content if path is a directory, -+ but only directory itself. -+ Note that lines of this type do -+ not influence the effect of r -+ or R lines. Lines of this type -+ accept shell-style globs in -+ place of normal path - names. - - diff --git a/0016-execute-more-debugging-messages.patch b/0016-execute-more-debugging-messages.patch deleted file mode 100644 index c01d99f..0000000 --- a/0016-execute-more-debugging-messages.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 669ac5ee25f166bdf688b06f96e8e8fd3cf9f43c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 28 Aug 2013 08:01:30 -0400 -Subject: [PATCH] execute: more debugging messages - ---- - src/core/execute.c | 35 +++++++++++++++++++++-------------- - src/login/pam-module.c | 3 ++- - 2 files changed, 23 insertions(+), 15 deletions(-) - -diff --git a/src/core/execute.c b/src/core/execute.c -index 3979f35..3f7ca52 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -317,12 +317,12 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty - case EXEC_INPUT_TTY_FAIL: { - int fd, r; - -- if ((fd = acquire_terminal( -- tty_path(context), -- i == EXEC_INPUT_TTY_FAIL, -- i == EXEC_INPUT_TTY_FORCE, -- false, -- (usec_t) -1)) < 0) -+ fd = acquire_terminal(tty_path(context), -+ i == EXEC_INPUT_TTY_FAIL, -+ i == EXEC_INPUT_TTY_FORCE, -+ false, -+ (usec_t) -1); -+ if (fd < 0) - return fd; - - if (fd != STDIN_FILENO) { -@@ -748,6 +748,7 @@ static int setup_pam( - char **e = NULL; - bool close_session = false; - pid_t pam_pid = 0, parent_pid; -+ int flags = 0; - - assert(name); - assert(user); -@@ -760,6 +761,9 @@ static int setup_pam( - * daemon. We do things this way to ensure that the main PID - * of the daemon is the one we initially fork()ed. */ - -+ if (log_get_max_level() < LOG_PRI(LOG_DEBUG)) -+ flags |= PAM_SILENT; -+ - pam_code = pam_start(name, user, &conv, &handle); - if (pam_code != PAM_SUCCESS) { - handle = NULL; -@@ -772,11 +776,11 @@ static int setup_pam( - goto fail; - } - -- pam_code = pam_acct_mgmt(handle, PAM_SILENT); -+ pam_code = pam_acct_mgmt(handle, flags); - if (pam_code != PAM_SUCCESS) - goto fail; - -- pam_code = pam_open_session(handle, PAM_SILENT); -+ pam_code = pam_open_session(handle, flags); - if (pam_code != PAM_SUCCESS) - goto fail; - -@@ -850,7 +854,7 @@ static int setup_pam( - - /* If our parent died we'll end the session */ - if (getppid() != parent_pid) { -- pam_code = pam_close_session(handle, PAM_DATA_SILENT); -+ pam_code = pam_close_session(handle, flags); - if (pam_code != PAM_SUCCESS) - goto child_finish; - } -@@ -858,7 +862,7 @@ static int setup_pam( - r = 0; - - child_finish: -- pam_end(handle, pam_code | PAM_DATA_SILENT); -+ pam_end(handle, pam_code | flags); - _exit(r); - } - -@@ -880,16 +884,19 @@ static int setup_pam( - return 0; - - fail: -- if (pam_code != PAM_SUCCESS) -+ if (pam_code != PAM_SUCCESS) { -+ log_error("PAM failed: %s", pam_strerror(handle, pam_code)); - err = -EPERM; /* PAM errors do not map to errno */ -- else -+ } else { -+ log_error("PAM failed: %m"); - err = -errno; -+ } - - if (handle) { - if (close_session) -- pam_code = pam_close_session(handle, PAM_DATA_SILENT); -+ pam_code = pam_close_session(handle, flags); - -- pam_end(handle, pam_code | PAM_DATA_SILENT); -+ pam_end(handle, pam_code | flags); - } - - strv_free(e); -diff --git a/src/login/pam-module.c b/src/login/pam-module.c -index 49296b5..973daf7 100644 ---- a/src/login/pam-module.c -+++ b/src/login/pam-module.c -@@ -199,7 +199,8 @@ _public_ PAM_EXTERN int pam_sm_open_session( - - dbus_error_init(&error); - -- /* pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); */ -+ if (debug) -+ pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); - - /* Make this a NOP on non-logind systems */ - if (!logind_running()) diff --git a/0017-gpt-auto-generator-exit-immediately-if-in-container.patch b/0017-gpt-auto-generator-exit-immediately-if-in-container.patch deleted file mode 100644 index 0ced77d..0000000 --- a/0017-gpt-auto-generator-exit-immediately-if-in-container.patch +++ /dev/null @@ -1,37 +0,0 @@ -From d25cc648fed1d6902d07c74afd71458f971ab314 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 3 Oct 2013 22:13:01 -0400 -Subject: [PATCH] gpt-auto-generator: exit immediately if in container - -Otherwise we get an ugly warning when running systemd in -a container. ---- - src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c -index ca54925..d2b4213 100644 ---- a/src/gpt-auto-generator/gpt-auto-generator.c -+++ b/src/gpt-auto-generator/gpt-auto-generator.c -@@ -38,6 +38,7 @@ - #include "libudev.h" - #include "special.h" - #include "unit-name.h" -+#include "virt.h" - - /* TODO: - * -@@ -481,6 +482,13 @@ int main(int argc, char *argv[]) { - umask(0022); - - if (in_initrd()) { -+ log_debug("In initrd, exiting."); -+ r = 0; -+ goto finish; -+ } -+ -+ if (detect_container(NULL) > 0) { -+ log_debug("In a container, exiting."); - r = 0; - goto finish; - } diff --git a/0018-systemd-order-remote-mounts-from-mountinfo-before-re.patch b/0018-systemd-order-remote-mounts-from-mountinfo-before-re.patch deleted file mode 100644 index df58924..0000000 --- a/0018-systemd-order-remote-mounts-from-mountinfo-before-re.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 095da7cd7cdb33cd5efe7a53c77862aa677045d5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 3 Oct 2013 22:15:08 -0400 -Subject: [PATCH] systemd: order remote mounts from mountinfo before - remote-fs.target - -Usually the network is stopped before filesystems are umounted. -Ordering network filesystems before remote-fs.target means that their -unmounting will be performed earlier, and can terminate sucessfully. - -https://bugs.freedesktop.org/show_bug.cgi?id=70002 ---- - src/core/mount.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/core/mount.c b/src/core/mount.c -index 3d46557..93bfa99 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -1440,6 +1440,9 @@ static int mount_add_one( - - u = manager_get_unit(m, e); - if (!u) { -+ const char* const target = -+ fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; -+ - delete = true; - - u = unit_new(m, sizeof(Mount)); -@@ -1466,7 +1469,7 @@ static int mount_add_one( - goto fail; - } - -- r = unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_LOCAL_FS_TARGET, NULL, true); -+ r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true); - if (r < 0) - goto fail; - diff --git a/0019-manager-when-verifying-whether-clients-may-change-en.patch b/0019-manager-when-verifying-whether-clients-may-change-en.patch deleted file mode 100644 index d445dac..0000000 --- a/0019-manager-when-verifying-whether-clients-may-change-en.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 8f84713d297fcba39b65e7409ec114009896c3ff Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 4 Oct 2013 17:01:37 +0200 -Subject: [PATCH] manager: when verifying whether clients may change - environment using selinux check for "reload" rather "reboot" - -This appears to be a copy/paste error. ---- - src/core/dbus-manager.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 676a07f..8f4d017 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -1397,7 +1397,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, - _cleanup_strv_free_ char **l = NULL; - char **e = NULL; - -- SELINUX_ACCESS_CHECK(connection, message, "reboot"); -+ SELINUX_ACCESS_CHECK(connection, message, "reload"); - - r = bus_parse_strv(message, &l); - if (r == -ENOMEM) -@@ -1424,7 +1424,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, - _cleanup_strv_free_ char **l = NULL; - char **e = NULL; - -- SELINUX_ACCESS_CHECK(connection, message, "reboot"); -+ SELINUX_ACCESS_CHECK(connection, message, "reload"); - - r = bus_parse_strv(message, &l); - if (r == -ENOMEM) -@@ -1452,7 +1452,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, - char **f = NULL; - DBusMessageIter iter; - -- SELINUX_ACCESS_CHECK(connection, message, "reboot"); -+ SELINUX_ACCESS_CHECK(connection, message, "reload"); - - if (!dbus_message_iter_init(message, &iter)) - goto oom; diff --git a/0020-logind-fix-bus-introspection-data-for-TakeControl.patch b/0020-logind-fix-bus-introspection-data-for-TakeControl.patch deleted file mode 100644 index 6f3db80..0000000 --- a/0020-logind-fix-bus-introspection-data-for-TakeControl.patch +++ /dev/null @@ -1,22 +0,0 @@ -From e25723afe5ebc4b05d5330a935bb654904eaf2f0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 4 Oct 2013 21:16:40 +0200 -Subject: [PATCH] logind: fix bus introspection data for TakeControl() - ---- - src/login/logind-session-dbus.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c -index 5f6bafb..be4e01c 100644 ---- a/src/login/logind-session-dbus.c -+++ b/src/login/logind-session-dbus.c -@@ -41,7 +41,7 @@ - " \n" \ - " \n" \ - " \n" \ -- " \n" \ -+ " \n" \ - " \n" \ - " \n" \ - " \n" \ diff --git a/0021-mount-check-for-NULL-before-reading-pm-what.patch b/0021-mount-check-for-NULL-before-reading-pm-what.patch deleted file mode 100644 index 10be17b..0000000 --- a/0021-mount-check-for-NULL-before-reading-pm-what.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 61ccd1762fa0f9a8ec9285a8a7367fc03bcc5982 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Fri, 4 Oct 2013 18:22:40 -0400 -Subject: [PATCH] mount: check for NULL before reading pm->what - -Since a57f7e2c828b85, a mount unit with garbage in it would cause -systemd to crash on loading it. - -ref: https://bugs.freedesktop.org/show_bug.cgi?id=70148 ---- - src/core/mount.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/mount.c b/src/core/mount.c -index 93bfa99..db055f0 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -182,7 +182,7 @@ static int mount_add_mount_links(Mount *m) { - * for the source path (if this is a bind mount) to be - * available. */ - pm = get_mount_parameters_fragment(m); -- if (pm && path_is_absolute(pm->what)) { -+ if (pm && pm->what && path_is_absolute(pm->what)) { - r = unit_require_mounts_for(UNIT(m), pm->what); - if (r < 0) - return r; diff --git a/0022-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch b/0022-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch deleted file mode 100644 index d804be1..0000000 --- a/0022-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 47c666095e4ed827bbb15b6e58b760dc5dcd97ae Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 5 Oct 2013 13:09:43 -0400 -Subject: [PATCH] core: do not add "what" to RequiresMountsFor for network - mounts - -For cifs mount like //server/share, we would get -RequiresMountsFor=/server/share, which probably isn't -harmful, but quite confusing. - -Unfortunately a bunch of static functions had to be moved -up, but patch is really one line. ---- - src/core/mount.c | 137 ++++++++++++++++++++++++++++--------------------------- - 1 file changed, 70 insertions(+), 67 deletions(-) - -diff --git a/src/core/mount.c b/src/core/mount.c -index db055f0..70cd372 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -59,6 +59,72 @@ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = { - [MOUNT_FAILED] = UNIT_FAILED - }; - -+static char* mount_test_option(const char *haystack, const char *needle) { -+ struct mntent me = { .mnt_opts = (char*) haystack }; -+ -+ assert(needle); -+ -+ /* Like glibc's hasmntopt(), but works on a string, not a -+ * struct mntent */ -+ -+ if (!haystack) -+ return NULL; -+ -+ return hasmntopt(&me, needle); -+} -+ -+static bool mount_is_network(MountParameters *p) { -+ assert(p); -+ -+ if (mount_test_option(p->options, "_netdev")) -+ return true; -+ -+ if (p->fstype && fstype_is_network(p->fstype)) -+ return true; -+ -+ return false; -+} -+ -+static bool mount_is_bind(MountParameters *p) { -+ assert(p); -+ -+ if (mount_test_option(p->options, "bind")) -+ return true; -+ -+ if (p->fstype && streq(p->fstype, "bind")) -+ return true; -+ -+ if (mount_test_option(p->options, "rbind")) -+ return true; -+ -+ if (p->fstype && streq(p->fstype, "rbind")) -+ return true; -+ -+ return false; -+} -+ -+static bool mount_is_auto(MountParameters *p) { -+ assert(p); -+ -+ return !mount_test_option(p->options, "noauto"); -+} -+ -+static bool needs_quota(MountParameters *p) { -+ assert(p); -+ -+ if (mount_is_network(p)) -+ return false; -+ -+ if (mount_is_bind(p)) -+ return false; -+ -+ return mount_test_option(p->options, "usrquota") || -+ mount_test_option(p->options, "grpquota") || -+ mount_test_option(p->options, "quota") || -+ mount_test_option(p->options, "usrjquota") || -+ mount_test_option(p->options, "grpjquota"); -+} -+ - static void mount_init(Unit *u) { - Mount *m = MOUNT(u); - -@@ -182,7 +248,10 @@ static int mount_add_mount_links(Mount *m) { - * for the source path (if this is a bind mount) to be - * available. */ - pm = get_mount_parameters_fragment(m); -- if (pm && pm->what && path_is_absolute(pm->what)) { -+ if (pm && pm->what && -+ path_is_absolute(pm->what) && -+ !mount_is_network(pm)) { -+ - r = unit_require_mounts_for(UNIT(m), pm->what); - if (r < 0) - return r; -@@ -214,72 +283,6 @@ static int mount_add_mount_links(Mount *m) { - return 0; - } - --static char* mount_test_option(const char *haystack, const char *needle) { -- struct mntent me = { .mnt_opts = (char*) haystack }; -- -- assert(needle); -- -- /* Like glibc's hasmntopt(), but works on a string, not a -- * struct mntent */ -- -- if (!haystack) -- return NULL; -- -- return hasmntopt(&me, needle); --} -- --static bool mount_is_network(MountParameters *p) { -- assert(p); -- -- if (mount_test_option(p->options, "_netdev")) -- return true; -- -- if (p->fstype && fstype_is_network(p->fstype)) -- return true; -- -- return false; --} -- --static bool mount_is_bind(MountParameters *p) { -- assert(p); -- -- if (mount_test_option(p->options, "bind")) -- return true; -- -- if (p->fstype && streq(p->fstype, "bind")) -- return true; -- -- if (mount_test_option(p->options, "rbind")) -- return true; -- -- if (p->fstype && streq(p->fstype, "rbind")) -- return true; -- -- return false; --} -- --static bool mount_is_auto(MountParameters *p) { -- assert(p); -- -- return !mount_test_option(p->options, "noauto"); --} -- --static bool needs_quota(MountParameters *p) { -- assert(p); -- -- if (mount_is_network(p)) -- return false; -- -- if (mount_is_bind(p)) -- return false; -- -- return mount_test_option(p->options, "usrquota") || -- mount_test_option(p->options, "grpquota") || -- mount_test_option(p->options, "quota") || -- mount_test_option(p->options, "usrjquota") || -- mount_test_option(p->options, "grpjquota"); --} -- - static int mount_add_device_links(Mount *m) { - MountParameters *p; - bool device_wants_mount = false; diff --git a/0023-utf8-fix-utf8_is_printable.patch b/0023-utf8-fix-utf8_is_printable.patch deleted file mode 100644 index fb88716..0000000 --- a/0023-utf8-fix-utf8_is_printable.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 5b5f505ab485dd60fb608ffb2eecd755537f039f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 5 Oct 2013 22:47:52 -0400 -Subject: [PATCH] utf8: fix utf8_is_printable - ---- - src/shared/utf8.c | 5 +++-- - src/test/test-utf8.c | 1 + - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/shared/utf8.c b/src/shared/utf8.c -index a8e28ac..31120af 100644 ---- a/src/shared/utf8.c -+++ b/src/shared/utf8.c -@@ -141,14 +141,15 @@ bool utf8_is_printable(const char* str, size_t length) { - - assert(str); - -- for (p = (const uint8_t*) str; length; p++) { -+ for (p = (const uint8_t*) str; length;) { - int encoded_len = utf8_encoded_valid_unichar((const char *)p); -- int32_t val = utf8_encoded_to_unichar((const char*)p); -+ int val = utf8_encoded_to_unichar((const char*)p); - - if (encoded_len < 0 || val < 0 || is_unicode_control(val)) - return false; - - length -= encoded_len; -+ p += encoded_len; - } - - return true; -diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c -index 7bd0db1..f0182ee 100644 ---- a/src/test/test-utf8.c -+++ b/src/test/test-utf8.c -@@ -26,6 +26,7 @@ static void test_utf8_is_printable(void) { - assert_se(utf8_is_printable("ascii is valid\tunicode", 22)); - assert_se(utf8_is_printable("\342\204\242", 3)); - assert_se(!utf8_is_printable("\341\204", 2)); -+ assert_se(utf8_is_printable("ąę", 4)); - } - - static void test_utf8_is_valid(void) { diff --git a/0024-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch b/0024-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch deleted file mode 100644 index 8e02bec..0000000 --- a/0024-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch +++ /dev/null @@ -1,47 +0,0 @@ -From c3d2db4dd65bf5127cbddec2edd931399ce5ebce Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Sun, 6 Oct 2013 18:26:23 -0400 -Subject: [PATCH] shared/util: fix off-by-one error in tag_to_udev_node - -Triggered false negatives when encoding a string which needed every -character to be escaped, e.g. "LABEL=/". ---- - src/shared/util.c | 2 +- - src/test/test-device-nodes.c | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 9be6acf..748f1bb 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -3527,7 +3527,7 @@ static char *tag_to_udev_node(const char *tagvalue, const char *by) { - if (u == NULL) - return NULL; - -- enc_len = strlen(u) * 4; -+ enc_len = strlen(u) * 4 + 1; - t = new(char, enc_len); - if (t == NULL) - return NULL; -diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c -index 2f3dedb..59ba4be 100644 ---- a/src/test/test-device-nodes.c -+++ b/src/test/test-device-nodes.c -@@ -26,7 +26,7 @@ - - /* helpers for test_encode_devnode_name */ - static char *do_encode_string(const char *in) { -- size_t out_len = strlen(in) * 4; -+ size_t out_len = strlen(in) * 4 + 1; - char *out = malloc(out_len); - - assert_se(out); -@@ -46,6 +46,8 @@ static void test_encode_devnode_name(void) { - assert_se(expect_encoded_as("pinkiepie", "pinkiepie")); - assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8")); - assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng")); -+ assert_se(expect_encoded_as("/", "\\x2f")); -+ assert_se(expect_encoded_as("!", "\\x21")); - } - - int main(int argc, char *argv[]) { diff --git a/0025-systemd-serialize-deserialize-forbid_restart-value.patch b/0025-systemd-serialize-deserialize-forbid_restart-value.patch deleted file mode 100644 index e306bce..0000000 --- a/0025-systemd-serialize-deserialize-forbid_restart-value.patch +++ /dev/null @@ -1,48 +0,0 @@ -From adb4105cf7f0018d05696f96a1058041037c9243 Mon Sep 17 00:00:00 2001 -From: Sylvia Else -Date: Sun, 6 Oct 2013 23:06:35 -0400 -Subject: [PATCH] systemd: serialize/deserialize forbid_restart value - -The Service type's forbid_restart field was not preserved by -serialization/deserialization, so the fact that the service should not -be restarted after stopping was lost. - -If a systemctl stop foo command has been given, but the foo service -has not yet stopped, and then the systemctl --system daemon-reload was -given, then when the foo service eventually stopped, systemd would -restart it. - -https://bugs.freedesktop.org/show_bug.cgi?id=69800 ---- - src/core/service.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/src/core/service.c b/src/core/service.c -index 6792024..98b1599 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -2651,6 +2651,9 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { - if (s->exec_context.var_tmp_dir) - unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir); - -+ if (s->forbid_restart) -+ unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart)); -+ - return 0; - } - -@@ -2787,6 +2790,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, - return log_oom(); - - s->exec_context.var_tmp_dir = t; -+ } else if (streq(key, "forbid_restart")) { -+ int b; -+ -+ b = parse_boolean(value); -+ if (b < 0) -+ log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value); -+ else -+ s->forbid_restart = b; - } else - log_debug_unit(u->id, "Unknown serialization key '%s'", key); - diff --git a/0026-core-unify-the-way-we-denote-serialization-attribute.patch b/0026-core-unify-the-way-we-denote-serialization-attribute.patch deleted file mode 100644 index b778da1..0000000 --- a/0026-core-unify-the-way-we-denote-serialization-attribute.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7d1f35a5838363c2d1981fc62f5bbcb43cbdc57c Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 9 Oct 2013 00:13:55 +0200 -Subject: [PATCH] core: unify the way we denote serialization attributes - ---- - src/core/service.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/core/service.c b/src/core/service.c -index 98b1599..96ed2d3 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -2652,7 +2652,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { - unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir); - - if (s->forbid_restart) -- unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart)); -+ unit_serialize_item(u, f, "forbid-restart", yes_no(s->forbid_restart)); - - return 0; - } -@@ -2790,12 +2790,12 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, - return log_oom(); - - s->exec_context.var_tmp_dir = t; -- } else if (streq(key, "forbid_restart")) { -+ } else if (streq(key, "forbid-restart")) { - int b; - - b = parse_boolean(value); - if (b < 0) -- log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value); -+ log_debug_unit(u->id, "Failed to parse forbid-restart value %s", value); - else - s->forbid_restart = b; - } else diff --git a/0027-journald-fix-minor-memory-leak.patch b/0027-journald-fix-minor-memory-leak.patch deleted file mode 100644 index 995d65c..0000000 --- a/0027-journald-fix-minor-memory-leak.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 85f4505eab750835fdfe022012bf7d33123bc940 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 9 Oct 2013 04:03:45 +0200 -Subject: [PATCH] journald: fix minor memory leak - ---- - src/journal/journal-vacuum.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c -index c73ad8f..8d5effb 100644 ---- a/src/journal/journal-vacuum.c -+++ b/src/journal/journal-vacuum.c -@@ -278,6 +278,8 @@ int journal_directory_vacuum( - } else if (errno != ENOENT) - log_warning("Failed to delete %s/%s: %m", directory, p); - -+ free(p); -+ - continue; - } - diff --git a/0028-keymap-Fix-Samsung-900X-34-C.patch b/0028-keymap-Fix-Samsung-900X-34-C.patch deleted file mode 100644 index 313d243..0000000 --- a/0028-keymap-Fix-Samsung-900X-34-C.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 6381c0c4adc2d637ad53dd81cfeb73d7b4a2cbcb Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Wed, 9 Oct 2013 16:05:15 +0200 -Subject: [PATCH] keymap: Fix Samsung 900X[34]C - -It appears that it's not really the 900 vs. 940 or the X3 vs X4, but the -A/B/C/D suffix after that which makes the difference between the keymaps. On a -NP900X3C-A04RU you get - - MODALIAS=dmi:bvn*:bvr*:bd*:svnSAMSUNGELECTRONICSCO.,LTD.:pn900X3C/900X3D/900X4C/900X4D:* - -So change the matches to use AB vs. CDG as the differentiator. - -Thanks to Anatoly Markov for reporting and testing! ---- - hwdb/60-keyboard.hwdb | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 20d398f..b497f92 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -904,6 +904,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr* - KEYBOARD_KEY_a9=! # Fn Lock - Function lock off - - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* - KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings - KEYBOARD_KEY_a0=!mute # Fn+F6 mute -@@ -915,7 +916,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* - - # Series 9 - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr* - KEYBOARD_KEY_ce=! # Fn+F8 keyboard backlight up - KEYBOARD_KEY_8d=! # Fn+F7 keyboard backlight down - KEYBOARD_KEY_96=! # Fn+F1 performance mode (?) diff --git a/0029-do-not-accept-garbage-from-acpi-firmware-performance.patch b/0029-do-not-accept-garbage-from-acpi-firmware-performance.patch deleted file mode 100644 index 998ec91..0000000 --- a/0029-do-not-accept-garbage-from-acpi-firmware-performance.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 44d7510b31f3e9331a2c6b5518438697404655c6 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Thu, 10 Oct 2013 01:38:11 +0200 -Subject: [PATCH] do not accept "garbage" from acpi firmware performance data - (FPDT) - -00000000 46 42 50 54 38 00 00 00 02 00 30 02 00 00 00 00 |FBPT8.....0.....| -00000010 23 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |#E..............| -00000020 f5 6a 51 00 00 00 00 00 00 00 00 00 00 00 00 00 |.jQ.............| -00000030 00 00 00 00 00 00 00 00 70 74 61 6c 58 00 00 00 |........ptalX...| ---- - src/shared/acpi-fpdt.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c -index af58c7c..75648b4 100644 ---- a/src/shared/acpi-fpdt.c -+++ b/src/shared/acpi-fpdt.c -@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { - if (brec.type != ACPI_FPDT_BOOT_REC) - return -EINVAL; - -+ if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start) -+ return -EINVAL; -+ if (brec.exit_services_exit > NSEC_PER_HOUR) -+ return -EINVAL; -+ - if (loader_start) - *loader_start = brec.startup_start / 1000; - if (loader_exit) diff --git a/0030-journald-remove-rotated-file-from-hashmap-when-rotat.patch b/0030-journald-remove-rotated-file-from-hashmap-when-rotat.patch deleted file mode 100644 index d818c2d..0000000 --- a/0030-journald-remove-rotated-file-from-hashmap-when-rotat.patch +++ /dev/null @@ -1,36 +0,0 @@ -From c9cceff90794d452b16a5dd8d1c53cdb44f4a002 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 9 Oct 2013 22:13:13 -0400 -Subject: [PATCH] journald: remove rotated file from hashmap when rotation - fails - -Before, when the user journal file was rotated, journal_file_rotate -could close the old file and fail to open the new file. In that -case, we would leave the old (deallocated) file in the hashmap. -On subsequent accesses, we could retrieve this stale entry, leading -to a segfault. - -When journal_file_rotate fails with the file pointer set to 0, -old file is certainly gone, and cannot be used anymore. - -https://bugzilla.redhat.com/show_bug.cgi?id=890463 ---- - src/journal/journald-server.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c -index 4f47eb1..e03e413 100644 ---- a/src/journal/journald-server.c -+++ b/src/journal/journald-server.c -@@ -321,8 +321,10 @@ void server_rotate(Server *s) { - if (r < 0) - if (f) - log_error("Failed to rotate %s: %s", f->path, strerror(-r)); -- else -+ else { - log_error("Failed to create user journal: %s", strerror(-r)); -+ hashmap_remove(s->user_journals, k); -+ } - else { - hashmap_replace(s->user_journals, k, f); - server_fix_perms(s, f, PTR_TO_UINT32(k)); diff --git a/0031-login-fix-invalid-free-in-sd_session_get_vt.patch b/0031-login-fix-invalid-free-in-sd_session_get_vt.patch deleted file mode 100644 index 92a964c..0000000 --- a/0031-login-fix-invalid-free-in-sd_session_get_vt.patch +++ /dev/null @@ -1,24 +0,0 @@ -From a72c398b5af558d231decbbf12c7990dbd38c682 Mon Sep 17 00:00:00 2001 -From: David Herrmann -Date: Thu, 10 Oct 2013 13:09:37 +0200 -Subject: [PATCH] login: fix invalid free() in sd_session_get_vt() - -We need to clear variables markes as _cleanup_free_. Otherwise, our -error-paths might corrupt random memory. ---- - src/login/sd-login.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/login/sd-login.c b/src/login/sd-login.c -index 71d8c29..6c27dfe 100644 ---- a/src/login/sd-login.c -+++ b/src/login/sd-login.c -@@ -350,7 +350,7 @@ _public_ int sd_session_get_tty(const char *session, char **tty) { - } - - _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) { -- _cleanup_free_ char *vtnr_string; -+ _cleanup_free_ char *vtnr_string = NULL; - unsigned u; - int r; - diff --git a/0032-login-make-sd_session_get_vt-actually-work.patch b/0032-login-make-sd_session_get_vt-actually-work.patch deleted file mode 100644 index de3bd5c..0000000 --- a/0032-login-make-sd_session_get_vt-actually-work.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 88a16dc6bd64267e4a0fbe58f2e8d273c096f1e5 Mon Sep 17 00:00:00 2001 -From: David Herrmann -Date: Thu, 10 Oct 2013 13:11:27 +0200 -Subject: [PATCH] login: make sd_session_get_vt() actually work - -We use VTNR, not VTNr as key. Until now sd_session_get_vt() just returns -an error. ---- - src/login/sd-login.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/login/sd-login.c b/src/login/sd-login.c -index 6c27dfe..7e25041 100644 ---- a/src/login/sd-login.c -+++ b/src/login/sd-login.c -@@ -354,7 +354,7 @@ _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) { - unsigned u; - int r; - -- r = session_get_string(session, "VTNr", &vtnr_string); -+ r = session_get_string(session, "VTNR", &vtnr_string); - if (r < 0) - return r; - diff --git a/0033-udevadm.xml-document-resolve-names-option-for-test.patch b/0033-udevadm.xml-document-resolve-names-option-for-test.patch deleted file mode 100644 index dc42183..0000000 --- a/0033-udevadm.xml-document-resolve-names-option-for-test.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2ef8bf3f6b44d2860b149ad09cf8aea3a4f1bd42 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Sun, 13 Oct 2013 17:42:51 -0400 -Subject: [PATCH] udevadm.xml: document --resolve-names option for test - -And remove documentation of the --subsystem flag which doesn't actually -exist. ---- - man/udevadm.xml | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/man/udevadm.xml b/man/udevadm.xml -index d0b257d..b959216 100644 ---- a/man/udevadm.xml -+++ b/man/udevadm.xml -@@ -462,9 +462,13 @@ - - - -- -+ - -- The subsystem string. -+ Specify when udevadm should resolve names of users and groups. -+ When set to early (the default) names will be resolved when the -+ rules are parsed. When set to late names will be resolved for -+ every event. When set to never names will never be resolved and -+ all devices will be owned by root. - - - diff --git a/0034-Never-call-qsort-on-potentially-NULL-arrays.patch b/0034-Never-call-qsort-on-potentially-NULL-arrays.patch deleted file mode 100644 index 5d2fd9b..0000000 --- a/0034-Never-call-qsort-on-potentially-NULL-arrays.patch +++ /dev/null @@ -1,382 +0,0 @@ -From 88bef035149080be5a83f90d91d5b13cec9749e8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 11 Oct 2013 19:33:13 -0400 -Subject: [PATCH] Never call qsort on potentially NULL arrays - -This extends 62678ded 'efi: never call qsort on potentially -NULL arrays' to all other places where qsort is used and it -is not obvious that the count is non-zero. ---- - src/analyze/systemd-analyze.c | 2 +- - src/cgtop/cgtop.c | 2 +- - src/core/namespace.c | 38 ++++++++++++++++++++------------------ - src/journal/catalog.c | 2 +- - src/journal/journal-file.c | 2 +- - src/journal/journal-vacuum.c | 3 +-- - src/journal/journalctl.c | 2 +- - src/libsystemd-bus/bus-match.c | 2 +- - src/libudev/libudev-enumerate.c | 2 +- - src/nss-myhostname/netlink.c | 3 ++- - src/readahead/readahead-collect.c | 39 ++++++++++++++++++++++----------------- - src/shared/cgroup-show.c | 2 ++ - src/shared/conf-files.c | 2 +- - src/shared/efivars.c | 3 +-- - src/shared/fileio.c | 1 + - src/shared/util.h | 12 ++++++++++++ - src/systemctl/systemctl.c | 10 +++++----- - 17 files changed, 74 insertions(+), 53 deletions(-) - -diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c -index 27d063c..a4f15eb 100644 ---- a/src/analyze/systemd-analyze.c -+++ b/src/analyze/systemd-analyze.c -@@ -768,7 +768,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned - if (r < 0) - return r; - -- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); -+ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); - - r = acquire_boot_times(bus, &boot); - if (r < 0) -diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c -index cacf705..293a211 100644 ---- a/src/cgtop/cgtop.c -+++ b/src/cgtop/cgtop.c -@@ -461,7 +461,7 @@ static int display(Hashmap *a) { - if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid) - array[n++] = g; - -- qsort(array, n, sizeof(Group*), group_compare); -+ qsort_safe(array, n, sizeof(Group*), group_compare); - - /* Find the longest names in one run */ - for (j = 0; j < n; j++) { -diff --git a/src/core/namespace.c b/src/core/namespace.c -index 16b132b..936f368 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -222,7 +222,7 @@ int setup_namespace(char** read_write_dirs, - strv_length(read_only_dirs) + - strv_length(inaccessible_dirs) + - (private_tmp ? 2 : 0); -- BindMount *m, *mounts; -+ BindMount *m, *mounts = NULL; - int r = 0; - - if (!mount_flags) -@@ -231,27 +231,29 @@ int setup_namespace(char** read_write_dirs, - if (unshare(CLONE_NEWNS) < 0) - return -errno; - -- m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); -- if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || -- (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || -- (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) -- return r; -+ if (n) { -+ m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); -+ if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || -+ (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || -+ (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) -+ return r; -+ -+ if (private_tmp) { -+ m->path = "/tmp"; -+ m->mode = PRIVATE_TMP; -+ m++; -+ -+ m->path = "/var/tmp"; -+ m->mode = PRIVATE_VAR_TMP; -+ m++; -+ } - -- if (private_tmp) { -- m->path = "/tmp"; -- m->mode = PRIVATE_TMP; -- m++; -+ assert(mounts + n == m); - -- m->path = "/var/tmp"; -- m->mode = PRIVATE_VAR_TMP; -- m++; -+ qsort(mounts, n, sizeof(BindMount), mount_path_compare); -+ drop_duplicates(mounts, &n); - } - -- assert(mounts + n == m); -- -- qsort(mounts, n, sizeof(BindMount), mount_path_compare); -- drop_duplicates(mounts, &n); -- - /* Remount / as SLAVE so that nothing now mounted in the namespace - shows up in the parent */ - if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0) -diff --git a/src/journal/catalog.c b/src/journal/catalog.c -index 7738d24..90ca008 100644 ---- a/src/journal/catalog.c -+++ b/src/journal/catalog.c -@@ -399,7 +399,7 @@ int catalog_update(const char* database, const char* root, const char* const* di - } - - assert(n == hashmap_size(h)); -- qsort(items, n, sizeof(CatalogItem), catalog_compare_func); -+ qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func); - - r = write_catalog(database, h, sb, items, n); - if (r < 0) -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 81c344f..425e38a 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1344,7 +1344,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st - - /* Order by the position on disk, in order to improve seek - * times for rotating media. */ -- qsort(items, n_iovec, sizeof(EntryItem), entry_item_cmp); -+ qsort_safe(items, n_iovec, sizeof(EntryItem), entry_item_cmp); - - r = journal_file_append_entry_internal(f, ts, xor_hash, items, n_iovec, seqnum, ret, offset); - -diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c -index 8d5effb..d4a1c6c 100644 ---- a/src/journal/journal-vacuum.c -+++ b/src/journal/journal-vacuum.c -@@ -299,8 +299,7 @@ int journal_directory_vacuum( - n_list ++; - } - -- if (n_list > 0) -- qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare); -+ qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare); - - for (i = 0; i < n_list; i++) { - struct statvfs ss; -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index 9a2d255..0876ee6 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -755,7 +755,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative - sd_journal_flush_matches(j); - } - -- qsort(all_ids, count, sizeof(boot_id_t), boot_id_cmp); -+ qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp); - - if (sd_id128_equal(*boot_id, SD_ID128_NULL)) { - if (relative > (int) count || relative <= -(int)count) -diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c -index 1411167..916682a 100644 ---- a/src/libsystemd-bus/bus-match.c -+++ b/src/libsystemd-bus/bus-match.c -@@ -768,7 +768,7 @@ int bus_match_parse( - } - - /* Order the whole thing, so that we always generate the same tree */ -- qsort(components, n_components, sizeof(struct bus_match_component), match_component_compare); -+ qsort_safe(components, n_components, sizeof(struct bus_match_component), match_component_compare); - - /* Check for duplicates */ - for (i = 0; i+1 < n_components; i++) -diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c -index 8146f27..e71d766 100644 ---- a/src/libudev/libudev-enumerate.c -+++ b/src/libudev/libudev-enumerate.c -@@ -276,7 +276,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume - size_t move_later_prefix = 0; - - udev_list_cleanup(&udev_enumerate->devices_list); -- qsort(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp); -+ qsort_safe(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp); - - max = udev_enumerate->devices_cur; - for (i = 0; i < max; i++) { -diff --git a/src/nss-myhostname/netlink.c b/src/nss-myhostname/netlink.c -index b1ef912..47a41f5 100644 ---- a/src/nss-myhostname/netlink.c -+++ b/src/nss-myhostname/netlink.c -@@ -197,7 +197,8 @@ finish: - return r; - } - -- qsort(list, n_list, sizeof(struct address), address_compare); -+ if (n_list) -+ qsort(list, n_list, sizeof(struct address), address_compare); - - *_list = list; - *_n_list = n_list; -diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c -index 32888ad..6b74866 100644 ---- a/src/readahead/readahead-collect.c -+++ b/src/readahead/readahead-collect.c -@@ -536,8 +536,7 @@ done: - HASHMAP_FOREACH_KEY(q, p, files, i) - pack_file(pack, p, on_btrfs); - } else { -- struct item *ordered, *j; -- unsigned k, n; -+ unsigned n; - - /* On rotating media, order things by the block - * numbers */ -@@ -545,25 +544,31 @@ done: - log_debug("Ordering..."); - - n = hashmap_size(files); -- if (!(ordered = new(struct item, n))) { -- r = log_oom(); -- goto finish; -- } -- -- j = ordered; -- HASHMAP_FOREACH_KEY(q, p, files, i) { -- memcpy(j, q, sizeof(struct item)); -- j++; -- } -+ if (n) { -+ _cleanup_free_ struct item *ordered; -+ struct item *j; -+ unsigned k; -+ -+ ordered = new(struct item, n); -+ if (!ordered) { -+ r = log_oom(); -+ goto finish; -+ } - -- assert(ordered + n == j); -+ j = ordered; -+ HASHMAP_FOREACH_KEY(q, p, files, i) { -+ memcpy(j, q, sizeof(struct item)); -+ j++; -+ } - -- qsort(ordered, n, sizeof(struct item), qsort_compare); -+ assert(ordered + n == j); - -- for (k = 0; k < n; k++) -- pack_file(pack, ordered[k].path, on_btrfs); -+ qsort(ordered, n, sizeof(struct item), qsort_compare); - -- free(ordered); -+ for (k = 0; k < n; k++) -+ pack_file(pack, ordered[k].path, on_btrfs); -+ } else -+ log_warning("No pack files"); - } - - log_debug("Finalizing..."); -diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c -index e971f36..cc44ab4 100644 ---- a/src/shared/cgroup-show.c -+++ b/src/shared/cgroup-show.c -@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi - unsigned i, m, pid_width; - pid_t biggest = 0; - -+ assert(n_pids > 0); -+ - /* Filter duplicates */ - m = 0; - for (i = 0; i < n_pids; i++) { -diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c -index 6d99739..ed4070c 100644 ---- a/src/shared/conf-files.c -+++ b/src/shared/conf-files.c -@@ -127,7 +127,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const - return -ENOMEM; - } - -- qsort(files, hashmap_size(fh), sizeof(char *), base_cmp); -+ qsort_safe(files, hashmap_size(fh), sizeof(char *), base_cmp); - *strv = files; - - hashmap_free(fh); -diff --git a/src/shared/efivars.c b/src/shared/efivars.c -index c015b16..f3eb6a6 100644 ---- a/src/shared/efivars.c -+++ b/src/shared/efivars.c -@@ -384,8 +384,7 @@ int efi_get_boot_options(uint16_t **options) { - list[count ++] = id; - } - -- if (list) -- qsort(list, count, sizeof(uint16_t), cmp_uint16); -+ qsort_safe(list, count, sizeof(uint16_t), cmp_uint16); - - *options = list; - return count; -diff --git a/src/shared/fileio.c b/src/shared/fileio.c -index 603a1c7..733b320 100644 ---- a/src/shared/fileio.c -+++ b/src/shared/fileio.c -@@ -662,6 +662,7 @@ int get_status_field(const char *filename, const char *pattern, char **field) { - int r; - - assert(filename); -+ assert(pattern); - assert(field); - - r = read_full_file(filename, &status, NULL); -diff --git a/src/shared/util.h b/src/shared/util.h -index 1b845b3..222abe0 100644 ---- a/src/shared/util.h -+++ b/src/shared/util.h -@@ -764,3 +764,15 @@ bool id128_is_valid(const char *s) _pure_; - void parse_user_at_host(char *arg, char **user, char **host); - - int split_pair(const char *s, const char *sep, char **l, char **r); -+ -+/** -+ * Normal qsort requires base to be nonnull. Here were require -+ * that only if nmemb > 0. -+ */ -+static inline void qsort_safe(void *base, size_t nmemb, size_t size, -+ int (*compar)(const void *, const void *)) { -+ if (nmemb) { -+ assert(base); -+ qsort(base, nmemb, size, compar); -+ } -+} -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index d75281f..036828b 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -471,7 +471,7 @@ static int list_units(DBusConnection *bus, char **args) { - if (r < 0) - return r; - -- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); -+ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info); - - output_units_list(unit_infos, c); - -@@ -733,8 +733,8 @@ static int list_sockets(DBusConnection *bus, char **args) { - listen = triggered = NULL; /* avoid cleanup */ - } - -- qsort(socket_infos, cs, sizeof(struct socket_info), -- (__compar_fn_t) socket_info_compare); -+ qsort_safe(socket_infos, cs, sizeof(struct socket_info), -+ (__compar_fn_t) socket_info_compare); - - output_sockets_list(socket_infos, cs); - -@@ -1108,7 +1108,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve - if (r < 0) - return r; - -- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); -+ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); - - STRV_FOREACH(c, deps) { - if (strv_contains(u, *c)) { -@@ -3532,7 +3532,7 @@ static int show_all(const char* verb, - if (r < 0) - return r; - -- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); -+ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info); - - for (u = unit_infos; u < unit_infos + c; u++) { - _cleanup_free_ char *p = NULL; diff --git a/0035-dbus-common-avoid-leak-in-error-path.patch b/0035-dbus-common-avoid-leak-in-error-path.patch deleted file mode 100644 index 906c9fe..0000000 --- a/0035-dbus-common-avoid-leak-in-error-path.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 65f2e8e1f7a86e62630fd36e34609dc7fc09b474 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 11 Oct 2013 19:33:20 -0400 -Subject: [PATCH] dbus-common: avoid leak in error path - -src/shared/dbus-common.c:968:33: warning: Potential leak of memory pointed to by 'l' - return -EINVAL; - ^~~~~~ ---- - src/shared/dbus-common.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c -index c727cae..3ba2d87 100644 ---- a/src/shared/dbus-common.c -+++ b/src/shared/dbus-common.c -@@ -934,7 +934,7 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) { - int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { - DBusMessageIter sub, sub2; - unsigned n = 0, i = 0; -- char **l; -+ _cleanup_strv_free_ char **l = NULL; - - assert(iter); - assert(_l); -@@ -953,6 +953,7 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { - l = new(char*, n*2+1); - if (!l) - return -ENOMEM; -+ l[0] = NULL; /* make sure that l is properly terminated at all times */ - - dbus_message_iter_recurse(iter, &sub); - -@@ -968,26 +969,25 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { - return -EINVAL; - - l[i] = strdup(a); -- if (!l[i]) { -- strv_free(l); -+ if (!l[i]) - return -ENOMEM; -- } -+ i++; - -- l[++i] = strdup(b); -- if (!l[i]) { -- strv_free(l); -+ l[i] = strdup(b); -+ if (!l[i]) - return -ENOMEM; -- } -- - i++; -+ - dbus_message_iter_next(&sub); - } - - assert(i == n*2); - l[i] = NULL; - -- if (_l) -+ if (_l) { - *_l = l; -+ l = NULL; /* avoid freeing */ -+ } - - return 0; - } diff --git a/0036-drop-ins-check-return-value.patch b/0036-drop-ins-check-return-value.patch deleted file mode 100644 index 5193275..0000000 --- a/0036-drop-ins-check-return-value.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 187ff3e80b8d6b447e584708d88a1858e154a348 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 11 Oct 2013 19:33:36 -0400 -Subject: [PATCH] drop-ins: check return value - -If the function failed, nothing serious would happen -because unlink would probably return EFAULT, but this -would obscure the real error and is a bit sloppy. ---- - src/core/unit.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/core/unit.c b/src/core/unit.c -index 4b97710..1db7d06 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -2908,6 +2908,9 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) { - return 0; - - r = drop_in_file(u, mode, name, &p, &q); -+ if (r < 0) -+ return r; -+ - if (unlink(q) < 0) - r = errno == ENOENT ? 0 : -errno; - else diff --git a/0037-Make-sure-that-we-don-t-dereference-NULL.patch b/0037-Make-sure-that-we-don-t-dereference-NULL.patch deleted file mode 100644 index 80c2231..0000000 --- a/0037-Make-sure-that-we-don-t-dereference-NULL.patch +++ /dev/null @@ -1,27 +0,0 @@ -From bb653097a1e0c5c2228cafda144814c42cd05da2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 12 Oct 2013 13:43:07 -0400 -Subject: [PATCH] Make sure that we don't dereference NULL - -The code was actually safe, because b should -never be null, because if rvalue is empty, a different -branch is taken. But we *do* check for NULL in the -loop above, so it's better to also check here for symmetry. ---- - src/core/load-fragment.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c -index 44920d6..f01843d 100644 ---- a/src/core/load-fragment.c -+++ b/src/core/load-fragment.c -@@ -1860,7 +1860,8 @@ int config_parse_documentation(const char *unit, - free(*a); - } - } -- *b = NULL; -+ if (b) -+ *b = NULL; - - return r; - } diff --git a/0038-gitignore-ignore-clang-analyze-output.patch b/0038-gitignore-ignore-clang-analyze-output.patch deleted file mode 100644 index 023ad3c..0000000 --- a/0038-gitignore-ignore-clang-analyze-output.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 8d2f7d0ecc3b949f7f15934f3adb73e812866c59 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 12 Oct 2013 19:50:54 -0400 -Subject: [PATCH] gitignore: ignore clang --analyze output - ---- - .gitignore | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/.gitignore b/.gitignore -index 5b38c0b..56e10a6 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -162,6 +162,7 @@ - *.la - *.lo - *.o -+*.plist - *.stamp - *.pyc - __pycache__/ diff --git a/0039-man-add-more-markup-to-udevadm-8.patch b/0039-man-add-more-markup-to-udevadm-8.patch deleted file mode 100644 index 7c14c0b..0000000 --- a/0039-man-add-more-markup-to-udevadm-8.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 83a4e0160b3756222b0c8e8d220c5cc07cc76a40 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 13 Oct 2013 19:43:19 -0400 -Subject: [PATCH] man: add more markup to udevadm(8) - ---- - man/udevadm.xml | 49 +++++++++++++++++++++++++++++++++---------------- - 1 file changed, 33 insertions(+), 16 deletions(-) - -diff --git a/man/udevadm.xml b/man/udevadm.xml -index b959216..a1ffe42 100644 ---- a/man/udevadm.xml -+++ b/man/udevadm.xml -@@ -61,9 +61,10 @@ - - - Description -- udevadm expects a command and command specific options. It -- controls the runtime behavior of udev, requests kernel events, -- manages the event queue, and provides simple debugging mechanisms. -+ udevadm expects a command and command -+ specific options. It controls the runtime behavior of -+ systemd-udevd, requests kernel events, manages -+ the event queue, and provides simple debugging mechanisms. - - - OPTIONS -@@ -97,23 +98,37 @@ - - - -- Query the database for specified type of device data. It needs the -- or to identify the specified -- device. Valid queries are: -- name, symlink, path, -- property, all. -+ Query the database for specified type of device -+ data. It needs the or -+ to identify the specified -+ device. Valid queries are: name, -+ symlink, path, -+ property, -+ all. - - - - - -- The devpath of the device to query. -+ The /sys path of the device to -+ query, e.g. -+ /sys/class/block/sda. -+ Note that this option usually isn't very useful, since -+ udev can guess the type of the -+ argument, so udevadm -+ --devpath=/class/block/sda is equivalent to -+ udevadm /sys/class/block/sda. - - - - - -- The name of the device node or a symlink to query -+ The name of the device node or a symlink to query, -+ e.g. /dev/sda. -+ Note that this option usually isn't very useful, since -+ udev can guess the type of the -+ argument, so udevadm --name=sda is -+ equivalent to udevadm /dev/sda. - - - -@@ -462,13 +477,15 @@ - - - -- -+ - -- Specify when udevadm should resolve names of users and groups. -- When set to early (the default) names will be resolved when the -- rules are parsed. When set to late names will be resolved for -- every event. When set to never names will never be resolved and -- all devices will be owned by root. -+ Specify when udevadm should resolve names of users -+ and groups. When set to early (the -+ default) names will be resolved when the rules are -+ parsed. When set to late names will -+ be resolved for every event. When set to -+ never names will never be resolved -+ and all devices will be owned by root. - - - diff --git a/0040-shared-util-Fix-glob_extend-argument.patch b/0040-shared-util-Fix-glob_extend-argument.patch deleted file mode 100644 index ff1837b..0000000 --- a/0040-shared-util-Fix-glob_extend-argument.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4d2a7145666c91f0ba63dd5c6937b15339b42b0c Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Mon, 14 Oct 2013 08:15:51 +0200 -Subject: [PATCH] shared/util: Fix glob_extend() argument - -glob_extend() would completely fail to work, or return incorrect -data if it wasn't being passed the current getopt "optarg" variable -as it used the global variable, instead of the passed parameters. ---- - src/shared/util.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 748f1bb..6c88040 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -4391,7 +4391,7 @@ int glob_extend(char ***strv, const char *path) { - char **p; - - errno = 0; -- k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g); -+ k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g); - - if (k == GLOB_NOMATCH) - return -ENOENT; diff --git a/0041-Fix-bad-assert-in-show_pid_array.patch b/0041-Fix-bad-assert-in-show_pid_array.patch deleted file mode 100644 index 4042ba6..0000000 --- a/0041-Fix-bad-assert-in-show_pid_array.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ce626319c273383a8f8d1a7d9f549f4d487699ea Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 14 Oct 2013 19:15:24 -0400 -Subject: [PATCH] Fix bad assert in show_pid_array - -This function should get the same treatment as other qsort uses -did in 7ff7394 "Never call qsort on potentially NULL arrays". - -Reported-by: Oleksii Shevchuk ---- - src/shared/cgroup-show.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c -index cc44ab4..aa0f017 100644 ---- a/src/shared/cgroup-show.c -+++ b/src/shared/cgroup-show.c -@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi - unsigned i, m, pid_width; - pid_t biggest = 0; - -- assert(n_pids > 0); -- - /* Filter duplicates */ - m = 0; - for (i = 0; i < n_pids; i++) { -@@ -65,7 +63,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi - pid_width = DECIMAL_STR_WIDTH(biggest); - - /* And sort */ -- qsort(pids, n_pids, sizeof(pid_t), compare); -+ qsort_safe(pids, n_pids, sizeof(pid_t), compare); - - if(flags & OUTPUT_FULL_WIDTH) - n_columns = 0; diff --git a/0042-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch b/0042-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch deleted file mode 100644 index f9158e9..0000000 --- a/0042-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch +++ /dev/null @@ -1,31 +0,0 @@ -From cd1338b7abe6d300ce66051f3490f35c8b4d1443 Mon Sep 17 00:00:00 2001 -From: Igor Zhbanov -Date: Tue, 15 Oct 2013 14:35:13 +0400 -Subject: [PATCH] Fix for SIGSEGV in systemd-bootchart on short-living - processes - -The function svg_ps_bars() dereferencess NULL pointer in the line - endtime = ps->last->sampledata->sampletime; -because of partially initialized ps_struct (ps->last == NULL). - -If some process terminates between scaning /proc directory in the log_sample() -function and reading additional information from /proc/PID/... files, -the files couldn't be read, the loop will be continued and partially -initialized structure returned. ---- - src/bootchart/store.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/bootchart/store.c b/src/bootchart/store.c -index f8c97c2..7f86cfe 100644 ---- a/src/bootchart/store.c -+++ b/src/bootchart/store.c -@@ -275,7 +275,7 @@ schedstat_next: - pscount++; - - /* mark our first sample */ -- ps->first = ps->sample; -+ ps->first = ps->last = ps->sample; - ps->sample->runtime = atoll(rt); - ps->sample->waittime = atoll(wt); - diff --git a/0043-man-document-the-b-special-boot-option.patch b/0043-man-document-the-b-special-boot-option.patch deleted file mode 100644 index 6cedef6..0000000 --- a/0043-man-document-the-b-special-boot-option.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 3dca881397af86883639ab25f27dfb605acc2a2c Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Tue, 15 Oct 2013 08:58:50 +0200 -Subject: [PATCH] man: document the -b special boot option - ---- - man/kernel-command-line.xml | 1 + - man/systemd.xml | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml -index cc267a3..abe68e5 100644 ---- a/man/kernel-command-line.xml -+++ b/man/kernel-command-line.xml -@@ -123,6 +123,7 @@ - - - -+ -b - emergency - single - s -diff --git a/man/systemd.xml b/man/systemd.xml -index fe6e331..85c06d3 100644 ---- a/man/systemd.xml -+++ b/man/systemd.xml -@@ -1149,6 +1149,7 @@ - - - -+ -b - emergency - - Boot into emergency diff --git a/0044-logind-allow-unprivileged-session-device-access.patch b/0044-logind-allow-unprivileged-session-device-access.patch deleted file mode 100644 index 39962fa..0000000 --- a/0044-logind-allow-unprivileged-session-device-access.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 6d3e661d97dd6157381ca1dd52b839e2049b86b5 Mon Sep 17 00:00:00 2001 -From: David Herrmann -Date: Tue, 15 Oct 2013 21:13:39 +0200 -Subject: [PATCH] logind: allow unprivileged session-device access - -The session-device/control API was introduced for unprivileged device -access from within a session. Add the required dbus policy to the default -logind policies. - -Note: logind validates that only root and the user of a session can -use the API. Furthermore, only a single API user gets access at a time. ---- - src/login/org.freedesktop.login1.conf | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf -index 0407609..04e735e 100644 ---- a/src/login/org.freedesktop.login1.conf -+++ b/src/login/org.freedesktop.login1.conf -@@ -148,6 +148,26 @@ - send_interface="org.freedesktop.login1.Session" - send_member="SetIdleHint"/> - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - diff --git a/0045-rules-expose-loop-block-devices-to-systemd.patch b/0045-rules-expose-loop-block-devices-to-systemd.patch deleted file mode 100644 index 6119d6e..0000000 --- a/0045-rules-expose-loop-block-devices-to-systemd.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 78846d19d3569cf637d2e37c10e75395ebcf9d06 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 16 Oct 2013 02:49:54 +0200 -Subject: [PATCH] rules: expose loop block devices to systemd - -Since the kernel no longer exposes a large number of "dead" loop devices -it is OK to expose them now in systemd, so let's do that. This has the -benefit that mount dependencies on loop devices start to work. ---- - rules/99-systemd.rules.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in -index bbb7d0c..3c99475 100644 ---- a/rules/99-systemd.rules.in -+++ b/rules/99-systemd.rules.in -@@ -11,12 +11,12 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd" - - KERNEL=="vport*", TAG+="systemd" - --SUBSYSTEM=="block", KERNEL!="ram*|loop*", TAG+="systemd" --SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" -+SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd" -+SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" - - # Ignore encrypted devices with no identified superblock on it, since - # we are probably still calling mke2fs or mkswap on it. --SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0" -+SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0" - - # Ignore raid devices that are not yet assembled and started - SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0" diff --git a/0046-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch b/0046-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch deleted file mode 100644 index 9aea829..0000000 --- a/0046-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 9a3296571683a6a3eaee44d18db91ca113841da6 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 16 Oct 2013 02:51:24 +0200 -Subject: [PATCH] rules: don't limit some of the rules to the "add" action - -Devices should show up in systemd regardless whether the user invoked -"udevadm trigger" or not. Before this change some devices might have -suddenly disappeared due issuing that command. - -Conflicts: - rules/99-systemd.rules.in ---- - rules/99-systemd.rules.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in -index 3c99475..307f18f 100644 ---- a/rules/99-systemd.rules.in -+++ b/rules/99-systemd.rules.in -@@ -53,12 +53,12 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy - - # Pull in backlight save/restore for all firmware backlight devices - --ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service" -+SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service" - - # Asynchronously mount file systems implemented by these modules as - # soon as they are loaded. - --SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" --SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" -+SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" -+SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" - - LABEL="systemd_end" diff --git a/0047-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch b/0047-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch deleted file mode 100644 index a02d654..0000000 --- a/0047-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch +++ /dev/null @@ -1,34 +0,0 @@ -From bc3ae365890fa52f9beca1a67744a0fcbdcb5f82 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Thu, 17 Oct 2013 03:20:46 +0200 -Subject: [PATCH] tmpfiles: log unaccessible FUSE mount points only as debug - message - ---- - src/tmpfiles/tmpfiles.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 8122d6a..239e56b 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -275,12 +275,15 @@ static int dir_cleanup( - continue; - - if (fstatat(dirfd(d), dent->d_name, &s, AT_SYMLINK_NOFOLLOW) < 0) { -+ if (errno == ENOENT) -+ continue; - -- if (errno != ENOENT) { -+ /* FUSE, NFS mounts, SELinux might return EACCES */ -+ if (errno == EACCES) -+ log_debug("stat(%s/%s) failed: %m", p, dent->d_name); -+ else - log_error("stat(%s/%s) failed: %m", p, dent->d_name); -- r = -errno; -- } -- -+ r = -errno; - continue; - } - diff --git a/0048-hwdb-update.patch b/0048-hwdb-update.patch deleted file mode 100644 index 6d8d820..0000000 --- a/0048-hwdb-update.patch +++ /dev/null @@ -1,1629 +0,0 @@ -From d7490751d3036a2b01ac74cdf4b632803f0b9ea9 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 20 Oct 2013 01:12:29 +0200 -Subject: [PATCH] hwdb: update - ---- - hwdb/20-OUI.hwdb | 391 +++++++++++++++++++++++++++++++++++++++++- - hwdb/20-pci-vendor-model.hwdb | 216 ++++++++++++++++++++--- - 2 files changed, 578 insertions(+), 29 deletions(-) - -diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb -index e913b28..5067167 100644 ---- a/hwdb/20-OUI.hwdb -+++ b/hwdb/20-OUI.hwdb -@@ -12278,7 +12278,7 @@ OUI:40D85501B* - ID_OUI_FROM_DATABASE=Audio Enhancement - - OUI:40D85501C* -- ID_OUI_FROM_DATABASE=BERG -+ ID_OUI_FROM_DATABASE=BERG Cloud Limited - - OUI:40D85501D* - ID_OUI_FROM_DATABASE=Scharco Elektronik GmbH -@@ -13324,6 +13324,93 @@ OUI:40D85517B* - OUI:40D85517C* - ID_OUI_FROM_DATABASE=Critical Link - -+OUI:40D85517D* -+ ID_OUI_FROM_DATABASE=Kiwigrid GmbH -+ -+OUI:40D85517E* -+ ID_OUI_FROM_DATABASE=TOKHATEC -+ -+OUI:40D85517F* -+ ID_OUI_FROM_DATABASE=Telvent -+ -+OUI:40D855180* -+ ID_OUI_FROM_DATABASE=BroadSoft Inc -+ -+OUI:40D855181* -+ ID_OUI_FROM_DATABASE=eROCCA -+ -+OUI:40D855182* -+ ID_OUI_FROM_DATABASE=Georg Neumann GmbH -+ -+OUI:40D855183* -+ ID_OUI_FROM_DATABASE=EMAC, Inc. -+ -+OUI:40D855184* -+ ID_OUI_FROM_DATABASE=Satkirit Ltd -+ -+OUI:40D855185* -+ ID_OUI_FROM_DATABASE=Standard Change Makers -+ -+OUI:40D855186* -+ ID_OUI_FROM_DATABASE=KST technology -+ -+OUI:40D855187* -+ ID_OUI_FROM_DATABASE=CDEX Corp. -+ -+OUI:40D855188* -+ ID_OUI_FROM_DATABASE=Array Corporation -+ -+OUI:40D855189* -+ ID_OUI_FROM_DATABASE=Yoozma Corporation -+ -+OUI:40D85518A* -+ ID_OUI_FROM_DATABASE=Aplex Technology Inc. -+ -+OUI:40D85518B* -+ ID_OUI_FROM_DATABASE=Diagnosys Test Systems Ltd -+ -+OUI:40D85518C* -+ ID_OUI_FROM_DATABASE=EOS S.r.l. -+ -+OUI:40D85518D* -+ ID_OUI_FROM_DATABASE=Zoe Medical -+ -+OUI:40D85518E* -+ ID_OUI_FROM_DATABASE=Kerun Visual Technology Co., Ltd.(Shenzhen) -+ -+OUI:40D85518F* -+ ID_OUI_FROM_DATABASE=Beat Sensing co. , ltd. -+ -+OUI:40D855190* -+ ID_OUI_FROM_DATABASE=Spider Tecnologia Ind. e Com Ltda -+ -+OUI:40D855191* -+ ID_OUI_FROM_DATABASE=Soukai Electric -+ -+OUI:40D855192* -+ ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSTEMS -+ -+OUI:40D855193* -+ ID_OUI_FROM_DATABASE=FORZA SILICON CORP. -+ -+OUI:40D855194* -+ ID_OUI_FROM_DATABASE=RF Code -+ -+OUI:40D855195* -+ ID_OUI_FROM_DATABASE=TONNA ELECTRONIQUE -+ -+OUI:40D855196* -+ ID_OUI_FROM_DATABASE=Advanced Micro Controls Inc. -+ -+OUI:40D855197* -+ ID_OUI_FROM_DATABASE=Berg Cloud Limited -+ -+OUI:40D855198* -+ ID_OUI_FROM_DATABASE=devboards GmbH -+ -+OUI:40D855199* -+ ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH -+ - OUI:000000* - ID_OUI_FROM_DATABASE=XEROX CORPORATION - -@@ -46883,7 +46970,7 @@ OUI:0080B7* - ID_OUI_FROM_DATABASE=STELLAR COMPUTER - - OUI:0080B8* -- ID_OUI_FROM_DATABASE=BUG, INCORPORATED -+ ID_OUI_FROM_DATABASE=B.U.G. MORISEIKI, INCORPORATED - - OUI:0080B9* - ID_OUI_FROM_DATABASE=ARCHE TECHNOLIGIES INC. -@@ -51589,6 +51676,9 @@ OUI:04F7E4* - OUI:04F8C2* - ID_OUI_FROM_DATABASE=Flaircomm Microelectronics, Inc. - -+OUI:04F938* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:04FE31* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -52132,6 +52222,9 @@ OUI:08512E* - OUI:085240* - ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH - -+OUI:085AE0* -+ ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd. -+ - OUI:085B0E* - ID_OUI_FROM_DATABASE=Fortinet, Inc. - -@@ -52297,6 +52390,9 @@ OUI:08FC52* - OUI:08FC88* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:08FD0E* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:0C0400* - ID_OUI_FROM_DATABASE=Jantar d.o.o. - -@@ -52306,6 +52402,9 @@ OUI:0C0535* - OUI:0C1105* - ID_OUI_FROM_DATABASE=Ringslink (Xiamen) Network Communication Technologies Co., Ltd - -+OUI:0C1262* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:0C130B* - ID_OUI_FROM_DATABASE=Uniqoteq Ltd. - -@@ -52366,6 +52465,9 @@ OUI:0C4DE9* - OUI:0C51F7* - ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX - -+OUI:0C54A5* -+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION -+ - OUI:0C5521* - ID_OUI_FROM_DATABASE=Axiros GmbH - -@@ -52627,6 +52729,9 @@ OUI:100D7F* - OUI:100E2B* - ID_OUI_FROM_DATABASE=NEC CASIO Mobile Communications - -+OUI:100E7E* -+ ID_OUI_FROM_DATABASE=Juniper networks -+ - OUI:1010B6* - ID_OUI_FROM_DATABASE=McCain Inc - -@@ -53023,6 +53128,9 @@ OUI:149090* - OUI:149448* - ID_OUI_FROM_DATABASE=BLU CASTLE S.A. - -+OUI:1499E2* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:149FE8* - ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. - -@@ -53095,6 +53203,9 @@ OUI:14EE9D* - OUI:14F0C5* - ID_OUI_FROM_DATABASE=Xtremio Ltd. - -+OUI:14F28E* -+ ID_OUI_FROM_DATABASE=ShenYang ZhongKe-Allwin Technology Co.LTD -+ - OUI:14F42A* - ID_OUI_FROM_DATABASE=Samsung Electronics - -@@ -53257,6 +53368,9 @@ OUI:1867B0* - OUI:186D99* - ID_OUI_FROM_DATABASE=Adanis Inc. - -+OUI:1879A2* -+ ID_OUI_FROM_DATABASE=GMJ ELECTRIC LIMITED -+ - OUI:187A93* - ID_OUI_FROM_DATABASE=AMICCOM Electronics Corporation - -@@ -53440,6 +53554,9 @@ OUI:1C19DE* - OUI:1C1D67* - ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd - -+OUI:1C1D86* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:1C334D* - ID_OUI_FROM_DATABASE=ITS Telecom - -@@ -53803,6 +53920,9 @@ OUI:20858C* - OUI:208984* - ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD - -+OUI:208986* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:20918A* - ID_OUI_FROM_DATABASE=PROFALUX - -@@ -53929,6 +54049,9 @@ OUI:20FEDB* - OUI:2401C7* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:24050F* -+ ID_OUI_FROM_DATABASE=MTN Electronic Co. Ltd -+ - OUI:240917* - ID_OUI_FROM_DATABASE=Devlin Electronics Limited - -@@ -54034,6 +54157,9 @@ OUI:249442* - OUI:249504* - ID_OUI_FROM_DATABASE=SFR - -+OUI:24A2E1* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:24A42C* - ID_OUI_FROM_DATABASE=KOUKAAM a.s. - -@@ -54043,6 +54169,9 @@ OUI:24A43C* - OUI:24A495* - ID_OUI_FROM_DATABASE=Thales Canada Inc. - -+OUI:24A87D* -+ ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd. -+ - OUI:24A937* - ID_OUI_FROM_DATABASE=PURE Storage - -@@ -54121,6 +54250,9 @@ OUI:24DBAC* - OUI:24DBAD* - ID_OUI_FROM_DATABASE=ShopperTrak RCT Corporation - -+OUI:24DBED* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:24DEC6* - ID_OUI_FROM_DATABASE=Aruba Networks - -@@ -54130,6 +54262,9 @@ OUI:24E271* - OUI:24E6BA* - ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky - -+OUI:24E9B3* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:24EA40* - ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH - -@@ -54547,6 +54682,9 @@ OUI:2C553C* - OUI:2C59E5* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:2C5A05* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:2C5AA3* - ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD - -@@ -54940,6 +55078,9 @@ OUI:3407FB* - OUI:340804* - ID_OUI_FROM_DATABASE=D-Link Corporation - -+OUI:3413A8* -+ ID_OUI_FROM_DATABASE=Mediplan Limited -+ - OUI:3413E8* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -55321,6 +55462,9 @@ OUI:386E21* - OUI:3872C0* - ID_OUI_FROM_DATABASE=COMTREND - -+OUI:387B47* -+ ID_OUI_FROM_DATABASE=AKELA, Inc. -+ - OUI:388345* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD. - -@@ -55390,6 +55534,9 @@ OUI:38C7BA* - OUI:38C85C* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -+OUI:38C9A9* -+ ID_OUI_FROM_DATABASE=SMART High Reliability Solutions, Inc. -+ - OUI:38CA97* - ID_OUI_FROM_DATABASE=Contour Design LLC - -@@ -55459,6 +55606,9 @@ OUI:3C081E* - OUI:3C096D* - ID_OUI_FROM_DATABASE=Powerhouse Dynamics - -+OUI:3C0E23* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:3C0FC1* - ID_OUI_FROM_DATABASE=KBC Networks - -@@ -55507,6 +55657,9 @@ OUI:3C300C* - OUI:3C363D* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:3C36E4* -+ ID_OUI_FROM_DATABASE=Arris Group, Inc. -+ - OUI:3C3888* - ID_OUI_FROM_DATABASE=ConnectQuest, llc - -@@ -55672,6 +55825,9 @@ OUI:3CD0F8* - OUI:3CD16E* - ID_OUI_FROM_DATABASE=Telepower Communication Co., Ltd - -+OUI:3CD4D6* -+ ID_OUI_FROM_DATABASE=WirelessWERX, Inc -+ - OUI:3CD7DA* - ID_OUI_FROM_DATABASE=SK Mtek microelectronics(shenzhen)limited - -@@ -55771,6 +55927,9 @@ OUI:402CF4* - OUI:403004* - ID_OUI_FROM_DATABASE=Apple - -+OUI:403067* -+ ID_OUI_FROM_DATABASE=Conlog (Pty) Ltd -+ - OUI:40336C* - ID_OUI_FROM_DATABASE=Godrej & Boyce Mfg. co. ltd - -@@ -55918,6 +56077,9 @@ OUI:40B3FC* - OUI:40B4F0* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:40B6B1* -+ ID_OUI_FROM_DATABASE=SUNGSAM CO,.Ltd -+ - OUI:40B7F3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -55972,6 +56134,9 @@ OUI:40ECF8* - OUI:40EF4C* - ID_OUI_FROM_DATABASE=Fihonest communication co.,Ltd - -+OUI:40F02F* -+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation -+ - OUI:40F14C* - ID_OUI_FROM_DATABASE=ISE Europe SPRL - -@@ -56203,6 +56368,12 @@ OUI:44C233* - OUI:44C39B* - ID_OUI_FROM_DATABASE=OOO RUBEZH NPO - -+OUI:44C4A9* -+ ID_OUI_FROM_DATABASE=Opticom Communication, LLC -+ -+OUI:44C56F* -+ ID_OUI_FROM_DATABASE=NGN Easy Satfinder (Tianjin) Electronic Co., Ltd -+ - OUI:44C9A2* - ID_OUI_FROM_DATABASE=Greenwald Industries - -@@ -56362,6 +56533,9 @@ OUI:48B253* - OUI:48B8DE* - ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD. - -+OUI:48B977* -+ ID_OUI_FROM_DATABASE=PulseOn Oy -+ - OUI:48B9C2* - ID_OUI_FROM_DATABASE=Teletics Inc. - -@@ -56659,9 +56833,15 @@ OUI:4CCC34* - OUI:4CD637* - ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd - -+OUI:4CD9C4* -+ ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd -+ - OUI:4CDF3D* - ID_OUI_FROM_DATABASE=TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD - -+OUI:4CE1BB* -+ ID_OUI_FROM_DATABASE=Zhuhai HiFocus Technology Co., Ltd. -+ - OUI:4CE676* - ID_OUI_FROM_DATABASE=Buffalo Inc. - -@@ -56701,6 +56881,9 @@ OUI:5011EB* - OUI:5017FF* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:501AC5* -+ ID_OUI_FROM_DATABASE=Microsoft -+ - OUI:50206B* - ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions - -@@ -56812,6 +56995,9 @@ OUI:507D02* - OUI:507E5D* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -+OUI:508569* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD -+ - OUI:5087B8* - ID_OUI_FROM_DATABASE=Nuvyyo Inc - -@@ -56995,6 +57181,9 @@ OUI:5435DF* - OUI:543968* - ID_OUI_FROM_DATABASE=Edgewater Networks Inc - -+OUI:5439DF* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:543D37* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -@@ -57055,6 +57244,9 @@ OUI:5481AD* - OUI:54847B* - ID_OUI_FROM_DATABASE=Digital Devices GmbH - -+OUI:54880E* -+ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. -+ - OUI:548922* - ID_OUI_FROM_DATABASE=Zelfy Inc - -@@ -57439,6 +57631,9 @@ OUI:5C2479* - OUI:5C260A* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:5C2AEF* -+ ID_OUI_FROM_DATABASE=Open Access Pty Ltd -+ - OUI:5C3327* - ID_OUI_FROM_DATABASE=Spazio Italia srl - -@@ -57547,6 +57742,9 @@ OUI:5CA39D* - OUI:5CA3EB* - ID_OUI_FROM_DATABASE=Lokel s.r.o. - -+OUI:5CA48A* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:5CAC4C* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -58228,6 +58426,9 @@ OUI:64E161* - OUI:64E599* - ID_OUI_FROM_DATABASE=EFM Networks - -+OUI:64E625* -+ ID_OUI_FROM_DATABASE=Woxu Wireless Co., Ltd -+ - OUI:64E682* - ID_OUI_FROM_DATABASE=Apple - -@@ -58318,6 +58519,9 @@ OUI:683EEC* - OUI:684352* - ID_OUI_FROM_DATABASE=Bhuu Limited - -+OUI:684898* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:684B88* - ID_OUI_FROM_DATABASE=Galtronics Telemetry Inc. - -@@ -58573,6 +58777,9 @@ OUI:6C3A84* - OUI:6C3BE5* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:6C3C53* -+ ID_OUI_FROM_DATABASE=SoundHawk Corp -+ - OUI:6C3E6D* - ID_OUI_FROM_DATABASE=Apple - -@@ -58912,6 +59119,9 @@ OUI:706582* - OUI:70704C* - ID_OUI_FROM_DATABASE=Purple Communications, Inc - -+OUI:7071B3* -+ ID_OUI_FROM_DATABASE=Brain Corporation -+ - OUI:7071BC* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - -@@ -58936,6 +59146,9 @@ OUI:7076F0* - OUI:707BE8* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:707C18* -+ ID_OUI_FROM_DATABASE=ADATA Technology Co., Ltd -+ - OUI:707E43* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -59128,6 +59341,9 @@ OUI:74372F* - OUI:743889* - ID_OUI_FROM_DATABASE=ANNAX Anzeigesysteme GmbH - -+OUI:743ECB* -+ ID_OUI_FROM_DATABASE=Gentrice tech -+ - OUI:744401* - ID_OUI_FROM_DATABASE=NETGEAR - -@@ -59533,6 +59749,9 @@ OUI:78A6BD* - OUI:78A714* - ID_OUI_FROM_DATABASE=Amphenol - -+OUI:78A873* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:78AB60* - ID_OUI_FROM_DATABASE=ABB Australia - -@@ -59644,6 +59863,9 @@ OUI:78E8B6* - OUI:78EC22* - ID_OUI_FROM_DATABASE=Shanghai Qihui Telecom Technology Co., LTD - -+OUI:78EC74* -+ ID_OUI_FROM_DATABASE=Kyland-USA -+ - OUI:78EF4C* - ID_OUI_FROM_DATABASE=Unetconvergence Co., Ltd. - -@@ -59749,6 +59971,9 @@ OUI:7C3E9D* - OUI:7C438F* - ID_OUI_FROM_DATABASE=E-Band Communications Corp. - -+OUI:7C444C* -+ ID_OUI_FROM_DATABASE=Entertainment Solutions, S.L. -+ - OUI:7C49B9* - ID_OUI_FROM_DATABASE=Plexus Manufacturing Sdn Bhd - -@@ -59911,6 +60136,9 @@ OUI:7CC8D7* - OUI:7CCB0D* - ID_OUI_FROM_DATABASE=Antaira Technologies, LLC - -+OUI:7CCD11* -+ ID_OUI_FROM_DATABASE=MS-Magnet -+ - OUI:7CCD3C* - ID_OUI_FROM_DATABASE=Guangzhou Juzing Technology Co., Ltd - -@@ -60181,6 +60409,9 @@ OUI:80B95C* - OUI:80BAAC* - ID_OUI_FROM_DATABASE=TeleAdapt Ltd - -+OUI:80BAE6* -+ ID_OUI_FROM_DATABASE=Neets -+ - OUI:80BBEB* - ID_OUI_FROM_DATABASE=Satmap Systems Ltd - -@@ -60373,6 +60604,9 @@ OUI:847E40* - OUI:8482F4* - ID_OUI_FROM_DATABASE=Beijing Huasun Unicreate Technology Co., Ltd - -+OUI:848336* -+ ID_OUI_FROM_DATABASE=Newrun -+ - OUI:848371* - ID_OUI_FROM_DATABASE=Avaya, Inc - -@@ -60475,6 +60709,9 @@ OUI:84F64C* - OUI:84FCFE* - ID_OUI_FROM_DATABASE=Apple - -+OUI:84FE9E* -+ ID_OUI_FROM_DATABASE=RTC Industries, Inc. -+ - OUI:880355* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corp. - -@@ -60634,6 +60871,9 @@ OUI:889821* - OUI:889B39* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:889CA6* -+ ID_OUI_FROM_DATABASE=BTB Korea INC -+ - OUI:889FFA* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -60664,6 +60904,9 @@ OUI:88BFD5* - OUI:88C36E* - ID_OUI_FROM_DATABASE=Beijing Ereneben lnformation Technology Limited - -+OUI:88C626* -+ ID_OUI_FROM_DATABASE=Logitech - Ultimate Ears -+ - OUI:88C663* - ID_OUI_FROM_DATABASE=Apple - -@@ -60760,6 +61003,9 @@ OUI:8C2F39* - OUI:8C3330* - ID_OUI_FROM_DATABASE=EmFirst Co., Ltd. - -+OUI:8C3AE3* -+ ID_OUI_FROM_DATABASE=LG Electronics -+ - OUI:8C3C07* - ID_OUI_FROM_DATABASE=Skiva Technologies, Inc. - -@@ -60778,6 +61024,9 @@ OUI:8C4B59* - OUI:8C4CDC* - ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC. - -+OUI:8C4DB9* -+ ID_OUI_FROM_DATABASE=Unmonday Ltd -+ - OUI:8C4DEA* - ID_OUI_FROM_DATABASE=Cerio Corporation - -@@ -60790,6 +61039,9 @@ OUI:8C53F7* - OUI:8C541D* - ID_OUI_FROM_DATABASE=LGE - -+OUI:8C569D* -+ ID_OUI_FROM_DATABASE=Imaging Solutions Group -+ - OUI:8C56C5* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -@@ -60943,6 +61195,9 @@ OUI:8CDD8D* - OUI:8CDE52* - ID_OUI_FROM_DATABASE=ISSC Technologies Corp. - -+OUI:8CDE99* -+ ID_OUI_FROM_DATABASE=Comlab Inc. -+ - OUI:8CE081* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -61138,6 +61393,9 @@ OUI:907F61* - OUI:908260* - ID_OUI_FROM_DATABASE=IEEE 1904.1 Working Group - -+OUI:90837A* -+ ID_OUI_FROM_DATABASE=General Electric Water & Process Technologies -+ - OUI:90840D* - ID_OUI_FROM_DATABASE=Apple - -@@ -61204,6 +61462,9 @@ OUI:90B21F* - OUI:90B8D0* - ID_OUI_FROM_DATABASE=Joyent, Inc. - -+OUI:90B931* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:90B97D* - ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics d/b/a Minnkota - -@@ -61543,6 +61804,9 @@ OUI:94F720* - OUI:94FAE8* - ID_OUI_FROM_DATABASE=Shenzhen Eycom Technology Co., Ltd - -+OUI:94FBB2* -+ ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd -+ - OUI:94FD1D* - ID_OUI_FROM_DATABASE=WhereWhen Corp - -@@ -61747,6 +62011,9 @@ OUI:98D6F7* - OUI:98D88C* - ID_OUI_FROM_DATABASE=Nortel Networks - -+OUI:98DA92* -+ ID_OUI_FROM_DATABASE=Vuzix Corporation -+ - OUI:98DCD9* - ID_OUI_FROM_DATABASE=UNITEC Co., Ltd. - -@@ -61780,6 +62047,9 @@ OUI:98FE03* - OUI:98FE94* - ID_OUI_FROM_DATABASE=Apple - -+OUI:98FF6A* -+ ID_OUI_FROM_DATABASE=OTEC(Shanghai)Technology Co.,Ltd. -+ - OUI:98FFD0* - ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. - -@@ -61849,6 +62119,9 @@ OUI:9C417C* - OUI:9C443D* - ID_OUI_FROM_DATABASE=CHENGDU XUGUANG TECHNOLOGY CO, LTD - -+OUI:9C44A6* -+ ID_OUI_FROM_DATABASE=SwiftTest, Inc. -+ - OUI:9C4563* - ID_OUI_FROM_DATABASE=DIMEP Sistemas - -@@ -61927,6 +62200,9 @@ OUI:9C7BD2* - OUI:9C807D* - ID_OUI_FROM_DATABASE=SYSCABLE Korea Inc. - -+OUI:9C80DF* -+ ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation -+ - OUI:9C8888* - ID_OUI_FROM_DATABASE=Simac Techniek NV - -@@ -62098,6 +62374,9 @@ OUI:A01917* - OUI:A01C05* - ID_OUI_FROM_DATABASE=NIMAX TELECOM CO.,LTD. - -+OUI:A01D48* -+ ID_OUI_FROM_DATABASE=Hewlett Packard -+ - OUI:A02195* - ID_OUI_FROM_DATABASE=Samsung Electronics Digital Imaging - -@@ -62416,6 +62695,9 @@ OUI:A433D1* - OUI:A438FC* - ID_OUI_FROM_DATABASE=Plastic Logic - -+OUI:A43A69* -+ ID_OUI_FROM_DATABASE=Vers Inc -+ - OUI:A4466B* - ID_OUI_FROM_DATABASE=EOC Technology - -@@ -62461,6 +62743,9 @@ OUI:A46706* - OUI:A46E79* - ID_OUI_FROM_DATABASE=DFT System Co.Ltd - -+OUI:A47733* -+ ID_OUI_FROM_DATABASE=Google -+ - OUI:A47760* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -62911,6 +63196,9 @@ OUI:AC20AA* - OUI:AC220B* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -+OUI:AC2DA3* -+ ID_OUI_FROM_DATABASE=TXTR GmbH -+ - OUI:AC2FA8* - ID_OUI_FROM_DATABASE=Humannix Co.,Ltd. - -@@ -62986,6 +63274,9 @@ OUI:AC6123* - OUI:AC6706* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -+OUI:AC6BAC* -+ ID_OUI_FROM_DATABASE=Jenny Science AG -+ - OUI:AC6E1A* - ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd - -@@ -63085,6 +63376,9 @@ OUI:ACBEB6* - OUI:ACC2EC* - ID_OUI_FROM_DATABASE=CLT INT'L IND. CORP. - -+OUI:ACC595* -+ ID_OUI_FROM_DATABASE=Graphite Systems -+ - OUI:ACC698* - ID_OUI_FROM_DATABASE=Kohzu Precision Co., Ltd. - -@@ -63172,6 +63466,9 @@ OUI:ACF7F3* - OUI:ACF97E* - ID_OUI_FROM_DATABASE=ELESYS INC. - -+OUI:ACFDEC* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:B00594* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -63193,6 +63490,9 @@ OUI:B01B7C* - OUI:B01C91* - ID_OUI_FROM_DATABASE=Elim Co - -+OUI:B024F3* -+ ID_OUI_FROM_DATABASE=Progeny Systems -+ - OUI:B0358D* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -63286,6 +63586,9 @@ OUI:B09134* - OUI:B0973A* - ID_OUI_FROM_DATABASE=E-Fuel Corporation - -+OUI:B0989F* -+ ID_OUI_FROM_DATABASE=LG CNS -+ - OUI:B09928* - ID_OUI_FROM_DATABASE=Fujitsu Limited - -@@ -63313,6 +63616,9 @@ OUI:B0AA36* - OUI:B0ACFA* - ID_OUI_FROM_DATABASE=Fujitsu Limited - -+OUI:B0ADAA* -+ ID_OUI_FROM_DATABASE=Avaya, Inc -+ - OUI:B0B2DC* - ID_OUI_FROM_DATABASE=Zyxel Communications Corporation - -@@ -63364,6 +63670,9 @@ OUI:B0D09C* - OUI:B0D2F5* - ID_OUI_FROM_DATABASE=Vello Systems, Inc. - -+OUI:B0D7C5* -+ ID_OUI_FROM_DATABASE=STP KFT -+ - OUI:B0DF3A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -63466,6 +63775,9 @@ OUI:B43741* - OUI:B439D6* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP - -+OUI:B43A28* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B43DB2* - ID_OUI_FROM_DATABASE=Degreane Horizon - -@@ -63784,6 +64096,9 @@ OUI:B8782E* - OUI:B8797E* - ID_OUI_FROM_DATABASE=Secure Meters (UK) Limited - -+OUI:B87AC9* -+ ID_OUI_FROM_DATABASE=Siemens Ltd. -+ - OUI:B8871E* - ID_OUI_FROM_DATABASE=Good Mind Industries Co., Ltd. - -@@ -63823,6 +64138,9 @@ OUI:B8975A* - OUI:B898B0* - ID_OUI_FROM_DATABASE=Atlona Inc. - -+OUI:B898F7* -+ ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen -+ - OUI:B89AED* - ID_OUI_FROM_DATABASE=OceanServer Technology, Inc - -@@ -63985,12 +64303,18 @@ OUI:BC125E* - OUI:BC1401* - ID_OUI_FROM_DATABASE=Hitron Technologies. Inc - -+OUI:BC14EF* -+ ID_OUI_FROM_DATABASE=ITON Technology Limited -+ - OUI:BC15A6* - ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd. - - OUI:BC1665* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:BC1A67* -+ ID_OUI_FROM_DATABASE=YF Technology Co., Ltd -+ - OUI:BC20A4* - ID_OUI_FROM_DATABASE=Samsung Electronics - -@@ -64021,6 +64345,9 @@ OUI:BC2D98* - OUI:BC305B* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:BC307D* -+ ID_OUI_FROM_DATABASE=Wistron Neweb Corp. -+ - OUI:BC35E5* - ID_OUI_FROM_DATABASE=Hydro Systems Company - -@@ -64207,6 +64534,9 @@ OUI:BCE59F* - OUI:BCEA2B* - ID_OUI_FROM_DATABASE=CityCom GmbH - -+OUI:BCEE7B* -+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -+ - OUI:BCF2AF* - ID_OUI_FROM_DATABASE=devolo AG - -@@ -64324,6 +64654,9 @@ OUI:C0626B* - OUI:C06394* - ID_OUI_FROM_DATABASE=Apple - -+OUI:C064C6* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:C06599* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -64462,6 +64795,9 @@ OUI:C0E54E* - OUI:C0EAE4* - ID_OUI_FROM_DATABASE=Sonicwall - -+OUI:C0F1C4* -+ ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd. -+ - OUI:C0F8DA* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -64642,6 +64978,9 @@ OUI:C47F51* - OUI:C4823F* - ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd. - -+OUI:C4824E* -+ ID_OUI_FROM_DATABASE=Changzhou Uchip Electronics Co., LTD. -+ - OUI:C48508* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -65005,6 +65344,9 @@ OUI:C8F386* - OUI:C8F406* - ID_OUI_FROM_DATABASE=Avaya, Inc - -+OUI:C8F68D* -+ ID_OUI_FROM_DATABASE=S.E.TECHNOLOGIES LIMITED -+ - OUI:C8F704* - ID_OUI_FROM_DATABASE=Building Block Video - -@@ -65143,6 +65485,9 @@ OUI:CC5D57* - OUI:CC60BB* - ID_OUI_FROM_DATABASE=Empower RF Systems - -+OUI:CC65AD* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:CC69B0* - ID_OUI_FROM_DATABASE=Global Traffic Technologies, LLC - -@@ -65533,6 +65878,9 @@ OUI:D0DFB2* - OUI:D0DFC7* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:D0E140* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:D0E347* - ID_OUI_FROM_DATABASE=Yoga - -@@ -65716,6 +66064,9 @@ OUI:D479C3* - OUI:D47B75* - ID_OUI_FROM_DATABASE=HARTING Electronics GmbH - -+OUI:D481CA* -+ ID_OUI_FROM_DATABASE=iDevices, LLC -+ - OUI:D4823E* - ID_OUI_FROM_DATABASE=Argosy Technologies, Ltd. - -@@ -65965,6 +66316,9 @@ OUI:D8543A* - OUI:D857EF* - ID_OUI_FROM_DATABASE=Samsung Electronics - -+OUI:D858D7* -+ ID_OUI_FROM_DATABASE=CZ.NIC, z.s.p.o. -+ - OUI:D85D4C* - ID_OUI_FROM_DATABASE=TP-LINK Technologies Co.,Ltd. - -@@ -66004,6 +66358,9 @@ OUI:D878E5* - OUI:D87988* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd. - -+OUI:D87CDD* -+ ID_OUI_FROM_DATABASE=SANIX INCORPORATED -+ - OUI:D88A3B* - ID_OUI_FROM_DATABASE=UNIT-EM - -@@ -66475,6 +66832,9 @@ OUI:E067B3* - OUI:E06995* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - -+OUI:E0750A* -+ ID_OUI_FROM_DATABASE=ALPS ERECTORIC CO.,LTD. -+ - OUI:E0757D* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC - -@@ -66577,6 +66937,9 @@ OUI:E0C6B3* - OUI:E0C79D* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:E0C86A* -+ ID_OUI_FROM_DATABASE=SHENZHEN TW-SCIE Co., Ltd -+ - OUI:E0C922* - ID_OUI_FROM_DATABASE=Jireh Energy Tech., Ltd. - -@@ -66661,6 +67024,9 @@ OUI:E0F9BE* - OUI:E0FAEC* - ID_OUI_FROM_DATABASE=Platan sp. z o.o. sp. k. - -+OUI:E40439* -+ ID_OUI_FROM_DATABASE=TomTom Software Ltd -+ - OUI:E4115B* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -66997,6 +67363,9 @@ OUI:E85E53* - OUI:E8611F* - ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd - -+OUI:E86183* -+ ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC -+ - OUI:E86CDA* - ID_OUI_FROM_DATABASE=Supercomputers and Neurocomputers Research Center - -@@ -67435,6 +67804,9 @@ OUI:F02408* - OUI:F02572* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:F025B7* -+ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. -+ - OUI:F0264C* - ID_OUI_FROM_DATABASE=Dr. Sigrist AG - -@@ -67486,6 +67858,9 @@ OUI:F05DC8* - OUI:F05F5A* - ID_OUI_FROM_DATABASE=Getriebebau NORD GmbH and Co. KG - -+OUI:F06130* -+ ID_OUI_FROM_DATABASE=Advantage Pharmacy Services, LLC -+ - OUI:F0620D* - ID_OUI_FROM_DATABASE=Shenzhen Egreat Tech Corp.,Ltd - -@@ -67681,6 +68056,9 @@ OUI:F40321* - OUI:F4044C* - ID_OUI_FROM_DATABASE=ValenceTech Limited - -+OUI:F4068D* -+ ID_OUI_FROM_DATABASE=devolo AG -+ - OUI:F40B93* - ID_OUI_FROM_DATABASE=Research In Motion - -@@ -68107,6 +68485,9 @@ OUI:F89FB8* - OUI:F8A03D* - ID_OUI_FROM_DATABASE=Dinstar Technologies Co., Ltd. - -+OUI:F8A2B4* -+ ID_OUI_FROM_DATABASE=RHEWA-WAAGENFABRIK August Freudewald GmbH &Co. KG -+ - OUI:F8A45F* - ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd - -@@ -68245,6 +68626,9 @@ OUI:FC0647* - OUI:FC0877* - ID_OUI_FROM_DATABASE=Prentke Romich Company - -+OUI:FC09D8* -+ ID_OUI_FROM_DATABASE=ACTEON Group -+ - OUI:FC0A81* - ID_OUI_FROM_DATABASE=Motorola Solutions Inc. - -@@ -68314,6 +68698,9 @@ OUI:FC455F* - OUI:FC48EF* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:FC4B1C* -+ ID_OUI_FROM_DATABASE=INTERSENSOR S.R.L. -+ - OUI:FC4BBC* - ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd. - -diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb -index fdb534d..289f81c 100644 ---- a/hwdb/20-pci-vendor-model.hwdb -+++ b/hwdb/20-pci-vendor-model.hwdb -@@ -4158,7 +4158,7 @@ pci:v00001002d00005F57* - ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] - - pci:v00001002d00006600* -- ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8750M] -+ ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8670M/8750M] - - pci:v00001002d00006601* - ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M] -@@ -4169,6 +4169,12 @@ pci:v00001002d00006602* - pci:v00001002d00006603* - ID_MODEL_FROM_DATABASE=Mars - -+pci:v00001002d00006604* -+ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M265] -+ -+pci:v00001002d00006605* -+ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M260] -+ - pci:v00001002d00006606* - ID_MODEL_FROM_DATABASE=Mars XTX [Radeon HD 8790M] - -@@ -4176,13 +4182,13 @@ pci:v00001002d00006607* - ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M] - - pci:v00001002d00006610* -- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8600 Series] -+ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250] - - pci:v00001002d00006611* - ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570] - - pci:v00001002d00006613* -- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8500 Series] -+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240] - - pci:v00001002d00006620* - ID_MODEL_FROM_DATABASE=Mars -@@ -4197,10 +4203,10 @@ pci:v00001002d00006631* - ID_MODEL_FROM_DATABASE=Oland - - pci:v00001002d00006640* -- ID_MODEL_FROM_DATABASE=Saturn [Radeon HD 8950] -+ ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M] - - pci:v00001002d00006641* -- ID_MODEL_FROM_DATABASE=Saturn PRO -+ ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M] - - pci:v00001002d00006649* - ID_MODEL_FROM_DATABASE=Bonaire -@@ -4236,13 +4242,13 @@ pci:v00001002d0000665Csv00001787sd00002329* - ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo - - pci:v00001002d0000665D* -- ID_MODEL_FROM_DATABASE=Bonaire -+ ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series] - - pci:v00001002d00006660* -- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A] -+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M] - - pci:v00001002d00006663* -- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8500M Series] -+ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M] - - pci:v00001002d00006664* - ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series] -@@ -4254,7 +4260,7 @@ pci:v00001002d00006667* - ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M200 Series] - - pci:v00001002d0000666F* -- ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8500M] -+ ID_MODEL_FROM_DATABASE=Sun LE [Radeon HD 8550M] - - pci:v00001002d00006670* - ID_MODEL_FROM_DATABASE=Hainan -@@ -5675,6 +5681,15 @@ pci:v00001002d0000678Asv00001002sd0000030C* - pci:v00001002d0000678Asv00001002sd00000310* - ID_MODEL_FROM_DATABASE=FirePro S9000 - -+pci:v00001002d0000678Asv00001002sd00000420* -+ ID_MODEL_FROM_DATABASE=Radeon Sky 700 -+ -+pci:v00001002d0000678Asv00001002sd00000422* -+ ID_MODEL_FROM_DATABASE=Radeon Sky 900 -+ -+pci:v00001002d0000678Asv00001002sd00000B0E* -+ ID_MODEL_FROM_DATABASE=FirePro S10000 Passive -+ - pci:v00001002d0000678Asv00001002sd00000B2A* - ID_MODEL_FROM_DATABASE=FirePro S10000 - -@@ -5691,11 +5706,14 @@ pci:v00001002d00006792* - ID_MODEL_FROM_DATABASE=Tahiti - - pci:v00001002d00006798* -- ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970] -+ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/R9 280X] - - pci:v00001002d00006798sv00001002sd00003000* - ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition] - -+pci:v00001002d00006798sv00001002sd00003001* -+ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X] -+ - pci:v00001002d00006798sv00001002sd00004000* - ID_MODEL_FROM_DATABASE=Radeon HD 8970 OEM - -@@ -5717,6 +5735,12 @@ pci:v00001002d00006798sv00001043sd0000044A* - pci:v00001002d00006798sv00001043sd0000044C* - ID_MODEL_FROM_DATABASE=Tahiti XT2 [Matrix HD 7970 Platinum] - -+pci:v00001002d00006798sv00001043sd00003001* -+ ID_MODEL_FROM_DATABASE=Tahiti XTL [ROG Matrix R9 280X] -+ -+pci:v00001002d00006798sv00001043sd00003006* -+ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X DirectCU II TOP] -+ - pci:v00001002d00006798sv00001043sd00009999* - ID_MODEL_FROM_DATABASE=ARES II - -@@ -5771,6 +5795,9 @@ pci:v00001002d0000679Bsv00001002sd00000B2A* - pci:v00001002d0000679Bsv00001462sd00008036* - ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM - -+pci:v00001002d0000679Bsv0000148Csd00008990* -+ ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM -+ - pci:v00001002d0000679E* - ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] - -@@ -5834,6 +5861,9 @@ pci:v00001002d00006808* - pci:v00001002d00006808sv00001002sd00000310* - ID_MODEL_FROM_DATABASE=FirePro S7000 - -+pci:v00001002d00006808sv00001002sd00000420* -+ ID_MODEL_FROM_DATABASE=Radeon Sky 500 -+ - pci:v00001002d00006809* - ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000] - -@@ -5865,19 +5895,22 @@ pci:v00001002d00006819sv0000174Bsd0000E221* - ID_MODEL_FROM_DATABASE=Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP - - pci:v00001002d00006820* -- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series] -+ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M] - - pci:v00001002d00006820sv0000103Csd00001851* - ID_MODEL_FROM_DATABASE=Radeon HD 7750M - - pci:v00001002d00006821* -- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8800M Series] -+ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] -+ -+pci:v00001002d00006821sv00001002sd0000031E* -+ ID_MODEL_FROM_DATABASE=FirePro SX4000 - - pci:v00001002d00006822* - ID_MODEL_FROM_DATABASE=Venus PRO - - pci:v00001002d00006823* -- ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series] -+ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M] - - pci:v00001002d00006825* - ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M] -@@ -5901,7 +5934,7 @@ pci:v00001002d0000682A* - ID_MODEL_FROM_DATABASE=Venus PRO - - pci:v00001002d0000682B* -- ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8800M Series] -+ ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8830M] - - pci:v00001002d0000682D* - ID_MODEL_FROM_DATABASE=Chelsea XT GL [FirePro M4000] -@@ -5919,7 +5952,7 @@ pci:v00001002d00006831* - ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] - - pci:v00001002d00006835* -- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 200 Series] -+ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260] - - pci:v00001002d00006837* - ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] -@@ -16466,6 +16499,12 @@ pci:v00001077d00008031* - pci:v00001077d00008032* - ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI) - -+pci:v00001077d00008430* -+ ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (NIC VF) -+ -+pci:v00001077d00008431* -+ ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE VF) -+ - pci:v00001077d00008432* - ID_MODEL_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA) - -@@ -17090,6 +17129,12 @@ pci:v00001093d00002890* - pci:v00001093d000028C0* - ID_MODEL_FROM_DATABASE=PCI-6014 - -+pci:v00001093d000028D0* -+ ID_MODEL_FROM_DATABASE=PCI-5122 -+ -+pci:v00001093d000028E0* -+ ID_MODEL_FROM_DATABASE=PXI-5122 -+ - pci:v00001093d00002A60* - ID_MODEL_FROM_DATABASE=PCI-6023E - -@@ -17174,12 +17219,33 @@ pci:v00001093d000070BF* - pci:v00001093d000070C0* - ID_MODEL_FROM_DATABASE=PCI-6143 - -+pci:v00001093d000070F0* -+ ID_MODEL_FROM_DATABASE=PXI-5922 -+ -+pci:v00001093d000070F1* -+ ID_MODEL_FROM_DATABASE=PCI-5922 -+ - pci:v00001093d000070F2* - ID_MODEL_FROM_DATABASE=PCI-6224 - -+pci:v00001093d00007121* -+ ID_MODEL_FROM_DATABASE=PXI-5122EX -+ -+pci:v00001093d00007122* -+ ID_MODEL_FROM_DATABASE=PCI-5122EX -+ - pci:v00001093d00007144* - ID_MODEL_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer) - -+pci:v00001093d00007145* -+ ID_MODEL_FROM_DATABASE=PCI-5124 -+ -+pci:v00001093d0000714C* -+ ID_MODEL_FROM_DATABASE=PXI-5114 -+ -+pci:v00001093d0000714D* -+ ID_MODEL_FROM_DATABASE=PCI-5114 -+ - pci:v00001093d0000716C* - ID_MODEL_FROM_DATABASE=PCI-6225 - -@@ -17195,6 +17261,60 @@ pci:v00001093d000071BC* - pci:v00001093d000071D0* - ID_MODEL_FROM_DATABASE=PXI-6143 - -+pci:v00001093d00007260* -+ ID_MODEL_FROM_DATABASE=PXI-5142 -+ -+pci:v00001093d00007261* -+ ID_MODEL_FROM_DATABASE=PCI-5142 -+ -+pci:v00001093d000072A8* -+ ID_MODEL_FROM_DATABASE=PXI-5152 -+ -+pci:v00001093d000072A9* -+ ID_MODEL_FROM_DATABASE=PCI-5152 -+ -+pci:v00001093d000072AA* -+ ID_MODEL_FROM_DATABASE=PXI-5105 -+ -+pci:v00001093d000072AB* -+ ID_MODEL_FROM_DATABASE=PCI-5105 -+ -+pci:v00001093d0000730F* -+ ID_MODEL_FROM_DATABASE=PXI-5922EX -+ -+pci:v00001093d00007310* -+ ID_MODEL_FROM_DATABASE=PCI-5922EX -+ -+pci:v00001093d00007333* -+ ID_MODEL_FROM_DATABASE=PXI-5900 -+ -+pci:v00001093d00007349* -+ ID_MODEL_FROM_DATABASE=PXI-5154 -+ -+pci:v00001093d0000734A* -+ ID_MODEL_FROM_DATABASE=PCI-5154 -+ -+pci:v00001093d0000737D* -+ ID_MODEL_FROM_DATABASE=PXI-5124EX -+ -+pci:v00001093d000073F0* -+ ID_MODEL_FROM_DATABASE=PXI-5153 -+ -+pci:v00001093d000073F1* -+ ID_MODEL_FROM_DATABASE=PCI-5153 -+ -+pci:v00001093d0000745E* -+ ID_MODEL_FROM_DATABASE=PXI-5153EX -+ -+pci:v00001093d0000745F* -+ ID_MODEL_FROM_DATABASE=PCI-5153EX -+ -+pci:v00001093d00007460* -+ ID_MODEL_FROM_DATABASE=PXI-5154EX -+ -+pci:v00001093d00007461* -+ ID_MODEL_FROM_DATABASE=PCI-5154EX -+ - pci:v00001093d0000B001* - ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408 - -@@ -17226,7 +17346,10 @@ pci:v00001093d0000B091* - ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411 - - pci:v00001093d0000C4C4* -- ID_MODEL_FROM_DATABASE=PXIe-4353 -+ ID_MODEL_FROM_DATABASE=PXIe-4353/5160 -+ -+pci:v00001093d0000C4C4sv00001093sd000076D0* -+ ID_MODEL_FROM_DATABASE=PXIe-5160 - - pci:v00001093d0000C801* - ID_MODEL_FROM_DATABASE=PCI-GPIB -@@ -25557,10 +25680,10 @@ pci:v000010DEd00000FE5* - ID_MODEL_FROM_DATABASE=GK107 [GeForce K340 USM] - - pci:v000010DEd00000FE6* -- ID_MODEL_FROM_DATABASE=GK107 [NVS K1 USM] -+ ID_MODEL_FROM_DATABASE=GK107 [GRID K1 NVS USM] - - pci:v000010DEd00000FE7* -- ID_MODEL_FROM_DATABASE=GK107GL [GRID K1] -+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K100 vGPU] - - pci:v000010DEd00000FE7sv000010DEsd0000101E* - ID_MODEL_FROM_DATABASE=GRID K100 -@@ -25575,13 +25698,13 @@ pci:v000010DEd00000FF2* - ID_MODEL_FROM_DATABASE=GK107GL [GRID K1] - - pci:v000010DEd00000FF5* -- ID_MODEL_FROM_DATABASE=GK107GL [Tesla K1 USM] -+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K1 Tesla USM] - - pci:v000010DEd00000FF6* - ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M] - - pci:v000010DEd00000FF7* -- ID_MODEL_FROM_DATABASE=GK107GL [Quadro K1 USM] -+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU] - - pci:v000010DEd00000FF7sv000010DEsd00001037* - ID_MODEL_FROM_DATABASE=GRID K140Q -@@ -25652,6 +25775,9 @@ pci:v000010DEd00001021* - pci:v000010DEd00001022* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c] - -+pci:v000010DEd00001024* -+ ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c] -+ - pci:v000010DEd00001026* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s] - -@@ -26246,6 +26372,9 @@ pci:v000010DEd00001140sv000017AAsd00003983* - pci:v000010DEd00001140sv000017AAsd00005003* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -+pci:v000010DEd00001140sv000017AAsd00005005* -+ ID_MODEL_FROM_DATABASE=GeForce 705M -+ - pci:v000010DEd00001140sv000017AAsd0000500D* - ID_MODEL_FROM_DATABASE=GeForce GT 620M - -@@ -26334,13 +26463,13 @@ pci:v000010DEd0000118A* - ID_MODEL_FROM_DATABASE=GK104GL [GRID K520] - - pci:v000010DEd0000118B* -- ID_MODEL_FROM_DATABASE=GK104 [GeForce K2 USM] -+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 GeForce USM] - - pci:v000010DEd0000118C* -- ID_MODEL_FROM_DATABASE=GK104 [NVS K2 USM] -+ ID_MODEL_FROM_DATABASE=GK104 [GRID K2 NVS USM] - - pci:v000010DEd0000118D* -- ID_MODEL_FROM_DATABASE=GK104GL [GRID K2] -+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K200 vGPU] - - pci:v000010DEd0000118Dsv000010DEsd0000101D* - ID_MODEL_FROM_DATABASE=GRID K200 -@@ -26351,6 +26480,9 @@ pci:v000010DEd0000118E* - pci:v000010DEd0000118F* - ID_MODEL_FROM_DATABASE=GK104GL [Tesla K10] - -+pci:v000010DEd00001193* -+ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM] -+ - pci:v000010DEd0000119D* - ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M] - -@@ -26379,7 +26511,7 @@ pci:v000010DEd000011A7* - ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX] - - pci:v000010DEd000011B0* -- ID_MODEL_FROM_DATABASE=GK104GL [Quadro K2 USM] -+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU] - - pci:v000010DEd000011B0sv000010DEsd0000101A* - ID_MODEL_FROM_DATABASE=GRID K240Q -@@ -26388,7 +26520,7 @@ pci:v000010DEd000011B0sv000010DEsd0000101B* - ID_MODEL_FROM_DATABASE=GRID K260Q - - pci:v000010DEd000011B1* -- ID_MODEL_FROM_DATABASE=GK104GL [Tesla K2 USM] -+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 Tesla USM] - - pci:v000010DEd000011B6* - ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3100M] -@@ -32642,6 +32774,9 @@ pci:v00001179d00000618* - pci:v00001179d00000701* - ID_MODEL_FROM_DATABASE=FIR Port Type-O - -+pci:v00001179d00000803* -+ ID_MODEL_FROM_DATABASE=TC6371AF SD Host Controller -+ - pci:v00001179d00000804* - ID_MODEL_FROM_DATABASE=TC6371AF SmartMedia Controller - -@@ -40046,6 +40181,9 @@ pci:v000013F6d00008788sv000014C3sd00001710* - pci:v000013F6d00008788sv000014C3sd00001711* - ID_MODEL_FROM_DATABASE=HiFier Serenade - -+pci:v000013F6d00008788sv000014C3sd00001713* -+ ID_MODEL_FROM_DATABASE=HiFier Serenade III -+ - pci:v000013F6d00008788sv00001A58sd00000910* - ID_MODEL_FROM_DATABASE=Barracuda AC-1 - -@@ -50711,8 +50849,11 @@ pci:v00001A41d00000002* - pci:v00001A41d00000200* - ID_MODEL_FROM_DATABASE=TILE-Gx processor - -+pci:v00001A41d00000201* -+ ID_MODEL_FROM_DATABASE=TILE-Gx Processor Virtual Function -+ - pci:v00001A41d00002000* -- ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Bridge -+ ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Root Port - - pci:v00001A4A* - ID_VENDOR_FROM_DATABASE=SLAC National Accelerator Lab PPA-REG -@@ -51353,6 +51494,15 @@ pci:v00001CC5* - pci:v00001CC5d00000100* - ID_MODEL_FROM_DATABASE=CAN-PCIe-02 - -+pci:v00001CE4* -+ ID_VENDOR_FROM_DATABASE=Exablaze -+ -+pci:v00001CE4d00000001* -+ ID_MODEL_FROM_DATABASE=ExaNIC X4 -+ -+pci:v00001CE4d00000002* -+ ID_MODEL_FROM_DATABASE=ExaNIC X2 -+ - pci:v00001D44* - ID_VENDOR_FROM_DATABASE=DPT - -@@ -54131,6 +54281,9 @@ pci:v00008086d000008B4sv00008086sd00000270* - pci:v00008086d000008B4sv00008086sd00008270* - ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160 - -+pci:v00008086d000008CF* -+ ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller -+ - pci:v00008086d00000960* - ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge - -@@ -56369,6 +56522,9 @@ pci:v00008086d000010FBsv0000103Csd0000211B* - pci:v00008086d000010FBsv0000103Csd00002147* - ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter - -+pci:v00008086d000010FBsv0000103Csd00002159* -+ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 562i Adapter -+ - pci:v00008086d000010FBsv0000108Esd00007B11* - ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 - -@@ -57290,6 +57446,9 @@ pci:v00008086d00001528sv00001028sd00001F61* - pci:v00008086d00001528sv0000103Csd0000192D* - ID_MODEL_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter - -+pci:v00008086d00001528sv0000103Csd00002004* -+ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561i Adapter -+ - pci:v00008086d00001528sv0000103Csd0000211A* - ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter - -@@ -57416,6 +57575,9 @@ pci:v00008086d0000155D* - pci:v00008086d0000155Dsv00008086sd00000001* - ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-SR2 - -+pci:v00008086d0000155Dsv00008086sd00000002* -+ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-LR2 -+ - pci:v00008086d00001560* - ID_MODEL_FROM_DATABASE=Ethernet Controller X540 - -@@ -69747,7 +69909,7 @@ pci:v00009005d00000285sv0000103Csd00003227* - ID_MODEL_FROM_DATABASE=AAR-2610SA - - pci:v00009005d00000285sv0000108Esd00000286* -- ID_MODEL_FROM_DATABASE=STK RAID INT -+ ID_MODEL_FROM_DATABASE=Sun StorageTek SAS RAID HBA, Internal - - pci:v00009005d00000285sv0000108Esd00000287* - ID_MODEL_FROM_DATABASE=STK RAID EXT diff --git a/0049-rules-remove-pointless-MODE-settings.patch b/0049-rules-remove-pointless-MODE-settings.patch deleted file mode 100644 index 32aeb01..0000000 --- a/0049-rules-remove-pointless-MODE-settings.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 431e477b8e66ddbaba28a9f59fb8ae2e16d59cb5 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Mon, 21 Oct 2013 03:49:03 +0200 -Subject: [PATCH] rules: remove pointless MODE= settings - -Changing the default MODE= for the group accessi, but not specifying -a GROUP= does not provide anything. - -It disables the default logic that the mode switches to 0660 as soon -as a GROUP= is specifed, which make custom rules uneccesarily complicated. - -https://bugs.freedesktop.org/show_bug.cgi?id=70665 ---- - rules/50-udev-default.rules | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules -index f764789..679dfdf 100644 ---- a/rules/50-udev-default.rules -+++ b/rules/50-udev-default.rules -@@ -20,9 +20,7 @@ KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP= - - SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" - --SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640" --SUBSYSTEM=="input", KERNEL=="ts[0-9]*|uinput", MODE="0640" --SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0644" -+SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664" - - SUBSYSTEM=="video4linux", GROUP="video" - SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video" -@@ -63,7 +61,7 @@ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk" - SUBSYSTEM=="aoe", GROUP="disk", MODE="0220" - SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440" - --KERNEL=="rfkill", MODE="0644" -+KERNEL=="rfkill", MODE="0664" - KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" - - KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" diff --git a/0050-analyze-set-white-backgound.patch b/0050-analyze-set-white-backgound.patch deleted file mode 100644 index f531a11..0000000 --- a/0050-analyze-set-white-backgound.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ff86c42c8614828be77810a50202e1f771b35ff3 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Mon, 21 Oct 2013 21:29:23 +0200 -Subject: [PATCH] analyze: set white backgound - -In programs like eog and gimp the transparant background did not -look very good. - -https://bugs.freedesktop.org/show_bug.cgi?id=70720 ---- - src/analyze/systemd-analyze.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c -index a4f15eb..9a69795 100644 ---- a/src/analyze/systemd-analyze.c -+++ b/src/analyze/systemd-analyze.c -@@ -507,6 +507,7 @@ static int analyze_plot(DBusConnection *bus) { - /* style sheet */ - svg("\n \n\n\n"); - -+ svg("\n"); - svg("%s", pretty_times); - svg("%s %s (%s %s) %s", - isempty(osname) ? "Linux" : osname, diff --git a/0051-shell-completion-dump-has-moved-to-systemd-analyze.patch b/0051-shell-completion-dump-has-moved-to-systemd-analyze.patch deleted file mode 100644 index 6603792..0000000 --- a/0051-shell-completion-dump-has-moved-to-systemd-analyze.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 8ee1b98e2f4d4d36d9fccc776aa3fb124d05ac9b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 21 Oct 2013 18:53:57 -0400 -Subject: [PATCH] shell-completion: dump has moved to systemd-analyze - -Rename NO_OPTION to STANDALONE for consistency with other files. ---- - shell-completion/bash/systemctl | 2 +- - shell-completion/bash/systemd-analyze | 4 ++-- - shell-completion/zsh/_systemctl | 3 +-- - shell-completion/zsh/_systemd-analyze | 1 + - 4 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl -index e335ee8..eea4b6d 100644 ---- a/shell-completion/bash/systemctl -+++ b/shell-completion/bash/systemctl -@@ -137,7 +137,7 @@ _systemctl () { - [JOBS]='cancel' - [SNAPSHOTS]='delete' - [ENVS]='set-environment unset-environment' -- [STANDALONE]='daemon-reexec daemon-reload default dump -+ [STANDALONE]='daemon-reexec daemon-reload default - emergency exit halt hibernate hybrid-sleep kexec list-jobs - list-sockets list-units list-unit-files poweroff reboot rescue - show-environment suspend get-default' -diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze -index 5bd6768..b65466b 100644 ---- a/shell-completion/bash/systemd-analyze -+++ b/shell-completion/bash/systemd-analyze -@@ -31,7 +31,7 @@ _systemd_analyze() { - local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require' - - local -A VERBS=( -- [NO_OPTION]='time blame plot' -+ [STANDALONE]='time blame plot dump' - [CRITICAL_CHAIN]='critical-chain' - [DOT]='dot' - [LOG_LEVEL]='set-log-level' -@@ -55,7 +55,7 @@ _systemd_analyze() { - if [[ -z $verb ]]; then - comps=${VERBS[*]} - -- elif __contains_word "$verb" ${VERBS[NO_OPTION]}; then -+ elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - fi -diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl -index 298e97e..3959cd5 100644 ---- a/shell-completion/zsh/_systemctl -+++ b/shell-completion/zsh/_systemctl -@@ -38,7 +38,6 @@ - "is-enabled:Check whether unit files are enabled" - "list-jobs:List jobs" - "cancel:Cancel all, one, or more jobs" -- "dump:Dump server status" - "snapshot:Create a snapshot" - "delete:Remove one or more snapshots" - "show-environment:Dump environment" -@@ -264,7 +263,7 @@ done - (( $+functions[_systemctl_link] )) || _systemctl_link() { _files } - - # no systemctl completion for: --# [STANDALONE]='daemon-reexec daemon-reload default dump -+# [STANDALONE]='daemon-reexec daemon-reload default - # emergency exit halt kexec list-jobs list-units - # list-unit-files poweroff reboot rescue show-environment' - # [NAME]='snapshot load' -diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze -index 37c60f5..2eda5fe 100644 ---- a/shell-completion/zsh/_systemd-analyze -+++ b/shell-completion/zsh/_systemd-analyze -@@ -15,6 +15,7 @@ _systemd_analyze_command(){ - 'critical-chain:Print a tree of the time critical chain of units' - 'plot:Output SVG graphic showing service initialization' - 'dot:Dump dependency graph (in dot(1) format)' -+ 'dump:Dump server status' - 'set-log-level:Set systemd log threshold' - ) - diff --git a/0052-systemd-use-unit-name-in-PrivateTmp-directories.patch b/0052-systemd-use-unit-name-in-PrivateTmp-directories.patch deleted file mode 100644 index 8316ef2..0000000 --- a/0052-systemd-use-unit-name-in-PrivateTmp-directories.patch +++ /dev/null @@ -1,174 +0,0 @@ -From df3db39c105ff8a6ba409ae8e28216d8571dece7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 22 Oct 2013 20:39:18 -0400 -Subject: [PATCH] systemd: use unit name in PrivateTmp directories - -Unit name is used whole in the directory name, so that the unit name -can be easily extracted from it, e.g. "/tmp/systemd-abcd.service-DEDBIF1". - -https://bugzilla.redhat.com/show_bug.cgi?id=957439 ---- - Makefile.am | 7 ++++++ - src/core/execute.c | 2 +- - src/core/namespace.c | 15 ++++++++----- - src/core/namespace.h | 5 ++++- - src/test/test-namespace.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 77 insertions(+), 8 deletions(-) - create mode 100644 src/test/test-namespace.c - -diff --git a/Makefile.am b/Makefile.am -index 8d9c587..5e3e5d2 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1130,6 +1130,7 @@ tests += \ - test-unit-file \ - test-utf8 \ - test-util \ -+ test-namespace \ - test-date \ - test-sleep \ - test-replace-var \ -@@ -1256,6 +1257,12 @@ test_util_CFLAGS = \ - test_util_LDADD = \ - libsystemd-core.la - -+test_namespace_SOURCES = \ -+ src/test/test-namespace.c -+ -+test_namespace_LDADD = \ -+ libsystemd-core.la -+ - test_hashmap_SOURCES = \ - src/test/test-hashmap.c - -diff --git a/src/core/execute.c b/src/core/execute.c -index 3f7ca52..58be72a 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -1089,7 +1089,7 @@ int exec_spawn(ExecCommand *command, - free(line); - - if (context->private_tmp && !context->tmp_dir && !context->var_tmp_dir) { -- r = setup_tmpdirs(&context->tmp_dir, &context->var_tmp_dir); -+ r = setup_tmpdirs(unit_id, &context->tmp_dir, &context->var_tmp_dir); - if (r < 0) - return r; - } -diff --git a/src/core/namespace.c b/src/core/namespace.c -index 936f368..b453f8d 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -184,26 +184,29 @@ static int make_read_only(BindMount *m) { - return 0; - } - --int setup_tmpdirs(char **tmp_dir, -+int setup_tmpdirs(const char *unit_id, -+ char **tmp_dir, - char **var_tmp_dir) { - int r = 0; -- char tmp_dir_template[] = "/tmp/systemd-private-XXXXXX", -- var_tmp_dir_template[] = "/var/tmp/systemd-private-XXXXXX"; -+ _cleanup_free_ char *tmp = NULL, *var = NULL; - - assert(tmp_dir); - assert(var_tmp_dir); - -- r = create_tmp_dir(tmp_dir_template, tmp_dir); -+ tmp = strjoin("/tmp/systemd-", unit_id, "-XXXXXXX", NULL); -+ var = strjoin("/var/tmp/systemd-", unit_id, "-XXXXXXX", NULL); -+ -+ r = create_tmp_dir(tmp, tmp_dir); - if (r < 0) - return r; - -- r = create_tmp_dir(var_tmp_dir_template, var_tmp_dir); -+ r = create_tmp_dir(var, var_tmp_dir); - if (r == 0) - return 0; - - /* failure */ - rmdir(*tmp_dir); -- rmdir(tmp_dir_template); -+ rmdir(tmp); - free(*tmp_dir); - *tmp_dir = NULL; - -diff --git a/src/core/namespace.h b/src/core/namespace.h -index ddb5794..ee7416b 100644 ---- a/src/core/namespace.h -+++ b/src/core/namespace.h -@@ -23,7 +23,10 @@ - - #include - --int setup_tmpdirs(char **tmp_dir, char **var_tmp_dir); -+int setup_tmpdirs(const char *unit_id, -+ char **tmp_dir, -+ char **var_tmp_dir); -+ - int setup_namespace(char **read_write_dirs, - char **read_only_dirs, - char **inaccessible_dirs, -diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c -new file mode 100644 -index 0000000..1c04676 ---- /dev/null -+++ b/src/test/test-namespace.c -@@ -0,0 +1,56 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ -+#include -+ -+#include "namespace.h" -+#include "util.h" -+ -+static void test_tmpdir(const char *id, const char *A, const char *B) { -+ _cleanup_free_ char *a, *b; -+ -+ assert_se(setup_tmpdirs(id, &a, &b) == 0); -+ assert(startswith(a, A)); -+ assert(startswith(b, B)); -+ assert(access(a, F_OK) == 0); -+ assert(access(b, F_OK) == 0); -+ -+ assert_se(rmdir(a) == 0); -+ assert_se(rmdir(b) == 0); -+ -+ assert(endswith(a, "/tmp")); -+ assert(endswith(b, "/tmp")); -+ -+ assert_se(rmdir(dirname(a)) == 0); -+ assert_se(rmdir(dirname(b)) == 0); -+} -+ -+int main(int argc, char *argv[]) { -+ test_tmpdir("abcd.service", -+ "/tmp/systemd-abcd.service-", -+ "/var/tmp/systemd-abcd.service-"); -+ -+ test_tmpdir("sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device", -+ "/tmp/systemd-sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device-", -+ "/var/tmp/systemd-sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device-"); -+ -+ return 0; -+} diff --git a/0053-catalog-remove-links-to-non-existent-wiki-pages.patch b/0053-catalog-remove-links-to-non-existent-wiki-pages.patch deleted file mode 100644 index 71f5c18..0000000 --- a/0053-catalog-remove-links-to-non-existent-wiki-pages.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 5048d22d69d889d17eaea99f223fd9369eadc919 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 24 Oct 2013 00:45:10 -0400 -Subject: [PATCH] catalog: remove links to non-existent wiki pages - -AFAIK, we don't have even one page with message explanations. -If/when we add them, we can add links. - -https://bugzilla.redhat.com/show_bug.cgi?id=1017161 ---- - catalog/systemd.catalog | 9 --------- - 1 file changed, 9 deletions(-) - -diff --git a/catalog/systemd.catalog b/catalog/systemd.catalog -index 892b2ad..3c2fe64 100644 ---- a/catalog/systemd.catalog -+++ b/catalog/systemd.catalog -@@ -204,7 +204,6 @@ Unit @UNIT@ has begun shutting down. - Subject: Unit @UNIT@ has finished shutting down - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - Unit @UNIT@ has finished shutting down. - -@@ -212,7 +211,6 @@ Unit @UNIT@ has finished shutting down. - Subject: Unit @UNIT@ has failed - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - Unit @UNIT@ has failed. - -@@ -222,7 +220,6 @@ The result is @RESULT@. - Subject: Unit @UNIT@ has begun with reloading its configuration - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - Unit @UNIT@ has begun with reloading its configuration - -@@ -230,7 +227,6 @@ Unit @UNIT@ has begun with reloading its configuration - Subject: Unit @UNIT@ has finished reloading its configuration - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - Unit @UNIT@ has finished reloading its configuration - -@@ -240,7 +236,6 @@ The result is @RESULT@. - Subject: Process @EXECUTABLE@ could not be executed - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - The process @EXECUTABLE@ could not be executed and failed. - -@@ -250,7 +245,6 @@ The error number returned while executing this process is @ERRNO@. - Subject: One or more messages could not be forwarded to syslog - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - One or more messages could not be forwarded to the syslog service - running side-by-side with journald. This usually indicates that the -@@ -261,7 +255,6 @@ messages queued. - Subject: Mount point is not empty - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - The directory @WHERE@ is specified as the mount point (second field in - /etc/fstab or Where= field in systemd unit file) and is not empty. -@@ -274,7 +267,6 @@ location. - Subject: A virtual machine or container has been started - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - The virtual machine @NAME@ with its leader PID @LEADER@ has been - started is now ready to use. -@@ -283,7 +275,6 @@ started is now ready to use. - Subject: A virtual machine or container has been terminated - Defined-By: systemd - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ - - The virtual machine @NAME@ with its leader PID @LEADER@ has been - shut down. diff --git a/0054-journalctl-add-list-boots-to-show-boot-IDs-and-times.patch b/0054-journalctl-add-list-boots-to-show-boot-IDs-and-times.patch deleted file mode 100644 index 5e776ec..0000000 --- a/0054-journalctl-add-list-boots-to-show-boot-IDs-and-times.patch +++ /dev/null @@ -1,239 +0,0 @@ -From e94957b964380c0c9b0f3264ba5e35166d543ca7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 28 Oct 2013 23:43:57 -0400 -Subject: [PATCH] journalctl: add --list-boots to show boot IDs and times - -Suggested by David Wilkins in -https://bugzilla.redhat.com/show_bug.cgi?id=967521: - -> [Specific boot ID is a] bit of a palaver to obtain. I consulted the -> verbose dump of the journal to discover the _BOOT_ID for the -> timestamp, and then generated the journal dump for that boot using -> journalctl _BOOT_ID=foo -o short-monotonic. ---- - man/journalctl.xml | 11 ++++ - shell-completion/bash/journalctl | 2 +- - shell-completion/zsh/_journalctl | 1 + - src/journal/journalctl.c | 105 +++++++++++++++++++++++++++++++++++++-- - 4 files changed, 113 insertions(+), 6 deletions(-) - -diff --git a/man/journalctl.xml b/man/journalctl.xml -index b5a0c53..c0cc96d 100644 ---- a/man/journalctl.xml -+++ b/man/journalctl.xml -@@ -478,6 +478,17 @@ - - - -+ -+ -+ Show a tabular list of -+ boot numbers (relative to current -+ boot), their IDs, and the timestamps -+ of the first and last message -+ pertaining to the boot. -+ -+ -+ -+ - - - -diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl -index 3c40d57..942a253 100644 ---- a/shell-completion/bash/journalctl -+++ b/shell-completion/bash/journalctl -@@ -42,7 +42,7 @@ _journalctl() { - --disk-usage -f --follow --header - -h --help -l --local --new-id128 -m --merge --no-pager - --no-tail -q --quiet --setup-keys --this-boot --verify -- --version --list-catalog --update-catalog' -+ --version --list-catalog --update-catalog --list-boots' - [ARG]='-b --boot --this-boot -D --directory -F --field - -o --output -u --unit --user-unit' - [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until -diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl -index 73646b5..29ff3e3 100644 ---- a/shell-completion/zsh/_journalctl -+++ b/shell-completion/zsh/_journalctl -@@ -70,6 +70,7 @@ _arguments -s \ - {-q,--quiet}"[Don't show privilege warning]" \ - {-m,--merge}'[Show entries from all available journals]' \ - {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \ -+ '--list-boots[List boots ordered by time]' \ - {-k,--dmesg}'[Show only kernel messages, Implies -b]' \ - {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \ - '--user-unit=[Show data only from the specified user session unit]:units:_journal_fields USER_UNIT' \ -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index 0876ee6..a5c4779 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -104,12 +104,14 @@ static enum { - ACTION_DISK_USAGE, - ACTION_LIST_CATALOG, - ACTION_DUMP_CATALOG, -- ACTION_UPDATE_CATALOG -+ ACTION_UPDATE_CATALOG, -+ ACTION_LIST_BOOTS, - } arg_action = ACTION_SHOW; - - typedef struct boot_id_t { - sd_id128_t id; -- uint64_t timestamp; -+ uint64_t first; -+ uint64_t last; - } boot_id_t; - - static int help(void) { -@@ -125,6 +127,7 @@ static int help(void) { - " --after-cursor=CURSOR Start showing entries from specified cursor\n" - " --show-cursor Print the cursor after all the entries\n" - " -b --boot[=ID] Show data only from ID or current boot if unspecified\n" -+ " --list-boots Show terse information about recorded boots\n" - " -k --dmesg Show kernel message log from current boot\n" - " -u --unit=UNIT Show data only from the specified unit\n" - " --user-unit=UNIT Show data only from the specified user session unit\n" -@@ -177,6 +180,7 @@ static int parse_argv(int argc, char *argv[]) { - ARG_NO_PAGER, - ARG_NO_TAIL, - ARG_NEW_ID128, -+ ARG_LIST_BOOTS, - ARG_USER, - ARG_SYSTEM, - ARG_ROOT, -@@ -214,6 +218,7 @@ static int parse_argv(int argc, char *argv[]) { - { "quiet", no_argument, NULL, 'q' }, - { "merge", no_argument, NULL, 'm' }, - { "boot", optional_argument, NULL, 'b' }, -+ { "list-boots", no_argument, NULL, ARG_LIST_BOOTS }, - { "this-boot", optional_argument, NULL, 'b' }, /* deprecated */ - { "dmesg", no_argument, NULL, 'k' }, - { "system", no_argument, NULL, ARG_SYSTEM }, -@@ -364,6 +369,10 @@ static int parse_argv(int argc, char *argv[]) { - - break; - -+ case ARG_LIST_BOOTS: -+ arg_action = ACTION_LIST_BOOTS; -+ break; -+ - case 'k': - arg_boot = arg_dmesg = true; - break; -@@ -692,12 +701,93 @@ static int add_matches(sd_journal *j, char **args) { - static int boot_id_cmp(const void *a, const void *b) { - uint64_t _a, _b; - -- _a = ((const boot_id_t *)a)->timestamp; -- _b = ((const boot_id_t *)b)->timestamp; -+ _a = ((const boot_id_t *)a)->first; -+ _b = ((const boot_id_t *)b)->first; - - return _a < _b ? -1 : (_a > _b ? 1 : 0); - } - -+static int list_boots(sd_journal *j) { -+ int r; -+ const void *data; -+ unsigned int count = 0; -+ int w, i; -+ size_t length, allocated = 0; -+ boot_id_t *id; -+ _cleanup_free_ boot_id_t *all_ids = NULL; -+ -+ r = sd_journal_query_unique(j, "_BOOT_ID"); -+ if (r < 0) -+ return r; -+ -+ SD_JOURNAL_FOREACH_UNIQUE(j, data, length) { -+ if (length < strlen("_BOOT_ID=")) -+ continue; -+ -+ if (!GREEDY_REALLOC(all_ids, allocated, count + 1)) -+ return log_oom(); -+ -+ id = &all_ids[count]; -+ -+ r = sd_id128_from_string(((const char *)data) + strlen("_BOOT_ID="), &id->id); -+ if (r < 0) -+ continue; -+ -+ r = sd_journal_add_match(j, data, length); -+ if (r < 0) -+ return r; -+ -+ r = sd_journal_seek_head(j); -+ if (r < 0) -+ return r; -+ -+ r = sd_journal_next(j); -+ if (r < 0) -+ return r; -+ else if (r == 0) -+ goto flush; -+ -+ r = sd_journal_get_realtime_usec(j, &id->first); -+ if (r < 0) -+ return r; -+ -+ r = sd_journal_seek_tail(j); -+ if (r < 0) -+ return r; -+ -+ r = sd_journal_previous(j); -+ if (r < 0) -+ return r; -+ else if (r == 0) -+ goto flush; -+ -+ r = sd_journal_get_realtime_usec(j, &id->last); -+ if (r < 0) -+ return r; -+ -+ count++; -+ flush: -+ sd_journal_flush_matches(j); -+ } -+ -+ qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp); -+ -+ /* numbers are one less, but we need an extra char for the sign */ -+ w = DECIMAL_STR_WIDTH(count - 1) + 1; -+ -+ for (id = all_ids, i = 0; id < all_ids + count; id++, i++) { -+ char a[FORMAT_TIMESTAMP_MAX], b[FORMAT_TIMESTAMP_MAX]; -+ -+ printf("% *i " SD_ID128_FORMAT_STR " %s—%s\n", -+ w, i - count + 1, -+ SD_ID128_FORMAT_VAL(id->id), -+ format_timestamp(a, sizeof(a), id->first), -+ format_timestamp(b, sizeof(b), id->last)); -+ } -+ -+ return 0; -+} -+ - static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative) { - int r; - const void *data; -@@ -743,7 +833,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative - else if (r == 0) - goto flush; - -- r = sd_journal_get_realtime_usec(j, &id->timestamp); -+ r = sd_journal_get_realtime_usec(j, &id->first); - if (r < 0) - return r; - -@@ -1403,6 +1493,11 @@ int main(int argc, char *argv[]) { - return EXIT_SUCCESS; - } - -+ if (arg_action == ACTION_LIST_BOOTS) { -+ r = list_boots(j); -+ goto finish; -+ } -+ - /* add_boot() must be called first! - * It may need to seek the journal to find parent boot IDs. */ - r = add_boot(j); diff --git a/0055-udev-builtin-path_id-add-support-for-bcma-bus.patch b/0055-udev-builtin-path_id-add-support-for-bcma-bus.patch deleted file mode 100644 index ec7a3cb..0000000 --- a/0055-udev-builtin-path_id-add-support-for-bcma-bus.patch +++ /dev/null @@ -1,47 +0,0 @@ -From d22ea78deff9fe2c87a3a90381ae2d4e8234d1ca Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Sat, 26 Oct 2013 12:22:04 +0200 -Subject: [PATCH] udev-builtin: path_id - add support for bcma bus - -This matches the bcma support in the network device naming. - -Eventually wa want to make sure ID_PATH is equivalent to ID_NET_NAME_PATH, -so we never need to match on the latter. ---- - src/udev/udev-builtin-path_id.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c -index 0659967..763f3c3 100644 ---- a/src/udev/udev-builtin-path_id.c -+++ b/src/udev/udev-builtin-path_id.c -@@ -452,6 +452,19 @@ static struct udev_device *handle_usb(struct udev_device *parent, char **path) - return parent; - } - -+static struct udev_device *handle_bcma(struct udev_device *parent, char **path) -+{ -+ const char *sysname; -+ unsigned int core; -+ -+ sysname = udev_device_get_sysname(parent); -+ if (sscanf(sysname, "bcma%*u:%u", &core) != 1) -+ return NULL; -+ -+ path_prepend(path, "bcma-%u", core); -+ return parent; -+} -+ - static struct udev_device *handle_ccw(struct udev_device *parent, struct udev_device *dev, char **path) - { - struct udev_device *scsi_dev; -@@ -509,6 +522,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool - } else if (streq(subsys, "usb")) { - parent = handle_usb(parent, &path); - some_transport = true; -+ } else if (streq(subsys, "bcma")) { -+ parent = handle_bcma(parent, &path); -+ some_transport = true; - } else if (streq(subsys, "serio")) { - path_prepend(&path, "serio-%s", udev_device_get_sysnum(parent)); - parent = skip_subsystem(parent, "serio"); diff --git a/0056-udev-ata_id-log-faling-ioctls-as-debug.patch b/0056-udev-ata_id-log-faling-ioctls-as-debug.patch deleted file mode 100644 index 2011cb6..0000000 --- a/0056-udev-ata_id-log-faling-ioctls-as-debug.patch +++ /dev/null @@ -1,22 +0,0 @@ -From e323253480b01f0df71ee409cbf9aba88ec1a5e4 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Wed, 30 Oct 2013 14:34:58 +0100 -Subject: [PATCH] udev: ata_id: log faling ioctls as "debug" - ---- - src/udev/ata_id/ata_id.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c -index 68a06b9..d375d43 100644 ---- a/src/udev/ata_id/ata_id.c -+++ b/src/udev/ata_id/ata_id.c -@@ -501,7 +501,7 @@ int main(int argc, char *argv[]) - } else { - /* If this fails, then try HDIO_GET_IDENTITY */ - if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) { -- log_info("HDIO_GET_IDENTITY failed for '%s': %m\n", node); -+ log_debug("HDIO_GET_IDENTITY failed for '%s': %m\n", node); - rc = 2; - goto close; - } diff --git a/0057-libudev-default-log_priority-to-INFO.patch b/0057-libudev-default-log_priority-to-INFO.patch deleted file mode 100644 index 3db1618..0000000 --- a/0057-libudev-default-log_priority-to-INFO.patch +++ /dev/null @@ -1,23 +0,0 @@ -From d0aeff58c118ae0be82d346ae0ce75bf9a20f02d Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Wed, 30 Oct 2013 15:09:01 +0100 -Subject: [PATCH] libudev: default log_priority to INFO - -This brings it in sync with the default config file. ---- - src/libudev/libudev.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c -index 208039a..bc73a5a 100644 ---- a/src/libudev/libudev.c -+++ b/src/libudev/libudev.c -@@ -125,7 +125,7 @@ _public_ struct udev *udev_new(void) - return NULL; - udev->refcount = 1; - udev->log_fn = log_stderr; -- udev->log_priority = LOG_ERR; -+ udev->log_priority = LOG_INFO; - udev_list_init(udev, &udev->properties_list, true); - - f = fopen("/etc/udev/udev.conf", "re"); diff --git a/0058-nspawn-only-pass-in-slice-setting-if-it-is-set.patch b/0058-nspawn-only-pass-in-slice-setting-if-it-is-set.patch deleted file mode 100644 index 8984b65..0000000 --- a/0058-nspawn-only-pass-in-slice-setting-if-it-is-set.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 7aa2bfdb3b0c3babc6bb8c4a9534a328b8ac37ab Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 30 Oct 2013 18:40:21 +0100 -Subject: [PATCH] nspawn: only pass in slice setting if it is set - ---- - src/nspawn/nspawn.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index eb9605c..9616dbf 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -1202,7 +1202,7 @@ static int register_machine(void) { - "container", - (uint32_t) 0, - strempty(arg_directory), -- 1, "Slice", "s", strempty(arg_slice)); -+ !isempty(arg_slice), "Slice", "s", arg_slice); - if (r < 0) { - log_error("Failed to register machine: %s", error.message ? error.message : strerror(-r)); - return r; diff --git a/0059-zsh-completion-add-systemd-run.patch b/0059-zsh-completion-add-systemd-run.patch deleted file mode 100644 index 471061e..0000000 --- a/0059-zsh-completion-add-systemd-run.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 0f25880b6e0feea046923d2d796e6e10abdd7c6a Mon Sep 17 00:00:00 2001 -From: Ronny Chevalier -Date: Wed, 30 Oct 2013 21:57:44 +0100 -Subject: [PATCH] zsh-completion: add systemd-run - ---- - Makefile.am | 1 + - shell-completion/zsh/_systemd-run | 31 +++++++++++++++++++++++++++++++ - 2 files changed, 32 insertions(+) - create mode 100644 shell-completion/zsh/_systemd-run - -diff --git a/Makefile.am b/Makefile.am -index 5e3e5d2..7ab345a 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -352,6 +352,7 @@ dist_zshcompletion_DATA = \ - shell-completion/zsh/_kernel-install \ - shell-completion/zsh/_systemd-nspawn \ - shell-completion/zsh/_systemd-analyze \ -+ shell-completion/zsh/_systemd-run \ - shell-completion/zsh/_sd_hosts_or_user_at_host \ - shell-completion/zsh/_systemd-delta \ - shell-completion/zsh/_systemd -diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run -new file mode 100644 -index 0000000..0c81c54 ---- /dev/null -+++ b/shell-completion/zsh/_systemd-run -@@ -0,0 +1,31 @@ -+#compdef systemd-run -+ -+__systemctl() { -+ local -a _modes -+ _modes=("--user" "--system") -+ systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null -+} -+ -+__get_slices () { -+ __systemctl list-units --all -t slice \ -+ | { while read -r a b; do echo $a; done; }; -+} -+ -+__slices () { -+ local -a _slices -+ _slices=(${(fo)"$(__get_slices)"}) -+ typeset -U _slices -+ _describe 'slices' _slices -+} -+ -+_arguments \ -+ {-h,--help}'[Show help message]' \ -+ '--version[Show package version]' \ -+ '--user[Run as user unit]' \ -+ '--scope[Run this as scope rather than service]' \ -+ '--unit=[Run under the specified unit name]:unit name' \ -+ '--description=[Description for unit]:description' \ -+ '--slice=[Run in the specified slice]:slices:__slices' \ -+ {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \ -+ '--send-sighup[Send SIGHUP when terminating]' \ -+ '*::command:_command' diff --git a/0060-man-explain-NAME-in-systemctl-man-page.patch b/0060-man-explain-NAME-in-systemctl-man-page.patch deleted file mode 100644 index face639..0000000 --- a/0060-man-explain-NAME-in-systemctl-man-page.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 04547df8f2b71ec3fb4e18e9363da583264a3915 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= -Date: Thu, 31 Oct 2013 14:36:41 +0100 -Subject: [PATCH] man: explain NAME in systemctl man page - ---- - man/systemctl.xml | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index e789d4b..166282c 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -63,6 +63,19 @@ along with systemd; If not, see . - introspect and control the state of the - systemd1 - system and service manager. -+ -+ For Unit Commands the NAME represents full name of unit. -+ -+systemctl start foo.service -+ -+ For Unit File Commands the NAME represents full name of the unit file, or absolute path to the unit file. -+ -+systemctl start /path/to/foo.service -+ -+ While working with services/service files, systemctl is able to append .service suffix when it is missing. -+ -+systemctl start foo -+ - - - diff --git a/0061-virt-move-caching-of-virtualization-check-results-in.patch b/0061-virt-move-caching-of-virtualization-check-results-in.patch deleted file mode 100644 index eda77ac..0000000 --- a/0061-virt-move-caching-of-virtualization-check-results-in.patch +++ /dev/null @@ -1,298 +0,0 @@ -From 48a66a7f6a23ee71bcf54da5bd0bbd69a0710582 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 31 Oct 2013 16:23:06 +0100 -Subject: [PATCH] virt: move caching of virtualization check results into - detect_vm() and detect_container() - -After all, we ended up calling detect_container() more often than -detect_virtualization(), hence the former one should cache the results, -since the latter is only a wrapper around the former. ---- - src/detect-virt/detect-virt.c | 2 +- - src/shared/virt.c | 180 ++++++++++++++++++++---------------------- - 2 files changed, 87 insertions(+), 95 deletions(-) - -diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c -index bd3ee45..72ff2a8 100644 ---- a/src/detect-virt/detect-virt.c -+++ b/src/detect-virt/detect-virt.c -@@ -114,8 +114,8 @@ static int parse_argv(int argc, char *argv[]) { - - int main(int argc, char *argv[]) { - const char *id = NULL; -- int r; - int retval = EXIT_SUCCESS; -+ int r; - - /* This is mostly intended to be used for scripts which want - * to detect whether we are being run in a virtualized -diff --git a/src/shared/virt.c b/src/shared/virt.c -index 4f8134a..537ccda 100644 ---- a/src/shared/virt.c -+++ b/src/shared/virt.c -@@ -60,6 +60,9 @@ int detect_vm(const char **id) { - /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */ - "Microsoft Hv\0" "microsoft\0"; - -+ static __thread int cached_found = -1; -+ static __thread const char *cached_id = NULL; -+ - uint32_t eax, ecx; - union { - uint32_t sig32[3]; -@@ -69,6 +72,15 @@ int detect_vm(const char **id) { - const char *j, *k; - bool hypervisor; - _cleanup_free_ char *hvtype = NULL; -+ const char *_id = NULL; -+ -+ if (_likely_(cached_found >= 0)) { -+ -+ if (id) -+ *id = cached_id; -+ -+ return cached_found; -+ } - - /* Try high-level hypervisor sysfs file first: - * -@@ -76,10 +88,9 @@ int detect_vm(const char **id) { - r = read_one_line_file("/sys/hypervisor/type", &hvtype); - if (r >= 0) { - if (streq(hvtype, "xen")) { -- if (id) -- *id = "xen"; -- -- return 1; -+ _id = "xen"; -+ r = 1; -+ goto finish; - } - } else if (r != -ENOENT) - return r; -@@ -125,17 +136,14 @@ int detect_vm(const char **id) { - - NULSTR_FOREACH_PAIR(j, k, cpuid_vendor_table) - if (streq(sig.text, j)) { -- -- if (id) -- *id = k; -- -- return 1; -+ _id = k; -+ r = 1; -+ goto finish; - } - } - - for (i = 0; i < ELEMENTSOF(dmi_vendors); i++) { - _cleanup_free_ char *s = NULL; -- const char *found = NULL; - - r = read_one_line_file(dmi_vendors[i], &s); - if (r < 0) { -@@ -146,22 +154,17 @@ int detect_vm(const char **id) { - } - - NULSTR_FOREACH_PAIR(j, k, dmi_vendor_table) -- if (startswith(s, j)) -- found = k; -- -- if (found) { -- if (id) -- *id = found; -- -- return 1; -- } -+ if (startswith(s, j)) { -+ _id = k; -+ r = 1; -+ goto finish; -+ } - } - - if (hypervisor || hvtype) { -- if (id) -- *id = "other"; -- -- return 1; -+ _id = "other"; -+ r = 1; -+ goto finish; - } - - #endif -@@ -171,17 +174,40 @@ int detect_vm(const char **id) { - if (r < 0) - return r; - if (strstr(cpuinfo_contents, "\nvendor_id\t: User Mode Linux\n")) { -- *id = "uml"; -- return 1; -+ _id = "uml"; -+ r = 1; -+ goto finish; - } - -- return 0; -+ r = 0; -+ -+finish: -+ cached_found = r; -+ -+ cached_id = _id; -+ if (id) -+ *id = _id; -+ -+ return r; - } - - int detect_container(const char **id) { -+ -+ static __thread int cached_found = -1; -+ static __thread const char *cached_id = NULL; -+ - _cleanup_free_ char *e = NULL; -+ const char *_id = NULL; - int r; - -+ if (_likely_(cached_found >= 0)) { -+ -+ if (id) -+ *id = cached_id; -+ -+ return cached_found; -+ } -+ - /* Unfortunately many of these operations require root access - * in one way or another */ - -@@ -189,95 +215,61 @@ int detect_container(const char **id) { - if (r < 0) - return r; - if (r > 0) { -- -- if (id) -- *id = "chroot"; -- -- return 1; -+ _id = "chroot"; -+ goto finish; - } - - /* /proc/vz exists in container and outside of the container, - * /proc/bc only outside of the container. */ - if (access("/proc/vz", F_OK) >= 0 && - access("/proc/bc", F_OK) < 0) { -- -- if (id) -- *id = "openvz"; -- -- return 1; -+ _id = "openvz"; -+ r = 1; -+ goto finish; - } - - r = getenv_for_pid(1, "container", &e); -- if (r <= 0) -+ if (r < 0) - return r; -+ if (r == 0) -+ goto finish; - - /* We only recognize a selected few here, since we want to - * enforce a redacted namespace */ -- if (streq(e, "lxc")) { -- if (id) -- *id = "lxc"; -- } else if (streq(e, "lxc-libvirt")) { -- if (id) -- *id = "lxc-libvirt"; -- } else if (streq(e, "systemd-nspawn")) { -- if (id) -- *id = "systemd-nspawn"; -- } else { -- if (id) -- *id = "other"; -- } -+ if (streq(e, "lxc")) -+ _id ="lxc"; -+ else if (streq(e, "lxc-libvirt")) -+ _id = "lxc-libvirt"; -+ else if (streq(e, "systemd-nspawn")) -+ _id = "systemd-nspawn"; -+ else -+ _id = "other"; -+ -+finish: -+ cached_found = r; -+ -+ cached_id = _id; -+ if (id) -+ *id = _id; - - return r; - } - - /* Returns a short identifier for the various VM/container implementations */ - Virtualization detect_virtualization(const char **id) { -- -- static __thread Virtualization cached_virt = _VIRTUALIZATION_INVALID; -- static __thread const char *cached_id = NULL; -- -- const char *_id; - int r; -- Virtualization v; -- -- if (_likely_(cached_virt >= 0)) { -- -- if (id && cached_virt > 0) -- *id = cached_id; - -- return cached_virt; -- } -- -- r = detect_container(&_id); -- if (r < 0) { -- v = r; -- goto finish; -- } else if (r > 0) { -- v = VIRTUALIZATION_CONTAINER; -- goto finish; -- } -- -- r = detect_vm(&_id); -- if (r < 0) { -- v = r; -- goto finish; -- } else if (r > 0) { -- v = VIRTUALIZATION_VM; -- goto finish; -- } -- -- v = VIRTUALIZATION_NONE; -- --finish: -- if (v > 0) { -- cached_id = _id; -- -- if (id) -- *id = _id; -- } -+ r = detect_container(id); -+ if (r < 0) -+ return r; -+ if (r > 0) -+ return VIRTUALIZATION_CONTAINER; - -- if (v >= 0) -- cached_virt = v; -+ r = detect_vm(id); -+ if (r < 0) -+ return r; -+ if (r > 0) -+ return VIRTUALIZATION_VM; - -- return v; -+ return VIRTUALIZATION_NONE; - } diff --git a/0062-systemctl-fix-typo-in-help-text.patch b/0062-systemctl-fix-typo-in-help-text.patch deleted file mode 100644 index 3ce5b45..0000000 --- a/0062-systemctl-fix-typo-in-help-text.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 93a311b380a9c7367efe46fbc1d45902a9abcff5 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Fri, 1 Nov 2013 20:46:49 +0100 -Subject: [PATCH] systemctl: fix typo in help text - ---- - src/systemctl/systemctl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 036828b..36040db 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -4743,7 +4743,7 @@ static int systemctl_help(void) { - " -f --force When enabling unit files, override existing symlinks\n" - " When shutting down, execute action immediately\n" - " --root=PATH Enable unit files in the specified root directory\n" -- " -n --lines=INTEGER Numer of journal entries to show\n" -+ " -n --lines=INTEGER Number of journal entries to show\n" - " -o --output=STRING Change journal output mode (short, short-monotonic,\n" - " verbose, export, json, json-pretty, json-sse, cat)\n\n" - "Unit Commands:\n" diff --git a/0063-analyze-plot-place-the-text-on-the-side-with-most-sp.patch b/0063-analyze-plot-place-the-text-on-the-side-with-most-sp.patch deleted file mode 100644 index 1786814..0000000 --- a/0063-analyze-plot-place-the-text-on-the-side-with-most-sp.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 319b9f00eb3d84744453ae70bf9c89c37131124b Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Fri, 1 Nov 2013 22:57:47 +0100 -Subject: [PATCH] analyze: plot: place the text on the side with most space - -Set the width of the svg to always fit the longest string -while taking its starting position into consideration. - -Place the text on the right while the starting point is -in the first half of the screen. After that we put it on -the left to save the svg from being wider that it has to. ---- - src/analyze/systemd-analyze.c | 29 +++++++++++++++++------------ - 1 file changed, 17 insertions(+), 12 deletions(-) - -diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c -index 9a69795..f4c7f68 100644 ---- a/src/analyze/systemd-analyze.c -+++ b/src/analyze/systemd-analyze.c -@@ -462,7 +462,7 @@ static int analyze_plot(DBusConnection *bus) { - m++; - - for (u = times; u < times + n; u++) { -- double len; -+ double text_start, text_width; - - if (u->ixt < boot->userspace_time || - u->ixt > boot->finish_time) { -@@ -470,10 +470,14 @@ static int analyze_plot(DBusConnection *bus) { - u->name = NULL; - continue; - } -- len = ((boot->firmware_time + u->ixt) * SCALE_X) -- + (10.0 * strlen(u->name)); -- if (len > width) -- width = len; -+ -+ /* If the text cannot fit on the left side then -+ * increase the svg width so it fits on the right. -+ * TODO: calculate the text width more accurately */ -+ text_width = 8.0 * strlen(u->name); -+ text_start = (boot->firmware_time + u->ixt) * SCALE_X; -+ if (text_width > text_start && text_width + text_start > width) -+ width = text_width + text_start; - - if (u->iet > u->ixt && u->iet <= boot->finish_time - && u->aet == 0 && u->axt == 0) -@@ -561,7 +565,7 @@ static int analyze_plot(DBusConnection *bus) { - svg_bar("active", boot->userspace_time, boot->finish_time, y); - svg_bar("generators", boot->generators_start_time, boot->generators_finish_time, y); - svg_bar("unitsload", boot->unitsload_start_time, boot->unitsload_finish_time, y); -- svg_text("left", boot->userspace_time, y, "systemd"); -+ svg_text(true, boot->userspace_time, y, "systemd"); - y++; - - for (u = times; u < times + n; u++) { -@@ -575,7 +579,8 @@ static int analyze_plot(DBusConnection *bus) { - svg_bar("active", u->aet, u->axt, y); - svg_bar("deactivating", u->axt, u->iet, y); - -- b = u->ixt * SCALE_X > width * 2 / 3; -+ /* place the text on the left if we have passed the half of the svg width */ -+ b = u->ixt * SCALE_X < width / 2; - if (u->time) - svg_text(b, u->ixt, y, "%s (%s)", - u->name, format_timespan(ts, sizeof(ts), u->time, USEC_PER_MSEC)); -@@ -587,19 +592,19 @@ static int analyze_plot(DBusConnection *bus) { - /* Legend */ - y++; - svg_bar("activating", 0, 300000, y); -- svg_text("right", 400000, y, "Activating"); -+ svg_text(true, 400000, y, "Activating"); - y++; - svg_bar("active", 0, 300000, y); -- svg_text("right", 400000, y, "Active"); -+ svg_text(true, 400000, y, "Active"); - y++; - svg_bar("deactivating", 0, 300000, y); -- svg_text("right", 400000, y, "Deactivating"); -+ svg_text(true, 400000, y, "Deactivating"); - y++; - svg_bar("generators", 0, 300000, y); -- svg_text("right", 400000, y, "Generators"); -+ svg_text(true, 400000, y, "Generators"); - y++; - svg_bar("unitsload", 0, 300000, y); -- svg_text("right", 400000, y, "Loading unit files"); -+ svg_text(true, 400000, y, "Loading unit files"); - y++; - - svg("\n\n"); diff --git a/0064-detect_virtualization-returns-NULL-pass-empty-string.patch b/0064-detect_virtualization-returns-NULL-pass-empty-string.patch deleted file mode 100644 index 02a7316..0000000 --- a/0064-detect_virtualization-returns-NULL-pass-empty-string.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 855359a615a6002ac601a778f12e60970f18c64f Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sat, 2 Nov 2013 00:01:32 +0100 -Subject: [PATCH] detect_virtualization() returns NULL; pass empty string to - dbus - ---- - src/core/dbus-manager.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 8f4d017..536f2ea 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -466,7 +466,7 @@ static int bus_manager_append_progress(DBusMessageIter *i, const char *property, - - static int bus_manager_append_virt(DBusMessageIter *i, const char *property, void *data) { - Manager *m = data; -- const char *id = ""; -+ const char *id = NULL; - - assert(i); - assert(property); -@@ -474,6 +474,8 @@ static int bus_manager_append_virt(DBusMessageIter *i, const char *property, voi - - detect_virtualization(&id); - -+ if (!id) -+ id = ""; - if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &id)) - return -ENOMEM; - diff --git a/0065-rules-load-path_id-on-DRM-devices.patch b/0065-rules-load-path_id-on-DRM-devices.patch deleted file mode 100644 index 620f14a..0000000 --- a/0065-rules-load-path_id-on-DRM-devices.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0af3aeb44697533df2bc79d0985b65bca6b8cd86 Mon Sep 17 00:00:00 2001 -From: David Herrmann -Date: Sun, 3 Nov 2013 13:01:20 +0100 -Subject: [PATCH] rules: load path_id on DRM devices - -The path_id-builtin provides useful unique aliases for DRM devices. If we -want to configure DRM render-nodes for compositors, we want to avoid -storing the whole sys-path in configuration files. Hence, allow users to -store the short PATH_ID instead. - -Load path_id-builtin unconditionally on DRM devices now to always provide -this alias. ---- - Makefile.am | 1 + - rules/60-drm.rules | 8 ++++++++ - 2 files changed, 9 insertions(+) - create mode 100644 rules/60-drm.rules - -diff --git a/Makefile.am b/Makefile.am -index 7ab345a..34de7f2 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2209,6 +2209,7 @@ dist_udevrules_DATA += \ - rules/99-systemd.rules \ - rules/42-usb-hid-pm.rules \ - rules/50-udev-default.rules \ -+ rules/60-drm.rules \ - rules/60-keyboard.rules \ - rules/60-persistent-storage-tape.rules \ - rules/60-persistent-serial.rules \ -diff --git a/rules/60-drm.rules b/rules/60-drm.rules -new file mode 100644 -index 0000000..de038c1 ---- /dev/null -+++ b/rules/60-drm.rules -@@ -0,0 +1,8 @@ -+# do not edit this file, it will be overwritten on update -+ -+ACTION=="remove", GOTO="drm_end" -+SUBSYSTEM!="drm", GOTO="drm_end" -+ -+SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" -+ -+LABEL="drm_end" diff --git a/0066-rules-simply-60-drm.rules.patch b/0066-rules-simply-60-drm.rules.patch deleted file mode 100644 index b19766b..0000000 --- a/0066-rules-simply-60-drm.rules.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 5700379e437756e1e7a2508b238c8220367292bc Mon Sep 17 00:00:00 2001 -From: David Herrmann -Date: Sun, 3 Nov 2013 16:17:14 +0100 -Subject: [PATCH] rules: simply 60-drm.rules - -We don't need any GOTO, if we merge all matches into a single line. ---- - rules/60-drm.rules | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/rules/60-drm.rules b/rules/60-drm.rules -index de038c1..1ed3e44 100644 ---- a/rules/60-drm.rules -+++ b/rules/60-drm.rules -@@ -1,8 +1,3 @@ - # do not edit this file, it will be overwritten on update - --ACTION=="remove", GOTO="drm_end" --SUBSYSTEM!="drm", GOTO="drm_end" -- --SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" -- --LABEL="drm_end" -+ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" diff --git a/0067-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch b/0067-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch deleted file mode 100644 index 889ab51..0000000 --- a/0067-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 4f0d2ef232fe578576a2bec5076fda19de15ff27 Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Mon, 4 Nov 2013 07:25:45 +0100 -Subject: [PATCH] udev-builtin-keyboard: Fix large scan codes on 32 bit - architectures - -Use strtoul(), as scan codes are always positive. On 32 bit architectures -strtol gives wrong results: - - strtol("fffffff0", &endptr, 16) - -returns 2147483647 instead of 4294967280. - -https://launchpad.net/bugs/1247676 ---- - src/udev/udev-builtin-keyboard.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c -index ddd8535..8f457ab 100644 ---- a/src/udev/udev-builtin-keyboard.c -+++ b/src/udev/udev-builtin-keyboard.c -@@ -88,7 +88,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo - continue; - - /* KEYBOARD_KEY_= */ -- scancode = strtol(key + 13, &endptr, 16); -+ scancode = strtoul(key + 13, &endptr, 16); - if (endptr[0] != '\0') { - log_error("Error, unable to parse scan code from '%s'\n", key); - continue; diff --git a/0068-nspawn-log-out-of-memory-errors.patch b/0068-nspawn-log-out-of-memory-errors.patch deleted file mode 100644 index bef1d8b..0000000 --- a/0068-nspawn-log-out-of-memory-errors.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 30304d0fd69e703992c62ab3bcabcc6239f5fe1c Mon Sep 17 00:00:00 2001 -From: Djalal Harouni -Date: Tue, 5 Nov 2013 15:26:37 +0100 -Subject: [PATCH] nspawn: log out of memory errors - ---- - src/nspawn/nspawn.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 9616dbf..db47fbd 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -224,6 +224,9 @@ static int parse_argv(int argc, char *argv[]) { - - case 'S': - arg_slice = strdup(optarg); -+ if (!arg_slice) -+ return log_oom(); -+ - break; - - case 'M': -@@ -315,11 +318,11 @@ static int parse_argv(int argc, char *argv[]) { - - r = strv_extend(x, a); - if (r < 0) -- return r; -+ return log_oom(); - - r = strv_extend(x, b); - if (r < 0) -- return r; -+ return log_oom(); - - break; - } diff --git a/0069-Configurable-Timeouts-Restarts-default-values.patch b/0069-Configurable-Timeouts-Restarts-default-values.patch deleted file mode 100644 index 1711fd3..0000000 --- a/0069-Configurable-Timeouts-Restarts-default-values.patch +++ /dev/null @@ -1,293 +0,0 @@ -From f9d232e896bec3301a20a33a38a87b102f0172bc Mon Sep 17 00:00:00 2001 -From: Oleksii Shevchuk -Date: Mon, 4 Nov 2013 18:47:43 +0200 -Subject: [PATCH] Configurable Timeouts/Restarts default values - -https://bugs.freedesktop.org/show_bug.cgi?id=71132 - -Patch adds DefaultTimeoutStartSec, DefaultTimeoutStopSec, DefaultRestartSec -configuration options to manager configuration file. ---- - man/systemd-system.conf.xml | 24 +++++++++++++++++++++++- - man/systemd.mount.xml | 4 ++-- - man/systemd.service.xml | 6 ++++-- - man/systemd.socket.xml | 4 ++-- - man/systemd.swap.xml | 4 ++-- - src/core/device.c | 2 +- - src/core/main.c | 9 +++++++++ - src/core/manager.h | 3 +++ - src/core/mount.c | 2 +- - src/core/scope.c | 2 +- - src/core/service.c | 6 +++--- - src/core/socket.c | 2 +- - src/core/swap.c | 2 +- - src/core/system.conf | 3 +++ - src/core/user.conf | 3 +++ - 15 files changed, 59 insertions(+), 17 deletions(-) - -diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml -index e8cf8a9..c1f2648 100644 ---- a/man/systemd-system.conf.xml -+++ b/man/systemd-system.conf.xml -@@ -61,7 +61,6 @@ - otherwise user.conf. These - configuration files contain a few settings controlling - basic manager operations. -- - - - -@@ -95,6 +94,29 @@ - - - -+ DefaultTimeoutStartSec= -+ DefaultTimeoutStopSec= -+ DefaultRestartSec= -+ -+ Configures the default -+ time-outs for starting and stopping of -+ units, as well as the default time to -+ sleep between automatic restarts of a -+ units, as configured per-unit in -+ TimeoutStartSec=, -+ TimeoutStopSec= and -+ RestartSec= (for -+ service units see -+ systemd.service5 -+ for details on the per-unit -+ settings). For non-service units -+ DefaultTimeoutStartSec= -+ sets the default -+ TimeoutSec= value. -+ -+ -+ -+ - CPUAffinity= - - Configures the initial -diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml -index 48af1ca..71a5736 100644 ---- a/man/systemd.mount.xml -+++ b/man/systemd.mount.xml -@@ -260,8 +260,8 @@ - Takes a unit-less value in seconds, or - a time span value such as "5min - 20s". Pass 0 to disable the timeout -- logic. Defaults to -- 90s. -+ logic. Default value is setted up in manager configuration -+ file via DefaultTimeoutStart=. - - - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 5e1ddf7..df04048 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -524,7 +524,8 @@ - Takes a unit-less value in seconds, or a - time span value such as "5min - 20s". Pass 0 to disable the timeout -- logic. Defaults to 90s, except when -+ logic. Defaults to TimeoutStartSec= in -+ manager configuration file, except when - Type=oneshot is - used in which case the timeout - is disabled by default. -@@ -545,7 +546,8 @@ - Takes a unit-less value in seconds, or a - time span value such as "5min - 20s". Pass 0 to disable the timeout -- logic. Defaults to 90s. -+ logic. Defaults to TimeoutStartSec= in -+ manager configuration file. - - - -diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml -index 8c88d9f..1c78562 100644 ---- a/man/systemd.socket.xml -+++ b/man/systemd.socket.xml -@@ -679,8 +679,8 @@ - Takes a unit-less value in seconds, or - a time span value such as "5min - 20s". Pass 0 to disable the timeout -- logic. Defaults to -- 90s. -+ logic. Defaults to TimeoutStartSec= in -+ manager configuration file. - - - -diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml -index 813ae6c..13f6c84 100644 ---- a/man/systemd.swap.xml -+++ b/man/systemd.swap.xml -@@ -186,8 +186,8 @@ - Takes a unit-less value in seconds, or - a time span value such as "5min - 20s". Pass 0 to disable the timeout -- logic. Defaults to -- 90s. -+ logic. Defaults to TimeoutStartSec= in -+ manager configuration file. - - - -diff --git a/src/core/device.c b/src/core/device.c -index 9fca82a..5397bd6 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -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. */ -- 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; -diff --git a/src/core/main.c b/src/core/main.c -index fe291f8..937994c 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -90,6 +90,9 @@ static bool arg_switched_root = false; - static char ***arg_join_controllers = NULL; - static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL; - static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT; -+static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC; -+static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC; -+static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC; - static usec_t arg_runtime_watchdog = 0; - static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE; - static char **arg_default_environment = NULL; -@@ -636,6 +639,9 @@ static int parse_config_file(void) { - { "Manager", "CPUAffinity", config_parse_cpu_affinity2, 0, NULL }, - { "Manager", "DefaultStandardOutput", config_parse_output, 0, &arg_default_std_output }, - { "Manager", "DefaultStandardError", config_parse_output, 0, &arg_default_std_error }, -+ { "Manager", "DefaultTimeoutStartSec", config_parse_sec, 0, &arg_default_timeout_start_usec }, -+ { "Manager", "DefaultTimeoutStopSec", config_parse_sec, 0, &arg_default_timeout_stop_usec }, -+ { "Manager", "DefaultRestartSec", config_parse_sec, 0, &arg_default_restart_usec }, - { "Manager", "JoinControllers", config_parse_join_controllers, 0, &arg_join_controllers }, - { "Manager", "RuntimeWatchdogSec", config_parse_sec, 0, &arg_runtime_watchdog }, - { "Manager", "ShutdownWatchdogSec", config_parse_sec, 0, &arg_shutdown_watchdog }, -@@ -1542,6 +1548,9 @@ int main(int argc, char *argv[]) { - m->confirm_spawn = arg_confirm_spawn; - m->default_std_output = arg_default_std_output; - m->default_std_error = arg_default_std_error; -+ m->default_restart_usec = arg_default_restart_usec; -+ m->default_timeout_start_usec = arg_default_timeout_start_usec; -+ m->default_timeout_stop_usec = arg_default_timeout_stop_usec; - m->runtime_watchdog = arg_runtime_watchdog; - m->shutdown_watchdog = arg_shutdown_watchdog; - m->userspace_timestamp = userspace_timestamp; -diff --git a/src/core/manager.h b/src/core/manager.h -index a3049b5..e74c609 100644 ---- a/src/core/manager.h -+++ b/src/core/manager.h -@@ -230,6 +230,9 @@ struct Manager { - - ExecOutput default_std_output, default_std_error; - -+ usec_t default_restart_usec, default_timeout_start_usec, -+ default_timeout_stop_usec; -+ - struct rlimit *rlimit[RLIMIT_NLIMITS]; - - /* non-zero if we are reloading or reexecuting, */ -diff --git a/src/core/mount.c b/src/core/mount.c -index 70cd372..c0445a6 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -131,7 +131,7 @@ static void mount_init(Unit *u) { - assert(u); - assert(u->load_state == UNIT_STUB); - -- m->timeout_usec = DEFAULT_TIMEOUT_USEC; -+ m->timeout_usec = u->manager->default_timeout_start_usec; - m->directory_mode = 0755; - - exec_context_init(&m->exec_context); -diff --git a/src/core/scope.c b/src/core/scope.c -index 50e5dba..41da3b9 100644 ---- a/src/core/scope.c -+++ b/src/core/scope.c -@@ -46,7 +46,7 @@ static void scope_init(Unit *u) { - assert(u); - assert(u->load_state == UNIT_STUB); - -- s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC; -+ s->timeout_stop_usec = u->manager->default_timeout_stop_usec; - - watch_init(&s->timer_watch); - -diff --git a/src/core/service.c b/src/core/service.c -index 96ed2d3..e81aa1f 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -124,9 +124,9 @@ static void service_init(Unit *u) { - assert(u); - assert(u->load_state == UNIT_STUB); - -- s->timeout_start_usec = DEFAULT_TIMEOUT_USEC; -- s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC; -- s->restart_usec = DEFAULT_RESTART_USEC; -+ s->timeout_start_usec = u->manager->default_timeout_start_usec; -+ s->timeout_stop_usec = u->manager->default_timeout_stop_usec; -+ s->restart_usec = u->manager->default_restart_usec; - s->type = _SERVICE_TYPE_INVALID; - - watch_init(&s->watchdog_watch); -diff --git a/src/core/socket.c b/src/core/socket.c -index 6c0ac1a..d368f7e 100644 ---- a/src/core/socket.c -+++ b/src/core/socket.c -@@ -73,7 +73,7 @@ static void socket_init(Unit *u) { - assert(u->load_state == UNIT_STUB); - - s->backlog = SOMAXCONN; -- s->timeout_usec = DEFAULT_TIMEOUT_USEC; -+ s->timeout_usec = u->manager->default_timeout_start_usec; - s->directory_mode = 0755; - s->socket_mode = 0666; - -diff --git a/src/core/swap.c b/src/core/swap.c -index a68ab7c..147f710 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -86,7 +86,7 @@ static void swap_init(Unit *u) { - assert(s); - assert(UNIT(s)->load_state == UNIT_STUB); - -- s->timeout_usec = DEFAULT_TIMEOUT_USEC; -+ s->timeout_usec = u->manager->default_timeout_start_usec; - - exec_context_init(&s->exec_context); - s->exec_context.std_output = u->manager->default_std_output; -diff --git a/src/core/system.conf b/src/core/system.conf -index 7b03c87..3c6cc03 100644 ---- a/src/core/system.conf -+++ b/src/core/system.conf -@@ -24,6 +24,9 @@ - #ShutdownWatchdogSec=10min - #CapabilityBoundingSet= - #TimerSlackNSec= -+#DefaultTimeoutStartSec=90s -+#DefaultTimeoutStopSec=90s -+#DefaultRestartSec=100ms - #DefaultEnvironment= - #DefaultLimitCPU= - #DefaultLimitFSIZE= -diff --git a/src/core/user.conf b/src/core/user.conf -index 4a0129a..b030701 100644 ---- a/src/core/user.conf -+++ b/src/core/user.conf -@@ -14,3 +14,6 @@ - #LogLocation=no - #DefaultStandardOutput=inherit - #DefaultStandardError=inherit -+#DefaultTimeoutStartSec=90s -+#DefaultTimeoutStopSec=90s -+#DefaultRestartSec=100ms diff --git a/0070-man-fix-typo.patch b/0070-man-fix-typo.patch deleted file mode 100644 index 8c3a68c..0000000 --- a/0070-man-fix-typo.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 6f0949daa0b7f4928a7abb8e26ded604988f8efc Mon Sep 17 00:00:00 2001 -From: Ronny Chevalier -Date: Sun, 3 Nov 2013 15:07:31 +0100 -Subject: [PATCH] man: fix typo - ---- - man/systemd-run.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd-run.xml b/man/systemd-run.xml -index e76a402..252335b 100644 ---- a/man/systemd-run.xml -+++ b/man/systemd-run.xml -@@ -60,7 +60,7 @@ along with systemd; If not, see . - - Description - -- systemd-run may be used create and start -+ systemd-run may be used to create and start - a transient .service or a - .scope unit and run the specified - COMMAND in it. diff --git a/0071-man-do-not-use-term-in-para.patch b/0071-man-do-not-use-term-in-para.patch deleted file mode 100644 index cbea9ce..0000000 --- a/0071-man-do-not-use-term-in-para.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 6547d848002537063bf0d5457e56ebd15ed947b0 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Tue, 5 Nov 2013 21:34:50 +0100 -Subject: [PATCH] man: do not use in - -Element term in namespace '' encountered in para, but no template matches. ---- - man/systemd.mount.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml -index 71a5736..df5a79e 100644 ---- a/man/systemd.mount.xml -+++ b/man/systemd.mount.xml -@@ -261,7 +261,7 @@ - a time span value such as "5min - 20s". Pass 0 to disable the timeout - logic. Default value is setted up in manager configuration -- file via DefaultTimeoutStart=. -+ file via DefaultTimeoutStart=. - - - diff --git a/0072-cgroup-run-PID-1-in-the-root-cgroup.patch b/0072-cgroup-run-PID-1-in-the-root-cgroup.patch deleted file mode 100644 index b2d7b57..0000000 --- a/0072-cgroup-run-PID-1-in-the-root-cgroup.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 298f884a265c1c4b30cce7467650cc4a165a284e Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 5 Nov 2013 22:14:52 +0100 -Subject: [PATCH] cgroup: run PID 1 in the root cgroup - -This way cleaning up the cgroup tree on shutdown is a lot easier since -we are in the root dir. Also PID 1 was previously artificially placed in -system.slice, even though our rule actually was not to have processes in -slices. The root slice otoh is magic anyway, so having PID 1 in there -sounds less surprising. - -Of course, this means that PID is scheduled against the three top-level -slices. ---- - src/core/cgroup.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index 8bf4d89..42c0b3f 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -589,8 +589,8 @@ pid_t unit_search_main_pid(Unit *u) { - - int manager_setup_cgroup(Manager *m) { - _cleanup_free_ char *path = NULL; -+ char *e; - int r; -- char *e, *a; - - assert(m); - -@@ -610,9 +610,13 @@ int manager_setup_cgroup(Manager *m) { - return r; - } - -- /* Already in /system.slice? If so, let's cut this off again */ -+ /* LEGACY: Already in /system.slice? If so, let's cut this -+ * off. This is to support live upgrades from older systemd -+ * versions where PID 1 was moved there. */ - if (m->running_as == SYSTEMD_SYSTEM) { - e = endswith(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE); -+ if (!e) -+ e = endswith(m->cgroup_root, "/system"); - if (e) - *e = 0; - } -@@ -643,12 +647,8 @@ int manager_setup_cgroup(Manager *m) { - log_debug("Release agent already installed."); - } - -- /* 4. Realize the system slice and put us in there */ -- if (m->running_as == SYSTEMD_SYSTEM) { -- a = strappenda(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE); -- r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, a, 0); -- } else -- r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0); -+ /* 4. Make sure we are in the root cgroup */ -+ r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0); - if (r < 0) { - log_error("Failed to create root cgroup hierarchy: %s", strerror(-r)); - return r; diff --git a/0073-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch b/0073-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch deleted file mode 100644 index 88edf87..0000000 --- a/0073-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch +++ /dev/null @@ -1,65 +0,0 @@ -From db296e9f3e78b9694464dbde956d04f6621125ed Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 5 Nov 2013 22:17:03 +0100 -Subject: [PATCH] shutdown: trim the cgroup tree on loop iteration - -This way we leave the cgroup empty before exiting in a container which -makes sure the container manager will get cgroup notification event - -https://bugs.freedesktop.org/show_bug.cgi?id=68370 -https://bugzilla.redhat.com/show_bug.cgi?id=988883 ---- - src/core/shutdown.c | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - -diff --git a/src/core/shutdown.c b/src/core/shutdown.c -index 4709746..ea02b60 100644 ---- a/src/core/shutdown.c -+++ b/src/core/shutdown.c -@@ -46,6 +46,7 @@ - #include "virt.h" - #include "watchdog.h" - #include "killall.h" -+#include "cgroup-util.h" - - #define FINALIZE_ATTEMPTS 50 - -@@ -131,12 +132,12 @@ static int pivot_to_new_root(void) { - } - - int main(int argc, char *argv[]) { -- _cleanup_free_ char *line = NULL; -- int cmd, r; -- unsigned retries; - bool need_umount = true, need_swapoff = true, need_loop_detach = true, need_dm_detach = true; - bool in_container, use_watchdog = false; -+ _cleanup_free_ char *line = NULL, *cgroup = NULL; - char *arguments[3]; -+ unsigned retries; -+ int cmd, r; - - /* suppress shutdown status output if 'quiet' is used */ - r = read_one_line_file("/proc/cmdline", &line); -@@ -186,6 +187,8 @@ int main(int argc, char *argv[]) { - goto error; - } - -+ cg_get_root_path(&cgroup); -+ - use_watchdog = !!getenv("WATCHDOG_USEC"); - - /* lock us into memory */ -@@ -210,6 +213,13 @@ int main(int argc, char *argv[]) { - if (use_watchdog) - watchdog_ping(); - -+ /* Let's trim the cgroup tree on each iteration so -+ that we leave an empty cgroup tree around, so that -+ container managers get a nice notify event when we -+ are down */ -+ if (cgroup) -+ cg_trim(SYSTEMD_CGROUP_CONTROLLER, cgroup, false); -+ - if (need_umount) { - log_info("Unmounting file systems."); - r = umount_all(&changed); diff --git a/0074-nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch b/0074-nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch deleted file mode 100644 index f1571da..0000000 --- a/0074-nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch +++ /dev/null @@ -1,593 +0,0 @@ -From f1b1f3bab4764964d12a62aba1cdbd71ec6415ae Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 30 Oct 2013 18:58:59 +0100 -Subject: [PATCH] nspawn: split out pty forwaring logic into ptyfwd.c - -Conflicts: - Makefile.am - src/nspawn/nspawn.c ---- - Makefile.am | 4 +- - src/nspawn/nspawn.c | 245 +------------------------------------------------- - src/shared/ptyfwd.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/shared/ptyfwd.h | 27 ++++++ - 4 files changed, 284 insertions(+), 244 deletions(-) - create mode 100644 src/shared/ptyfwd.c - create mode 100644 src/shared/ptyfwd.h - -diff --git a/Makefile.am b/Makefile.am -index 34de7f2..b4fc33b 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -724,7 +724,9 @@ libsystemd_shared_la_SOURCES = \ - src/shared/boot-timestamps.c \ - src/shared/refcnt.h \ - src/shared/mkdir.c \ -- src/shared/mkdir.h -+ src/shared/mkdir.h \ -+ src/shared/ptyfwd.c \ -+ src/shared/ptyfwd.h - - #------------------------------------------------------------------------------- - noinst_LTLIBRARIES += \ -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index db47fbd..cda6c82 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -63,6 +63,7 @@ - #include "fileio.h" - #include "bus-internal.h" - #include "bus-message.h" -+#include "ptyfwd.h" - - #ifndef TTY_GID - #define TTY_GID 5 -@@ -937,248 +938,6 @@ static int drop_capabilities(void) { - return capability_bounding_set_drop(~arg_retain, false); - } - --static int process_pty(int master, pid_t pid, sigset_t *mask) { -- -- char in_buffer[LINE_MAX], out_buffer[LINE_MAX]; -- size_t in_buffer_full = 0, out_buffer_full = 0; -- struct epoll_event stdin_ev, stdout_ev, master_ev, signal_ev; -- bool stdin_readable = false, stdout_writable = false, master_readable = false, master_writable = false; -- int ep = -1, signal_fd = -1, r; -- bool tried_orderly_shutdown = false; -- -- assert(master >= 0); -- assert(pid > 0); -- assert(mask); -- -- fd_nonblock(STDIN_FILENO, 1); -- fd_nonblock(STDOUT_FILENO, 1); -- fd_nonblock(master, 1); -- -- signal_fd = signalfd(-1, mask, SFD_NONBLOCK|SFD_CLOEXEC); -- if (signal_fd < 0) { -- log_error("signalfd(): %m"); -- r = -errno; -- goto finish; -- } -- -- ep = epoll_create1(EPOLL_CLOEXEC); -- if (ep < 0) { -- log_error("Failed to create epoll: %m"); -- r = -errno; -- goto finish; -- } -- -- /* We read from STDIN only if this is actually a TTY, -- * otherwise we assume non-interactivity. */ -- if (isatty(STDIN_FILENO)) { -- zero(stdin_ev); -- stdin_ev.events = EPOLLIN|EPOLLET; -- stdin_ev.data.fd = STDIN_FILENO; -- -- if (epoll_ctl(ep, EPOLL_CTL_ADD, STDIN_FILENO, &stdin_ev) < 0) { -- log_error("Failed to register STDIN in epoll: %m"); -- r = -errno; -- goto finish; -- } -- } -- -- zero(stdout_ev); -- stdout_ev.events = EPOLLOUT|EPOLLET; -- stdout_ev.data.fd = STDOUT_FILENO; -- -- zero(master_ev); -- master_ev.events = EPOLLIN|EPOLLOUT|EPOLLET; -- master_ev.data.fd = master; -- -- zero(signal_ev); -- signal_ev.events = EPOLLIN; -- signal_ev.data.fd = signal_fd; -- -- if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) { -- if (errno != EPERM) { -- log_error("Failed to register stdout in epoll: %m"); -- r = -errno; -- goto finish; -- } -- /* stdout without epoll support. Likely redirected to regular file. */ -- stdout_writable = true; -- } -- -- if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 || -- epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) { -- log_error("Failed to register fds in epoll: %m"); -- r = -errno; -- goto finish; -- } -- -- for (;;) { -- struct epoll_event ev[16]; -- ssize_t k; -- int i, nfds; -- -- nfds = epoll_wait(ep, ev, ELEMENTSOF(ev), -1); -- if (nfds < 0) { -- -- if (errno == EINTR || errno == EAGAIN) -- continue; -- -- log_error("epoll_wait(): %m"); -- r = -errno; -- goto finish; -- } -- -- assert(nfds >= 1); -- -- for (i = 0; i < nfds; i++) { -- if (ev[i].data.fd == STDIN_FILENO) { -- -- if (ev[i].events & (EPOLLIN|EPOLLHUP)) -- stdin_readable = true; -- -- } else if (ev[i].data.fd == STDOUT_FILENO) { -- -- if (ev[i].events & (EPOLLOUT|EPOLLHUP)) -- stdout_writable = true; -- -- } else if (ev[i].data.fd == master) { -- -- if (ev[i].events & (EPOLLIN|EPOLLHUP)) -- master_readable = true; -- -- if (ev[i].events & (EPOLLOUT|EPOLLHUP)) -- master_writable = true; -- -- } else if (ev[i].data.fd == signal_fd) { -- struct signalfd_siginfo sfsi; -- ssize_t n; -- -- n = read(signal_fd, &sfsi, sizeof(sfsi)); -- if (n != sizeof(sfsi)) { -- -- if (n >= 0) { -- log_error("Failed to read from signalfd: invalid block size"); -- r = -EIO; -- goto finish; -- } -- -- if (errno != EINTR && errno != EAGAIN) { -- log_error("Failed to read from signalfd: %m"); -- r = -errno; -- goto finish; -- } -- } else { -- -- if (sfsi.ssi_signo == SIGWINCH) { -- struct winsize ws; -- -- /* The window size changed, let's forward that. */ -- if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0) -- ioctl(master, TIOCSWINSZ, &ws); -- } else if (sfsi.ssi_signo == SIGTERM && arg_boot && !tried_orderly_shutdown) { -- -- log_info("Trying to halt container. Send SIGTERM again to trigger immediate termination."); -- -- /* This only works for systemd... */ -- tried_orderly_shutdown = true; -- kill(pid, SIGRTMIN+3); -- -- } else { -- r = 0; -- goto finish; -- } -- } -- } -- } -- -- while ((stdin_readable && in_buffer_full <= 0) || -- (master_writable && in_buffer_full > 0) || -- (master_readable && out_buffer_full <= 0) || -- (stdout_writable && out_buffer_full > 0)) { -- -- if (stdin_readable && in_buffer_full < LINE_MAX) { -- -- k = read(STDIN_FILENO, in_buffer + in_buffer_full, LINE_MAX - in_buffer_full); -- if (k < 0) { -- -- if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -- stdin_readable = false; -- else { -- log_error("read(): %m"); -- r = -errno; -- goto finish; -- } -- } else -- in_buffer_full += (size_t) k; -- } -- -- if (master_writable && in_buffer_full > 0) { -- -- k = write(master, in_buffer, in_buffer_full); -- if (k < 0) { -- -- if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -- master_writable = false; -- else { -- log_error("write(): %m"); -- r = -errno; -- goto finish; -- } -- -- } else { -- assert(in_buffer_full >= (size_t) k); -- memmove(in_buffer, in_buffer + k, in_buffer_full - k); -- in_buffer_full -= k; -- } -- } -- -- if (master_readable && out_buffer_full < LINE_MAX) { -- -- k = read(master, out_buffer + out_buffer_full, LINE_MAX - out_buffer_full); -- if (k < 0) { -- -- if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -- master_readable = false; -- else { -- log_error("read(): %m"); -- r = -errno; -- goto finish; -- } -- } else -- out_buffer_full += (size_t) k; -- } -- -- if (stdout_writable && out_buffer_full > 0) { -- -- k = write(STDOUT_FILENO, out_buffer, out_buffer_full); -- if (k < 0) { -- -- if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -- stdout_writable = false; -- else { -- log_error("write(): %m"); -- r = -errno; -- goto finish; -- } -- -- } else { -- assert(out_buffer_full >= (size_t) k); -- memmove(out_buffer, out_buffer + k, out_buffer_full - k); -- out_buffer_full -= k; -- } -- } -- } -- } -- --finish: -- if (ep >= 0) -- close_nointr_nofail(ep); -- -- if (signal_fd >= 0) -- close_nointr_nofail(signal_fd); -- -- return r; --} -- - static int register_machine(void) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; -@@ -1683,7 +1442,7 @@ int main(int argc, char *argv[]) { - fdset_free(fds); - fds = NULL; - -- if (process_pty(master, pid, &mask) < 0) -+ if (process_pty(master, &mask, arg_boot ? pid : 0, SIGRTMIN+3) < 0) - goto finish; - - if (saved_attr_valid) -diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c -new file mode 100644 -index 0000000..1e2852b ---- /dev/null -+++ b/src/shared/ptyfwd.c -@@ -0,0 +1,252 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2010-2013 Lennart Poettering -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "util.h" -+#include "ptyfwd.h" -+ -+int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo) { -+ char in_buffer[LINE_MAX], out_buffer[LINE_MAX]; -+ size_t in_buffer_full = 0, out_buffer_full = 0; -+ struct epoll_event stdin_ev, stdout_ev, master_ev, signal_ev; -+ bool stdin_readable = false, stdout_writable = false, master_readable = false, master_writable = false; -+ bool tried_orderly_shutdown = false; -+ _cleanup_close_ int ep = -1, signal_fd = -1; -+ -+ assert(master >= 0); -+ assert(mask); -+ assert(kill_pid == 0 || kill_pid > 1); -+ assert(signo >= 0 && signo < _NSIG); -+ -+ fd_nonblock(STDIN_FILENO, 1); -+ fd_nonblock(STDOUT_FILENO, 1); -+ fd_nonblock(master, 1); -+ -+ signal_fd = signalfd(-1, mask, SFD_NONBLOCK|SFD_CLOEXEC); -+ if (signal_fd < 0) { -+ log_error("signalfd(): %m"); -+ return -errno; -+ } -+ -+ ep = epoll_create1(EPOLL_CLOEXEC); -+ if (ep < 0) { -+ log_error("Failed to create epoll: %m"); -+ return -errno; -+ } -+ -+ /* We read from STDIN only if this is actually a TTY, -+ * otherwise we assume non-interactivity. */ -+ if (isatty(STDIN_FILENO)) { -+ zero(stdin_ev); -+ stdin_ev.events = EPOLLIN|EPOLLET; -+ stdin_ev.data.fd = STDIN_FILENO; -+ -+ if (epoll_ctl(ep, EPOLL_CTL_ADD, STDIN_FILENO, &stdin_ev) < 0) { -+ log_error("Failed to register STDIN in epoll: %m"); -+ return -errno; -+ } -+ } -+ -+ zero(stdout_ev); -+ stdout_ev.events = EPOLLOUT|EPOLLET; -+ stdout_ev.data.fd = STDOUT_FILENO; -+ -+ zero(master_ev); -+ master_ev.events = EPOLLIN|EPOLLOUT|EPOLLET; -+ master_ev.data.fd = master; -+ -+ zero(signal_ev); -+ signal_ev.events = EPOLLIN; -+ signal_ev.data.fd = signal_fd; -+ -+ if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) { -+ if (errno != EPERM) { -+ log_error("Failed to register stdout in epoll: %m"); -+ return -errno; -+ } -+ -+ /* stdout without epoll support. Likely redirected to regular file. */ -+ stdout_writable = true; -+ } -+ -+ if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 || -+ epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) { -+ log_error("Failed to register fds in epoll: %m"); -+ return -errno; -+ } -+ -+ for (;;) { -+ struct epoll_event ev[16]; -+ ssize_t k; -+ int i, nfds; -+ -+ nfds = epoll_wait(ep, ev, ELEMENTSOF(ev), -1); -+ if (nfds < 0) { -+ -+ if (errno == EINTR || errno == EAGAIN) -+ continue; -+ -+ log_error("epoll_wait(): %m"); -+ return -errno; -+ } -+ -+ assert(nfds >= 1); -+ -+ for (i = 0; i < nfds; i++) { -+ if (ev[i].data.fd == STDIN_FILENO) { -+ -+ if (ev[i].events & (EPOLLIN|EPOLLHUP)) -+ stdin_readable = true; -+ -+ } else if (ev[i].data.fd == STDOUT_FILENO) { -+ -+ if (ev[i].events & (EPOLLOUT|EPOLLHUP)) -+ stdout_writable = true; -+ -+ } else if (ev[i].data.fd == master) { -+ -+ if (ev[i].events & (EPOLLIN|EPOLLHUP)) -+ master_readable = true; -+ -+ if (ev[i].events & (EPOLLOUT|EPOLLHUP)) -+ master_writable = true; -+ -+ } else if (ev[i].data.fd == signal_fd) { -+ struct signalfd_siginfo sfsi; -+ ssize_t n; -+ -+ n = read(signal_fd, &sfsi, sizeof(sfsi)); -+ if (n != sizeof(sfsi)) { -+ -+ if (n >= 0) { -+ log_error("Failed to read from signalfd: invalid block size"); -+ return -EIO; -+ } -+ -+ if (errno != EINTR && errno != EAGAIN) { -+ log_error("Failed to read from signalfd: %m"); -+ return -errno; -+ } -+ } else { -+ -+ if (sfsi.ssi_signo == SIGWINCH) { -+ struct winsize ws; -+ -+ /* The window size changed, let's forward that. */ -+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0) -+ ioctl(master, TIOCSWINSZ, &ws); -+ -+ } else if (sfsi.ssi_signo == SIGTERM && kill_pid > 0 && signo > 0 && !tried_orderly_shutdown) { -+ -+ if (kill(kill_pid, signo) < 0) -+ return 0; -+ -+ log_info("Trying to halt container. Send SIGTERM again to trigger immediate termination."); -+ -+ /* This only works for systemd... */ -+ tried_orderly_shutdown = true; -+ -+ } else -+ return 0; -+ } -+ } -+ } -+ -+ while ((stdin_readable && in_buffer_full <= 0) || -+ (master_writable && in_buffer_full > 0) || -+ (master_readable && out_buffer_full <= 0) || -+ (stdout_writable && out_buffer_full > 0)) { -+ -+ if (stdin_readable && in_buffer_full < LINE_MAX) { -+ -+ k = read(STDIN_FILENO, in_buffer + in_buffer_full, LINE_MAX - in_buffer_full); -+ if (k < 0) { -+ -+ if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -+ stdin_readable = false; -+ else { -+ log_error("read(): %m"); -+ return -errno; -+ } -+ } else -+ in_buffer_full += (size_t) k; -+ } -+ -+ if (master_writable && in_buffer_full > 0) { -+ -+ k = write(master, in_buffer, in_buffer_full); -+ if (k < 0) { -+ -+ if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -+ master_writable = false; -+ else { -+ log_error("write(): %m"); -+ return -errno; -+ } -+ -+ } else { -+ assert(in_buffer_full >= (size_t) k); -+ memmove(in_buffer, in_buffer + k, in_buffer_full - k); -+ in_buffer_full -= k; -+ } -+ } -+ -+ if (master_readable && out_buffer_full < LINE_MAX) { -+ -+ k = read(master, out_buffer + out_buffer_full, LINE_MAX - out_buffer_full); -+ if (k < 0) { -+ -+ if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -+ master_readable = false; -+ else { -+ log_error("read(): %m"); -+ return -errno; -+ } -+ } else -+ out_buffer_full += (size_t) k; -+ } -+ -+ if (stdout_writable && out_buffer_full > 0) { -+ -+ k = write(STDOUT_FILENO, out_buffer, out_buffer_full); -+ if (k < 0) { -+ -+ if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO) -+ stdout_writable = false; -+ else { -+ log_error("write(): %m"); -+ return -errno; -+ } -+ -+ } else { -+ assert(out_buffer_full >= (size_t) k); -+ memmove(out_buffer, out_buffer + k, out_buffer_full - k); -+ out_buffer_full -= k; -+ } -+ } -+ } -+ } -+} -diff --git a/src/shared/ptyfwd.h b/src/shared/ptyfwd.h -new file mode 100644 -index 0000000..8b65702 ---- /dev/null -+++ b/src/shared/ptyfwd.h -@@ -0,0 +1,27 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+#pragma once -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2010-2013 Lennart Poettering -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ -+#include -+#include -+ -+int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo); diff --git a/0075-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch b/0075-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch deleted file mode 100644 index 0edaeb7..0000000 --- a/0075-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 546f518baf5c1cb083030fe2b3de751f160e5eea Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 6 Nov 2013 02:05:06 +0100 -Subject: [PATCH] nspawn: explicitly terminate machines when we exit nspawn - -https://bugs.freedesktop.org/show_bug.cgi?id=68370 -https://bugzilla.redhat.com/show_bug.cgi?id=988883 - -Conflicts: - src/nspawn/nspawn.c ---- - src/nspawn/nspawn.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 65 insertions(+), 5 deletions(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index cda6c82..85bbadf 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -43,9 +43,9 @@ - #include - #include - --#include --#include -- -+#include "sd-daemon.h" -+#include "sd-bus.h" -+#include "sd-id128.h" - #include "log.h" - #include "util.h" - #include "mkdir.h" -@@ -56,13 +56,13 @@ - #include "strv.h" - #include "path-util.h" - #include "loopback-setup.h" --#include "sd-id128.h" - #include "dev-setup.h" - #include "fdset.h" - #include "build.h" - #include "fileio.h" - #include "bus-internal.h" - #include "bus-message.h" -+#include "bus-error.h" - #include "ptyfwd.h" - - #ifndef TTY_GID -@@ -966,10 +966,64 @@ static int register_machine(void) { - strempty(arg_directory), - !isempty(arg_slice), "Slice", "s", arg_slice); - if (r < 0) { -- log_error("Failed to register machine: %s", error.message ? error.message : strerror(-r)); -+ log_error("Failed to register machine: %s", bus_error_message(&error, r)); -+ return r; -+ } -+ -+ return 0; -+} -+ -+static int terminate_machine(pid_t pid) { -+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; -+ _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; -+ _cleanup_bus_unref_ sd_bus *bus = NULL; -+ const char *path; -+ int r; -+ -+ r = sd_bus_open_system(&bus); -+ if (r < 0) { -+ log_error("Failed to open system bus: %s", strerror(-r)); -+ return r; -+ } -+ -+ r = sd_bus_call_method( -+ bus, -+ "org.freedesktop.machine1", -+ "/org/freedesktop/machine1", -+ "org.freedesktop.machine1.Manager", -+ "GetMachineByPID", -+ &error, -+ &reply, -+ "u", -+ (uint32_t) pid); -+ if (r < 0) { -+ /* Note that the machine might already have been -+ * cleaned up automatically, hence don't consider it a -+ * failure if we cannot get the machine object. */ -+ log_debug("Failed to get machine: %s", bus_error_message(&error, r)); -+ return 0; -+ } -+ -+ r = sd_bus_message_read(reply, "o", &path); -+ if (r < 0) { -+ log_error("Failed to parse GetMachineByPID() reply: %s", bus_error_message(&error, r)); - return r; - } - -+ r = sd_bus_call_method( -+ bus, -+ "org.freedesktop.machine1", -+ path, -+ "org.freedesktop.machine1.Machine", -+ "Terminate", -+ &error, -+ NULL, -+ NULL); -+ if (r < 0) { -+ log_debug("Failed to terminate machine: %s", bus_error_message(&error, r)); -+ return 0; -+ } -+ - return 0; - } - -@@ -1448,6 +1502,12 @@ int main(int argc, char *argv[]) { - if (saved_attr_valid) - tcsetattr(STDIN_FILENO, TCSANOW, &saved_attr); - -+ /* Kill if it is not dead yet anyway */ -+ terminate_machine(pid); -+ -+ /* Redundant, but better safe than sorry */ -+ kill(pid, SIGKILL); -+ - k = wait_for_terminate(pid, &status); - if (k < 0) { - r = EXIT_FAILURE; diff --git a/0076-run-support-system-to-match-other-commands-even-if-r.patch b/0076-run-support-system-to-match-other-commands-even-if-r.patch deleted file mode 100644 index 4081aa1..0000000 --- a/0076-run-support-system-to-match-other-commands-even-if-r.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 9888a5919971d6eacd1ca025c1d4197248022319 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 6 Nov 2013 17:31:20 +0100 -Subject: [PATCH] run: support --system to match other commands, even if - redundant - -Conflicts: - man/systemd-run.xml - src/run/run.c ---- - man/systemd-run.xml | 9 +++++++++ - src/run/run.c | 20 +++++++++++++------- - 2 files changed, 22 insertions(+), 7 deletions(-) - -diff --git a/man/systemd-run.xml b/man/systemd-run.xml -index 252335b..48a0715 100644 ---- a/man/systemd-run.xml -+++ b/man/systemd-run.xml -@@ -113,6 +113,15 @@ along with systemd; If not, see . - - - -+ -+ -+ -+ Talk to the service manager of the system. This is the -+ implied default. -+ -+ -+ -+ - - - -diff --git a/src/run/run.c b/src/run/run.c -index 18a4920..a6abead 100644 ---- a/src/run/run.c -+++ b/src/run/run.c -@@ -61,6 +61,7 @@ static int parse_argv(int argc, char *argv[]) { - enum { - ARG_VERSION = 0x100, - ARG_USER, -+ ARG_SYSTEM, - ARG_SCOPE, - ARG_UNIT, - ARG_DESCRIPTION, -@@ -72,6 +73,7 @@ static int parse_argv(int argc, char *argv[]) { - { "help", no_argument, NULL, 'h' }, - { "version", no_argument, NULL, ARG_VERSION }, - { "user", no_argument, NULL, ARG_USER }, -+ { "system", no_argument, NULL, ARG_SYSTEM }, - { "scope", no_argument, NULL, ARG_SCOPE }, - { "unit", required_argument, NULL, ARG_UNIT }, - { "description", required_argument, NULL, ARG_DESCRIPTION }, -@@ -103,6 +105,10 @@ static int parse_argv(int argc, char *argv[]) { - arg_user = true; - break; - -+ case ARG_SYSTEM: -+ arg_user = false; -+ break; -+ - case ARG_SCOPE: - arg_scope = true; - break; -@@ -333,12 +339,12 @@ int main(int argc, char* argv[]) { - - r = parse_argv(argc, argv); - if (r <= 0) -- goto fail; -+ goto finish; - - r = find_binary(argv[optind], &command); - if (r < 0) { - log_error("Failed to find executable %s: %s", argv[optind], strerror(-r)); -- goto fail; -+ goto finish; - } - argv[optind] = command; - -@@ -346,7 +352,7 @@ int main(int argc, char* argv[]) { - description = strv_join(argv + optind, " "); - if (!description) { - r = log_oom(); -- goto fail; -+ goto finish; - } - - arg_description = description; -@@ -357,8 +363,8 @@ int main(int argc, char* argv[]) { - else - r = sd_bus_open_system(&bus); - if (r < 0) { -- log_error("Failed to create new bus connection: %s", strerror(-r)); -- goto fail; -+ log_error("Failed to create bus connection: %s", strerror(-r)); -+ goto finish; - } - - if (arg_scope) -@@ -368,9 +374,9 @@ int main(int argc, char* argv[]) { - if (r < 0) { - log_error("Failed start transient unit: %s", error.message ? error.message : strerror(-r)); - sd_bus_error_free(&error); -- goto fail; -+ goto finish; - } - --fail: -+finish: - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; - } diff --git a/0077-acpi-fpdt-break-on-zero-or-negative-length-read.patch b/0077-acpi-fpdt-break-on-zero-or-negative-length-read.patch deleted file mode 100644 index 778d99e..0000000 --- a/0077-acpi-fpdt-break-on-zero-or-negative-length-read.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 98f6a4dfe1d6e601ddd2b59c42e8fc16193d187b Mon Sep 17 00:00:00 2001 -From: Pavel Holica -Date: Wed, 6 Nov 2013 23:24:16 +0100 -Subject: [PATCH] acpi-fpdt: break on zero or negative length read - -https://bugzilla.redhat.com/show_bug.cgi?id=1027478 ---- - src/shared/acpi-fpdt.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c -index 75648b4..7bae47f 100644 ---- a/src/shared/acpi-fpdt.c -+++ b/src/shared/acpi-fpdt.c -@@ -109,6 +109,8 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) { - for (rec = (struct acpi_fpdt_header *)(buf + sizeof(struct acpi_table_header)); - (char *)rec < buf + l; - rec = (struct acpi_fpdt_header *)((char *)rec + rec->length)) { -+ if (rec->length <= 0) -+ break; - if (rec->type != ACPI_FPDT_TYPE_BOOT) - continue; - if (rec->length != sizeof(struct acpi_fpdt_header)) diff --git a/0078-man-add-rationale-into-systemd-halt-8.patch b/0078-man-add-rationale-into-systemd-halt-8.patch deleted file mode 100644 index c8cf0aa..0000000 --- a/0078-man-add-rationale-into-systemd-halt-8.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 85f85783569c4a662262c7b7579fb130d25ccd42 Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Thu, 7 Nov 2013 01:17:49 +0100 -Subject: [PATCH] man: add rationale into systemd-halt(8) - -The explanation is from -http://people.debian.org/~stapelberg/docs/systemd-dependencies.html ---- - man/systemd-halt.service.xml | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml -index 812281e..90b443f 100644 ---- a/man/systemd-halt.service.xml -+++ b/man/systemd-halt.service.xml -@@ -83,6 +83,12 @@ - remaining swap devices, detach all remaining storage - devices and kill all remaining processes. - -+ It is necessary to have this code in a separate binary -+ because otherwise rebooting after an upgrade might be broken — -+ the running PID 1 could still depend on libraries which are not -+ available any more, thus keeping the filesystem busy, which -+ then cannot be re-mounted read-only. -+ - Immediately before executing the actual system - halt/poweroff/reboot/kexec - systemd-shutdown will run all diff --git a/0079-systemd-python-convert-keyword-value-to-string.patch b/0079-systemd-python-convert-keyword-value-to-string.patch deleted file mode 100644 index f66c752..0000000 --- a/0079-systemd-python-convert-keyword-value-to-string.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 044615d3520fe1884b6d1c410b99c26c0b02d41a Mon Sep 17 00:00:00 2001 -From: Richard Marko -Date: Tue, 5 Nov 2013 15:41:20 +0100 -Subject: [PATCH] systemd-python: convert keyword value to string - -Allows using journal.send('msg', PRIORITY=journal.LOG_CRIT) - -Before this commit this results in -TypeError: cannot concatenate 'str' and 'int' objects -and requires passing PRIORITY value as string to work. ---- - src/python-systemd/journal.py | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py -index d0bcd24..9c7e004 100644 ---- a/src/python-systemd/journal.py -+++ b/src/python-systemd/journal.py -@@ -352,6 +352,8 @@ def get_catalog(mid): - def _make_line(field, value): - if isinstance(value, bytes): - return field.encode('utf-8') + b'=' + value -+ elif isinstance(value, int): -+ return field + '=' + str(value) - else: - return field + '=' + value - diff --git a/0080-systemctl-make-LOAD-column-width-dynamic.patch b/0080-systemctl-make-LOAD-column-width-dynamic.patch deleted file mode 100644 index f37ecc4..0000000 --- a/0080-systemctl-make-LOAD-column-width-dynamic.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 4beb4dc09a06e36a5831530115f1a14beeaa436a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= -Date: Mon, 4 Nov 2013 23:01:17 +0200 -Subject: [PATCH] systemctl: make LOAD column width dynamic - -Otherwise 'not-found' overflows into the ACTIVE column. ---- - src/systemctl/systemctl.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 36040db..906982a 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -287,14 +287,16 @@ static bool output_show_unit(const struct unit_info *u) { - } - - static void output_units_list(const struct unit_info *unit_infos, unsigned c) { -- unsigned id_len, max_id_len, active_len, sub_len, job_len, desc_len, n_shown = 0; -+ unsigned id_len, max_id_len, load_len, active_len, sub_len, job_len, desc_len; -+ unsigned n_shown = 0; - const struct unit_info *u; - int job_count = 0; - -- max_id_len = sizeof("UNIT")-1; -- active_len = sizeof("ACTIVE")-1; -- sub_len = sizeof("SUB")-1; -- job_len = sizeof("JOB")-1; -+ max_id_len = strlen("UNIT"); -+ load_len = strlen("LOAD"); -+ active_len = strlen("ACTIVE"); -+ sub_len = strlen("SUB"); -+ job_len = strlen("JOB"); - desc_len = 0; - - for (u = unit_infos; u < unit_infos + c; u++) { -@@ -302,6 +304,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { - continue; - - max_id_len = MAX(max_id_len, strlen(u->id)); -+ load_len = MAX(load_len, strlen(u->load_state)); - active_len = MAX(active_len, strlen(u->active_state)); - sub_len = MAX(sub_len, strlen(u->sub_state)); - if (u->job_id != 0) { -@@ -344,7 +347,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { - continue; - - if (!n_shown && !arg_no_legend) { -- printf("%-*s %-6s %-*s %-*s ", id_len, "UNIT", "LOAD", -+ printf("%-*s %-*s %-*s %-*s ", id_len, "UNIT", load_len, "LOAD", - active_len, "ACTIVE", sub_len, "SUB"); - if (job_count) - printf("%-*s ", job_len, "JOB"); -@@ -371,9 +374,9 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { - - e = arg_full ? NULL : ellipsize(u->id, id_len, 33); - -- printf("%s%-*s%s %s%-6s%s %s%-*s %-*s%s %-*s", -+ printf("%s%-*s%s %s%-*s%s %s%-*s %-*s%s %-*s", - on, id_len, e ? e : u->id, off, -- on_loaded, u->load_state, off_loaded, -+ on_loaded, load_len, u->load_state, off_loaded, - on_active, active_len, u->active_state, - sub_len, u->sub_state, off_active, - job_count ? job_len + 1 : 0, u->job_id ? u->job_type : ""); diff --git a/0081-Make-hibernation-test-work-for-swap-files.patch b/0081-Make-hibernation-test-work-for-swap-files.patch deleted file mode 100644 index 6f096f8..0000000 --- a/0081-Make-hibernation-test-work-for-swap-files.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a5fd1d54d63e9e5861113fd30911949a148921e1 Mon Sep 17 00:00:00 2001 -From: Jan Janssen -Date: Thu, 31 Oct 2013 17:22:03 +0100 -Subject: [PATCH] Make hibernation test work for swap files - -Suspend to disk works for swap files too (even if it is located -on an ecrypted file system): -https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt ---- - src/shared/sleep-config.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index d068bfc..2bb0493 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -206,7 +206,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) { - if (!d) - return -ENOMEM; - -- if (!streq(type, "partition")) { -+ if (!streq(type, "partition") && !streq(type, "file")) { - log_debug("Partition %s has type %s, ignoring.", d, type); - continue; - } diff --git a/0082-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch b/0082-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch deleted file mode 100644 index 249e1ef..0000000 --- a/0082-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 82e54a15fa202a67c9a9d2e53aad660f8a5ff36c Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 7 Nov 2013 17:51:09 +0100 -Subject: [PATCH] man: add docs for sd_is_special() and some man page symlinks - -Conflicts: - Makefile.am ---- - Makefile-man.am | 15 +++++++++++++++ - man/sd_is_fifo.xml | 17 +++++++++++++++++ - man/sd_seat_get_active.xml | 2 ++ - 3 files changed, 34 insertions(+) - -diff --git a/Makefile-man.am b/Makefile-man.am -index c8a4342..b8c8acc 100644 ---- a/Makefile-man.am -+++ b/Makefile-man.am -@@ -138,6 +138,7 @@ MANPAGES_ALIAS += \ - man/sd_is_socket.3 \ - man/sd_is_socket_inet.3 \ - man/sd_is_socket_unix.3 \ -+ man/sd_is_special.3 \ - man/sd_journal.3 \ - man/sd_journal_add_conjunction.3 \ - man/sd_journal_add_disjunction.3 \ -@@ -238,6 +239,7 @@ man/sd_is_mq.3: man/sd_is_fifo.3 - man/sd_is_socket.3: man/sd_is_fifo.3 - man/sd_is_socket_inet.3: man/sd_is_fifo.3 - man/sd_is_socket_unix.3: man/sd_is_fifo.3 -+man/sd_is_special.3: man/sd_is_fifo.3 - man/sd_journal.3: man/sd_journal_open.3 - man/sd_journal_add_conjunction.3: man/sd_journal_add_match.3 - man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3 -@@ -410,6 +412,9 @@ man/sd_is_socket_inet.html: man/sd_is_fifo.html - man/sd_is_socket_unix.html: man/sd_is_fifo.html - $(html-alias) - -+man/sd_is_special.html: man/sd_is_fifo.html -+ $(html-alias) -+ - man/sd_journal.html: man/sd_journal_open.html - $(html-alias) - -@@ -844,7 +849,9 @@ MANPAGES_ALIAS += \ - man/sd_pid_get_slice.3 \ - man/sd_pid_get_unit.3 \ - man/sd_pid_get_user_unit.3 \ -+ man/sd_seat_can_graphical.3 \ - man/sd_seat_can_multi_session.3 \ -+ man/sd_seat_can_tty.3 \ - man/sd_seat_get_sessions.3 \ - man/sd_session_get_class.3 \ - man/sd_session_get_display.3 \ -@@ -873,7 +880,9 @@ man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3 - man/sd_pid_get_slice.3: man/sd_pid_get_session.3 - man/sd_pid_get_unit.3: man/sd_pid_get_session.3 - man/sd_pid_get_user_unit.3: man/sd_pid_get_session.3 -+man/sd_seat_can_graphical.3: man/sd_seat_get_active.3 - man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3 -+man/sd_seat_can_tty.3: man/sd_seat_get_active.3 - man/sd_seat_get_sessions.3: man/sd_seat_get_active.3 - man/sd_session_get_class.3: man/sd_session_is_active.3 - man/sd_session_get_display.3: man/sd_session_is_active.3 -@@ -930,9 +939,15 @@ man/sd_pid_get_unit.html: man/sd_pid_get_session.html - man/sd_pid_get_user_unit.html: man/sd_pid_get_session.html - $(html-alias) - -+man/sd_seat_can_graphical.html: man/sd_seat_get_active.html -+ $(html-alias) -+ - man/sd_seat_can_multi_session.html: man/sd_seat_get_active.html - $(html-alias) - -+man/sd_seat_can_tty.html: man/sd_seat_get_active.html -+ $(html-alias) -+ - man/sd_seat_get_sessions.html: man/sd_seat_get_active.html - $(html-alias) - -diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml -index 2bc860c..4d9cd79 100644 ---- a/man/sd_is_fifo.xml -+++ b/man/sd_is_fifo.xml -@@ -48,6 +48,7 @@ - sd_is_socket_inet - sd_is_socket_unix - sd_is_mq -+ sd_is_special - Check the type of a file descriptor - - -@@ -93,6 +94,12 @@ - const char *path - - -+ -+ int sd_is_special -+ int fd -+ const char *path -+ -+ - - - -@@ -153,6 +160,16 @@ - path parameter is not - NULL, it is checked whether the - message queue is bound to the specified name. -+ -+ sd_is_special() may be -+ called to check whether the specified file descriptor -+ refers to a special file. If the -+ path parameter is not -+ NULL, it is checked whether file -+ descriptor is bound to the specified file -+ name. Special files in this context are character -+ device nodes and files in /proc -+ or /sys. - - - -diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml -index 1610d3e..cd87696 100644 ---- a/man/sd_seat_get_active.xml -+++ b/man/sd_seat_get_active.xml -@@ -46,6 +46,8 @@ - sd_seat_get_active - sd_seat_get_sessions - sd_seat_can_multi_session -+ sd_seat_can_tty -+ sd_seat_can_graphical - Determine state of a specific seat - - diff --git a/0083-systemctl-return-r-instead-of-always-returning-0.patch b/0083-systemctl-return-r-instead-of-always-returning-0.patch deleted file mode 100644 index 77b647f..0000000 --- a/0083-systemctl-return-r-instead-of-always-returning-0.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 94c73ca7e22de4355f8ef32ea30ddf1ef8dae662 Mon Sep 17 00:00:00 2001 -From: Michal Sekletar -Date: Wed, 6 Nov 2013 11:18:02 +0100 -Subject: [PATCH] systemctl: return r instead of always returning 0 - ---- - src/systemctl/systemctl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 906982a..db584b2 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -1365,7 +1365,7 @@ static int list_jobs(DBusConnection *bus, char **args) { - } - free(jobs); - -- return 0; -+ return r; - } - - static int cancel_job(DBusConnection *bus, char **args) { diff --git a/0084-journal-fix-minor-memory-leak.patch b/0084-journal-fix-minor-memory-leak.patch deleted file mode 100644 index 0cf84fb..0000000 --- a/0084-journal-fix-minor-memory-leak.patch +++ /dev/null @@ -1,22 +0,0 @@ -From e46b85ec8f333d1bdd0e66b99530965c7781110b Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 8 Nov 2013 13:53:25 +0100 -Subject: [PATCH] journal: fix minor memory leak - ---- - src/journal/sd-journal.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c -index 7700d6c..9676f0f 100644 ---- a/src/journal/sd-journal.c -+++ b/src/journal/sd-journal.c -@@ -1276,7 +1276,7 @@ static void check_network(sd_journal *j, int fd) { - static bool file_has_type_prefix(const char *prefix, const char *filename) { - const char *full, *tilded, *atted; - -- full = strappend(prefix, ".journal"); -+ full = strappenda(prefix, ".journal"); - tilded = strappenda(full, "~"); - atted = strappenda(prefix, "@"); - diff --git a/0085-manager-configurable-StartLimit-default-values.patch b/0085-manager-configurable-StartLimit-default-values.patch deleted file mode 100644 index bbf7780..0000000 --- a/0085-manager-configurable-StartLimit-default-values.patch +++ /dev/null @@ -1,161 +0,0 @@ -From 9e694cd271f7bce2ad7a77de03b66d493ca5dd61 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Fri, 8 Nov 2013 16:01:22 +0100 -Subject: [PATCH] manager: configurable StartLimit default values - -https://bugzilla.redhat.com/show_bug.cgi?id=821723 ---- - man/systemd-system.conf.xml | 13 +++++++++++++ - man/systemd.service.xml | 9 ++++++--- - src/core/main.c | 6 ++++++ - src/core/manager.h | 3 +++ - src/core/service.c | 4 +++- - src/core/system.conf | 2 ++ - src/core/user.conf | 2 ++ - src/shared/def.h | 3 +++ - 8 files changed, 38 insertions(+), 4 deletions(-) - -diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml -index c1f2648..9a1a99f 100644 ---- a/man/systemd-system.conf.xml -+++ b/man/systemd-system.conf.xml -@@ -115,6 +115,19 @@ - TimeoutSec= value. - - -+ -+ DefaultStartLimitInterval= -+ DefaultStartLimitBurst= -+ -+ Configure the default start rate -+ limiting, as configured per-service by -+ StartLimitInterval= and -+ StartLimitBurst=. See -+ systemd.service5 -+ for details on the per-service -+ settings). -+ -+ - - - CPUAffinity= -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index df04048..3f31c11 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -863,12 +863,15 @@ - these two options, this rate limiting - may be modified. Use - StartLimitInterval= -- to configure the checking interval -- (defaults to 10s, set to 0 to disable -+ to configure the checking interval (defaults to -+ DefaultStartLimitInterval= in -+ manager configuration file, set to 0 to disable - any kind of rate limiting). Use - StartLimitBurst= to - configure how many starts per interval -- are allowed (defaults to 5). These -+ are allowed (defaults to -+ DefaultStartLimitBurst= in -+ manager configuration file). These - configuration options are particularly - useful in conjunction with - Restart=, however -diff --git a/src/core/main.c b/src/core/main.c -index 937994c..00fd394 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -93,6 +93,8 @@ static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT; - static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC; - static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC; - static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC; -+static usec_t arg_default_start_limit_interval = DEFAULT_START_LIMIT_INTERVAL; -+static unsigned arg_default_start_limit_burst = DEFAULT_START_LIMIT_BURST; - static usec_t arg_runtime_watchdog = 0; - static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE; - static char **arg_default_environment = NULL; -@@ -642,6 +644,8 @@ static int parse_config_file(void) { - { "Manager", "DefaultTimeoutStartSec", config_parse_sec, 0, &arg_default_timeout_start_usec }, - { "Manager", "DefaultTimeoutStopSec", config_parse_sec, 0, &arg_default_timeout_stop_usec }, - { "Manager", "DefaultRestartSec", config_parse_sec, 0, &arg_default_restart_usec }, -+ { "Manager", "DefaultStartLimitInterval", config_parse_sec, 0, &arg_default_start_limit_interval }, -+ { "Manager", "DefaultStartLimitBurst", config_parse_unsigned, 0, &arg_default_start_limit_burst }, - { "Manager", "JoinControllers", config_parse_join_controllers, 0, &arg_join_controllers }, - { "Manager", "RuntimeWatchdogSec", config_parse_sec, 0, &arg_runtime_watchdog }, - { "Manager", "ShutdownWatchdogSec", config_parse_sec, 0, &arg_shutdown_watchdog }, -@@ -1551,6 +1555,8 @@ int main(int argc, char *argv[]) { - m->default_restart_usec = arg_default_restart_usec; - m->default_timeout_start_usec = arg_default_timeout_start_usec; - m->default_timeout_stop_usec = arg_default_timeout_stop_usec; -+ m->default_start_limit_interval = arg_default_start_limit_interval; -+ m->default_start_limit_burst = arg_default_start_limit_burst; - m->runtime_watchdog = arg_runtime_watchdog; - m->shutdown_watchdog = arg_shutdown_watchdog; - m->userspace_timestamp = userspace_timestamp; -diff --git a/src/core/manager.h b/src/core/manager.h -index e74c609..ee42c5e 100644 ---- a/src/core/manager.h -+++ b/src/core/manager.h -@@ -233,6 +233,9 @@ struct Manager { - usec_t default_restart_usec, default_timeout_start_usec, - default_timeout_stop_usec; - -+ usec_t default_start_limit_interval; -+ unsigned default_start_limit_burst; -+ - struct rlimit *rlimit[RLIMIT_NLIMITS]; - - /* non-zero if we are reloading or reexecuting, */ -diff --git a/src/core/service.c b/src/core/service.c -index e81aa1f..5662180 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -143,7 +143,9 @@ static void service_init(Unit *u) { - kill_context_init(&s->kill_context); - cgroup_context_init(&s->cgroup_context); - -- RATELIMIT_INIT(s->start_limit, 10*USEC_PER_SEC, 5); -+ RATELIMIT_INIT(s->start_limit, -+ u->manager->default_start_limit_interval, -+ u->manager->default_start_limit_burst); - - s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID; - } -diff --git a/src/core/system.conf b/src/core/system.conf -index 3c6cc03..38bbca5 100644 ---- a/src/core/system.conf -+++ b/src/core/system.conf -@@ -27,6 +27,8 @@ - #DefaultTimeoutStartSec=90s - #DefaultTimeoutStopSec=90s - #DefaultRestartSec=100ms -+#DefaultStartLimitInterval=10s -+#DefaultStartLimitBurst=5 - #DefaultEnvironment= - #DefaultLimitCPU= - #DefaultLimitFSIZE= -diff --git a/src/core/user.conf b/src/core/user.conf -index b030701..923ca66 100644 ---- a/src/core/user.conf -+++ b/src/core/user.conf -@@ -17,3 +17,5 @@ - #DefaultTimeoutStartSec=90s - #DefaultTimeoutStopSec=90s - #DefaultRestartSec=100ms -+#DefaultStartLimitInterval=10s -+#DefaultStartLimitBurst=5 -diff --git a/src/shared/def.h b/src/shared/def.h -index edd0bcf..e4ef735 100644 ---- a/src/shared/def.h -+++ b/src/shared/def.h -@@ -27,6 +27,9 @@ - #define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC) - #define DEFAULT_CONFIRM_USEC (30*USEC_PER_SEC) - -+#define DEFAULT_START_LIMIT_INTERVAL (10*USEC_PER_SEC) -+#define DEFAULT_START_LIMIT_BURST 5 -+ - #define DEFAULT_EXIT_USEC (5*USEC_PER_MINUTE) - - #define SYSTEMD_CGROUP_CONTROLLER "name=systemd" diff --git a/0086-man-units-fix-installation-of-systemd-nspawn-.servic.patch b/0086-man-units-fix-installation-of-systemd-nspawn-.servic.patch deleted file mode 100644 index adc022c..0000000 --- a/0086-man-units-fix-installation-of-systemd-nspawn-.servic.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 4108d06603404e70b93747e156213eb59ed8bc27 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 7 Nov 2013 23:57:19 -0500 -Subject: [PATCH] man,units: fix installation of systemd-nspawn@.service and - add example - ---- - TODO | 1 + - man/systemd-nspawn.xml | 12 ++++++++++++ - units/systemd-nspawn@.service.in | 2 +- - 3 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/TODO b/TODO -index 425f673..42ba030 100644 ---- a/TODO -+++ b/TODO -@@ -491,6 +491,7 @@ Features: - - nspawn: maybe add a way to drop additional caps, in addition to add additional caps - - nspawn: maybe explicitly reset loginuid? - - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context -+ - refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK). - - * cryptsetup: - - cryptsetup-generator: allow specification of passwords in crypttab itself -diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml -index 7d450f9..ba9e516 100644 ---- a/man/systemd-nspawn.xml -+++ b/man/systemd-nspawn.xml -@@ -428,6 +428,18 @@ - - - -+ Example 4 -+ -+ # mv ~/arch-tree /var/lib/container/arch -+# systemctl enable systemd-nspawn@arch.service -+# systemctl start systemd-nspawn@arch.service -+ -+ This makes the Arch Linux container part of the -+ multi-user.target on the host. -+ -+ -+ -+ - Exit status - - The exit code of the program executed in the -diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in -index eca62e3..8e00736 100644 ---- a/units/systemd-nspawn@.service.in -+++ b/units/systemd-nspawn@.service.in -@@ -14,4 +14,4 @@ ExecStart=@bindir@/systemd-nspawn -bjD /var/lib/container/%i - Type=notify - - [Install] --Also=multi-user.target -+WantedBy=multi-user.target diff --git a/0087-systemd-fix-memory-leak-in-cgroup-code.patch b/0087-systemd-fix-memory-leak-in-cgroup-code.patch deleted file mode 100644 index 292241d..0000000 --- a/0087-systemd-fix-memory-leak-in-cgroup-code.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 7930484abfb17a9c72efdd93ebfc4637ad2be738 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 8 Nov 2013 08:41:13 -0500 -Subject: [PATCH] systemd: fix memory leak in cgroup code - -If the unit already was in the hashmap, path would be leaked. ---- - src/core/cgroup.c | 24 +++++++++++++----------- - 1 file changed, 13 insertions(+), 11 deletions(-) - -diff --git a/src/core/cgroup.c b/src/core/cgroup.c -index 42c0b3f..32e2599 100644 ---- a/src/core/cgroup.c -+++ b/src/core/cgroup.c -@@ -376,23 +376,23 @@ static CGroupControllerMask unit_get_siblings_mask(Unit *u) { - } - - static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { -- char *path = NULL; -+ _cleanup_free_ char *path; - int r; -- bool is_in_hash = false; -+ bool was_in_hash = false; - - assert(u); - - path = unit_default_cgroup_path(u); - if (!path) -- return -ENOMEM; -+ return log_oom(); - - r = hashmap_put(u->manager->cgroup_unit, path, u); - if (r == 0) -- is_in_hash = true; -- -- if (r < 0) { -- log_error("cgroup %s exists already: %s", path, strerror(-r)); -- free(path); -+ was_in_hash = true; -+ else if (r < 0) { -+ log_error(r == -EEXIST ? -+ "cgroup %s exists already: %s" : "hashmap_put failed for %s: %s", -+ path, strerror(-r)); - return r; - } - -@@ -405,13 +405,15 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { - if (u->cgroup_path) { - r = cg_migrate_everywhere(u->manager->cgroup_supported, u->cgroup_path, path); - if (r < 0) -- log_error("Failed to migrate cgroup %s: %s", path, strerror(-r)); -+ log_error("Failed to migrate cgroup from %s to %s: %s", -+ u->cgroup_path, path, strerror(-r)); - } - -- if (!is_in_hash) { -- /* And remember the new data */ -+ if (!was_in_hash) { -+ /* Remember the new data */ - free(u->cgroup_path); - u->cgroup_path = path; -+ path = NULL; - } - - u->cgroup_realized = true; diff --git a/0088-button-don-t-exit-if-we-cannot-handle-a-button-press.patch b/0088-button-don-t-exit-if-we-cannot-handle-a-button-press.patch deleted file mode 100644 index d8f59d7..0000000 --- a/0088-button-don-t-exit-if-we-cannot-handle-a-button-press.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 12a195707153882b1df1b1503b51703a81c85de6 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Sun, 10 Nov 2013 23:05:08 +0100 -Subject: [PATCH] button: don't exit if we cannot handle a button press - ---- - src/login/logind-button.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/login/logind-button.c b/src/login/logind-button.c -index ea45c28..4f456d2 100644 ---- a/src/login/logind-button.c -+++ b/src/login/logind-button.c -@@ -172,7 +172,7 @@ static int button_handle( - * execute another one until the lid is opened/closed again */ - b->lid_close_queued = false; - -- return r; -+ return 0; - } - - int button_process(Button *b) { diff --git a/0089-timer-properly-format-relative-timestamps-in-the-fut.patch b/0089-timer-properly-format-relative-timestamps-in-the-fut.patch deleted file mode 100644 index 81db5ad..0000000 --- a/0089-timer-properly-format-relative-timestamps-in-the-fut.patch +++ /dev/null @@ -1,120 +0,0 @@ -From d5910017f2cfaea144f766a3fb772b53f8d9dcbf Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 11 Nov 2013 03:02:52 +0100 -Subject: [PATCH] timer: properly format relative timestamps in the future - ---- - src/shared/time-util.c | 69 ++++++++++++++++++++++++++++++++------------------ - 1 file changed, 44 insertions(+), 25 deletions(-) - -diff --git a/src/shared/time-util.c b/src/shared/time-util.c -index 860be61..b8a6bd7 100644 ---- a/src/shared/time-util.c -+++ b/src/shared/time-util.c -@@ -191,55 +191,62 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) { - } - - char *format_timestamp_relative(char *buf, size_t l, usec_t t) { -+ const char *s; - usec_t n, d; - - n = now(CLOCK_REALTIME); - -- if (t <= 0 || t > n || t + USEC_PER_DAY*7 <= t) -+ if (t <= 0 || (t == (usec_t) -1)) - return NULL; - -- d = n - t; -+ if (n > t) { -+ d = n - t; -+ s = "ago"; -+ } else { -+ d = t - n; -+ s = "left"; -+ } - - if (d >= USEC_PER_YEAR) -- snprintf(buf, l, "%llu years %llu months ago", -+ snprintf(buf, l, "%llu years %llu months %s", - (unsigned long long) (d / USEC_PER_YEAR), -- (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH)); -+ (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH), s); - else if (d >= USEC_PER_MONTH) -- snprintf(buf, l, "%llu months %llu days ago", -+ snprintf(buf, l, "%llu months %llu days %s", - (unsigned long long) (d / USEC_PER_MONTH), -- (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY)); -+ (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY), s); - else if (d >= USEC_PER_WEEK) -- snprintf(buf, l, "%llu weeks %llu days ago", -+ snprintf(buf, l, "%llu weeks %llu days %s", - (unsigned long long) (d / USEC_PER_WEEK), -- (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY)); -+ (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY), s); - else if (d >= 2*USEC_PER_DAY) -- snprintf(buf, l, "%llu days ago", (unsigned long long) (d / USEC_PER_DAY)); -+ snprintf(buf, l, "%llu days %s", (unsigned long long) (d / USEC_PER_DAY), s); - else if (d >= 25*USEC_PER_HOUR) -- snprintf(buf, l, "1 day %lluh ago", -- (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR)); -+ snprintf(buf, l, "1 day %lluh %s", -+ (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR), s); - else if (d >= 6*USEC_PER_HOUR) -- snprintf(buf, l, "%lluh ago", -- (unsigned long long) (d / USEC_PER_HOUR)); -+ snprintf(buf, l, "%lluh %s", -+ (unsigned long long) (d / USEC_PER_HOUR), s); - else if (d >= USEC_PER_HOUR) -- snprintf(buf, l, "%lluh %llumin ago", -+ snprintf(buf, l, "%lluh %llumin %s", - (unsigned long long) (d / USEC_PER_HOUR), -- (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE)); -+ (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE), s); - else if (d >= 5*USEC_PER_MINUTE) -- snprintf(buf, l, "%llumin ago", -- (unsigned long long) (d / USEC_PER_MINUTE)); -+ snprintf(buf, l, "%llumin %s", -+ (unsigned long long) (d / USEC_PER_MINUTE), s); - else if (d >= USEC_PER_MINUTE) -- snprintf(buf, l, "%llumin %llus ago", -+ snprintf(buf, l, "%llumin %llus %s", - (unsigned long long) (d / USEC_PER_MINUTE), -- (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC)); -+ (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC), s); - else if (d >= USEC_PER_SEC) -- snprintf(buf, l, "%llus ago", -- (unsigned long long) (d / USEC_PER_SEC)); -+ snprintf(buf, l, "%llus %s", -+ (unsigned long long) (d / USEC_PER_SEC), s); - else if (d >= USEC_PER_MSEC) -- snprintf(buf, l, "%llums ago", -- (unsigned long long) (d / USEC_PER_MSEC)); -+ snprintf(buf, l, "%llums %s", -+ (unsigned long long) (d / USEC_PER_MSEC), s); - else if (d > 0) -- snprintf(buf, l, "%lluus ago", -- (unsigned long long) d); -+ snprintf(buf, l, "%lluus %s", -+ (unsigned long long) d, s); - else - snprintf(buf, l, "now"); - -@@ -479,6 +486,18 @@ int parse_timestamp(const char *t, usec_t *usec) { - return r; - - goto finish; -+ } else if (endswith(t, " left")) { -+ _cleanup_free_ char *z; -+ -+ z = strndup(t, strlen(t) - 4); -+ if (!z) -+ return -ENOMEM; -+ -+ r = parse_sec(z, &plus); -+ if (r < 0) -+ return r; -+ -+ goto finish; - } - - for (i = 0; i < ELEMENTSOF(day_nr); i++) { diff --git a/0090-timer-consider-usec_t-1-an-invalid-timestamp.patch b/0090-timer-consider-usec_t-1-an-invalid-timestamp.patch deleted file mode 100644 index 54b9943..0000000 --- a/0090-timer-consider-usec_t-1-an-invalid-timestamp.patch +++ /dev/null @@ -1,48 +0,0 @@ -From a0598047e4bfd308a25b9a516529ab49074fa527 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 11 Nov 2013 03:03:17 +0100 -Subject: [PATCH] timer: consider (usec_t) -1 an invalid timestamp - ---- - src/shared/time-util.c | 4 ++-- - src/shared/time-util.h | 5 ++++- - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/src/shared/time-util.c b/src/shared/time-util.c -index b8a6bd7..81d4ede 100644 ---- a/src/shared/time-util.c -+++ b/src/shared/time-util.c -@@ -157,7 +157,7 @@ char *format_timestamp(char *buf, size_t l, usec_t t) { - assert(buf); - assert(l > 0); - -- if (t <= 0) -+ if (t <= 0 || t == (usec_t) -1) - return NULL; - - sec = (time_t) (t / USEC_PER_SEC); -@@ -175,7 +175,7 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) { - assert(buf); - assert(l > 0); - -- if (t <= 0) -+ if (t <= 0 || t == (usec_t) -1) - return NULL; - - sec = (time_t) (t / USEC_PER_SEC); -diff --git a/src/shared/time-util.h b/src/shared/time-util.h -index 7660fe1..bc10d22 100644 ---- a/src/shared/time-util.h -+++ b/src/shared/time-util.h -@@ -64,7 +64,10 @@ dual_timestamp* dual_timestamp_get(dual_timestamp *ts); - dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u); - dual_timestamp* dual_timestamp_from_monotonic(dual_timestamp *ts, usec_t u); - --#define dual_timestamp_is_set(ts) ((ts)->realtime > 0) -+static inline bool dual_timestamp_is_set(dual_timestamp *ts) { -+ return ((ts->realtime > 0 && ts->realtime != (usec_t) -1) || -+ (ts->monotonic > 0 && ts->monotonic != (usec_t) -1)); -+} - - usec_t timespec_load(const struct timespec *ts) _pure_; - struct timespec *timespec_store(struct timespec *ts, usec_t u); diff --git a/0091-udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch b/0091-udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch deleted file mode 100644 index 45ff980..0000000 --- a/0091-udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7583c92b266cd632712ced40be837f52a8de9715 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Fri, 11 Oct 2013 11:23:34 +0200 -Subject: [PATCH] udev: usb_id - remove obsoleted bInterfaceSubClass == 5 match - -bInterfaceSubClass == 5 is not a "floppy"; just identify the obsolete -QIC-157 interface as "generic". ---- - src/udev/udev-builtin-usb_id.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c -index e3bbd05..3e2f43e 100644 ---- a/src/udev/udev-builtin-usb_id.c -+++ b/src/udev/udev-builtin-usb_id.c -@@ -91,6 +91,9 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len - type_num = strtoul(from, &eptr, 0); - if (eptr != from) { - switch (type_num) { -+ case 1: /* RBC devices */ -+ type = "rbc"; -+ break; - case 2: - type = "atapi"; - break; -@@ -98,12 +101,8 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len - type = "tape"; - break; - case 4: /* UFI */ -- case 5: /* SFF-8070i */ - type = "floppy"; - break; -- case 1: /* RBC devices */ -- type = "rbc"; -- break; - case 6: /* Transparent SPC-2 devices */ - type = "scsi"; - break; diff --git a/0092-Add-support-for-saving-restoring-keyboard-backlights.patch b/0092-Add-support-for-saving-restoring-keyboard-backlights.patch deleted file mode 100644 index 0b3a777..0000000 --- a/0092-Add-support-for-saving-restoring-keyboard-backlights.patch +++ /dev/null @@ -1,66 +0,0 @@ -From e7e2208e73ccc4a93dc87d1fc4624be0dbe3e747 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Fri, 11 Oct 2013 09:45:32 +0200 -Subject: [PATCH] Add support for saving/restoring keyboard backlights - -Piggy-backing on the display backlight code, this saves and restores -keyboard backlights on supported devices. - -The detection code matches that of UPower: -http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173 - -https://bugs.freedesktop.org/show_bug.cgi?id=70367 - -[tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"] - -Conflicts: - rules/99-systemd.rules.in ---- - rules/99-systemd.rules.in | 4 +++- - src/backlight/backlight.c | 7 +++++-- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in -index 307f18f..a00ffed 100644 ---- a/rules/99-systemd.rules.in -+++ b/rules/99-systemd.rules.in -@@ -51,9 +51,11 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??: - - ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name" - --# Pull in backlight save/restore for all firmware backlight devices -+# Pull in backlight save/restore for all firmware backlight devices, -+# and keyboard backlights - - SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service" -+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service" - - # Asynchronously mount file systems implemented by these modules as - # soon as they are loaded. -diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c -index 9b2eada..f22deed 100644 ---- a/src/backlight/backlight.c -+++ b/src/backlight/backlight.c -@@ -56,9 +56,11 @@ int main(int argc, char *argv[]) { - - errno = 0; - device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]); -+ if (!device) -+ device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]); - if (!device) { - if (errno != 0) { -- log_error("Failed to get backlight device: %m"); -+ log_error("Failed to get backlight device '%s': %m", argv[2]); - r = -errno; - } else - r = log_oom(); -@@ -66,7 +68,8 @@ int main(int argc, char *argv[]) { - goto finish; - } - -- if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) { -+ if (!streq_ptr(udev_device_get_subsystem(device), "backlight") && -+ !streq_ptr(udev_device_get_subsystem(device), "leds")) { - log_error("Not a backlight device: %s", argv[2]); - r = -ENODEV; - goto finish; diff --git a/0093-static-nodes-don-t-call-mkdir.patch b/0093-static-nodes-don-t-call-mkdir.patch deleted file mode 100644 index 3fa8043..0000000 --- a/0093-static-nodes-don-t-call-mkdir.patch +++ /dev/null @@ -1,48 +0,0 @@ -From fada68e9f922a3a6a176092a7abdeec0b58408e8 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Thu, 17 Oct 2013 19:49:19 +0200 -Subject: [PATCH] static-nodes: don't call mkdir - -This is no longer necessary with kmod-15. Bump the requirement. ---- - README | 2 +- - configure.ac | 2 +- - units/kmod-static-nodes.service.in | 1 - - 3 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/README b/README -index b39cd37..cf0a18d 100644 ---- a/README -+++ b/README -@@ -95,7 +95,7 @@ REQUIREMENTS: - dbus >= 1.4.0 - libcap - libblkid >= 2.20 (from util-linux) (optional) -- libkmod >= 14 (optional) -+ libkmod >= 15 (optional) - PAM >= 1.1.2 (optional) - libcryptsetup (optional) - libaudit (optional) -diff --git a/configure.ac b/configure.ac -index 4f26092..5bc31c5 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -269,7 +269,7 @@ AC_ARG_ENABLE(kmod, AS_HELP_STRING([--disable-kmod], [disable loadable modules s - if test "x$enable_kmod" != "xno"; then - PKG_CHECK_EXISTS([ libkmod ], have_kmod=yes, have_kmod=no) - if test "x$have_kmod" = "xyes"; then -- PKG_CHECK_MODULES(KMOD, [ libkmod >= 14 ], -+ PKG_CHECK_MODULES(KMOD, [ libkmod >= 15 ], - [AC_DEFINE(HAVE_KMOD, 1, [Define if kmod is available])], - AC_MSG_ERROR([*** kmod version >= 14 not found])) - fi -diff --git a/units/kmod-static-nodes.service.in b/units/kmod-static-nodes.service.in -index ff4017b..368f980 100644 ---- a/units/kmod-static-nodes.service.in -+++ b/units/kmod-static-nodes.service.in -@@ -15,5 +15,4 @@ ConditionPathExists=/lib/modules/%v/modules.devname - [Service] - Type=oneshot - RemainAfterExit=yes --ExecStartPre=@MKDIR_P@ /run/tmpfiles.d - ExecStart=@KMOD@ static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf diff --git a/0094-Fix-kmod-error-message-to-have-correct-version-requi.patch b/0094-Fix-kmod-error-message-to-have-correct-version-requi.patch deleted file mode 100644 index 7d2503b..0000000 --- a/0094-Fix-kmod-error-message-to-have-correct-version-requi.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 6ff7db9dcee918b020f6c50e2785785b2b9ca854 Mon Sep 17 00:00:00 2001 -From: David Strauss -Date: Thu, 17 Oct 2013 13:19:29 -0700 -Subject: [PATCH] Fix kmod error message to have correct version requirement - ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 5bc31c5..9904e25 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -271,7 +271,7 @@ if test "x$enable_kmod" != "xno"; then - if test "x$have_kmod" = "xyes"; then - PKG_CHECK_MODULES(KMOD, [ libkmod >= 15 ], - [AC_DEFINE(HAVE_KMOD, 1, [Define if kmod is available])], -- AC_MSG_ERROR([*** kmod version >= 14 not found])) -+ AC_MSG_ERROR([*** kmod version >= 15 not found])) - fi - if test "x$have_kmod" = xno -a "x$enable_kmod" = xyes; then - AC_MSG_ERROR([*** kmod support requested, but libraries not found]) diff --git a/0095-systemd-python-fix-booted-and-add-two-functions-to-d.patch b/0095-systemd-python-fix-booted-and-add-two-functions-to-d.patch deleted file mode 100644 index 79e1292..0000000 --- a/0095-systemd-python-fix-booted-and-add-two-functions-to-d.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 57db3ee2c1aa714f6fc88a40043bf531f155843c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 11 Nov 2013 19:53:59 -0500 -Subject: [PATCH] systemd-python: fix booted() and add two functions to docs - -For some reason sphinx doesn't want to show inherited C functions. ---- - src/python-systemd/_daemon.c | 2 +- - src/python-systemd/docs/daemon.rst | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c -index 6b84fb8..f0ab16f 100644 ---- a/src/python-systemd/_daemon.c -+++ b/src/python-systemd/_daemon.c -@@ -51,7 +51,7 @@ static PyObject* booted(PyObject *self, PyObject *args) { - assert(args == NULL); - - r = sd_booted(); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); diff --git a/0096-activate-mention-E-in-the-help-text.patch b/0096-activate-mention-E-in-the-help-text.patch deleted file mode 100644 index e01f913..0000000 --- a/0096-activate-mention-E-in-the-help-text.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 8aa997f8e2e0ff3d801c1a3fe4065edc940c41f1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= -Date: Wed, 13 Nov 2013 13:36:17 +0200 -Subject: [PATCH] activate: mention -E in the help text - ---- - src/activate/activate.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/activate/activate.c b/src/activate/activate.c -index 83d25b1..fc581b9 100644 ---- a/src/activate/activate.c -+++ b/src/activate/activate.c -@@ -316,6 +316,8 @@ static int help(void) { - " -l --listen=ADDR Listen for raw connections at ADDR\n" - " -a --accept Spawn separate child for each connection\n" - " -h --help Show this help and exit\n" -+ " -E --environment=NAME[=VALUE]\n" -+ " Pass an environment variable to children\n" - " --version Print version string and exit\n" - "\n" - "Note: file descriptors from sd_listen_fds() will be passed through.\n" diff --git a/0097-activate-fix-crash-when-s-is-passed.patch b/0097-activate-fix-crash-when-s-is-passed.patch deleted file mode 100644 index bc81890..0000000 --- a/0097-activate-fix-crash-when-s-is-passed.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 767d458826e99cc55aeccb65c469124be61851a0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= -Date: Wed, 13 Nov 2013 13:36:16 +0200 -Subject: [PATCH] activate: fix crash when -s is passed - -getopt_long() was told to accept -s which was never implemented. ---- - src/activate/activate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/activate/activate.c b/src/activate/activate.c -index fc581b9..a9461bc 100644 ---- a/src/activate/activate.c -+++ b/src/activate/activate.c -@@ -346,7 +346,7 @@ static int parse_argv(int argc, char *argv[]) { - assert(argc >= 0); - assert(argv); - -- while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0) -+ while ((c = getopt_long(argc, argv, "+hl:aE:", options, NULL)) >= 0) - switch(c) { - case 'h': - help(); diff --git a/0098-journal-timestamp-support-on-console-messages.patch b/0098-journal-timestamp-support-on-console-messages.patch deleted file mode 100644 index abff166..0000000 --- a/0098-journal-timestamp-support-on-console-messages.patch +++ /dev/null @@ -1,85 +0,0 @@ -From d787844df7f23a079c8bab893a8412550848bb6a Mon Sep 17 00:00:00 2001 -From: Umut Tezduyar Lindskog -Date: Wed, 13 Nov 2013 15:27:19 +0100 -Subject: [PATCH] journal: timestamp support on console messages - -journald mimics the kernel here: timestamps will be printed if -/sys/module/printk/parameters/time contains "Y". ---- - src/journal/journald-console.c | 34 +++++++++++++++++++++++++++++++--- - 1 file changed, 31 insertions(+), 3 deletions(-) - -diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c -index be55f94..1ee3afe 100644 ---- a/src/journal/journald-console.c -+++ b/src/journal/journald-console.c -@@ -19,13 +19,30 @@ - along with systemd; If not, see . - ***/ - -+#include - #include - #include - #include - -+#include "fileio.h" - #include "journald-server.h" - #include "journald-console.h" - -+static bool prefix_timestamp(void) { -+ -+ static int cached_printk_time = -1; -+ -+ if (_unlikely_(cached_printk_time < 0)) { -+ _cleanup_free_ char *p = NULL; -+ -+ cached_printk_time = -+ read_one_line_file("/sys/module/printk/parameters/time", &p) >= 0 -+ && parse_boolean(p) > 0; -+ } -+ -+ return cached_printk_time; -+} -+ - void server_forward_console( - Server *s, - int priority, -@@ -33,8 +50,10 @@ void server_forward_console( - const char *message, - struct ucred *ucred) { - -- struct iovec iovec[4]; -+ struct iovec iovec[5]; - char header_pid[16]; -+ struct timespec ts; -+ char tbuf[4 + DECIMAL_STR_MAX(ts.tv_sec) + DECIMAL_STR_MAX(ts.tv_nsec)-3 + 1]; - int n = 0, fd; - char *ident_buf = NULL; - const char *tty; -@@ -45,7 +64,16 @@ void server_forward_console( - if (LOG_PRI(priority) > s->max_level_console) - return; - -- /* First: identifier and PID */ -+ /* First: timestamp */ -+ if (prefix_timestamp()) { -+ assert_se(clock_gettime(CLOCK_MONOTONIC, &ts) == 0); -+ snprintf(tbuf, sizeof(tbuf), "[%5llu.%06llu] ", -+ (unsigned long long) ts.tv_sec, -+ (unsigned long long) ts.tv_nsec / 1000); -+ IOVEC_SET_STRING(iovec[n++], tbuf); -+ } -+ -+ /* Second: identifier and PID */ - if (ucred) { - if (!identifier) { - get_process_comm(ucred->pid, &ident_buf); -@@ -64,7 +92,7 @@ void server_forward_console( - IOVEC_SET_STRING(iovec[n++], ": "); - } - -- /* Third: message */ -+ /* Fourth: message */ - IOVEC_SET_STRING(iovec[n++], message); - IOVEC_SET_STRING(iovec[n++], "\n"); - diff --git a/0099-man-add-bootctl-8.patch b/0099-man-add-bootctl-8.patch deleted file mode 100644 index 6041d2a..0000000 --- a/0099-man-add-bootctl-8.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 30712bf9c2baefc73ce110854c40be354a60bd78 Mon Sep 17 00:00:00 2001 -From: Marko Myllynen -Date: Wed, 13 Nov 2013 11:06:13 +0200 -Subject: [PATCH] man: add bootctl(8) - -https://bugzilla.redhat.com/show_bug.cgi?id=1014303 ---- - Makefile-man.am | 9 ++++ - man/bootctl.xml | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 134 insertions(+) - create mode 100644 man/bootctl.xml - -diff --git a/Makefile-man.am b/Makefile-man.am -index b8c8acc..3f626e8 100644 ---- a/Makefile-man.am -+++ b/Makefile-man.am -@@ -650,6 +650,15 @@ MANPAGES_ALIAS += \ - - endif - -+if ENABLE_EFI -+MANPAGES += \ -+ man/bootctl.1 -+MANPAGES_ALIAS += \ -+ # -+ -+ -+endif -+ - if ENABLE_HOSTNAMED - MANPAGES += \ - man/hostnamectl.1 \ -diff --git a/man/bootctl.xml b/man/bootctl.xml -new file mode 100644 -index 0000000..28f1b92 ---- /dev/null -+++ b/man/bootctl.xml -@@ -0,0 +1,125 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ bootctl -+ systemd -+ -+ -+ -+ Developer -+ Kay -+ Sievers -+ kay@vrfy.org -+ -+ -+ -+ -+ -+ bootctl -+ 1 -+ -+ -+ -+ bootctl -+ Control the firmware and boot manager settings -+ -+ -+ -+ -+ bootctl -+ OPTIONS -+ COMMAND -+ -+ -+ -+ -+ Description -+ -+ bootctl may be used to -+ query or (in the future) change the firmware and boot -+ manager settings. -+ -+ Firmware information is available only on EFI -+ systems. -+ -+ Currently, only the gummiboot8 boot -+ manager implements the required boot loader interface -+ to provide complete boot manager information. -+ -+ -+ -+ Options -+ -+ The following options are understood: -+ -+ -+ -+ -+ -+ -+ Prints a short help -+ text and exits. -+ -+ -+ -+ -+ -+ Prints a short version -+ string and exits. -+ -+ -+ -+ The following commands are understood: -+ -+ -+ -+ status -+ -+ Show firmware and boot -+ manager information about the system, -+ including secure boot mode status and -+ selected firmware entry (where -+ available). -+ -+ -+ -+ -+ -+ -+ Exit status -+ -+ On success, 0 is returned, a non-zero failure -+ code otherwise. -+ -+ -+ -+ See Also -+ -+ Boot loader interface, -+ Boot loader specification, -+ gummiboot -+ -+ -+ -+ diff --git a/0100-zsh-completion-add-bootctl.patch b/0100-zsh-completion-add-bootctl.patch deleted file mode 100644 index b1d20d7..0000000 --- a/0100-zsh-completion-add-bootctl.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 99f96571a3a7667ab6f3a46944c267bcc7c980e6 Mon Sep 17 00:00:00 2001 -From: Marko Myllynen -Date: Wed, 13 Nov 2013 23:02:23 -0500 -Subject: [PATCH] zsh-completion: add bootctl - ---- - Makefile.am | 4 ++++ - shell-completion/zsh/_bootctl | 25 +++++++++++++++++++++++++ - 2 files changed, 29 insertions(+) - create mode 100644 shell-completion/zsh/_bootctl - -diff --git a/Makefile.am b/Makefile.am -index b4fc33b..efe5aa3 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1743,6 +1743,10 @@ bootctl_LDADD = \ - - bin_PROGRAMS += \ - bootctl -+ -+dist_zshcompletion_DATA += \ -+ shell-completion/zsh/_bootctl -+ - endif - - # ------------------------------------------------------------------------------ -diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl -new file mode 100644 -index 0000000..7d2453c ---- /dev/null -+++ b/shell-completion/zsh/_bootctl -@@ -0,0 +1,25 @@ -+#compdef bootctl -+ -+(( $+functions[_bootctl_command] )) || _bootctl_command() -+{ -+ local -a _bootctl_cmds -+ _bootctl_cmds=( -+ "status:Show current firmware and boot settings" -+ ) -+ if (( CURRENT == 1 )); then -+ _describe -t commands 'bootctl command' _bootctl_cmds || compadd "$@" -+ else -+ local curcontext="$curcontext" -+ cmd="${${_bootctl_cmds[(r)$words[1]:*]%%:*}}" -+ if (( $+functions[_bootctl_$cmd] )); then -+ _bootctl_$cmd -+ else -+ _message "no more options" -+ fi -+ fi -+} -+ -+_arguments \ -+ {-h,--help}'[Prints a short help text and exits.]' \ -+ '--version[Prints a short version string and exits.]' \ -+ '*::bootctl command:_bootctl_command' diff --git a/0101-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch b/0101-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch deleted file mode 100644 index 39f7887..0000000 --- a/0101-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b5f796a636fed8b75fcfbb44f48b808743fca964 Mon Sep 17 00:00:00 2001 -From: Olivier Brunel -Date: Fri, 20 Sep 2013 22:18:28 +0200 -Subject: [PATCH] Resolve /dev/console to the active tty instead of just "tty0" - -When resolving /dev/console one would often get "tty0" meaning the active VT. -Resolving to the actual tty (e.g. "tty1") will notably help on boot when -determining whether or not PID1 can output to the console. ---- - src/shared/util.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 6c88040..3fc080a 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -3621,6 +3621,16 @@ char *resolve_dev_console(char **active) { - else - tty = *active; - -+ if (streq(tty, "tty0")) { -+ char *tmp; -+ -+ /* Get the active VC (e.g. tty1) */ -+ if (read_one_line_file("/sys/class/tty/tty0/active", &tmp) >= 0) { -+ free(*active); -+ tty = *active = tmp; -+ } -+ } -+ - return tty; - } - diff --git a/0102-Only-disable-output-on-console-during-boot-if-needed.patch b/0102-Only-disable-output-on-console-during-boot-if-needed.patch deleted file mode 100644 index 7f32abe..0000000 --- a/0102-Only-disable-output-on-console-during-boot-if-needed.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 00fac3c4c2ef02d5f0056a47a2ae29b048ed4d74 Mon Sep 17 00:00:00 2001 -From: Olivier Brunel -Date: Fri, 20 Sep 2013 22:18:29 +0200 -Subject: [PATCH] Only disable output on console during boot if needed - -If there are no more jobs on console, no need/we shouldn't disable output. ---- - src/core/manager.c | 2 +- - src/core/unit.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/manager.c b/src/core/manager.c -index 58dacdc..ce32baf 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -1761,7 +1761,7 @@ static int process_event(Manager *m, struct epoll_event *ev) { - } - - case WATCH_IDLE_PIPE: { -- m->no_console_output = true; -+ m->no_console_output = m->n_on_console > 0; - - manager_unwatch_idle_pipe(m); - close_idle_pipe(m); -diff --git a/src/core/unit.c b/src/core/unit.c -index 1db7d06..717ce84 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1454,7 +1454,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su - - if (m->n_on_console == 0) - /* unset no_console_output flag, since the console is free */ -- m->no_console_output = 0; -+ m->no_console_output = false; - } else - m->n_on_console ++; - } diff --git a/0103-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch b/0103-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch deleted file mode 100644 index 1bf6f9c..0000000 --- a/0103-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 4131de47cae7e769b6cabb4894830efd3476fc0b Mon Sep 17 00:00:00 2001 -From: Olivier Brunel -Date: Fri, 20 Sep 2013 22:18:30 +0200 -Subject: [PATCH] Fix possible lack of status messages on shutdown/reboot - -Since 31a7eb86 the output on console can be disabled to avoid colliding with -gettys. However, it could also lead to a lack of messages during -shutdown/reboot. ---- - src/core/job.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/core/job.c b/src/core/job.c -index bf1d956..dc3bc12 100644 ---- a/src/core/job.c -+++ b/src/core/job.c -@@ -1097,6 +1097,9 @@ void job_shutdown_magic(Job *j) { - if (!unit_has_name(j->unit, SPECIAL_SHUTDOWN_TARGET)) - return; - -+ /* In case messages on console has been disabled on boot */ -+ j->unit->manager->no_console_output = false; -+ - if (detect_container(NULL) > 0) - return; - diff --git a/0104-fsck-modernization.patch b/0104-fsck-modernization.patch deleted file mode 100644 index 2af6795..0000000 --- a/0104-fsck-modernization.patch +++ /dev/null @@ -1,137 +0,0 @@ -From ed1c300e6bd7d27d3dde228a3bb0f73fe8e00ca6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 11 Nov 2013 23:32:31 -0500 -Subject: [PATCH] fsck: modernization - ---- - src/fsck/fsck.c | 43 ++++++++++++++++++------------------------- - 1 file changed, 18 insertions(+), 25 deletions(-) - -diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c -index f298cf7..e23ddc5 100644 ---- a/src/fsck/fsck.c -+++ b/src/fsck/fsck.c -@@ -175,7 +175,7 @@ static double percent(int pass, unsigned long cur, unsigned long max) { - } - - static int process_progress(int fd) { -- FILE *f, *console; -+ _cleanup_fclose_ FILE *console = NULL, *f = NULL; - usec_t last = 0; - bool locked = false; - int clear = 0; -@@ -187,15 +187,13 @@ static int process_progress(int fd) { - } - - console = fopen("/dev/console", "w"); -- if (!console) { -- fclose(f); -+ if (!console) - return -ENOMEM; -- } - - while (!feof(f)) { - int pass, m; - unsigned long cur, max; -- char *device; -+ _cleanup_free_ char *device = NULL; - double p; - usec_t t; - -@@ -204,20 +202,16 @@ static int process_progress(int fd) { - - /* Only show one progress counter at max */ - if (!locked) { -- if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0) { -- free(device); -+ if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0) - continue; -- } - - locked = true; - } - - /* Only update once every 50ms */ - t = now(CLOCK_MONOTONIC); -- if (last + 50 * USEC_PER_MSEC > t) { -- free(device); -+ if (last + 50 * USEC_PER_MSEC > t) - continue; -- } - - last = t; - -@@ -225,8 +219,6 @@ static int process_progress(int fd) { - fprintf(console, "\r%s: fsck %3.1f%% complete...\r%n", device, p, &m); - fflush(console); - -- free(device); -- - if (m > clear) - clear = m; - } -@@ -241,8 +233,6 @@ static int process_progress(int fd) { - fflush(console); - } - -- fclose(f); -- fclose(console); - return 0; - } - -@@ -286,34 +276,37 @@ int main(int argc, char *argv[]) { - - if (stat("/", &st) < 0) { - log_error("Failed to stat() the root directory: %m"); -- goto finish; -+ return EXIT_FAILURE; - } - - /* Virtual root devices don't need an fsck */ - if (major(st.st_dev) == 0) -- return 0; -+ return EXIT_SUCCESS; - - /* check if we are already writable */ - times[0] = st.st_atim; - times[1] = st.st_mtim; - if (utimensat(AT_FDCWD, "/", times, 0) == 0) { - log_info("Root directory is writable, skipping check."); -- return 0; -+ return EXIT_SUCCESS; - } - -- if (!(udev = udev_new())) { -+ udev = udev_new(); -+ if (!udev) { - log_oom(); -- goto finish; -+ return EXIT_FAILURE; - } - -- if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev))) { -+ udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev); -+ if (!udev_device) { - log_error("Failed to detect root device."); -- goto finish; -+ return EXIT_FAILURE; - } - -- if (!(device = udev_device_get_devnode(udev_device))) { -+ device = udev_device_get_devnode(udev_device); -+ if (!device) { - log_error("Failed to detect device node of root directory."); -- goto finish; -+ return EXIT_FAILURE; - } - - root_directory = true; -@@ -322,7 +315,7 @@ int main(int argc, char *argv[]) { - if (arg_show_progress) - if (pipe(progress_pipe) < 0) { - log_error("pipe(): %m"); -- goto finish; -+ return EXIT_FAILURE; - } - - cmdline[i++] = "/sbin/fsck"; diff --git a/0105-Introduce-udev-object-cleanup-functions.patch b/0105-Introduce-udev-object-cleanup-functions.patch deleted file mode 100644 index 4a1259c..0000000 --- a/0105-Introduce-udev-object-cleanup-functions.patch +++ /dev/null @@ -1,1040 +0,0 @@ -From 48ee0228ec2bcfcb48866b717ac8a5a8dbbd506e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 12 Oct 2013 20:28:21 -0400 -Subject: [PATCH] Introduce udev object cleanup functions - -Conflicts: - src/gpt-auto-generator/gpt-auto-generator.c <-- skipped - src/shared/fdset.h - src/shared/util.h ---- - Makefile.am | 1 + - src/backlight/backlight.c | 55 ++++++--------- - src/core/umount.c | 143 ++++++++++++++------------------------- - src/cryptsetup/cryptsetup.c | 27 +++----- - src/fsck/fsck.c | 13 ++-- - src/journal/journal-internal.h | 7 +- - src/login/sysfs-show.c | 22 ++---- - src/readahead/readahead-common.c | 66 +++++++----------- - src/shared/fdset.h | 3 + - src/shared/install.c | 6 +- - src/shared/set.h | 10 +-- - src/shared/strv.h | 7 +- - src/shared/udev-util.h | 37 ++++++++++ - src/shared/util.h | 32 ++++----- - src/test/test-libudev.c | 8 +-- - src/test/test-udev.c | 21 +++--- - src/tmpfiles/tmpfiles.c | 5 +- - 17 files changed, 194 insertions(+), 269 deletions(-) - create mode 100644 src/shared/udev-util.h - -diff --git a/Makefile.am b/Makefile.am -index efe5aa3..910e780 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -648,6 +648,7 @@ libsystemd_shared_la_SOURCES = \ - src/shared/sparse-endian.h \ - src/shared/util.c \ - src/shared/util.h \ -+ src/shared/udev-util.h \ - src/shared/virt.c \ - src/shared/virt.h \ - src/shared/efivars.c \ -diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c -index f22deed..c45b2d0 100644 ---- a/src/backlight/backlight.c -+++ b/src/backlight/backlight.c -@@ -19,15 +19,15 @@ - along with systemd; If not, see . - ***/ - --#include -- - #include "util.h" - #include "mkdir.h" - #include "fileio.h" -+#include "libudev.h" -+#include "udev-util.h" - - int main(int argc, char *argv[]) { -- struct udev *udev = NULL; -- struct udev_device *device = NULL; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *device = NULL; - _cleanup_free_ char *saved = NULL; - int r; - -@@ -45,13 +45,13 @@ int main(int argc, char *argv[]) { - r = mkdir_p("/var/lib/systemd/backlight", 0755); - if (r < 0) { - log_error("Failed to create backlight directory: %s", strerror(-r)); -- goto finish; -+ return EXIT_FAILURE; - } - - udev = udev_new(); - if (!udev) { -- r = log_oom(); -- goto finish; -+ log_oom(); -+ return EXIT_FAILURE; - } - - errno = 0; -@@ -59,26 +59,24 @@ int main(int argc, char *argv[]) { - if (!device) - device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]); - if (!device) { -- if (errno != 0) { -+ if (errno != 0) - log_error("Failed to get backlight device '%s': %m", argv[2]); -- r = -errno; -- } else -+ else - r = log_oom(); - -- goto finish; -+ return EXIT_FAILURE; - } - - if (!streq_ptr(udev_device_get_subsystem(device), "backlight") && - !streq_ptr(udev_device_get_subsystem(device), "leds")) { - log_error("Not a backlight device: %s", argv[2]); -- r = -ENODEV; -- goto finish; -+ return EXIT_FAILURE; - } - - saved = strappend("/var/lib/systemd/backlight/", udev_device_get_sysname(device)); - if (!saved) { -- r = log_oom(); -- goto finish; -+ log_oom(); -+ return EXIT_FAILURE; - } - - if (streq(argv[1], "load")) { -@@ -87,19 +85,17 @@ int main(int argc, char *argv[]) { - r = read_one_line_file(saved, &value); - if (r < 0) { - -- if (r == -ENOENT) { -- r = 0; -- goto finish; -- } -+ if (r == -ENOENT) -+ return EXIT_SUCCESS; - - log_error("Failed to read %s: %s", saved, strerror(-r)); -- goto finish; -+ return EXIT_FAILURE; - } - - r = udev_device_set_sysattr_value(device, "brightness", value); - if (r < 0) { - log_error("Failed to write system attribute: %s", strerror(-r)); -- goto finish; -+ return EXIT_FAILURE; - } - - } else if (streq(argv[1], "save")) { -@@ -108,28 +104,19 @@ int main(int argc, char *argv[]) { - value = udev_device_get_sysattr_value(device, "brightness"); - if (!value) { - log_error("Failed to read system attribute: %s", strerror(-r)); -- goto finish; -+ return EXIT_FAILURE; - } - - r = write_string_file(saved, value); - if (r < 0) { - log_error("Failed to write %s: %s", saved, strerror(-r)); -- goto finish; -+ return EXIT_FAILURE; - } - - } else { - log_error("Unknown verb %s.", argv[1]); -- r = -EINVAL; -- goto finish; -+ return EXIT_FAILURE; - } - --finish: -- if (device) -- udev_device_unref(device); -- -- if (udev) -- udev_unref(udev); -- -- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -- -+ return EXIT_SUCCESS; - } -diff --git a/src/core/umount.c b/src/core/umount.c -index 1e95ad7..99dbe27 100644 ---- a/src/core/umount.c -+++ b/src/core/umount.c -@@ -27,7 +27,6 @@ - #include - #include - #include --#include - - #include "list.h" - #include "mount-setup.h" -@@ -35,6 +34,8 @@ - #include "path-util.h" - #include "util.h" - #include "virt.h" -+#include "libudev.h" -+#include "udev-util.h" - - typedef struct MountPoint { - char *path; -@@ -201,145 +202,108 @@ finish: - } - - static int loopback_list_get(MountPoint **head) { -- int r; -- struct udev *udev; -- struct udev_enumerate *e = NULL; -+ _cleanup_udev_unref_ struct udev *udev; -+ _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; - struct udev_list_entry *item = NULL, *first = NULL; - - assert(head); - -- if (!(udev = udev_new())) { -- r = -ENOMEM; -- goto finish; -- } -+ udev = udev_new(); -+ if (!udev) -+ return -ENOMEM; - -- if (!(e = udev_enumerate_new(udev))) { -- r = -ENOMEM; -- goto finish; -- } -+ e = udev_enumerate_new(udev); -+ if (!e) -+ return -ENOMEM; - - if (udev_enumerate_add_match_subsystem(e, "block") < 0 || - udev_enumerate_add_match_sysname(e, "loop*") < 0 || -- udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) { -- r = -EIO; -- goto finish; -- } -+ udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) -+ return -EIO; - -- if (udev_enumerate_scan_devices(e) < 0) { -- r = -EIO; -- goto finish; -- } -+ if (udev_enumerate_scan_devices(e) < 0) -+ return -EIO; - - first = udev_enumerate_get_list_entry(e); - udev_list_entry_foreach(item, first) { - MountPoint *lb; -- struct udev_device *d; -+ _cleanup_udev_device_unref_ struct udev_device *d; - char *loop; - const char *dn; - -- if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) { -- r = -ENOMEM; -- goto finish; -- } -+ d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); -+ if (!d) -+ return -ENOMEM; - -- if (!(dn = udev_device_get_devnode(d))) { -- udev_device_unref(d); -+ dn = udev_device_get_devnode(d); -+ if (!dn) - continue; -- } - - loop = strdup(dn); -- udev_device_unref(d); -- -- if (!loop) { -- r = -ENOMEM; -- goto finish; -- } -+ if (!loop) -+ return -ENOMEM; - -- if (!(lb = new0(MountPoint, 1))) { -+ lb = new0(MountPoint, 1); -+ if (!lb) { - free(loop); -- r = -ENOMEM; -- goto finish; -+ return -ENOMEM; - } - - lb->path = loop; - LIST_PREPEND(MountPoint, mount_point, *head, lb); - } - -- r = 0; -- --finish: -- if (e) -- udev_enumerate_unref(e); -- -- if (udev) -- udev_unref(udev); -- -- return r; -+ return 0; - } - - static int dm_list_get(MountPoint **head) { -- int r; -- struct udev *udev; -- struct udev_enumerate *e = NULL; -+ _cleanup_udev_unref_ struct udev *udev; -+ _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; - struct udev_list_entry *item = NULL, *first = NULL; - - assert(head); - -- if (!(udev = udev_new())) { -- r = -ENOMEM; -- goto finish; -- } -+ udev = udev_new(); -+ if (!udev) -+ return -ENOMEM; - -- if (!(e = udev_enumerate_new(udev))) { -- r = -ENOMEM; -- goto finish; -- } -+ e = udev_enumerate_new(udev); -+ if (!e) -+ return -ENOMEM; - - if (udev_enumerate_add_match_subsystem(e, "block") < 0 || -- udev_enumerate_add_match_sysname(e, "dm-*") < 0) { -- r = -EIO; -- goto finish; -- } -+ udev_enumerate_add_match_sysname(e, "dm-*") < 0) -+ return -EIO; - -- if (udev_enumerate_scan_devices(e) < 0) { -- r = -EIO; -- goto finish; -- } -+ if (udev_enumerate_scan_devices(e) < 0) -+ return -EIO; - - first = udev_enumerate_get_list_entry(e); - - udev_list_entry_foreach(item, first) { - MountPoint *m; -- struct udev_device *d; -+ _cleanup_udev_device_unref_ struct udev_device *d; - dev_t devnum; - char *node; - const char *dn; - -- if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) { -- r = -ENOMEM; -- goto finish; -- } -+ d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); -+ if (!d) -+ return -ENOMEM; - - devnum = udev_device_get_devnum(d); - dn = udev_device_get_devnode(d); -- -- if (major(devnum) == 0 || !dn) { -- udev_device_unref(d); -+ if (major(devnum) == 0 || !dn) - continue; -- } - - node = strdup(dn); -- udev_device_unref(d); -- -- if (!node) { -- r = -ENOMEM; -- goto finish; -- } -+ if (!node) -+ return -ENOMEM; - -- if (!(m = new(MountPoint, 1))) { -+ m = new(MountPoint, 1); -+ if (!m) { - free(node); -- r = -ENOMEM; -- goto finish; -+ return -ENOMEM; - } - - m->path = node; -@@ -347,16 +311,7 @@ static int dm_list_get(MountPoint **head) { - LIST_PREPEND(MountPoint, mount_point, *head, m); - } - -- r = 0; -- --finish: -- if (e) -- udev_enumerate_unref(e); -- -- if (udev) -- udev_unref(udev); -- -- return r; -+ return 0; - } - - static int delete_loopback(const char *device) { -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index 769c3e4..39f7db7 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -25,7 +25,6 @@ - #include - - #include --#include - - #include "fileio.h" - #include "log.h" -@@ -34,6 +33,8 @@ - #include "strv.h" - #include "ask-password-api.h" - #include "def.h" -+#include "libudev.h" -+#include "udev-util.h" - - static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */ - static char *opt_cipher = NULL; -@@ -184,7 +185,7 @@ static void log_glue(int level, const char *msg, void *usrptr) { - log_debug("%s", msg); - } - --static char *disk_description(const char *path) { -+static char* disk_description(const char *path) { - - static const char name_fields[] = { - "ID_PART_ENTRY_NAME\0" -@@ -193,10 +194,9 @@ static char *disk_description(const char *path) { - "ID_MODEL\0" - }; - -- struct udev *udev = NULL; -- struct udev_device *device = NULL; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *device = NULL; - struct stat st; -- char *description = NULL; - const char *i; - - assert(path); -@@ -213,26 +213,17 @@ static char *disk_description(const char *path) { - - device = udev_device_new_from_devnum(udev, 'b', st.st_rdev); - if (!device) -- goto finish; -+ return NULL; - - NULSTR_FOREACH(i, name_fields) { - const char *name; - - name = udev_device_get_property_value(device, i); -- if (!isempty(name)) { -- description = strdup(name); -- break; -- } -+ if (!isempty(name)) -+ return strdup(name); - } - --finish: -- if (device) -- udev_device_unref(device); -- -- if (udev) -- udev_unref(udev); -- -- return description; -+ return NULL; - } - - static char *disk_mount_point(const char *label) { -diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c -index e23ddc5..9b4e555 100644 ---- a/src/fsck/fsck.c -+++ b/src/fsck/fsck.c -@@ -27,7 +27,6 @@ - #include - #include - --#include - #include - - #include "util.h" -@@ -36,6 +35,8 @@ - #include "bus-errors.h" - #include "virt.h" - #include "fileio.h" -+#include "libudev.h" -+#include "udev-util.h" - - static bool arg_skip = false; - static bool arg_force = false; -@@ -241,8 +242,8 @@ int main(int argc, char *argv[]) { - int i = 0, r = EXIT_FAILURE, q; - pid_t pid; - siginfo_t status; -- struct udev *udev = NULL; -- struct udev_device *udev_device = NULL; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL; - const char *device; - bool root_directory; - int progress_pipe[2] = { -1, -1 }; -@@ -393,12 +394,6 @@ int main(int argc, char *argv[]) { - touch("/run/systemd/quotacheck"); - - finish: -- if (udev_device) -- udev_device_unref(udev_device); -- -- if (udev) -- udev_unref(udev); -- - close_pipe(progress_pipe); - - return r; -diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h -index 5bc6535..1bc912c 100644 ---- a/src/journal/journal-internal.h -+++ b/src/journal/journal-internal.h -@@ -135,11 +135,8 @@ struct sd_journal { - char *journal_make_match_string(sd_journal *j); - void journal_print_header(sd_journal *j); - --static inline void journal_closep(sd_journal **j) { -- sd_journal_close(*j); --} -- --#define _cleanup_journal_close_ _cleanup_(journal_closep) -+define_trivial_cleanup_func(sd_journal*, sd_journal_close) -+#define _cleanup_journal_close_ _cleanup_(sd_journal_closep) - - #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval) \ - for (sd_journal_restart_data(j); ((retval) = sd_journal_enumerate_data((j), &(data), &(l))) > 0; ) -diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c -index 3c03bd1..7c1adfa 100644 ---- a/src/login/sysfs-show.c -+++ b/src/login/sysfs-show.c -@@ -26,6 +26,7 @@ - #include "util.h" - #include "sysfs-show.h" - #include "path-util.h" -+#include "udev-util.h" - - static int show_sysfs_one( - struct udev *udev, -@@ -143,9 +144,9 @@ static int show_sysfs_one( - } - - int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) { -- struct udev *udev; -+ _cleanup_udev_unref_ struct udev *udev; -+ _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; - struct udev_list_entry *first = NULL; -- struct udev_enumerate *e; - int r; - - if (n_columns <= 0) -@@ -162,10 +163,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) { - return -ENOMEM; - - e = udev_enumerate_new(udev); -- if (!e) { -- r = -ENOMEM; -- goto finish; -- } -+ if (!e) -+ return ENOMEM; - - if (!streq(seat, "seat0")) - r = udev_enumerate_add_match_tag(e, seat); -@@ -173,22 +172,15 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) { - r = udev_enumerate_add_match_tag(e, "seat"); - - if (r < 0) -- goto finish; -+ return r; - - r = udev_enumerate_scan_devices(e); - if (r < 0) -- goto finish; -+ return r; - - first = udev_enumerate_get_list_entry(e); - if (first) - show_sysfs_one(udev, seat, &first, "/", prefix, n_columns); - --finish: -- if (e) -- udev_enumerate_unref(e); -- -- if (udev) -- udev_unref(udev); -- - return r; - } -diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c -index a234a89..aea1fbe 100644 ---- a/src/readahead/readahead-common.c -+++ b/src/readahead/readahead-common.c -@@ -27,13 +27,14 @@ - #include - #include - #include --#include - - #include "log.h" - #include "readahead-common.h" - #include "util.h" - #include "missing.h" - #include "fileio.h" -+#include "libudev.h" -+#include "udev-util.h" - - int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) { - assert(fd >= 0); -@@ -60,9 +61,9 @@ int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) { - - int fs_on_ssd(const char *p) { - struct stat st; -- struct udev *udev = NULL; -- struct udev_device *udev_device = NULL, *look_at = NULL; -- bool b = false; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL; -+ struct udev_device *look_at = NULL; - const char *devtype, *rotational, *model, *id; - int r; - -@@ -128,7 +129,7 @@ int fs_on_ssd(const char *p) { - - udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev); - if (!udev_device) -- goto finish; -+ return false; - - devtype = udev_device_get_property_value(udev_device, "DEVTYPE"); - if (devtype && streq(devtype, "partition")) -@@ -137,46 +138,34 @@ int fs_on_ssd(const char *p) { - look_at = udev_device; - - if (!look_at) -- goto finish; -+ return false; - - /* First, try high-level property */ - id = udev_device_get_property_value(look_at, "ID_SSD"); -- if (id) { -- b = streq(id, "1"); -- goto finish; -- } -+ if (id) -+ return streq(id, "1"); - - /* Second, try kernel attribute */ - rotational = udev_device_get_sysattr_value(look_at, "queue/rotational"); -- if (rotational) { -- b = streq(rotational, "0"); -- goto finish; -- } -+ if (rotational) -+ return streq(rotational, "0"); - - /* Finally, fallback to heuristics */ - look_at = udev_device_get_parent(look_at); - if (!look_at) -- goto finish; -+ return false; - - model = udev_device_get_sysattr_value(look_at, "model"); - if (model) -- b = !!strstr(model, "SSD"); -- --finish: -- if (udev_device) -- udev_device_unref(udev_device); -- -- if (udev) -- udev_unref(udev); -+ return !!strstr(model, "SSD"); - -- return b; -+ return false; - } - - int fs_on_read_only(const char *p) { - struct stat st; -- struct udev *udev = NULL; -- struct udev_device *udev_device = NULL; -- bool b = false; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL; - const char *read_only; - - assert(p); -@@ -187,24 +176,19 @@ int fs_on_read_only(const char *p) { - if (major(st.st_dev) == 0) - return false; - -- if (!(udev = udev_new())) -+ udev = udev_new(); -+ if (!udev) - return -ENOMEM; - -- if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev))) -- goto finish; -- -- if ((read_only = udev_device_get_sysattr_value(udev_device, "ro"))) -- if ((b = streq(read_only, "1"))) -- goto finish; -- --finish: -- if (udev_device) -- udev_device_unref(udev_device); -+ udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev); -+ if (!udev_device) -+ return false; - -- if (udev) -- udev_unref(udev); -+ read_only = udev_device_get_sysattr_value(udev_device, "ro"); -+ if (read_only) -+ return streq(read_only, "1"); - -- return b; -+ return false; - } - - bool enough_ram(void) { -diff --git a/src/shared/fdset.h b/src/shared/fdset.h -index a7bd5e2..d0dc875 100644 ---- a/src/shared/fdset.h -+++ b/src/shared/fdset.h -@@ -47,3 +47,6 @@ int fdset_iterate(FDSet *s, Iterator *i); - - #define FDSET_FOREACH(fd, fds, i) \ - for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i))) -+ -+define_trivial_cleanup_func(FDSet*, fdset_free) -+#define _cleanup_fdset_free_ _cleanup_(fdset_freep) -diff --git a/src/shared/install.c b/src/shared/install.c -index 9722ed4..b9c85b7 100644 ---- a/src/shared/install.c -+++ b/src/shared/install.c -@@ -44,10 +44,8 @@ typedef struct { - Hashmap *have_installed; - } InstallContext; - --#define _cleanup_lookup_paths_free_ \ -- __attribute__((cleanup(lookup_paths_free))) --#define _cleanup_install_context_done_ \ -- __attribute__((cleanup(install_context_done))) -+#define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free) -+#define _cleanup_install_context_done_ _cleanup_(install_context_done) - - static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) { - assert(paths); -diff --git a/src/shared/set.h b/src/shared/set.h -index e5d46e9..a291470 100644 ---- a/src/shared/set.h -+++ b/src/shared/set.h -@@ -28,19 +28,13 @@ - * for each set use. */ - - #include "hashmap.h" -+#include "util.h" - - typedef struct Set Set; - - Set *set_new(hash_func_t hash_func, compare_func_t compare_func); - void set_free(Set* s); --static inline void set_freep(Set **s) { -- set_free(*s); --} -- - void set_free_free(Set *s); --static inline void set_free_freep(Set **s) { -- set_free_free(*s); --} - - Set* set_copy(Set *s); - int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func); -@@ -79,5 +73,7 @@ char **set_get_strv(Set *s); - #define SET_FOREACH_BACKWARDS(e, s, i) \ - for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i))) - -+define_trivial_cleanup_func(Set*, set_free) -+define_trivial_cleanup_func(Set*, set_free_free) - #define _cleanup_set_free_ _cleanup_(set_freep) - #define _cleanup_set_free_free_ _cleanup_(set_free_freep) -diff --git a/src/shared/strv.h b/src/shared/strv.h -index d1f2a0e..4d117f8 100644 ---- a/src/shared/strv.h -+++ b/src/shared/strv.h -@@ -24,16 +24,13 @@ - #include - #include - --#include "macro.h" -+#include "util.h" - - char *strv_find(char **l, const char *name) _pure_; - char *strv_find_prefix(char **l, const char *name) _pure_; - - void strv_free(char **l); --static inline void strv_freep(char ***l) { -- strv_free(*l); --} -- -+define_trivial_cleanup_func(char**, strv_free) - #define _cleanup_strv_free_ _cleanup_(strv_freep) - - char **strv_copy(char * const *l); -diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h -new file mode 100644 -index 0000000..bff8f5f ---- /dev/null -+++ b/src/shared/udev-util.h -@@ -0,0 +1,37 @@ -+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -+ -+#pragma once -+ -+/*** -+ This file is part of systemd. -+ -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek -+ -+ systemd is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Lesser General Public License as published by -+ the Free Software Foundation; either version 2.1 of the License, or -+ (at your option) any later version. -+ -+ systemd is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public License -+ along with systemd; If not, see . -+***/ -+ -+#include "udev.h" -+#include "util.h" -+ -+define_trivial_cleanup_func(struct udev*, udev_unref) -+define_trivial_cleanup_func(struct udev_device*, udev_device_unref) -+define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref) -+define_trivial_cleanup_func(struct udev_event*, udev_event_unref) -+define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref) -+ -+#define _cleanup_udev_unref_ _cleanup_(udev_unrefp) -+#define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp) -+#define _cleanup_udev_enumerate_unref_ _cleanup_(udev_enumerate_unrefp) -+#define _cleanup_udev_event_unref_ _cleanup_(udev_event_unrefp) -+#define _cleanup_udev_rules_unref_ _cleanup_(udev_rules_unrefp) -diff --git a/src/shared/util.h b/src/shared/util.h -index 222abe0..2c41765 100644 ---- a/src/shared/util.h -+++ b/src/shared/util.h -@@ -39,6 +39,7 @@ - #include - #include - #include -+#include - - #include "macro.h" - #include "time-util.h" -@@ -554,37 +555,34 @@ static inline void freep(void *p) { - free(*(void**) p); - } - --static inline void fclosep(FILE **f) { -- if (*f) -- fclose(*f); --} -- --static inline void pclosep(FILE **f) { -- if (*f) -- pclose(*f); --} -+#define define_trivial_cleanup_func(type, func) \ -+ static inline void func##p(type *p) { \ -+ if (*p) \ -+ func(*p); \ -+ } \ - - static inline void closep(int *fd) { - if (*fd >= 0) - close_nointr_nofail(*fd); - } - --static inline void closedirp(DIR **d) { -- if (*d) -- closedir(*d); --} -- - static inline void umaskp(mode_t *u) { - umask(*u); - } - -+define_trivial_cleanup_func(FILE*, fclose) -+define_trivial_cleanup_func(FILE*, pclose) -+define_trivial_cleanup_func(DIR*, closedir) -+define_trivial_cleanup_func(FILE*, endmntent) -+ - #define _cleanup_free_ _cleanup_(freep) --#define _cleanup_fclose_ _cleanup_(fclosep) --#define _cleanup_pclose_ _cleanup_(pclosep) - #define _cleanup_close_ _cleanup_(closep) --#define _cleanup_closedir_ _cleanup_(closedirp) - #define _cleanup_umask_ _cleanup_(umaskp) - #define _cleanup_globfree_ _cleanup_(globfree) -+#define _cleanup_fclose_ _cleanup_(fclosep) -+#define _cleanup_pclose_ _cleanup_(pclosep) -+#define _cleanup_closedir_ _cleanup_(closedirp) -+#define _cleanup_endmntent_ _cleanup_(endmntentp) - - _malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) { - if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) -diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c -index 716767b..ab7d5a9 100644 ---- a/src/test/test-libudev.c -+++ b/src/test/test-libudev.c -@@ -29,6 +29,7 @@ - #include - - #include "libudev.h" -+#include "udev-util.h" - #include "util.h" - - #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -@@ -117,7 +118,7 @@ static void print_device(struct udev_device *device) - - static int test_device(struct udev *udev, const char *syspath) - { -- struct udev_device *device; -+ _cleanup_udev_device_unref_ struct udev_device *device; - - printf("looking at device: %s\n", syspath); - device = udev_device_new_from_syspath(udev, syspath); -@@ -126,13 +127,13 @@ static int test_device(struct udev *udev, const char *syspath) - return -1; - } - print_device(device); -- udev_device_unref(device); -+ - return 0; - } - - static int test_device_parents(struct udev *udev, const char *syspath) - { -- struct udev_device *device; -+ _cleanup_udev_device_unref_ struct udev_device *device; - struct udev_device *device_parent; - - printf("looking at device: %s\n", syspath); -@@ -153,7 +154,6 @@ static int test_device_parents(struct udev *udev, const char *syspath) - print_device(device_parent); - device_parent = udev_device_get_parent(device_parent); - } while (device_parent != NULL); -- udev_device_unref(device); - - return 0; - } -diff --git a/src/test/test-udev.c b/src/test/test-udev.c -index 52b61b4..17825f1 100644 ---- a/src/test/test-udev.c -+++ b/src/test/test-udev.c -@@ -34,6 +34,7 @@ - - #include "missing.h" - #include "udev.h" -+#include "udev-util.h" - - void udev_main_log(struct udev *udev, int priority, - const char *file, int line, const char *fn, -@@ -82,10 +83,10 @@ out: - - int main(int argc, char *argv[]) - { -- struct udev *udev; -- struct udev_event *event = NULL; -- struct udev_device *dev = NULL; -- struct udev_rules *rules = NULL; -+ _cleanup_udev_unref_ struct udev *udev = NULL; -+ _cleanup_udev_event_unref_ struct udev_event *event = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *dev = NULL; -+ _cleanup_udev_rules_unref_ struct udev_rules *rules = NULL; - char syspath[UTIL_PATH_SIZE]; - const char *devpath; - const char *action; -@@ -98,7 +99,8 @@ int main(int argc, char *argv[]) - - udev = udev_new(); - if (udev == NULL) -- exit(EXIT_FAILURE); -+ return EXIT_FAILURE; -+ - log_debug("version %s\n", VERSION); - label_init("/dev"); - -@@ -160,12 +162,7 @@ int main(int argc, char *argv[]) - out: - if (event != NULL && event->fd_signal >= 0) - close(event->fd_signal); -- udev_event_unref(event); -- udev_device_unref(dev); -- udev_rules_unref(rules); - label_finish(); -- udev_unref(udev); -- if (err != 0) -- return EXIT_FAILURE; -- return EXIT_SUCCESS; -+ -+ return err ? EXIT_FAILURE : EXIT_SUCCESS; - } -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 239e56b..7e873af 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -998,10 +998,7 @@ static void item_free(Item *i) { - free(i); - } - --static inline void item_freep(Item **i) { -- if (*i) -- item_free(*i); --} -+define_trivial_cleanup_func(Item*, item_free) - #define _cleanup_item_free_ _cleanup_(item_freep) - - static bool item_equal(Item *a, Item *b) { diff --git a/0106-util-allow-trailing-semicolons-on-define_trivial_cle.patch b/0106-util-allow-trailing-semicolons-on-define_trivial_cle.patch deleted file mode 100644 index 381c57c..0000000 --- a/0106-util-allow-trailing-semicolons-on-define_trivial_cle.patch +++ /dev/null @@ -1,493 +0,0 @@ -From 925af552121e7028d432685948c2e061d86955e5 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 14 Oct 2013 04:59:26 +0200 -Subject: [PATCH] util: allow trailing semicolons on - define_trivial_cleanup_func lines - -Emacs C indenting really gets confused by these lines if they carry no -trailing semicolon, hence let's make this nicer for good old emacs. The -other macros which define functions already do this too, so let's copy -the scheme here. - -Also, let's use an uppercase name for the macro. So far our rough rule -was that macros that are totally not function-like (like this ones, -which define a function) are uppercase. (Well, admittedly it is a rough -rule only, for example function and variable decorators are all -lower-case SINCE THE CONSTANT YELLING IN THE SOURCES WOULD SUCK, and -also they at least got underscore prefixes.) Also, the macros that -define functions that we already have are all uppercase, so let's do the -same here... - -Conflicts: - src/gpt-auto-generator/gpt-auto-generator.c ---- - src/gpt-auto-generator/gpt-auto-generator.c | 157 ++++++++++------------------ - src/journal/journal-internal.h | 2 +- - src/shared/fdset.h | 2 +- - src/shared/set.h | 4 +- - src/shared/strv.h | 2 +- - src/shared/udev-util.h | 10 +- - src/shared/util.h | 19 ++-- - src/tmpfiles/tmpfiles.c | 2 +- - 8 files changed, 78 insertions(+), 120 deletions(-) - -diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c -index d2b4213..25440e7 100644 ---- a/src/gpt-auto-generator/gpt-auto-generator.c -+++ b/src/gpt-auto-generator/gpt-auto-generator.c -@@ -36,6 +36,7 @@ - #include "missing.h" - #include "sd-id128.h" - #include "libudev.h" -+#include "udev-util.h" - #include "special.h" - #include "unit-name.h" - #include "virt.h" -@@ -48,12 +49,12 @@ - * - */ - -+#define GPT_SWAP SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f) -+#define GPT_HOME SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15) -+ - static const char *arg_dest = "/tmp"; - --static inline void blkid_free_probep(blkid_probe *b) { -- if (*b) -- blkid_free_probe(*b); --} -+DEFINE_TRIVIAL_CLEANUP_FUNC(blkid_probe, blkid_free_probe); - #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep) - - static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) { -@@ -113,13 +114,13 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr - - - if (fstype) { -- char *fst; -- - errno = 0; - r = blkid_probe_lookup_value(b, "TYPE", &v, NULL); - if (r != 0) - *fstype = NULL; - else { -+ char *fst; -+ - fst = strdup(v); - if (!fst) - return -ENOMEM; -@@ -181,7 +182,7 @@ static int add_swap(const char *path, const char *fstype) { - } - - static int add_home(const char *path, const char *fstype) { -- _cleanup_free_ char *unit = NULL, *lnk = NULL; -+ _cleanup_free_ char *unit = NULL, *lnk = NULL, *fsck = NULL; - _cleanup_fclose_ FILE *f = NULL; - - if (dir_is_empty("/home") <= 0) -@@ -199,19 +200,23 @@ static int add_home(const char *path, const char *fstype) { - return -errno; - } - -+ fsck = unit_name_from_path_instance("systemd-fsck", path, ".service"); -+ if (!fsck) -+ return log_oom(); -+ - fprintf(f, - "# Automatically generated by systemd-gpt-auto-generator\n\n" - "[Unit]\n" - "DefaultDependencies=no\n" -- "After=" SPECIAL_LOCAL_FS_PRE_TARGET "\n" -+ "Requires=%s\n" -+ "After=" SPECIAL_LOCAL_FS_PRE_TARGET " %s\n" - "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" - "Before=" SPECIAL_UMOUNT_TARGET " " SPECIAL_LOCAL_FS_TARGET "\n\n" - "[Mount]\n" - "What=%s\n" - "Where=/home\n" -- "Type=%s\n" -- "FsckPassNo=2\n", -- path, fstype); -+ "Type=%s\n", -+ fsck, fsck, path, fstype); - - fflush(f); - if (ferror(f)) { -@@ -234,97 +239,80 @@ static int add_home(const char *path, const char *fstype) { - } - - static int enumerate_partitions(struct udev *udev, dev_t dev) { -- struct udev_enumerate *e = NULL; -- struct udev_device *parent = NULL, *d = NULL; -+ struct udev_device *parent = NULL; -+ _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *d = NULL; - struct udev_list_entry *first, *item; - unsigned home_nr = (unsigned) -1; - _cleanup_free_ char *home = NULL, *home_fstype = NULL; - int r; - - e = udev_enumerate_new(udev); -- if (!e) { -- r = log_oom(); -- goto finish; -- } -+ if (!e) -+ return log_oom(); - - d = udev_device_new_from_devnum(udev, 'b', dev); -- if (!d) { -- r = log_oom(); -- goto finish; -- } -+ if (!d) -+ return log_oom(); - - parent = udev_device_get_parent(d); -- if (!parent) { -- r = log_oom(); -- goto finish; -- } -+ if (!parent) -+ return log_oom(); - - r = udev_enumerate_add_match_parent(e, parent); -- if (r < 0) { -- r = log_oom(); -- goto finish; -- } -+ if (r < 0) -+ return log_oom(); - - r = udev_enumerate_add_match_subsystem(e, "block"); -- if (r < 0) { -- r = log_oom(); -- goto finish; -- } -+ if (r < 0) -+ return log_oom(); - - r = udev_enumerate_scan_devices(e); - if (r < 0) { - log_error("Failed to enumerate partitions on /dev/block/%u:%u: %s", - major(dev), minor(dev), strerror(-r)); -- goto finish; -+ return r; - } - - first = udev_enumerate_get_list_entry(e); - udev_list_entry_foreach(item, first) { - _cleanup_free_ char *fstype = NULL; - const char *node = NULL; -- struct udev_device *q; -+ _cleanup_udev_device_unref_ struct udev_device *q; - sd_id128_t type_id; - unsigned nr; - - q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); -- if (!q) { -- r = log_oom(); -- goto finish; -- } -+ if (!q) -+ return log_oom(); - - if (udev_device_get_devnum(q) == udev_device_get_devnum(d)) -- goto skip; -+ continue; - - if (udev_device_get_devnum(q) == udev_device_get_devnum(parent)) -- goto skip; -+ continue; - - node = udev_device_get_devnode(q); -- if (!node) { -- r = log_oom(); -- goto finish; -- } -+ if (!node) -+ return log_oom(); - - r = verify_gpt_partition(node, &type_id, &nr, &fstype); - if (r < 0) { - log_error("Failed to verify GPT partition %s: %s", - node, strerror(-r)); -- udev_device_unref(q); -- goto finish; -+ return r; - } - if (r == 0) -- goto skip; -+ continue; - -- if (sd_id128_equal(type_id, SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f))) -+ if (sd_id128_equal(type_id, GPT_SWAP)) - add_swap(node, fstype); -- else if (sd_id128_equal(type_id, SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15))) { -- -+ else if (sd_id128_equal(type_id, GPT_HOME)) { - if (!home || nr < home_nr) { - free(home); - home = strdup(node); -- if (!home) { -- r = log_oom(); -- goto finish; -- } -+ if (!home) -+ return log_oom(); - - home_nr = nr; - -@@ -333,27 +321,16 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) { - fstype = NULL; - } - } -- -- skip: -- udev_device_unref(q); - } - - if (home && home_fstype) - add_home(home, home_fstype); - --finish: -- if (d) -- udev_device_unref(d); -- -- if (e) -- udev_enumerate_unref(e); -- -- - return r; - } - - static int get_btrfs_block_device(const char *path, dev_t *dev) { -- struct btrfs_ioctl_fs_info_args fsi; -+ struct btrfs_ioctl_fs_info_args fsi = {}; - _cleanup_close_ int fd = -1; - uint64_t id; - -@@ -364,7 +341,6 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) { - if (fd < 0) - return -errno; - -- zero(fsi); - if (ioctl(fd, BTRFS_IOC_FS_INFO, &fsi) < 0) - return -errno; - -@@ -373,12 +349,11 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) { - return 0; - - for (id = 1; id <= fsi.max_id; id++) { -- struct btrfs_ioctl_dev_info_args di; -+ struct btrfs_ioctl_dev_info_args di = { -+ .devid = id, -+ }; - struct stat st; - -- zero(di); -- di.devid = id; -- - if (ioctl(fd, BTRFS_IOC_DEV_INFO, &di) < 0) { - if (errno == ENODEV) - continue; -@@ -427,44 +402,31 @@ static int get_block_device(const char *path, dev_t *dev) { - } - - static int devno_to_devnode(struct udev *udev, dev_t devno, char **ret) { -- struct udev_device *d = NULL; -+ _cleanup_udev_device_unref_ struct udev_device *d; - const char *t; - char *n; -- int r; - - d = udev_device_new_from_devnum(udev, 'b', devno); -- if (!d) { -- r = log_oom(); -- goto finish; -- } -+ if (!d) -+ return log_oom(); - - t = udev_device_get_devnode(d); -- if (!t) { -- r = -ENODEV; -- goto finish; -- } -+ if (!t) -+ return -ENODEV; - - n = strdup(t); -- if (!n) { -- r = -ENOMEM; -- goto finish; -- } -+ if (!n) -+ return -ENOMEM; - - *ret = n; -- r = 0; -- --finish: -- if (d) -- udev_device_unref(d); -- -- return r; -+ return 0; - } - - int main(int argc, char *argv[]) { - _cleanup_free_ char *node = NULL; -- struct udev *udev = NULL; -+ _cleanup_udev_unref_ struct udev *udev = NULL; - dev_t devno; -- int r; -+ int r = 0; - - if (argc > 1 && argc != 4) { - log_error("This program takes three or no arguments."); -@@ -483,13 +445,11 @@ int main(int argc, char *argv[]) { - - if (in_initrd()) { - log_debug("In initrd, exiting."); -- r = 0; - goto finish; - } - - if (detect_container(NULL) > 0) { - log_debug("In a container, exiting."); -- r = 0; - goto finish; - } - -@@ -528,8 +488,5 @@ int main(int argc, char *argv[]) { - r = enumerate_partitions(udev, devno); - - finish: -- if (udev) -- udev_unref(udev); -- - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; - } -diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h -index 1bc912c..3355fca 100644 ---- a/src/journal/journal-internal.h -+++ b/src/journal/journal-internal.h -@@ -135,7 +135,7 @@ struct sd_journal { - char *journal_make_match_string(sd_journal *j); - void journal_print_header(sd_journal *j); - --define_trivial_cleanup_func(sd_journal*, sd_journal_close) -+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close); - #define _cleanup_journal_close_ _cleanup_(sd_journal_closep) - - #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval) \ -diff --git a/src/shared/fdset.h b/src/shared/fdset.h -index d0dc875..b91b430 100644 ---- a/src/shared/fdset.h -+++ b/src/shared/fdset.h -@@ -48,5 +48,5 @@ int fdset_iterate(FDSet *s, Iterator *i); - #define FDSET_FOREACH(fd, fds, i) \ - for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i))) - --define_trivial_cleanup_func(FDSet*, fdset_free) -+DEFINE_TRIVIAL_CLEANUP_FUNC(FDSet*, fdset_free); - #define _cleanup_fdset_free_ _cleanup_(fdset_freep) -diff --git a/src/shared/set.h b/src/shared/set.h -index a291470..5612478 100644 ---- a/src/shared/set.h -+++ b/src/shared/set.h -@@ -73,7 +73,7 @@ char **set_get_strv(Set *s); - #define SET_FOREACH_BACKWARDS(e, s, i) \ - for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i))) - --define_trivial_cleanup_func(Set*, set_free) --define_trivial_cleanup_func(Set*, set_free_free) -+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free); -+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free); - #define _cleanup_set_free_ _cleanup_(set_freep) - #define _cleanup_set_free_free_ _cleanup_(set_free_freep) -diff --git a/src/shared/strv.h b/src/shared/strv.h -index 4d117f8..f6fb033 100644 ---- a/src/shared/strv.h -+++ b/src/shared/strv.h -@@ -30,7 +30,7 @@ char *strv_find(char **l, const char *name) _pure_; - char *strv_find_prefix(char **l, const char *name) _pure_; - - void strv_free(char **l); --define_trivial_cleanup_func(char**, strv_free) -+DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free); - #define _cleanup_strv_free_ _cleanup_(strv_freep) - - char **strv_copy(char * const *l); -diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h -index bff8f5f..27677af 100644 ---- a/src/shared/udev-util.h -+++ b/src/shared/udev-util.h -@@ -24,11 +24,11 @@ - #include "udev.h" - #include "util.h" - --define_trivial_cleanup_func(struct udev*, udev_unref) --define_trivial_cleanup_func(struct udev_device*, udev_device_unref) --define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref) --define_trivial_cleanup_func(struct udev_event*, udev_event_unref) --define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref) -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref); -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref); -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref); -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref); -+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref); - - #define _cleanup_udev_unref_ _cleanup_(udev_unrefp) - #define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp) -diff --git a/src/shared/util.h b/src/shared/util.h -index 2c41765..bdbdca3 100644 ---- a/src/shared/util.h -+++ b/src/shared/util.h -@@ -555,11 +555,12 @@ static inline void freep(void *p) { - free(*(void**) p); - } - --#define define_trivial_cleanup_func(type, func) \ -- static inline void func##p(type *p) { \ -- if (*p) \ -- func(*p); \ -- } \ -+#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ -+ static inline void func##p(type *p) { \ -+ if (*p) \ -+ func(*p); \ -+ } \ -+ struct __useless_struct_to_allow_trailing_semicolon__ - - static inline void closep(int *fd) { - if (*fd >= 0) -@@ -570,10 +571,10 @@ static inline void umaskp(mode_t *u) { - umask(*u); - } - --define_trivial_cleanup_func(FILE*, fclose) --define_trivial_cleanup_func(FILE*, pclose) --define_trivial_cleanup_func(DIR*, closedir) --define_trivial_cleanup_func(FILE*, endmntent) -+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, fclose); -+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose); -+DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir); -+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent); - - #define _cleanup_free_ _cleanup_(freep) - #define _cleanup_close_ _cleanup_(closep) -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 7e873af..e23847b 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -998,7 +998,7 @@ static void item_free(Item *i) { - free(i); - } - --define_trivial_cleanup_func(Item*, item_free) -+DEFINE_TRIVIAL_CLEANUP_FUNC(Item*, item_free); - #define _cleanup_item_free_ _cleanup_(item_freep) - - static bool item_equal(Item *a, Item *b) { diff --git a/0107-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch b/0107-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch deleted file mode 100644 index ce66f9e..0000000 --- a/0107-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch +++ /dev/null @@ -1,178 +0,0 @@ -From ea46250058d413de21a38d29290eb90f453af72d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 12 Nov 2013 00:53:59 -0500 -Subject: [PATCH] fsck,fstab-generator: be lenient about missing fsck. - -If fstab contains 1 for passno, treat this as an error, but only warn -briefly. If fstab doesn't contain this information, don't complain at -all. - -Patch is complicated a bit by the fact that we might have the fstype specified -in fstab or on /proc/cmdline, in which case we can check if we have the appropriate -fsck tool, or not specified, or specified as auto, in which case we have to look -and check the type of the filesystem ourselves. It cannot be done before the -device appears, so it is too early in the generator phase, and it must be done -directly in fsck service. - -Conflicts: - src/fstab-generator/fstab-generator.c ---- - src/fsck/fsck.c | 40 +++++++++++++++++++++------ - src/fstab-generator/fstab-generator.c | 51 +++++++++++++++++++++++++++++++++++ - 2 files changed, 83 insertions(+), 8 deletions(-) - -diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c -index 9b4e555..1189fe7 100644 ---- a/src/fsck/fsck.c -+++ b/src/fsck/fsck.c -@@ -244,10 +244,11 @@ int main(int argc, char *argv[]) { - siginfo_t status; - _cleanup_udev_unref_ struct udev *udev = NULL; - _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL; -- const char *device; -+ const char *device, *type; - bool root_directory; - int progress_pipe[2] = { -1, -1 }; - char dash_c[2+10+1]; -+ struct stat st; - - if (argc > 2) { - log_error("This program expects one or no arguments."); -@@ -266,11 +267,27 @@ int main(int argc, char *argv[]) { - if (!arg_force && arg_skip) - return 0; - -+ udev = udev_new(); -+ if (!udev) { -+ log_oom(); -+ return EXIT_FAILURE; -+ } -+ - if (argc > 1) { - device = argv[1]; - root_directory = false; -+ -+ if (stat(device, &st) < 0) { -+ log_error("Failed to stat '%s': %m", device); -+ return EXIT_FAILURE; -+ } -+ -+ udev_device = udev_device_new_from_devnum(udev, 'b', st.st_rdev); -+ if (!udev_device) { -+ log_error("Failed to detect device %s", device); -+ return EXIT_FAILURE; -+ } - } else { -- struct stat st; - struct timespec times[2]; - - /* Find root device */ -@@ -292,12 +309,6 @@ int main(int argc, char *argv[]) { - return EXIT_SUCCESS; - } - -- udev = udev_new(); -- if (!udev) { -- log_oom(); -- return EXIT_FAILURE; -- } -- - udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev); - if (!udev_device) { - log_error("Failed to detect root device."); -@@ -313,6 +324,19 @@ int main(int argc, char *argv[]) { - root_directory = true; - } - -+ type = udev_device_get_property_value(udev_device, "ID_FS_TYPE"); -+ if (type) { -+ const char *checker = strappenda("/sbin/fsck.", type); -+ r = access(checker, X_OK); -+ if (r < 0) { -+ if (errno == ENOENT) { -+ log_info("%s doesn't exist, not checking file system.", checker); -+ return EXIT_SUCCESS; -+ } else -+ log_warning("%s cannot be used: %m", checker); -+ } -+ } -+ - if (arg_show_progress) - if (pipe(progress_pipe) < 0) { - log_error("pipe(): %m"); -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 9efccb9..795a24c 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -147,6 +147,52 @@ static bool mount_in_initrd(struct mntent *me) { - streq(me->mnt_dir, "/usr"); - } - -+static int add_fsck(FILE *f, const char *what, const char *where, const char *type, int passno) { -+ assert(f); -+ -+ if (passno == 0) -+ return 0; -+ -+ if (type && !streq(type, "auto")) { -+ int r; -+ const char *checker; -+ -+ checker = strappenda("/sbin/fsck.", type); -+ r = access(checker, X_OK); -+ if (r < 0) { -+ log_warning("Checking was requested for %s, but %s cannot be used: %m", what, checker); -+ -+ /* treat missing check as essentially OK */ -+ return errno == ENOENT ? 0 : -errno; -+ } -+ } -+ -+ if (streq(where, "/")) { -+ char *lnk; -+ -+ lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service"); -+ mkdir_parents_label(lnk, 0755); -+ if (symlink("systemd-fsck-root.service", lnk) < 0) { -+ log_error("Failed to create symlink %s: %m", lnk); -+ return -errno; -+ } -+ } else { -+ _cleanup_free_ char *fsck = NULL; -+ -+ fsck = unit_name_from_path_instance("systemd-fsck", what, ".service"); -+ if (!fsck) -+ return log_oom(); -+ -+ fprintf(f, -+ "Requires=%s\n" -+ "After=%s\n", -+ fsck, -+ fsck); -+ } -+ -+ return 0; -+} -+ - static int add_mount( - const char *what, - const char *where, -@@ -162,6 +208,7 @@ static int add_mount( - *name = NULL, *unit = NULL, *lnk = NULL, - *automount_name = NULL, *automount_unit = NULL; - _cleanup_fclose_ FILE *f = NULL; -+ int r; - - assert(what); - assert(where); -@@ -209,6 +256,10 @@ static int add_mount( - "Before=%s\n", - post); - -+ r = add_fsck(f, what, where, type, passno); -+ if (r < 0) -+ return r; -+ - fprintf(f, - "\n" - "[Mount]\n" diff --git a/0108-fstab-generator-use-RequiresOverridable-for-fsck-uni.patch b/0108-fstab-generator-use-RequiresOverridable-for-fsck-uni.patch deleted file mode 100644 index 32459c3..0000000 --- a/0108-fstab-generator-use-RequiresOverridable-for-fsck-uni.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a787829ac3db6a0f34c59180c796dfa49f46d34c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 12 Nov 2013 22:01:10 -0500 -Subject: [PATCH] fstab-generator: use RequiresOverridable for fsck units - -This allows the user to disable fsck's by masking. - -If fsck fails, emergency target is started, the user might mount the -unit using mount and disable fsck by masking the unit. In this case, -.mount will be active because the mount is detect through -/proc/self/mountinfo, but systemd-fsck@.service will still be in -failed mode. This results in a funny situation where - -$ systemctl show -p ActiveState local-fs.target yyy.mount -ActiveState=active -ActiveState=active - -$ sudo systemctl start local-fs.target -[sudo] password for test: -Failed to start local-fs.target: Unit systemd-fsck@xxx.service is masked. ---- - src/fstab-generator/fstab-generator.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 795a24c..4137796 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -184,7 +184,7 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty - return log_oom(); - - fprintf(f, -- "Requires=%s\n" -+ "RequiresOverridable=%s\n" - "After=%s\n", - fsck, - fsck); diff --git a/0109-bash-completion-journalctl-file.patch b/0109-bash-completion-journalctl-file.patch deleted file mode 100644 index 5bee4a1..0000000 --- a/0109-bash-completion-journalctl-file.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 6fe0184c4b1f5689e735c4e826ed42689e96c618 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 15 Nov 2013 19:00:01 -0500 -Subject: [PATCH] bash-completion: journalctl --file - ---- - shell-completion/bash/journalctl | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl -index 942a253..e4b2f4a 100644 ---- a/shell-completion/bash/journalctl -+++ b/shell-completion/bash/journalctl -@@ -43,7 +43,7 @@ _journalctl() { - -h --help -l --local --new-id128 -m --merge --no-pager - --no-tail -q --quiet --setup-keys --this-boot --verify - --version --list-catalog --update-catalog --list-boots' -- [ARG]='-b --boot --this-boot -D --directory -F --field -+ [ARG]='-b --boot --this-boot -D --directory --file -F --field - -o --output -u --unit --user-unit' - [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until - --verify-key' -@@ -58,6 +58,10 @@ _journalctl() { - comps=$(compgen -d -- "$cur") - compopt -o filenames - ;; -+ --file) -+ comps=$(compgen -f -- "$cur") -+ compopt -o filenames -+ ;; - --output|-o) - comps='short short-monotonic verbose export json cat' - ;; diff --git a/0110-random-seed-improve-debugging-messages-a-bit.patch b/0110-random-seed-improve-debugging-messages-a-bit.patch deleted file mode 100644 index 340ba3b..0000000 --- a/0110-random-seed-improve-debugging-messages-a-bit.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 2fee90a7564f87472c39238b3345025dd383ce60 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 12 Nov 2013 22:05:16 -0500 -Subject: [PATCH] random-seed: improve debugging messages a bit - ---- - Makefile.am | 2 ++ - src/random-seed/random-seed.c | 8 ++++---- - 2 files changed, 6 insertions(+), 4 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 910e780..16a5c3c 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -159,6 +159,7 @@ AM_CPPFLAGS = \ - -DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(rootbindir)/systemd-tty-ask-password-agent\" \ - -DSYSTEMD_STDIO_BRIDGE_BINARY_PATH=\"$(bindir)/systemd-stdio-bridge\" \ - -DROOTPREFIX=\"$(rootprefix)\" \ -+ -DRANDOM_SEED_DIR=\"$(localstatedir)/lib/systemd/\" \ - -DRANDOM_SEED=\"$(localstatedir)/lib/systemd/random-seed\" \ - -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \ - -DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \ -@@ -4242,6 +4243,7 @@ substitutions = \ - '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \ - '|PACKAGE_NAME=$(PACKAGE_NAME)|' \ - '|PACKAGE_URL=$(PACKAGE_URL)|' \ -+ '|RANDOM_SEED_DIR=$(localstatedir)/lib/systemd/|' \ - '|RANDOM_SEED=$(localstatedir)/lib/systemd/random-seed|' \ - '|prefix=$(prefix)|' \ - '|exec_prefix=$(exec_prefix)|' \ -diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c -index afbd500..af79ecf 100644 ---- a/src/random-seed/random-seed.c -+++ b/src/random-seed/random-seed.c -@@ -72,7 +72,7 @@ int main(int argc, char *argv[]) { - - r = mkdir_parents_label(RANDOM_SEED, 0755); - if (r < 0) { -- log_error("Failed to create parent directory of " RANDOM_SEED ": %s", strerror(-r)); -+ log_error("Failed to create directory " RANDOM_SEED_DIR ": %s", strerror(-r)); - goto finish; - } - -@@ -86,7 +86,7 @@ int main(int argc, char *argv[]) { - if (seed_fd < 0) { - seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY); - if (seed_fd < 0) { -- log_error("Failed to open random seed: %m"); -+ log_error("Failed to open " RANDOM_SEED ": %m"); - r = -errno; - goto finish; - } -@@ -106,7 +106,7 @@ int main(int argc, char *argv[]) { - if (k <= 0) { - - if (r != 0) -- log_error("Failed to read seed file: %m"); -+ log_error("Failed to read seed from " RANDOM_SEED ": %m"); - - r = k == 0 ? -EIO : (int) k; - -@@ -125,7 +125,7 @@ int main(int argc, char *argv[]) { - - seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600); - if (seed_fd < 0) { -- log_error("Failed to open random seed: %m"); -+ log_error("Failed to open " RANDOM_SEED ": %m"); - r = -errno; - goto finish; - } diff --git a/0111-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch b/0111-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch deleted file mode 100644 index e066f8e..0000000 --- a/0111-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 24f0323b41612b3170ce1ed84917bdb6c60f0b78 Mon Sep 17 00:00:00 2001 -From: Olivier Brunel -Date: Thu, 14 Nov 2013 15:52:54 +0100 -Subject: [PATCH] Fix RemainAfterExit services keeping a hold on console - -When a service exits succesfully and has RemainAfterExit set, its hold -on the console (in m->n_on_console) wasn't released since the unit state -didn't change. ---- - src/core/service.c | 16 ++++++++++++++++ - src/core/unit.c | 3 +++ - 2 files changed, 19 insertions(+) - -diff --git a/src/core/service.c b/src/core/service.c -index 5662180..62ae8f0 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -1570,6 +1570,22 @@ static void service_set_state(Service *s, ServiceState state) { - if (state == SERVICE_EXITED && UNIT(s)->manager->n_reloading <= 0) - unit_destroy_cgroup(UNIT(s)); - -+ /* For remain_after_exit services, let's see if we can "release" the -+ * hold on the console, since unit_notify() only does that in case of -+ * change of state */ -+ if (state == SERVICE_EXITED && s->remain_after_exit && -+ UNIT(s)->manager->n_on_console > 0) { -+ ExecContext *ec = unit_get_exec_context(UNIT(s)); -+ if (ec && exec_context_may_touch_console(ec)) { -+ Manager *m = UNIT(s)->manager; -+ -+ m->n_on_console --; -+ if (m->n_on_console == 0) -+ /* unset no_console_output flag, since the console is free */ -+ m->no_console_output = false; -+ } -+ } -+ - if (old_state != state) - log_debug_unit(UNIT(s)->id, - "%s changed %s -> %s", UNIT(s)->id, -diff --git a/src/core/unit.c b/src/core/unit.c -index 717ce84..b65e798 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1446,6 +1446,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su - if (UNIT_IS_INACTIVE_OR_FAILED(ns)) - unit_destroy_cgroup(u); - -+ /* Note that this doesn't apply to RemainAfterExit services exiting -+ * sucessfully, since there's no change of state in that case. Which is -+ * why it is handled in service_set_state() */ - if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) { - ExecContext *ec = unit_get_exec_context(u); - if (ec && exec_context_may_touch_console(ec)) { diff --git a/0112-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch b/0112-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch deleted file mode 100644 index 2d05999..0000000 --- a/0112-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch +++ /dev/null @@ -1,40 +0,0 @@ -From f1d712f9028cec81748102a4b05b09a98cddfc79 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 16 Nov 2013 17:29:28 -0500 -Subject: [PATCH] tmpfiles: adjust excludes for the new per-service private - dirs - -In d8c9d3a (systemd: use unit name in PrivateTmp directories) -I forgot to update the tmpfiles config. ---- - tmpfiles.d/tmp.conf | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf -index 3b534a1..f0312ef 100644 ---- a/tmpfiles.d/tmp.conf -+++ b/tmpfiles.d/tmp.conf -@@ -12,6 +12,23 @@ d /tmp 1777 root root 10d - d /var/tmp 1777 root root 30d - - # Exclude namespace mountpoints created with PrivateTmp=yes -+x /tmp/systemd-*.service-* -+x /var/tmp/systemd-*.service-* -+X /tmp/systemd-*.service-*/tmp -+X /var/tmp/systemd-*.service-*/tmp -+x /tmp/systemd-*.socket-* -+x /var/tmp/systemd-*.socket-* -+X /tmp/systemd-*.socket-*/tmp -+X /var/tmp/systemd-*.socket-*/tmp -+x /tmp/systemd-*.mount-* -+x /var/tmp/systemd-*.mount-* -+X /tmp/systemd-*.mount-*/tmp -+X /var/tmp/systemd-*.mount-*/tmp -+x /tmp/systemd-*.swap-* -+x /var/tmp/systemd-*.swap-* -+X /tmp/systemd-*.swap-*/tmp -+X /var/tmp/systemd-*.swap-*/tmp -+# keep those for compatibility during upgrades - x /tmp/systemd-private-* - x /var/tmp/systemd-private-* - X /tmp/systemd-private-*/tmp diff --git a/0113-core-socket-fix-SO_REUSEPORT.patch b/0113-core-socket-fix-SO_REUSEPORT.patch deleted file mode 100644 index b567411..0000000 --- a/0113-core-socket-fix-SO_REUSEPORT.patch +++ /dev/null @@ -1,35 +0,0 @@ -From d125991e2d5f4095605eece35d8d436437036a12 Mon Sep 17 00:00:00 2001 -From: Shawn Landden -Date: Sat, 16 Nov 2013 13:18:13 -0800 -Subject: [PATCH] core/socket: fix SO_REUSEPORT - ---- - src/core/load-fragment-gperf.gperf.m4 | 1 + - src/core/socket.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 -index 31fb7bc..d65bcc1 100644 ---- a/src/core/load-fragment-gperf.gperf.m4 -+++ b/src/core/load-fragment-gperf.gperf.m4 -@@ -211,6 +211,7 @@ Socket.Broadcast, config_parse_bool, 0, - Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred) - Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec) - Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion) -+Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuseport) - Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg) - Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize) - Socket.Service, config_parse_socket_service, 0, 0 -diff --git a/src/core/socket.c b/src/core/socket.c -index d368f7e..e673f38 100644 ---- a/src/core/socket.c -+++ b/src/core/socket.c -@@ -770,7 +770,7 @@ static void socket_apply_socket_options(Socket *s, int fd) { - - if (s->reuseport) { - int b = s->reuseport; -- if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b))) -+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0) - log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m"); - } - diff --git a/0114-localed-match-converted-keymaps-before-legacy.patch b/0114-localed-match-converted-keymaps-before-legacy.patch deleted file mode 100644 index f4ca6f4..0000000 --- a/0114-localed-match-converted-keymaps-before-legacy.patch +++ /dev/null @@ -1,324 +0,0 @@ -From 3f3485b6bc8995f0e51e6725d1a4d99d825c8188 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 18 Nov 2013 13:42:57 -0500 -Subject: [PATCH] localed: match converted keymaps before legacy - -Before, X11 keymap fr-pc105-oss would be converted to fr, -even though fr-oss exists. Now, if -/usr/lib/kbd/keymaps/xkb/[-].map[.gz] exists, -[-] will be used as the console keymap, -falling back to the legacy mappings otherwise. - -% sudo localectl set-x11-keymap pl pc105 -% localectl - System Locale: LANG=en_US.UTF-8 - VC Keymap: pl (was pl2 before) - X11 Layout: pl - X11 Model: pc105 -% sudo localectl set-x11-keymap fr pc105 oss -% localectl - System Locale: LANG=en_US.UTF-8 - VC Keymap: fr-oss (was fr before) - X11 Layout: fr - X11 Model: pc105 - X11 Variant: oss -% sudo localectl set-x11-keymap fr pc105 -% localectl - System Locale: LANG=en_US.UTF-8 - VC Keymap: fr - X11 Layout: fr - X11 Model: pc105 -% sudo localectl set-x11-keymap gb -% localectl - System Locale: LANG=en_US.UTF-8 - VC Keymap: gb (was uk before) - X11 Layout: gb - -Conflicts: - src/locale/localed.c - src/shared/def.h ---- - src/locale/localectl.c | 8 +-- - src/locale/localed.c | 189 ++++++++++++++++++++++++++++--------------------- - src/shared/def.h | 13 ++++ - 3 files changed, 126 insertions(+), 84 deletions(-) - -diff --git a/src/locale/localectl.c b/src/locale/localectl.c -index 8259c0a..d3c6152 100644 ---- a/src/locale/localectl.c -+++ b/src/locale/localectl.c -@@ -38,6 +38,7 @@ - #include "set.h" - #include "path-util.h" - #include "utf8.h" -+#include "def.h" - - static bool arg_no_pager = false; - static enum transport { -@@ -533,15 +534,14 @@ static int nftw_cb( - - static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) { - _cleanup_strv_free_ char **l = NULL; -+ const char *dir; - - keymaps = set_new(string_hash_func, string_compare_func); - if (!keymaps) - return log_oom(); - -- nftw("/usr/share/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS); -- nftw("/usr/share/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS); -- nftw("/usr/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS); -- nftw("/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS); -+ NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) -+ nftw(dir, nftw_cb, 20, FTW_MOUNT|FTW_PHYS); - - l = set_get_strv(keymaps); - if (!l) { -diff --git a/src/locale/localed.c b/src/locale/localed.c -index e160c04..b9b98f4 100644 ---- a/src/locale/localed.c -+++ b/src/locale/localed.c -@@ -792,105 +792,135 @@ static int convert_vconsole_to_x11(DBusConnection *connection) { - return 0; - } - --static int convert_x11_to_vconsole(DBusConnection *connection) { -- bool modified = false; -+static int find_converted_keymap(char **new_keymap) { -+ const char *dir; -+ _cleanup_free_ char *n; -+ -+ if (state.x11_variant) -+ n = strjoin(state.x11_layout, "-", state.x11_variant, NULL); -+ else -+ n = strdup(state.x11_layout); -+ if (!n) -+ return -ENOMEM; - -- assert(connection); -+ NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) { -+ _cleanup_free_ char *p = NULL, *pz = NULL; - -- if (isempty(state.x11_layout)) { -+ p = strjoin(dir, "xkb/", n, ".map", NULL); -+ pz = strjoin(dir, "xkb/", n, ".map.gz", NULL); -+ if (!p || !pz) -+ return -ENOMEM; - -- modified = -- !isempty(state.vc_keymap) || -- !isempty(state.vc_keymap_toggle); -+ if (access(p, F_OK) == 0 || access(pz, F_OK) == 0) { -+ *new_keymap = n; -+ n = NULL; -+ return 1; -+ } -+ } - -- free_data_x11(); -- } else { -- FILE *f; -- unsigned n = 0; -- unsigned best_matching = 0; -- char *new_keymap = NULL; -+ return 0; -+} - -- f = fopen(SYSTEMD_KBD_MODEL_MAP, "re"); -- if (!f) -- return -errno; -+static int find_legacy_keymap(char **new_keymap) { -+ _cleanup_fclose_ FILE *f; -+ unsigned n = 0; -+ unsigned best_matching = 0; - -- for (;;) { -- char **a; -- unsigned matching = 0; -- int r; - -- r = read_next_mapping(f, &n, &a); -- if (r < 0) { -- fclose(f); -- return r; -- } -+ f = fopen(SYSTEMD_KBD_MODEL_MAP, "re"); -+ if (!f) -+ return -errno; - -- if (r == 0) -- break; -+ for (;;) { -+ _cleanup_strv_free_ char **a = NULL; -+ unsigned matching = 0; -+ int r; - -- /* Determine how well matching this entry is */ -- if (streq_ptr(state.x11_layout, a[1])) -- /* If we got an exact match, this is best */ -- matching = 10; -- else { -- size_t x; -- -- x = strcspn(state.x11_layout, ","); -- -- /* We have multiple X layouts, look -- * for an entry that matches our key -- * with the everything but the first -- * layout stripped off. */ -- if (x > 0 && -- strlen(a[1]) == x && -- strneq(state.x11_layout, a[1], x)) -- matching = 5; -- else { -- size_t w; -- -- /* If that didn't work, strip -- * off the other layouts from -- * the entry, too */ -- -- w = strcspn(a[1], ","); -- -- if (x > 0 && x == w && -- memcmp(state.x11_layout, a[1], x) == 0) -- matching = 1; -- } -+ r = read_next_mapping(f, &n, &a); -+ if (r < 0) -+ return r; -+ if (r == 0) -+ break; -+ -+ /* Determine how well matching this entry is */ -+ if (streq_ptr(state.x11_layout, a[1])) -+ /* If we got an exact match, this is best */ -+ matching = 10; -+ else { -+ size_t x; -+ -+ x = strcspn(state.x11_layout, ","); -+ -+ /* We have multiple X layouts, look for an -+ * entry that matches our key with everything -+ * but the first layout stripped off. */ -+ if (x > 0 && -+ strlen(a[1]) == x && -+ strneq(state.x11_layout, a[1], x)) -+ matching = 5; -+ else { -+ size_t w; -+ -+ /* If that didn't work, strip off the -+ * other layouts from the entry, too */ -+ w = strcspn(a[1], ","); -+ -+ if (x > 0 && x == w && -+ memcmp(state.x11_layout, a[1], x) == 0) -+ matching = 1; - } -+ } -+ -+ if (matching > 0 && -+ streq_ptr(state.x11_model, a[2])) { -+ matching++; - -- if (matching > 0 && -- streq_ptr(state.x11_model, a[2])) { -+ if (streq_ptr(state.x11_variant, a[3])) { - matching++; - -- if (streq_ptr(state.x11_variant, a[3])) { -+ if (streq_ptr(state.x11_options, a[4])) - matching++; -- -- if (streq_ptr(state.x11_options, a[4])) -- matching++; -- } - } -+ } - -- /* The best matching entry so far, then let's -- * save that */ -- if (matching > best_matching) { -- best_matching = matching; -+ /* The best matching entry so far, then let's save that */ -+ if (matching > best_matching) { -+ best_matching = matching; - -- free(new_keymap); -- new_keymap = strdup(a[0]); -+ free(*new_keymap); -+ *new_keymap = strdup(a[0]); -+ if (!*new_keymap) -+ return -ENOMEM; -+ } -+ } - -- if (!new_keymap) { -- strv_free(a); -- fclose(f); -- return -ENOMEM; -- } -- } -+ return 0; -+} - -- strv_free(a); -- } -+static int convert_x11_to_vconsole(DBusConnection *connection) { -+ bool modified = false; -+ int r; - -- fclose(f); -+ assert(connection); -+ -+ if (isempty(state.x11_layout)) { -+ -+ modified = -+ !isempty(state.vc_keymap) || -+ !isempty(state.vc_keymap_toggle); -+ -+ free_data_x11(); -+ } else { -+ char *new_keymap = NULL; -+ -+ r = find_converted_keymap(&new_keymap); -+ if (r < 0) -+ return r; -+ else if (r == 0) { -+ r = find_legacy_keymap(&new_keymap); -+ if (r < 0) -+ return r; -+ } - - if (!streq_ptr(state.vc_keymap, new_keymap)) { - free(state.vc_keymap); -@@ -907,7 +937,6 @@ static int convert_x11_to_vconsole(DBusConnection *connection) { - if (modified) { - dbus_bool_t b; - DBusMessage *changed; -- int r; - - r = write_data_vconsole(); - if (r < 0) -diff --git a/src/shared/def.h b/src/shared/def.h -index e4ef735..58c834c 100644 ---- a/src/shared/def.h -+++ b/src/shared/def.h -@@ -41,3 +41,16 @@ - #define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" - #define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - #define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS -+ -+#ifdef HAVE_SPLIT_USR -+#define KBD_KEYMAP_DIRS \ -+ "/usr/share/keymaps/\0" \ -+ "/usr/share/kbd/keymaps/\0" \ -+ "/usr/lib/kbd/keymaps/\0" \ -+ "/lib/kbd/keymaps/\0" -+#else -+#define KBD_KEYMAP_DIRS \ -+ "/usr/share/keymaps/\0" \ -+ "/usr/share/kbd/keymaps/\0" \ -+ "/usr/lib/kbd/keymaps/\0" -+#endif diff --git a/0115-keymap-Add-Toshiba-Satellite-U940.patch b/0115-keymap-Add-Toshiba-Satellite-U940.patch deleted file mode 100644 index d59b50b..0000000 --- a/0115-keymap-Add-Toshiba-Satellite-U940.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e62bf9ca184d34e100014b4ef3c0c6b3b04ccebf Mon Sep 17 00:00:00 2001 -From: Jose Ignacio Naranjo -Date: Sun, 17 Nov 2013 21:11:34 +0100 -Subject: [PATCH] keymap: Add Toshiba Satellite U940 - -Signed-off-by: Martin Pitt ---- - hwdb/60-keyboard.hwdb | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index b497f92..d4d948d 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -1031,6 +1031,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr* - KEYBOARD_KEY_a9=switchvideomode # switch display outputs - KEYBOARD_KEY_d4=wlan # RF Switch Off - -+# Satellite U940 -+keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940:pvr* -+ KEYBOARD_KEY_13c=brightnessdown -+ KEYBOARD_KEY_13d=brightnessup -+ KEYBOARD_KEY_13e=switchvideomode -+ KEYBOARD_KEY_13f=f21 # Touchpad toggle -+ - ########################################################### - # VIA - ########################################################### diff --git a/0116-calendar-support-yearly-and-annually-names-the-same-.patch b/0116-calendar-support-yearly-and-annually-names-the-same-.patch deleted file mode 100644 index a9a71c8..0000000 --- a/0116-calendar-support-yearly-and-annually-names-the-same-.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ad792a7d7a407e2bcdf3553290c97d3642fdaf01 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 19 Nov 2013 01:13:42 +0100 -Subject: [PATCH] calendar: support 'yearly' and 'annually' names the same way - as cron - ---- - src/shared/calendarspec.c | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c -index 7979e23..7075159 100644 ---- a/src/shared/calendarspec.c -+++ b/src/shared/calendarspec.c -@@ -686,6 +686,23 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { - if (r < 0) - goto fail; - -+ } else if (strcaseeq(p, "anually") || strcaseeq(p, "yearly")) { -+ r = const_chain(1, &c->month); -+ if (r < 0) -+ goto fail; -+ r = const_chain(1, &c->day); -+ if (r < 0) -+ goto fail; -+ r = const_chain(0, &c->hour); -+ if (r < 0) -+ goto fail; -+ r = const_chain(0, &c->minute); -+ if (r < 0) -+ goto fail; -+ r = const_chain(0, &c->second); -+ if (r < 0) -+ goto fail; -+ - } else if (strcaseeq(p, "weekly")) { - - c->weekdays_bits = 1; diff --git a/0117-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch b/0117-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch deleted file mode 100644 index 8d2b4ae..0000000 --- a/0117-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 48335b715e811ba56f7c03199efb85a664762f5d Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 19 Nov 2013 21:02:59 +0100 -Subject: [PATCH] hashmap: be a bit more conservative with pre-allocating hash - tables and items - ---- - src/shared/hashmap.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c -index f06fce6..8f5957b 100644 ---- a/src/shared/hashmap.c -+++ b/src/shared/hashmap.c -@@ -66,13 +66,14 @@ static void *first_hashmap_tile = NULL; - static struct pool *first_entry_pool = NULL; - static void *first_entry_tile = NULL; - --static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size) { -+static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size, unsigned at_least) { - unsigned i; - - /* When a tile is released we add it to the list and simply - * place the next pointer at its offset 0. */ - - assert(tile_size >= sizeof(void*)); -+ assert(at_least > 0); - - if (*first_tile) { - void *r; -@@ -88,7 +89,7 @@ static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t t - struct pool *p; - - n = *first_pool ? (*first_pool)->n_tiles : 0; -- n = MAX(512U, n * 2); -+ n = MAX(at_least, n * 2); - size = PAGE_ALIGN(ALIGN(sizeof(struct pool)) + n*tile_size); - n = (size - ALIGN(sizeof(struct pool))) / tile_size; - -@@ -191,7 +192,7 @@ Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func) { - size = ALIGN(sizeof(Hashmap)) + INITIAL_N_BUCKETS * sizeof(struct hashmap_entry*); - - if (b) { -- h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size); -+ h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size, 8); - if (!h) - return NULL; - -@@ -476,7 +477,7 @@ int hashmap_put(Hashmap *h, const void *key, void *value) { - hash = bucket_hash(h, key); - - if (h->from_pool) -- e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry)); -+ e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry), 64U); - else - e = new(struct hashmap_entry, 1); - diff --git a/0118-manager-don-t-do-plymouth-in-a-container.patch b/0118-manager-don-t-do-plymouth-in-a-container.patch deleted file mode 100644 index 1628994..0000000 --- a/0118-manager-don-t-do-plymouth-in-a-container.patch +++ /dev/null @@ -1,26 +0,0 @@ -From c74cf7621353d765a89e800c5a040fefa79e7915 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 20 Nov 2013 03:44:11 +0100 -Subject: [PATCH] manager: don't do plymouth in a container - -Given that plymouth listens on an abstract namespace socket and if -CLONE_NEWNET is not used the abstract namespace is shared with the host -we might actually end up send plymouth data to the host. ---- - src/core/manager.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/core/manager.c b/src/core/manager.c -index ce32baf..944c196 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -1966,6 +1966,9 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) { - if (m->running_as != SYSTEMD_SYSTEM) - return; - -+ if (detect_container(NULL) > 0) -+ return; -+ - if (u->type != UNIT_SERVICE && - u->type != UNIT_MOUNT && - u->type != UNIT_SWAP) diff --git a/0119-nspawn-add-new-drop-capability-switch.patch b/0119-nspawn-add-new-drop-capability-switch.patch deleted file mode 100644 index 8289870..0000000 --- a/0119-nspawn-add-new-drop-capability-switch.patch +++ /dev/null @@ -1,82 +0,0 @@ -From c3f82c64d86432c7d4b0c3abf61b70fd88f1d9dd Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 20 Nov 2013 22:10:42 +0100 -Subject: [PATCH] nspawn: add new --drop-capability= switch - ---- - man/systemd-nspawn.xml | 10 ++++++++++ - src/nspawn/nspawn.c | 12 ++++++++++-- - 2 files changed, 20 insertions(+), 2 deletions(-) - -diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml -index ba9e516..c1a5cad 100644 ---- a/man/systemd-nspawn.xml -+++ b/man/systemd-nspawn.xml -@@ -304,6 +304,16 @@ - - - -+ -+ -+ Specify one or more -+ additional capabilities to drop for -+ the container. This allows running the -+ container with fewer capabilities than -+ the default (see above). -+ -+ -+ - - - Control whether the -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 85bbadf..7346253 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -130,6 +130,7 @@ static int help(void) { - " --read-only Mount the root directory read-only\n" - " --capability=CAP In addition to the default, retain specified\n" - " capability\n" -+ " --drop-capability=CAP Drop the specified capability from the default set\n" - " --link-journal=MODE Link up guest journal, one of no, auto, guest, host\n" - " -j Equivalent to --link-journal=host\n" - " --bind=PATH[:PATH] Bind mount a file or directory from the host into\n" -@@ -148,6 +149,7 @@ static int parse_argv(int argc, char *argv[]) { - ARG_UUID, - ARG_READ_ONLY, - ARG_CAPABILITY, -+ ARG_DROP_CAPABILITY, - ARG_LINK_JOURNAL, - ARG_BIND, - ARG_BIND_RO -@@ -163,6 +165,7 @@ static int parse_argv(int argc, char *argv[]) { - { "uuid", required_argument, NULL, ARG_UUID }, - { "read-only", no_argument, NULL, ARG_READ_ONLY }, - { "capability", required_argument, NULL, ARG_CAPABILITY }, -+ { "drop-capability", required_argument, NULL, ARG_DROP_CAPABILITY }, - { "link-journal", required_argument, NULL, ARG_LINK_JOURNAL }, - { "bind", required_argument, NULL, ARG_BIND }, - { "bind-ro", required_argument, NULL, ARG_BIND_RO }, -@@ -247,7 +250,8 @@ static int parse_argv(int argc, char *argv[]) { - arg_read_only = true; - break; - -- case ARG_CAPABILITY: { -+ case ARG_CAPABILITY: -+ case ARG_DROP_CAPABILITY: { - char *state, *word; - size_t length; - -@@ -266,7 +270,11 @@ static int parse_argv(int argc, char *argv[]) { - } - - free(t); -- arg_retain |= 1ULL << (uint64_t) cap; -+ -+ if (c == ARG_CAPABILITY) -+ arg_retain |= 1ULL << (uint64_t) cap; -+ else -+ arg_retain &= ~(1ULL << (uint64_t) cap); - } - - break; diff --git a/0120-valgrind-make-running-PID-1-in-valgrind-useful.patch b/0120-valgrind-make-running-PID-1-in-valgrind-useful.patch deleted file mode 100644 index edf2c66..0000000 --- a/0120-valgrind-make-running-PID-1-in-valgrind-useful.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 246592d8f7eaf899ec6292cac4985f7bcc8b65fd Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 20 Nov 2013 22:11:10 +0100 -Subject: [PATCH] valgrind: make running PID 1 in valgrind useful - -Since valgrind only generates useful output on exit() (rather than -exec()) we need to explicitly exit when valgrind is detected. - -Conflicts: - src/core/main.c ---- - configure.ac | 2 +- - src/core/main.c | 13 +++++++++++++ - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 9904e25..6232cf8 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -814,7 +814,7 @@ AC_DEFINE_UNQUOTED(TELINIT, ["$TELINIT"], [Path to telinit]) - - AC_SUBST(TELINIT) - --AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h]) -+AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h]) - - # ------------------------------------------------------------------------------ - have_myhostname=no -diff --git a/src/core/main.c b/src/core/main.c -index 00fd394..58c3a9e 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -34,6 +34,10 @@ - #include - #include - -+#ifdef HAVE_VALGRIND_VALGRIND_H -+#include -+#endif -+ - #include "manager.h" - #include "log.h" - #include "load-fragment.h" -@@ -1855,6 +1859,15 @@ finish: - if (fds) - fdset_free(fds); - -+#ifdef HAVE_VALGRIND_VALGRIND_H -+ /* If we are PID 1 and running under valgrind, then let's exit -+ * here explicitly. valgrind will only generate nice output on -+ * exit(), not on exec(), hence let's do the former not the -+ * latter here. */ -+ if (getpid() == 1 && RUNNING_ON_VALGRIND) -+ return 0; -+#endif -+ - if (shutdown_verb) { - const char * command_line[] = { - SYSTEMD_SHUTDOWN_BINARY_PATH, diff --git a/0121-efi-boot-generator-don-t-mount-boot-eagerly.patch b/0121-efi-boot-generator-don-t-mount-boot-eagerly.patch deleted file mode 100644 index 7a7c376..0000000 --- a/0121-efi-boot-generator-don-t-mount-boot-eagerly.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 1530d333580859301dc57ca1a602d1ccd9cd594f Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Thu, 21 Nov 2013 12:35:46 +0100 -Subject: [PATCH] efi-boot-generator: don't mount /boot eagerly - ---- - src/efi-boot-generator/efi-boot-generator.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c -index 05b95ed..5e5c682 100644 ---- a/src/efi-boot-generator/efi-boot-generator.c -+++ b/src/efi-boot-generator/efi-boot-generator.c -@@ -82,7 +82,7 @@ int main(int argc, char *argv[]) { - "[Mount]\n" - "Where=/boot\n" - "What=/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n" -- "Options=umask=0077\n", -+ "Options=umask=0077,noauto\n", - SD_ID128_FORMAT_VAL(id)); - - free(name); diff --git a/0122-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0122-hwdb-Update-database-of-Bluetooth-company-identifier.patch deleted file mode 100644 index 1b80365..0000000 --- a/0122-hwdb-Update-database-of-Bluetooth-company-identifier.patch +++ /dev/null @@ -1,327 +0,0 @@ -From 542aea95d13a4e88add77b3a473557dc2f47bb61 Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Sat, 21 Sep 2013 11:45:05 -0700 -Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers - ---- - hwdb/20-bluetooth-vendor-product.hwdb | 209 +++++++++++++++++++++++++++++++--- - 1 file changed, 193 insertions(+), 16 deletions(-) - -diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb -index c8cb322..faecf42 100644 ---- a/hwdb/20-bluetooth-vendor-product.hwdb -+++ b/hwdb/20-bluetooth-vendor-product.hwdb -@@ -46,7 +46,7 @@ bluetooth:v000D* - ID_VENDOR_FROM_DATABASE=Texas Instruments Inc. - - bluetooth:v000E* -- ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies Inc.) -+ ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies, Inc.) - - bluetooth:v000F* - ID_VENDOR_FROM_DATABASE=Broadcom Corporation -@@ -55,7 +55,7 @@ bluetooth:v0010* - ID_VENDOR_FROM_DATABASE=Mitel Semiconductor - - bluetooth:v0011* -- ID_VENDOR_FROM_DATABASE=Widcomm, Inc. -+ ID_VENDOR_FROM_DATABASE=Widcomm, Inc - - bluetooth:v0012* - ID_VENDOR_FROM_DATABASE=Zeevo, Inc. -@@ -73,13 +73,13 @@ bluetooth:v0016* - ID_VENDOR_FROM_DATABASE=KC Technology Inc. - - bluetooth:v0017* -- ID_VENDOR_FROM_DATABASE=Newlogic -+ ID_VENDOR_FROM_DATABASE=NewLogic - - bluetooth:v0018* - ID_VENDOR_FROM_DATABASE=Transilica, Inc. - - bluetooth:v0019* -- ID_VENDOR_FROM_DATABASE=Rohde & Schwartz GmbH & Co. KG -+ ID_VENDOR_FROM_DATABASE=Rohde & Schwarz GmbH & Co. KG - - bluetooth:v001A* - ID_VENDOR_FROM_DATABASE=TTPCom Limited -@@ -151,7 +151,7 @@ bluetooth:v0030* - ID_VENDOR_FROM_DATABASE=ST Microelectronics - - bluetooth:v0031* -- ID_VENDOR_FROM_DATABASE=Synopsys -+ ID_VENDOR_FROM_DATABASE=Synopsis - - bluetooth:v0032* - ID_VENDOR_FROM_DATABASE=Red-M (Communications) Ltd -@@ -190,16 +190,16 @@ bluetooth:v003D* - ID_VENDOR_FROM_DATABASE=IPextreme, Inc. - - bluetooth:v003E* -- ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc -+ ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc. - - bluetooth:v003F* -- ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc -+ ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc. - - bluetooth:v0040* - ID_VENDOR_FROM_DATABASE=Seiko Epson Corporation - - bluetooth:v0041* -- ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwain, Inc. -+ ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwan, Inc. - - bluetooth:v0042* - ID_VENDOR_FROM_DATABASE=CONWISE Technology Corporation Ltd -@@ -244,7 +244,7 @@ bluetooth:v004F* - ID_VENDOR_FROM_DATABASE=APT Licensing Ltd. - - bluetooth:v0050* -- ID_VENDOR_FROM_DATABASE=SiRF Technology, Inc. -+ ID_VENDOR_FROM_DATABASE=SiRF Technology - - bluetooth:v0051* - ID_VENDOR_FROM_DATABASE=Tzero Technologies, Inc. -@@ -379,7 +379,7 @@ bluetooth:v007C* - ID_VENDOR_FROM_DATABASE=A & R Cambridge - - bluetooth:v007D* -- ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd. -+ ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd - - bluetooth:v007E* - ID_VENDOR_FROM_DATABASE=Sports Tracking Technologies Ltd. -@@ -406,7 +406,7 @@ bluetooth:v0085* - ID_VENDOR_FROM_DATABASE=BlueRadios, Inc. - - bluetooth:v0086* -- ID_VENDOR_FROM_DATABASE=equinux AG -+ ID_VENDOR_FROM_DATABASE=equinox AG - - bluetooth:v0087* - ID_VENDOR_FROM_DATABASE=Garmin International, Inc. -@@ -421,7 +421,7 @@ bluetooth:v008A* - ID_VENDOR_FROM_DATABASE=Jawbone - - bluetooth:v008B* -- ID_VENDOR_FROM_DATABASE=Topcon Positioning Systems, LLC -+ ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC - - bluetooth:v008C* - ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc. -@@ -433,13 +433,13 @@ bluetooth:v008E* - ID_VENDOR_FROM_DATABASE=Quintic Corp. - - bluetooth:v008F* -- ID_VENDOR_FROM_DATABASE=Stollmann E+V GmbH -+ ID_VENDOR_FROM_DATABASE=Stollman E+V GmbH - - bluetooth:v0090* - ID_VENDOR_FROM_DATABASE=Funai Electric Co., Ltd. - - bluetooth:v0091* -- ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL systems GmbH & Co. KG -+ ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG - - bluetooth:v0092* - ID_VENDOR_FROM_DATABASE=ThinkOptics, Inc. -@@ -460,7 +460,7 @@ bluetooth:v0097* - ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited - - bluetooth:v0098* -- ID_VENDOR_FROM_DATABASE=zero1.tv GmbH -+ ID_VENDOR_FROM_DATABASE=zer01.tv GmbH - - bluetooth:v0099* - ID_VENDOR_FROM_DATABASE=i.Tech Dynamic Global Distribution Ltd. -@@ -511,7 +511,7 @@ bluetooth:v00A8* - ID_VENDOR_FROM_DATABASE=ARP Devices Limited - - bluetooth:v00A9* -- ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A. -+ ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A - - bluetooth:v00AA* - ID_VENDOR_FROM_DATABASE=CAEN RFID srl -@@ -539,3 +539,180 @@ bluetooth:v00B1* - - bluetooth:v00B2* - ID_VENDOR_FROM_DATABASE=Bekey A/S -+ -+bluetooth:v00B3* -+ ID_VENDOR_FROM_DATABASE=Clarinox Technologies Pty. Ltd. -+ -+bluetooth:v00B4* -+ ID_VENDOR_FROM_DATABASE=BDE Technology Co., Ltd. -+ -+bluetooth:v00B5* -+ ID_VENDOR_FROM_DATABASE=Swirl Networks -+ -+bluetooth:v00B6* -+ ID_VENDOR_FROM_DATABASE=Meso international -+ -+bluetooth:v00B7* -+ ID_VENDOR_FROM_DATABASE=TreLab Ltd -+ -+bluetooth:v00B8* -+ ID_VENDOR_FROM_DATABASE=Qualcomm Innovation Center, Inc. (QuIC) -+ -+bluetooth:v00B9* -+ ID_VENDOR_FROM_DATABASE=Johnson Controls, Inc. -+ -+bluetooth:v00BA* -+ ID_VENDOR_FROM_DATABASE=Starkey Laboratories Inc. -+ -+bluetooth:v00BB* -+ ID_VENDOR_FROM_DATABASE=S-Power Electronics Limited -+ -+bluetooth:v00BC* -+ ID_VENDOR_FROM_DATABASE=Ace Sensor Inc -+ -+bluetooth:v00BD* -+ ID_VENDOR_FROM_DATABASE=Aplix Corporation -+ -+bluetooth:v00BE* -+ ID_VENDOR_FROM_DATABASE=AAMP of America -+ -+bluetooth:v00BF* -+ ID_VENDOR_FROM_DATABASE=Stalmart Technology Limited -+ -+bluetooth:v00C0* -+ ID_VENDOR_FROM_DATABASE=AMICCOM Electronics Corporation -+ -+bluetooth:v00C1* -+ ID_VENDOR_FROM_DATABASE=Shenzhen Excelsecu Data Technology Co.,Ltd -+ -+bluetooth:v00C2* -+ ID_VENDOR_FROM_DATABASE=Geneq Inc. -+ -+bluetooth:v00C3* -+ ID_VENDOR_FROM_DATABASE=adidas AG -+ -+bluetooth:v00C4* -+ ID_VENDOR_FROM_DATABASE=LG Electronics -+ -+bluetooth:v00C5* -+ ID_VENDOR_FROM_DATABASE=Onset Computer Corporation -+ -+bluetooth:v00C6* -+ ID_VENDOR_FROM_DATABASE=Selfly BV -+ -+bluetooth:v00C7* -+ ID_VENDOR_FROM_DATABASE=Quuppa Oy. -+ -+bluetooth:v00C8* -+ ID_VENDOR_FROM_DATABASE=GeLo Inc -+ -+bluetooth:v00C9* -+ ID_VENDOR_FROM_DATABASE=Evluma -+ -+bluetooth:v00CA* -+ ID_VENDOR_FROM_DATABASE=MC10 -+ -+bluetooth:v00CB* -+ ID_VENDOR_FROM_DATABASE=Binauric SE -+ -+bluetooth:v00CC* -+ ID_VENDOR_FROM_DATABASE=Beats Electronics -+ -+bluetooth:v00CD* -+ ID_VENDOR_FROM_DATABASE=Microchip Technology Inc. -+ -+bluetooth:v00CE* -+ ID_VENDOR_FROM_DATABASE=Elgato Systems GmbH -+ -+bluetooth:v00CF* -+ ID_VENDOR_FROM_DATABASE=ARCHOS SA -+ -+bluetooth:v00D1* -+ ID_VENDOR_FROM_DATABASE=Polar Electro Europe B.V. -+ -+bluetooth:v00D2* -+ ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V. -+ -+bluetooth:v00D3* -+ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD. -+ -+bluetooth:v00D4* -+ ID_VENDOR_FROM_DATABASE=Kawantech -+ -+bluetooth:v00D5* -+ ID_VENDOR_FROM_DATABASE=Austco Communication Systems -+ -+bluetooth:v00D6* -+ ID_VENDOR_FROM_DATABASE=Timex Group USA, Inc. -+ -+bluetooth:v00D7* -+ ID_VENDOR_FROM_DATABASE=Qualcomm Technologies, Inc. -+ -+bluetooth:v00D8* -+ ID_VENDOR_FROM_DATABASE=Qualcomm Connected Experiences, Inc. -+ -+bluetooth:v00D9* -+ ID_VENDOR_FROM_DATABASE=Voyetra Turtle Beach -+ -+bluetooth:v00DA* -+ ID_VENDOR_FROM_DATABASE=txtr GmbH -+ -+bluetooth:v00DB* -+ ID_VENDOR_FROM_DATABASE=Biosentronics -+ -+bluetooth:v00DC* -+ ID_VENDOR_FROM_DATABASE=Procter & Gamble -+ -+bluetooth:v00DD* -+ ID_VENDOR_FROM_DATABASE=Hosiden Corporation -+ -+bluetooth:v00DE* -+ ID_VENDOR_FROM_DATABASE=Muzik LLC -+ -+bluetooth:v00DF* -+ ID_VENDOR_FROM_DATABASE=Misfit Wearables Corp -+ -+bluetooth:v00E0* -+ ID_VENDOR_FROM_DATABASE=Google -+ -+bluetooth:v00E1* -+ ID_VENDOR_FROM_DATABASE=Danlers Ltd -+ -+bluetooth:v00E2* -+ ID_VENDOR_FROM_DATABASE=Semilink Inc -+ -+bluetooth:v00E3* -+ ID_VENDOR_FROM_DATABASE=inMusic Brands, Inc -+ -+bluetooth:v00E4* -+ ID_VENDOR_FROM_DATABASE=L.S. Research Inc. -+ -+bluetooth:v00E5* -+ ID_VENDOR_FROM_DATABASE=Eden Software Consultants Ltd. -+ -+bluetooth:v00E6* -+ ID_VENDOR_FROM_DATABASE=Freshtemp -+ -+bluetooth:v00E7* -+ ID_VENDOR_FROM_DATABASE=KS Technologies -+ -+bluetooth:v00E8* -+ ID_VENDOR_FROM_DATABASE=ACTS Technologies -+ -+bluetooth:v00E9* -+ ID_VENDOR_FROM_DATABASE=Vtrack Systems -+ -+bluetooth:v00EA* -+ ID_VENDOR_FROM_DATABASE=Nielsen-Kellerman Company -+ -+bluetooth:v00EB* -+ ID_VENDOR_FROM_DATABASE=Server Technology, Inc. -+ -+bluetooth:v00EC* -+ ID_VENDOR_FROM_DATABASE=BioResearch Associates -+ -+bluetooth:v00ED* -+ ID_VENDOR_FROM_DATABASE=Jolly Logic, LLC -+ -+bluetooth:v00EE* -+ ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc. diff --git a/0123-journal-when-appending-to-journal-file-allocate-larg.patch b/0123-journal-when-appending-to-journal-file-allocate-larg.patch deleted file mode 100644 index 183ee4b..0000000 --- a/0123-journal-when-appending-to-journal-file-allocate-larg.patch +++ /dev/null @@ -1,81 +0,0 @@ -From c0658e1948c301177b1527227be0c18932cd7cce Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 18:39:42 +0100 -Subject: [PATCH] journal: when appending to journal file, allocate larger - blocks at once - -(cherry picked from commit a676e66535e12458ea6d366a653f8dd60f982504) - -Conflicts: - src/journal/journal-file.c ---- - src/journal/journal-file.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 425e38a..d1b8433 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -68,6 +68,9 @@ - /* How many entries to keep in the entry array chain cache at max */ - #define CHAIN_CACHE_MAX 20 - -+/* How much to increase the journal file size at once each time we allocate something new. */ -+#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL) /* 8MB */ -+ - int journal_file_set_online(JournalFile *f) { - assert(f); - -@@ -218,8 +221,7 @@ static int journal_file_refresh_header(JournalFile *f) { - journal_file_set_online(f); - - /* Sync the online state to disk */ -- msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC); -- fdatasync(f->fd); -+ fsync(f->fd); - - return 0; - } -@@ -313,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) { - } - - static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { -- uint64_t old_size, new_size; -+ uint64_t old_size, new_size, file_size; - int r; - - assert(f); -@@ -333,12 +335,10 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (new_size <= old_size) - return 0; - -- if (f->metrics.max_size > 0 && -- new_size > f->metrics.max_size) -+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size) - return -E2BIG; - -- if (new_size > f->metrics.min_size && -- f->metrics.keep_free > 0) { -+ if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) { - struct statvfs svfs; - - if (fstatvfs(f->fd, &svfs) >= 0) { -@@ -363,8 +363,16 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (r != 0) - return -r; - -- if (fstat(f->fd, &f->last_stat) < 0) -- return -errno; -+ /* Increase the file size a bit further than this, so that we -+ * we can create larger memory maps to cache */ -+ file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -+ if (file_size > (uint64_t) f->last_stat.st_size) { -+ if (file_size > new_size) -+ ftruncate(f->fd, file_size); -+ -+ if (fstat(f->fd, &f->last_stat) < 0) -+ return -errno; -+ } - - f->header->arena_size = htole64(new_size - le64toh(f->header->header_size)); - diff --git a/0124-journal-make-table-const.patch b/0124-journal-make-table-const.patch deleted file mode 100644 index 64a317c..0000000 --- a/0124-journal-make-table-const.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 1ae9614a4373029f3f2464cf4d8e61641f1a50a6 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 18:40:23 +0100 -Subject: [PATCH] journal: make table const - -(cherry picked from commit b8e891e699e1336c5527f8203e4e8f67c9bbeb84) ---- - src/journal/journal-file.c | 2 +- - src/journal/journal-file.h | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index d1b8433..d3bdaea 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -401,7 +401,7 @@ static int journal_file_move_to(JournalFile *f, int context, bool keep_always, u - - static uint64_t minimum_header_size(Object *o) { - -- static uint64_t table[] = { -+ static const uint64_t table[] = { - [OBJECT_DATA] = sizeof(DataObject), - [OBJECT_FIELD] = sizeof(FieldObject), - [OBJECT_ENTRY] = sizeof(EntryObject), -diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h -index 5cc2c2d..50bdb67 100644 ---- a/src/journal/journal-file.h -+++ b/src/journal/journal-file.h -@@ -54,11 +54,11 @@ typedef struct JournalFile { - - int flags; - int prot; -- bool writable; -- bool compress; -- bool seal; -+ bool writable:1; -+ bool compress:1; -+ bool seal:1; - -- bool tail_entry_monotonic_valid; -+ bool tail_entry_monotonic_valid:1; - - direction_t last_direction; - diff --git a/0125-journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch b/0125-journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch deleted file mode 100644 index 527be5c..0000000 --- a/0125-journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch +++ /dev/null @@ -1,92 +0,0 @@ -From dd186998dd408c54ffe30df1cc35422e645e0ca2 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 18:58:44 +0100 -Subject: [PATCH] journald: keep statistics on how of we hit/miss the mmap - cache - -(cherry picked from commit bf807d4dbf27c783db8dfd7f4eca321ae4be5b00) ---- - src/journal/mmap-cache.c | 25 +++++++++++++++++++++++-- - src/journal/mmap-cache.h | 3 +++ - src/journal/sd-journal.c | 4 +++- - 3 files changed, 29 insertions(+), 3 deletions(-) - -diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c -index 03b57be..42a8a7d 100644 ---- a/src/journal/mmap-cache.c -+++ b/src/journal/mmap-cache.c -@@ -72,6 +72,9 @@ struct MMapCache { - int n_ref; - unsigned n_windows; - -+ unsigned n_hit, n_missed; -+ -+ - Hashmap *fds; - Hashmap *contexts; - -@@ -542,13 +545,19 @@ int mmap_cache_get( - - /* Check whether the current context is the right one already */ - r = try_context(m, fd, prot, context, keep_always, offset, size, ret); -- if (r != 0) -+ if (r != 0) { -+ m->n_hit ++; - return r; -+ } - - /* Search for a matching mmap */ - r = find_mmap(m, fd, prot, context, keep_always, offset, size, ret); -- if (r != 0) -+ if (r != 0) { -+ m->n_hit ++; - return r; -+ } -+ -+ m->n_missed++; - - /* Create a new mmap */ - return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret); -@@ -578,3 +587,15 @@ void mmap_cache_close_context(MMapCache *m, unsigned context) { - - context_free(c); - } -+ -+unsigned mmap_cache_get_hit(MMapCache *m) { -+ assert(m); -+ -+ return m->n_hit; -+} -+ -+unsigned mmap_cache_get_missed(MMapCache *m) { -+ assert(m); -+ -+ return m->n_missed; -+} -diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h -index 0c42fb8..912336d 100644 ---- a/src/journal/mmap-cache.h -+++ b/src/journal/mmap-cache.h -@@ -34,3 +34,6 @@ MMapCache* mmap_cache_unref(MMapCache *m); - int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret); - void mmap_cache_close_fd(MMapCache *m, int fd); - void mmap_cache_close_context(MMapCache *m, unsigned context); -+ -+unsigned mmap_cache_get_hit(MMapCache *m); -+unsigned mmap_cache_get_missed(MMapCache *m); -diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c -index 9676f0f..52abbe9 100644 ---- a/src/journal/sd-journal.c -+++ b/src/journal/sd-journal.c -@@ -1831,8 +1831,10 @@ _public_ void sd_journal_close(sd_journal *j) { - if (j->inotify_fd >= 0) - close_nointr_nofail(j->inotify_fd); - -- if (j->mmap) -+ if (j->mmap) { -+ log_debug("mmap cache statistics: %u hit, %u miss", mmap_cache_get_hit(j->mmap), mmap_cache_get_missed(j->mmap)); - mmap_cache_unref(j->mmap); -+ } - - free(j->path); - free(j->unique_field); diff --git a/0126-journal-optimize-bisection-logic-a-bit-by-caching-th.patch b/0126-journal-optimize-bisection-logic-a-bit-by-caching-th.patch deleted file mode 100644 index 41a159e..0000000 --- a/0126-journal-optimize-bisection-logic-a-bit-by-caching-th.patch +++ /dev/null @@ -1,246 +0,0 @@ -From a460644e808ed7671e28ef8231ee590317371fed Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 26 Nov 2013 20:37:53 +0100 -Subject: [PATCH] journal: optimize bisection logic a bit by caching the last - position - -This way we can do a quick restart limiting a bit how wildly we need to -jump around during the bisection process. - -(cherry picked from commit f268980d2cee694fa4118a71402a47c316af0425) ---- - src/journal/journal-file.c | 134 +++++++++++++++++++++++++++++++++------------ - 1 file changed, 99 insertions(+), 35 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index d3bdaea..02f7554 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1366,6 +1366,7 @@ typedef struct ChainCacheItem { - uint64_t array; /* the cached array */ - uint64_t begin; /* the first item in the cached array */ - uint64_t total; /* the total number of items in all arrays before this one in the chain */ -+ uint64_t last_index; /* the last index we looked at, to optimize locality when bisecting */ - } ChainCacheItem; - - static void chain_cache_put( -@@ -1374,7 +1375,8 @@ static void chain_cache_put( - uint64_t first, - uint64_t array, - uint64_t begin, -- uint64_t total) { -+ uint64_t total, -+ uint64_t last_index) { - - if (!ci) { - /* If the chain item to cache for this chain is the -@@ -1402,12 +1404,14 @@ static void chain_cache_put( - ci->array = array; - ci->begin = begin; - ci->total = total; -+ ci->last_index = last_index; - } - --static int generic_array_get(JournalFile *f, -- uint64_t first, -- uint64_t i, -- Object **ret, uint64_t *offset) { -+static int generic_array_get( -+ JournalFile *f, -+ uint64_t first, -+ uint64_t i, -+ Object **ret, uint64_t *offset) { - - Object *o; - uint64_t p = 0, a, t = 0; -@@ -1448,7 +1452,7 @@ static int generic_array_get(JournalFile *f, - - found: - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t); -+ chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i); - - r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o); - if (r < 0) -@@ -1463,11 +1467,12 @@ found: - return 1; - } - --static int generic_array_get_plus_one(JournalFile *f, -- uint64_t extra, -- uint64_t first, -- uint64_t i, -- Object **ret, uint64_t *offset) { -+static int generic_array_get_plus_one( -+ JournalFile *f, -+ uint64_t extra, -+ uint64_t first, -+ uint64_t i, -+ Object **ret, uint64_t *offset) { - - Object *o; - -@@ -1498,17 +1503,18 @@ enum { - TEST_RIGHT - }; - --static int generic_array_bisect(JournalFile *f, -- uint64_t first, -- uint64_t n, -- uint64_t needle, -- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -- direction_t direction, -- Object **ret, -- uint64_t *offset, -- uint64_t *idx) { -- -- uint64_t a, p, t = 0, i = 0, last_p = 0; -+static int generic_array_bisect( -+ JournalFile *f, -+ uint64_t first, -+ uint64_t n, -+ uint64_t needle, -+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -+ direction_t direction, -+ Object **ret, -+ uint64_t *offset, -+ uint64_t *idx) { -+ -+ uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = (uint64_t) -1; - bool subtract_one = false; - Object *o, *array = NULL; - int r; -@@ -1533,7 +1539,7 @@ static int generic_array_bisect(JournalFile *f, - return r; - - if (r == TEST_LEFT) { -- /* OK, what we are looking for is right of th -+ /* OK, what we are looking for is right of the - * begin of this EntryArray, so let's jump - * straight to previously cached array in the - * chain */ -@@ -1541,6 +1547,7 @@ static int generic_array_bisect(JournalFile *f, - a = ci->array; - n -= ci->total; - t = ci->total; -+ last_index = ci->last_index; - } - } - -@@ -1571,6 +1578,60 @@ static int generic_array_bisect(JournalFile *f, - if (r == TEST_RIGHT) { - left = 0; - right -= 1; -+ -+ if (last_index != (uint64_t) -1) { -+ assert(last_index <= right); -+ -+ /* If we cached the last index we -+ * looked at, let's try to not to jump -+ * too wildly around and see if we can -+ * limit the range to look at early to -+ * the immediate neighbors of the last -+ * index we looked at. */ -+ -+ if (last_index > 0) { -+ uint64_t x = last_index - 1; -+ -+ p = le64toh(array->entry_array.items[x]); -+ if (p <= 0) -+ return -EBADMSG; -+ -+ r = test_object(f, p, needle); -+ if (r < 0) -+ return r; -+ -+ if (r == TEST_FOUND) -+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT; -+ -+ if (r == TEST_RIGHT) -+ right = x; -+ else -+ left = x + 1; -+ } -+ -+ if (last_index < right) { -+ uint64_t y = last_index + 1; -+ -+ p = le64toh(array->entry_array.items[y]); -+ if (p <= 0) -+ return -EBADMSG; -+ -+ r = test_object(f, p, needle); -+ if (r < 0) -+ return r; -+ -+ if (r == TEST_FOUND) -+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT; -+ -+ if (r == TEST_RIGHT) -+ right = y; -+ else -+ left = y + 1; -+ } -+ -+ last_index = (uint64_t) -1; -+ } -+ - for (;;) { - if (left == right) { - if (direction == DIRECTION_UP) -@@ -1581,8 +1642,8 @@ static int generic_array_bisect(JournalFile *f, - } - - assert(left < right); -- - i = (left + right) / 2; -+ - p = le64toh(array->entry_array.items[i]); - if (p <= 0) - return -EBADMSG; -@@ -1615,6 +1676,7 @@ static int generic_array_bisect(JournalFile *f, - - n -= k; - t += k; -+ last_index = (uint64_t) -1; - a = le64toh(array->entry_array.next_entry_array_offset); - } - -@@ -1625,7 +1687,7 @@ found: - return 0; - - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t); -+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0)); - - if (subtract_one && i == 0) - p = last_p; -@@ -1650,16 +1712,18 @@ found: - return 1; - } - --static int generic_array_bisect_plus_one(JournalFile *f, -- uint64_t extra, -- uint64_t first, -- uint64_t n, -- uint64_t needle, -- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -- direction_t direction, -- Object **ret, -- uint64_t *offset, -- uint64_t *idx) { -+ -+static int generic_array_bisect_plus_one( -+ JournalFile *f, -+ uint64_t extra, -+ uint64_t first, -+ uint64_t n, -+ uint64_t needle, -+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle), -+ direction_t direction, -+ Object **ret, -+ uint64_t *offset, -+ uint64_t *idx) { - - int r; - bool step_back = false; diff --git a/0127-journal-fix-iteration-when-we-go-backwards-from-the-.patch b/0127-journal-fix-iteration-when-we-go-backwards-from-the-.patch deleted file mode 100644 index 29c2fbe..0000000 --- a/0127-journal-fix-iteration-when-we-go-backwards-from-the-.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 6ddc0196df2400e440e4bddbcc4ce32c636a7ec1 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 00:58:39 +0100 -Subject: [PATCH] journal: fix iteration when we go backwards from the - beginning of an array chain element - -(cherry picked from commit e5462cd80e5328a769137c261c93931ea0c27bab) ---- - src/journal/journal-file.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 02f7554..4e22e08 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1687,7 +1687,7 @@ found: - return 0; - - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0)); -+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i); - - if (subtract_one && i == 0) - p = last_p; diff --git a/0128-journal-allow-journal_file_copy_entry-to-work-on-non.patch b/0128-journal-allow-journal_file_copy_entry-to-work-on-non.patch deleted file mode 100644 index db5c630..0000000 --- a/0128-journal-allow-journal_file_copy_entry-to-work-on-non.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 00a827da3737dc95c2561292c03468fc96f53f14 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 00:59:07 +0100 -Subject: [PATCH] journal: allow journal_file_copy_entry() to work on non-local - files - -(cherry picked from commit 248c78c79c5cca9b981800d816a77591e504066a) ---- - src/journal/journal-file.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 4e22e08..e0abddf 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -2739,10 +2739,6 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 - ts.monotonic = le64toh(o->entry.monotonic); - ts.realtime = le64toh(o->entry.realtime); - -- if (to->tail_entry_monotonic_valid && -- ts.monotonic < le64toh(to->header->tail_entry_monotonic)) -- return -EINVAL; -- - n = journal_file_entry_n_items(o); - items = alloca(sizeof(EntryItem) * n); - diff --git a/0129-journal-simplify-pre-allocation-logic.patch b/0129-journal-simplify-pre-allocation-logic.patch deleted file mode 100644 index e37d415..0000000 --- a/0129-journal-simplify-pre-allocation-logic.patch +++ /dev/null @@ -1,60 +0,0 @@ -From ab3ada57a761fde9050d7452f6bd9d897b9067ec Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 01:44:52 +0100 -Subject: [PATCH] journal: simplify pre-allocation logic - -let's just do a single fallocate() as far as possible, and don't -distuingish between allocated space and file size. - -This way we can save a syscall for each append, which makes quite some -benefits. - -(cherry picked from commit eda4b58b50509dc8ad0428a46e20f6c5cf516d58) ---- - src/journal/journal-file.c | 19 ++++++++----------- - 1 file changed, 8 insertions(+), 11 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index e0abddf..090cf97 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -315,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) { - } - - static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { -- uint64_t old_size, new_size, file_size; -+ uint64_t old_size, new_size; - int r; - - assert(f); -@@ -356,6 +356,11 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - } - } - -+ /* Increase by larger blocks at once */ -+ new_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size) -+ new_size = f->metrics.max_size; -+ - /* Note that the glibc fallocate() fallback is very - inefficient, hence we try to minimize the allocation area - as we can. */ -@@ -363,16 +368,8 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) - if (r != 0) - return -r; - -- /* Increase the file size a bit further than this, so that we -- * we can create larger memory maps to cache */ -- file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE; -- if (file_size > (uint64_t) f->last_stat.st_size) { -- if (file_size > new_size) -- ftruncate(f->fd, file_size); -- -- if (fstat(f->fd, &f->last_stat) < 0) -- return -errno; -- } -+ if (fstat(f->fd, &f->last_stat) < 0) -+ return -errno; - - f->header->arena_size = htole64(new_size - le64toh(f->header->header_size)); - diff --git a/0130-journald-mention-how-long-we-needed-to-flush-to-var-.patch b/0130-journald-mention-how-long-we-needed-to-flush-to-var-.patch deleted file mode 100644 index 2fe9226..0000000 --- a/0130-journald-mention-how-long-we-needed-to-flush-to-var-.patch +++ /dev/null @@ -1,56 +0,0 @@ -From f201d0f2ca7adcfcbb854a83ff9a75b40ace7967 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 27 Nov 2013 01:54:25 +0100 -Subject: [PATCH] journald: mention how long we needed to flush to /var in the - logs - -(cherry picked from commit fbb634117d0b0ebd5b105e65b141e75ae9af7f8f) ---- - src/journal/journald-server.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c -index e03e413..a0a8e9c 100644 ---- a/src/journal/journald-server.c -+++ b/src/journal/journald-server.c -@@ -968,9 +968,12 @@ static int system_journal_open(Server *s) { - } - - int server_flush_to_var(Server *s) { -- int r; - sd_id128_t machine; - sd_journal *j = NULL; -+ char ts[FORMAT_TIMESPAN_MAX]; -+ usec_t start; -+ unsigned n = 0; -+ int r; - - assert(s); - -@@ -988,6 +991,8 @@ int server_flush_to_var(Server *s) { - - log_debug("Flushing to /var..."); - -+ start = now(CLOCK_MONOTONIC); -+ - r = sd_id128_get_machine(&machine); - if (r < 0) - return r; -@@ -1007,6 +1012,8 @@ int server_flush_to_var(Server *s) { - f = j->current_file; - assert(f && f->current_offset > 0); - -+ n++; -+ - r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o); - if (r < 0) { - log_error("Can't read entry: %s", strerror(-r)); -@@ -1050,6 +1057,8 @@ finish: - - sd_journal_close(j); - -+ server_driver_message(s, SD_ID128_NULL, "Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n); -+ - return r; - } - diff --git a/0131-automount-log-info-about-triggering-process.patch b/0131-automount-log-info-about-triggering-process.patch deleted file mode 100644 index 0cf8a97..0000000 --- a/0131-automount-log-info-about-triggering-process.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e64e35b2f24f0a2979d435a752d2ab141c5a0cc2 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Thu, 28 Nov 2013 01:25:10 +0100 -Subject: [PATCH] automount: log info about triggering process - -Conflicts: - src/core/automount.c ---- - src/core/automount.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/automount.c b/src/core/automount.c -index d1379e0..203104e 100644 ---- a/src/core/automount.c -+++ b/src/core/automount.c -@@ -776,8 +776,8 @@ static void automount_fd_event(Unit *u, int fd, uint32_t events, Watch *w) { - _cleanup_free_ char *p = NULL; - - get_process_comm(packet.v5_packet.pid, &p); -- log_debug_unit(u->id, -- "Got direct mount request on %s, triggered by %lu (%s)", -+ log_info_unit(u->id, -+ "Got automount request for %s, triggered by %lu (%s)", - a->where, (unsigned long) packet.v5_packet.pid, strna(p)); - } else - log_debug_unit(u->id, "Got direct mount request on %s", a->where); diff --git a/0132-virt-split-detect_vm-into-separate-functions.patch b/0132-virt-split-detect_vm-into-separate-functions.patch deleted file mode 100644 index a0c1028..0000000 --- a/0132-virt-split-detect_vm-into-separate-functions.patch +++ /dev/null @@ -1,205 +0,0 @@ -From 4931213c9f9fed23c4a103eda1ee19aa06b9f613 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 28 Nov 2013 13:34:08 -0500 -Subject: [PATCH] virt: split detect_vm into separate functions - -It didn't build on arm. Let's simplify it a bit by -splitting x86 specific parts out, which should also make -things easier when arm virtualization support is added. ---- - src/shared/virt.c | 140 +++++++++++++++++++++++++++++++----------------------- - 1 file changed, 81 insertions(+), 59 deletions(-) - -diff --git a/src/shared/virt.c b/src/shared/virt.c -index 537ccda..4e18638 100644 ---- a/src/shared/virt.c -+++ b/src/shared/virt.c -@@ -27,30 +27,10 @@ - #include "virt.h" - #include "fileio.h" - --/* Returns a short identifier for the various VM implementations */ --int detect_vm(const char **id) { -- _cleanup_free_ char *cpuinfo_contents = NULL; -- int r; -- --#if defined(__i386__) || defined(__x86_64__) -+static int detect_vm_cpuid(const char **_id) { - - /* Both CPUID and DMI are x86 specific interfaces... */ -- -- static const char *const dmi_vendors[] = { -- "/sys/class/dmi/id/sys_vendor", -- "/sys/class/dmi/id/board_vendor", -- "/sys/class/dmi/id/bios_vendor" -- }; -- -- static const char dmi_vendor_table[] = -- "QEMU\0" "qemu\0" -- /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */ -- "VMware\0" "vmware\0" -- "VMW\0" "vmware\0" -- "Microsoft Corporation\0" "microsoft\0" -- "innotek GmbH\0" "oracle\0" -- "Xen\0" "xen\0" -- "Bochs\0" "bochs\0"; -+#if defined(__i386__) || defined(__x86_64__) - - static const char cpuid_vendor_table[] = - "XenVMMXenVMM\0" "xen\0" -@@ -60,40 +40,13 @@ int detect_vm(const char **id) { - /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */ - "Microsoft Hv\0" "microsoft\0"; - -- static __thread int cached_found = -1; -- static __thread const char *cached_id = NULL; -- - uint32_t eax, ecx; - union { - uint32_t sig32[3]; - char text[13]; - } sig = {}; -- unsigned i; - const char *j, *k; - bool hypervisor; -- _cleanup_free_ char *hvtype = NULL; -- const char *_id = NULL; -- -- if (_likely_(cached_found >= 0)) { -- -- if (id) -- *id = cached_id; -- -- return cached_found; -- } -- -- /* Try high-level hypervisor sysfs file first: -- * -- * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */ -- r = read_one_line_file("/sys/hypervisor/type", &hvtype); -- if (r >= 0) { -- if (streq(hvtype, "xen")) { -- _id = "xen"; -- r = 1; -- goto finish; -- } -- } else if (r != -ENOENT) -- return r; - - /* http://lwn.net/Articles/301888/ */ - -@@ -136,14 +89,44 @@ int detect_vm(const char **id) { - - NULSTR_FOREACH_PAIR(j, k, cpuid_vendor_table) - if (streq(sig.text, j)) { -- _id = k; -- r = 1; -- goto finish; -+ *_id = k; -+ return 1; - } -+ -+ *_id = "other"; -+ return 0; - } -+#endif -+ -+ return 0; -+} -+ -+static int detect_vm_dmi(const char **_id) { -+ -+ /* Both CPUID and DMI are x86 specific interfaces... */ -+#if defined(__i386__) || defined(__x86_64__) -+ -+ static const char *const dmi_vendors[] = { -+ "/sys/class/dmi/id/sys_vendor", -+ "/sys/class/dmi/id/board_vendor", -+ "/sys/class/dmi/id/bios_vendor" -+ }; -+ -+ static const char dmi_vendor_table[] = -+ "QEMU\0" "qemu\0" -+ /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */ -+ "VMware\0" "vmware\0" -+ "VMW\0" "vmware\0" -+ "Microsoft Corporation\0" "microsoft\0" -+ "innotek GmbH\0" "oracle\0" -+ "Xen\0" "xen\0" -+ "Bochs\0" "bochs\0"; -+ unsigned i; - - for (i = 0; i < ELEMENTSOF(dmi_vendors); i++) { - _cleanup_free_ char *s = NULL; -+ const char *j, *k; -+ int r; - - r = read_one_line_file(dmi_vendors[i], &s); - if (r < 0) { -@@ -155,20 +138,59 @@ int detect_vm(const char **id) { - - NULSTR_FOREACH_PAIR(j, k, dmi_vendor_table) - if (startswith(s, j)) { -- _id = k; -- r = 1; -- goto finish; -+ *_id = k; -+ return 1; - } - } -+#endif - -- if (hypervisor || hvtype) { -- _id = "other"; -+ return 0; -+} -+ -+/* Returns a short identifier for the various VM implementations */ -+int detect_vm(const char **id) { -+ _cleanup_free_ char *hvtype = NULL, *cpuinfo_contents = NULL; -+ static __thread int cached_found = -1; -+ static __thread const char *cached_id = NULL; -+ const char *_id = NULL; -+ int r; -+ -+ if (_likely_(cached_found >= 0)) { -+ -+ if (id) -+ *id = cached_id; -+ -+ return cached_found; -+ } -+ -+ /* Try high-level hypervisor sysfs file first: -+ * -+ * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */ -+ r = read_one_line_file("/sys/hypervisor/type", &hvtype); -+ if (r >= 0) { -+ if (streq(hvtype, "xen")) { -+ _id = "xen"; -+ r = 1; -+ goto finish; -+ } -+ } else if (r != -ENOENT) -+ return r; -+ -+ /* this will set _id to "other" and return 0 for unknown hypervisors */ -+ r = detect_vm_cpuid(&_id); -+ if (r != 0) -+ goto finish; -+ -+ r = detect_vm_dmi(&_id); -+ if (r != 0) -+ goto finish; -+ -+ if (_id) { -+ /* "other" */ - r = 1; - goto finish; - } - --#endif -- - /* Detect User-Mode Linux by reading /proc/cpuinfo */ - r = read_full_file("/proc/cpuinfo", &cpuinfo_contents, NULL); - if (r < 0) diff --git a/0133-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0133-hwdb-Update-database-of-Bluetooth-company-identifier.patch deleted file mode 100644 index adbd9ad..0000000 --- a/0133-hwdb-Update-database-of-Bluetooth-company-identifier.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 123cc4b594188a5caed955e77228a37001ee451f Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Fri, 29 Nov 2013 07:26:47 -0800 -Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers - ---- - hwdb/20-bluetooth-vendor-product.hwdb | 109 +++++++++++++++++++++++++++++++++- - 1 file changed, 107 insertions(+), 2 deletions(-) - -diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb -index faecf42..dcc25bb 100644 ---- a/hwdb/20-bluetooth-vendor-product.hwdb -+++ b/hwdb/20-bluetooth-vendor-product.hwdb -@@ -366,6 +366,9 @@ bluetooth:v0077* - bluetooth:v0078* - ID_VENDOR_FROM_DATABASE=Nike, Inc. - -+bluetooth:v0078p0001* -+ ID_PRODUCT_FROM_DATABASE=Nike+ FuelBand -+ - bluetooth:v0079* - ID_VENDOR_FROM_DATABASE=lesswire AG - -@@ -457,7 +460,7 @@ bluetooth:v0096* - ID_VENDOR_FROM_DATABASE=ODM Technology, Inc. - - bluetooth:v0097* -- ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited -+ ID_VENDOR_FROM_DATABASE=ConnecteDevice Ltd. - - bluetooth:v0098* - ID_VENDOR_FROM_DATABASE=zer01.tv GmbH -@@ -634,7 +637,7 @@ bluetooth:v00D2* - ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V. - - bluetooth:v00D3* -- ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD. -+ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD. - - bluetooth:v00D4* - ID_VENDOR_FROM_DATABASE=Kawantech -@@ -716,3 +719,105 @@ bluetooth:v00ED* - - bluetooth:v00EE* - ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc. -+ -+bluetooth:v00EF* -+ ID_VENDOR_FROM_DATABASE=Bitsplitters GmbH -+ -+bluetooth:v00F0* -+ ID_VENDOR_FROM_DATABASE=PayPal, Inc. -+ -+bluetooth:v00F1* -+ ID_VENDOR_FROM_DATABASE=Witron Technology Limited -+ -+bluetooth:v00F2* -+ ID_VENDOR_FROM_DATABASE=Morse Project Inc. -+ -+bluetooth:v00F3* -+ ID_VENDOR_FROM_DATABASE=Kent Displays Inc. -+ -+bluetooth:v00F4* -+ ID_VENDOR_FROM_DATABASE=Nautilus Inc. -+ -+bluetooth:v00F5* -+ ID_VENDOR_FROM_DATABASE=Smartifier Oy -+ -+bluetooth:v00F6* -+ ID_VENDOR_FROM_DATABASE=Elcometer Limited -+ -+bluetooth:v00F7* -+ ID_VENDOR_FROM_DATABASE=VSN Technologies Inc. -+ -+bluetooth:v00F8* -+ ID_VENDOR_FROM_DATABASE=AceUni Corp., Ltd. -+ -+bluetooth:v00F9* -+ ID_VENDOR_FROM_DATABASE=StickNFind -+ -+bluetooth:v00FA* -+ ID_VENDOR_FROM_DATABASE=Crystal Code AB -+ -+bluetooth:v00FB* -+ ID_VENDOR_FROM_DATABASE=KOUKAAM a.s. -+ -+bluetooth:v00FC* -+ ID_VENDOR_FROM_DATABASE=Delphi Corporation -+ -+bluetooth:v00FD* -+ ID_VENDOR_FROM_DATABASE=ValenceTech Limited -+ -+bluetooth:v00FE* -+ ID_VENDOR_FROM_DATABASE=Reserved -+ -+bluetooth:v00FF* -+ ID_VENDOR_FROM_DATABASE=Typo Products, LLC -+ -+bluetooth:v0100* -+ ID_VENDOR_FROM_DATABASE=TomTom International BV -+ -+bluetooth:v0101* -+ ID_VENDOR_FROM_DATABASE=Fugoo, Inc -+ -+bluetooth:v0102* -+ ID_VENDOR_FROM_DATABASE=Keiser Corporation -+ -+bluetooth:v0103* -+ ID_VENDOR_FROM_DATABASE=Bang & Olufsen A/S -+ -+bluetooth:v0104* -+ ID_VENDOR_FROM_DATABASE=PLUS Locations Systems Pty Ltd -+ -+bluetooth:v0105* -+ ID_VENDOR_FROM_DATABASE=Ubiquitous Computing Technology Corporation -+ -+bluetooth:v0106* -+ ID_VENDOR_FROM_DATABASE=Innovative Yachtter Solutions -+ -+bluetooth:v0107* -+ ID_VENDOR_FROM_DATABASE=William Demant Holding A/S -+ -+bluetooth:v0108* -+ ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd. -+ -+bluetooth:v0109* -+ ID_VENDOR_FROM_DATABASE=Atus BV -+ -+bluetooth:v010A* -+ ID_VENDOR_FROM_DATABASE=Codegate Ltd. -+ -+bluetooth:v010B* -+ ID_VENDOR_FROM_DATABASE=ERi, Inc. -+ -+bluetooth:v010C* -+ ID_VENDOR_FROM_DATABASE=Transducers Direct, LLC -+ -+bluetooth:v010D* -+ ID_VENDOR_FROM_DATABASE=Fujitsu Ten Limited -+ -+bluetooth:v010E* -+ ID_VENDOR_FROM_DATABASE=Audi AG -+ -+bluetooth:v010F* -+ ID_VENDOR_FROM_DATABASE=HiSilicon Technologies Co., Ltd. -+ -+bluetooth:v0110* -+ ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd. diff --git a/0134-sysfs-show.c-return-negative-error.patch b/0134-sysfs-show.c-return-negative-error.patch deleted file mode 100644 index d94a211..0000000 --- a/0134-sysfs-show.c-return-negative-error.patch +++ /dev/null @@ -1,23 +0,0 @@ -From cd0e1552ad5d5dffdd0f8a01fa9b451d3e14a60d Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Sat, 30 Nov 2013 21:59:40 +0100 -Subject: [PATCH] sysfs-show.c: return negative error - -introduced in 1ca208fb4f93e5869704af1812cbff7130a2fc03 ---- - src/login/sysfs-show.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c -index 7c1adfa..f7d11dd 100644 ---- a/src/login/sysfs-show.c -+++ b/src/login/sysfs-show.c -@@ -164,7 +164,7 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) { - - e = udev_enumerate_new(udev); - if (!e) -- return ENOMEM; -+ return -ENOMEM; - - if (!streq(seat, "seat0")) - r = udev_enumerate_add_match_tag(e, seat); diff --git a/0135-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch b/0135-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch deleted file mode 100644 index 20deb99..0000000 --- a/0135-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 05175fd678f6f7f09ff9543cd11bbd7ebf14fe58 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Sat, 30 Nov 2013 23:45:31 +0100 -Subject: [PATCH] util.c: check if return value from ttyname_r is > 0 instead - of != 0 - -We must return a negative error code from getttyname_malloc but -that would not be the case if ttyname_r returned a negative value. - -ttyname_r should only return EBADF, ENOTTY, or ERANGE so it should -be safe to change. ---- - src/shared/util.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 3fc080a..1510c5e 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -2561,7 +2561,7 @@ int getttyname_malloc(int fd, char **r) { - assert(r); - - k = ttyname_r(fd, path, sizeof(path)); -- if (k != 0) -+ if (k > 0) - return -k; - - char_array_0(path); diff --git a/0136-docs-remove-unneeded-the-s-in-gudev-docs.patch b/0136-docs-remove-unneeded-the-s-in-gudev-docs.patch deleted file mode 100644 index 8669be8..0000000 --- a/0136-docs-remove-unneeded-the-s-in-gudev-docs.patch +++ /dev/null @@ -1,38 +0,0 @@ -From bbf5b0815c2561c3a98903160f3193953ba962c6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 30 Nov 2013 20:27:54 -0500 -Subject: [PATCH] docs: remove unneeded the's in gudev docs - -https://bugs.freedesktop.org/show_bug.cgi?id=72164 ---- - src/libudev/libudev-device.c | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c -index a644904..161181a 100644 ---- a/src/libudev/libudev-device.c -+++ b/src/libudev/libudev-device.c -@@ -980,9 +980,8 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic - * Find the next parent device, and fill in information from the sys - * device and the udev database entry. - * -- * The returned the device is not referenced. It is attached to the -- * child device, and will be cleaned up when the child device -- * is cleaned up. -+ * Returned device is not referenced. It is attached to the child -+ * device, and will be cleaned up when the child device is cleaned up. - * - * It is not necessarily just the upper level directory, empty or not - * recognized sys directories are ignored. -@@ -1016,9 +1015,8 @@ _public_ struct udev_device *udev_device_get_parent(struct udev_device *udev_dev - * If devtype is #NULL, only subsystem is checked, and any devtype will - * match. - * -- * The returned the device is not referenced. It is attached to the -- * child device, and will be cleaned up when the child device -- * is cleaned up. -+ * Returned device is not referenced. It is attached to the child -+ * device, and will be cleaned up when the child device is cleaned up. - * - * It can be called as many times as needed, without caring about - * references. diff --git a/0137-man-explicitly-say-when-multiple-units-can-be-specif.patch b/0137-man-explicitly-say-when-multiple-units-can-be-specif.patch deleted file mode 100644 index f4cbb4a..0000000 --- a/0137-man-explicitly-say-when-multiple-units-can-be-specif.patch +++ /dev/null @@ -1,235 +0,0 @@ -From 06c5b7a9f3d47834ea4dbbfb24f169b6893dd338 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 30 Nov 2013 21:23:01 -0500 -Subject: [PATCH] man: explicitly say when multiple units can be specified - -itistoday> how do you specify multiple dependencies in a unit file? i've been - googling and can't find this basic thing :-\ -itistoday> do you use a comma, or use multiple After= statements? ---- - man/systemd.unit.xml | 128 ++++++++++++++++++++++++++++----------------------- - 1 file changed, 70 insertions(+), 58 deletions(-) - -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 5c8b8e8..029392c 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -410,10 +410,12 @@ - of the other units gets deactivated or - its activation fails, this unit will - be deactivated. This option may be -- specified more than once, in which -- case requirement dependencies for all -- listed names are created. Note that -- requirement dependencies do not -+ specified more than once or multiple -+ space-separated units may be specified -+ in one option in which case -+ requirement dependencies for all -+ listed names will be created. Note -+ that requirement dependencies do not - influence the order in which services - are started or stopped. This has to be - configured independently with the -@@ -476,22 +478,23 @@ - RequisiteOverridable= - - Similar to -- Requires= -- and RequiresOverridable=, respectively. However, -- if a unit listed here is not started -- already it will not be started and the -- transaction fails -- immediately. -+ Requires= and -+ RequiresOverridable=, -+ respectively. However, if the units -+ listed here are not started already -+ they will not be started and the -+ transaction will fail immediately. -+ - - - - Wants= - - A weaker version of -- Requires=. A unit -+ Requires=. Units - listed in this option will be started - if the configuring unit is. However, -- if the listed unit fails to start up -+ if the listed units fail to start - or cannot be added to the transaction - this has no impact on the validity of - the transaction as a whole. This is -@@ -501,8 +504,8 @@ - - Note that dependencies of this - type may also be configured outside of -- the unit configuration file by -- adding a symlink to a -+ the unit configuration file by adding -+ symlinks to a - .wants/ directory - accompanying the unit file. For - details see above. -@@ -534,7 +537,7 @@ - of units. When systemd stops or restarts - the units listed here, the action is - propagated to this unit. -- Note that this is a one way dependency - -+ Note that this is a one way dependency — - changes to this unit do not affect the - listed units. - -@@ -543,12 +546,12 @@ - - Conflicts= - -- Configures negative -+ A space-separated list -+ of unit names. Configures negative - requirement dependencies. If a unit -- has a -- Conflicts= setting -- on another unit, starting the former -- will stop the latter and vice -+ has a Conflicts= -+ setting on another unit, starting the -+ former will stop the latter and vice - versa. Note that this setting is - independent of and orthogonal to the - After= and -@@ -575,7 +578,8 @@ - Before= - After= - -- Configures ordering -+ A space-separated list -+ of unit names. Configures ordering - dependencies between units. If a unit - foo.service - contains a setting -@@ -624,18 +628,18 @@ - type After= or - Before=. If two - units have no ordering dependencies -- between them, they are shut down -- or started up simultaneously, and -- no ordering takes -+ between them, they are shut down or -+ started up simultaneously, and no -+ ordering takes - place. - - - - OnFailure= - -- Lists one or more -- units that are activated when this -- unit enters the -+ A space-separated list -+ of one or more units that are -+ activated when this unit enters the - failed - state. - -@@ -644,16 +648,17 @@ - PropagatesReloadTo= - ReloadPropagatedFrom= - -- Lists one or more -- units where reload requests on the -- unit will be propagated to/on the -- other unit will be propagated -- from. Issuing a reload request on a -- unit will automatically also enqueue a -- reload request on all units that the -- reload request shall be propagated to -- via these two -- settings. -+ A space-separated list -+ of one or more units where reload -+ requests on this unit will be -+ propagated to, or reload requests on -+ the other unit will be propagated to -+ this unit, respectively. Issuing a -+ reload request on a unit will -+ automatically also enqueue a reload -+ request on all units that the reload -+ request shall be propagated to via -+ these two settings. - - - -@@ -1089,32 +1094,34 @@ - - Alias= - -- Additional names this -- unit shall be installed under. The -- names listed here must have the same -- suffix (i.e. type) as the unit file -- name. This option may be specified -- more than once, in which case all -- listed names are used. At installation -- time, -- systemctl enable -- will create symlinks from these names -- to the unit filename. -+ A space-seperated list -+ of additional names this unit shall be -+ installed under. The names listed here -+ must have the same suffix (i.e. type) -+ as the unit file name. This option may -+ be specified more than once, in which -+ case all listed names are used. At -+ installation time, systemctl -+ enable will create symlinks -+ from these names to the unit -+ filename. - - - - WantedBy= - RequiredBy= - -- A symbolic link is -- created in the -- .wants/ or -- .requires/ directory -- of the listed unit when this unit is -- activated by systemctl -- enable. This has the effect -- that a dependency of type -- Wants= or -+ This option may be -+ used more than once, or a -+ space-separated list of unit names may -+ be given. A symbolic link is created -+ in the .wants/ or -+ .requires/ -+ directory of each of the listed units -+ when this unit is installed by -+ systemctl enable. -+ This has the effect that a dependency -+ of type Wants= or - Requires= is added - from the listed unit to the current - unit. The primary result is that the -@@ -1160,7 +1167,12 @@ - and systemctl - disable will automatically - install/uninstall units listed in this option as -- well. -+ well. -+ -+ This option may be used more -+ than once, or a space-separated list -+ of unit names may be -+ given. - - - diff --git a/0138-systemd-treat-reload-failure-as-failure.patch b/0138-systemd-treat-reload-failure-as-failure.patch deleted file mode 100644 index be0b057..0000000 --- a/0138-systemd-treat-reload-failure-as-failure.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 99e4b98b064042a2c1cea103941a7895b183821e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 2 Dec 2013 21:52:51 -0500 -Subject: [PATCH] systemd: treat reload failure as failure - -systemctl reload "suceeded" on stopped units, but it is documented -to fail in this case. - -https://bugzilla.redhat.com/show_bug.cgi?id=1036845 ---- - src/core/job.c | 11 +++++++---- - src/core/job.h | 3 ++- - src/core/unit.c | 5 ++++- - 3 files changed, 13 insertions(+), 6 deletions(-) - -diff --git a/src/core/job.c b/src/core/job.c -index dc3bc12..7d2b994 100644 ---- a/src/core/job.c -+++ b/src/core/job.c -@@ -528,7 +528,7 @@ int job_run_and_invalidate(Job *j) { - else if (t == UNIT_ACTIVATING) - r = -EAGAIN; - else -- r = -ENOEXEC; -+ r = -EBADR; - break; - } - -@@ -557,8 +557,10 @@ int job_run_and_invalidate(Job *j) { - if (j) { - if (r == -EALREADY) - r = job_finish_and_invalidate(j, JOB_DONE, true); -- else if (r == -ENOEXEC) -+ else if (r == -EBADR) - r = job_finish_and_invalidate(j, JOB_SKIPPED, true); -+ else if (r == -ENOEXEC) -+ r = job_finish_and_invalidate(j, JOB_INVALID, true); - else if (r == -EAGAIN) { - j->state = JOB_WAITING; - m->n_running_jobs--; -@@ -784,7 +786,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { - goto finish; - } - -- if (result == JOB_FAILED) -+ if (result == JOB_FAILED || result == JOB_INVALID) - j->manager->n_failed_jobs ++; - - job_uninstall(j); -@@ -1143,7 +1145,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = { - [JOB_TIMEOUT] = "timeout", - [JOB_FAILED] = "failed", - [JOB_DEPENDENCY] = "dependency", -- [JOB_SKIPPED] = "skipped" -+ [JOB_SKIPPED] = "skipped", -+ [JOB_INVALID] = "invalid", - }; - - DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult); -diff --git a/src/core/job.h b/src/core/job.h -index d90bc96..4237529 100644 ---- a/src/core/job.h -+++ b/src/core/job.h -@@ -97,7 +97,8 @@ enum JobResult { - JOB_TIMEOUT, /* JobTimeout elapsed */ - JOB_FAILED, /* Job failed */ - JOB_DEPENDENCY, /* A required dependency job did not result in JOB_DONE */ -- JOB_SKIPPED, /* JOB_RELOAD of inactive unit; negative result of JOB_VERIFY_ACTIVE */ -+ JOB_SKIPPED, /* Negative result of JOB_VERIFY_ACTIVE */ -+ JOB_INVALID, /* JOB_RELOAD of inactive unit */ - _JOB_RESULT_MAX, - _JOB_RESULT_INVALID = -1 - }; -diff --git a/src/core/unit.c b/src/core/unit.c -index b65e798..6c2c4a0 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1239,8 +1239,11 @@ int unit_reload(Unit *u) { - if (state == UNIT_RELOADING) - return -EALREADY; - -- if (state != UNIT_ACTIVE) -+ if (state != UNIT_ACTIVE) { -+ log_warning_unit(u->id, "Unit %s cannot be reloaded because it is inactive.", -+ u->id); - return -ENOEXEC; -+ } - - if ((following = unit_following(u))) { - log_debug_unit(u->id, "Redirecting reload request from %s to %s.", diff --git a/0139-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch b/0139-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch deleted file mode 100644 index 5cbb239..0000000 --- a/0139-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9c6964b0a23852353aaa0ca0c30586c3f19502b7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 3 Dec 2013 08:07:32 -0500 -Subject: [PATCH] journal: fail silently in sd_j_sendv() if journal is - unavailable - -"syslog(3) and sd_journal_print() may largely be used interchangeably -functionality-wise" according to sd_journal_print(3). This socket -should be always available except in rare circumstatances, and we -don't random applications to fail on logging, so let's do what syslog -did. The alternative of forcing all callers to do error handling for -this rare case doesn't really have any benefits, since if they can't -log there isn't much they can do anyway. - -https://bugzilla.redhat.com/show_bug.cgi?id=1023041 ---- - src/journal/journal-send.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c -index d00e26f..d99ff0c 100644 ---- a/src/journal/journal-send.c -+++ b/src/journal/journal-send.c -@@ -305,6 +305,10 @@ _public_ int sd_journal_sendv(const struct iovec *iov, int n) { - if (k >= 0) - return 0; - -+ /* Fail silently if the journal is not available */ -+ if (errno == ENOENT) -+ return 0; -+ - if (errno != EMSGSIZE && errno != ENOBUFS) - return -errno; - diff --git a/0140-systemd-add-a-start-job-for-all-units-specified-with.patch b/0140-systemd-add-a-start-job-for-all-units-specified-with.patch deleted file mode 100644 index 269ab55..0000000 --- a/0140-systemd-add-a-start-job-for-all-units-specified-with.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 043a559ff3732439fc61872a6320ee0a05dd088f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 5 Dec 2013 00:41:12 -0500 -Subject: [PATCH] systemd: add a start job for all units specified with - SYSTEMD_WANTS= - ---- - src/core/device.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/src/core/device.c b/src/core/device.c -index 5397bd6..610fe88 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -281,7 +281,8 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - size_t l; - - FOREACH_WORD_QUOTED(w, l, wants, state) { -- char *e, *n; -+ _cleanup_free_ char *e, *n = NULL; -+ Unit *other; - - e = strndup(w, l); - if (!e) { -@@ -293,12 +294,19 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - r = -ENOMEM; - goto fail; - } -- free(e); - - r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true); -- free(n); - if (r < 0) - goto fail; -+ -+ other = manager_get_unit(u->manager, n); -+ if (!other || !unit_can_start(other)) -+ continue; -+ -+ r = manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL); -+ if (r < 0) -+ log_warning("Failed to add job %s/%s, ignoring: %s.", -+ other->id, job_type_to_string(JOB_START), strerror(-r)); - } - } - } diff --git a/0141-core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch b/0141-core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch deleted file mode 100644 index de66012..0000000 --- a/0141-core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch +++ /dev/null @@ -1,25 +0,0 @@ -From bd819c6a6761827adc05f15ebc20bd78a1c751dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 5 Dec 2013 16:06:04 -0500 -Subject: [PATCH] core/device: ignore SYSTEMD_WANTS= in user mode - ---- - src/core/device.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/core/device.c b/src/core/device.c -index 610fe88..e02c207 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -275,8 +275,9 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - } - } - -- wants = udev_device_get_property_value(dev, "SYSTEMD_WANTS"); -- if (wants) { -+ if (u->manager->running_as == SYSTEMD_SYSTEM && -+ (wants = udev_device_get_property_value(dev, "SYSTEMD_WANTS"))) { -+ - char *state, *w; - size_t l; - diff --git a/0142-Fix-memory-leak-in-stdout-journal-streams.patch b/0142-Fix-memory-leak-in-stdout-journal-streams.patch deleted file mode 100644 index 7f86517..0000000 --- a/0142-Fix-memory-leak-in-stdout-journal-streams.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 371ce08fb9814a39ca2f984d6040aaf0f6c172e8 Mon Sep 17 00:00:00 2001 -From: Dan McGee -Date: Sun, 8 Dec 2013 14:33:45 -0600 -Subject: [PATCH] Fix memory leak in stdout journal streams - -Just as 'identifier' is strdup-ed and freed, we need to do the same for -unit_id. ---- - src/journal/journald-stream.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c -index 9c4efec..4080622 100644 ---- a/src/journal/journald-stream.c -+++ b/src/journal/journald-stream.c -@@ -339,6 +339,7 @@ void stdout_stream_free(StdoutStream *s) { - #endif - - free(s->identifier); -+ free(s->unit_id); - free(s); - } - diff --git a/0143-man-document-is-enabled-output.patch b/0143-man-document-is-enabled-output.patch deleted file mode 100644 index 2f4fdd8..0000000 --- a/0143-man-document-is-enabled-output.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 77e9da01ad6383aab4d50a00b705ec96f16cb55e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 8 Dec 2013 18:56:16 -0500 -Subject: [PATCH] man: document 'is-enabled' output - -https://bugzilla.redhat.com/show_bug.cgi?id=953077 ---- - man/systemctl.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 59 insertions(+), 5 deletions(-) - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index 166282c..b4bc15d 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -437,7 +437,7 @@ systemctl start foo - - - When used with enable, -- disable, is-enabled -+ disable, - (and related commands), make changes only temporarily, so - that they are lost on the next reboot. This will have the - effect that changes are not made in subdirectories of -@@ -885,10 +885,64 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service - - - Checks whether any of the specified unit files are -- enabled (as with enable). Returns an exit -- code of 0 if at least one is enabled, non-zero -- otherwise. Prints the current enable status. To suppress -- this output, use . -+ enabled (as with enable). Returns an -+ exit code of 0 if at least one is enabled, non-zero -+ otherwise. Prints the current enable status (see table). -+ To suppress this output, use . -+ -+ -+ -+ -+ <command>is-enabled</command> output -+ -+ -+ -+ -+ -+ Printed string -+ Meaning -+ Return value -+ -+ -+ -+ -+ enabled -+ Enabled through a symlink in .wants directory (permanently or just in /run) -+ 0 -+ -+ -+ enabled-runtime -+ -+ -+ linked -+ Made available through a symlink to the unit file (permanently or just in /run) -+ 1 -+ -+ -+ linked-runtime -+ -+ -+ masked -+ Disabled entirely (permanently or just in /run) -+ 1 -+ -+ -+ masked-runtime -+ -+ -+ static -+ Unit is not enabled, but has no provisions for enabling in [Install] section -+ 1 -+ -+ -+ disabled -+ Unit is not enabled -+ 1 -+ -+ -+ -+
-+ -
-
- diff --git a/0144-hostnamed-avoid-using-NULL-in-error-path.patch b/0144-hostnamed-avoid-using-NULL-in-error-path.patch deleted file mode 100644 index 8d62943..0000000 --- a/0144-hostnamed-avoid-using-NULL-in-error-path.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d4ae9b53caa77d17528d36610ad70dd2eb1bb54c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 6 Jan 2014 12:16:55 +0000 -Subject: [PATCH] hostnamed: avoid using NULL in error path - -https://bugzilla.redhat.com/show_bug.cgi?id=1047335 ---- - src/hostname/hostnamed.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c -index 6a43aeb..0c24b65 100644 ---- a/src/hostname/hostnamed.c -+++ b/src/hostname/hostnamed.c -@@ -637,7 +637,7 @@ static int connect_bus(DBusConnection **_bus) { - if (!bus) { - log_error("Failed to get system D-Bus connection: %s", bus_error_message(&error)); - r = -ECONNREFUSED; -- goto fail; -+ goto fail2; - } - - dbus_connection_set_exit_on_disconnect(bus, FALSE); -@@ -669,7 +669,7 @@ static int connect_bus(DBusConnection **_bus) { - fail: - dbus_connection_close(bus); - dbus_connection_unref(bus); -- -+fail2: - dbus_error_free(&error); - - return r; diff --git a/0145-logind-use-correct-who-enum-values-with-KillUnit.patch b/0145-logind-use-correct-who-enum-values-with-KillUnit.patch deleted file mode 100644 index 0c1d66a..0000000 --- a/0145-logind-use-correct-who-enum-values-with-KillUnit.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 524147c1ef991edf4432aac51c880b363b4402df Mon Sep 17 00:00:00 2001 -From: Marius Vollmer -Date: Thu, 31 Oct 2013 15:55:07 +0200 -Subject: [PATCH] logind: use correct "who" enum values with KillUnit. - ---- - src/login/logind-dbus.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index bb85c7d..583d62e 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -2799,7 +2799,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo - assert(manager); - assert(unit); - -- w = who == KILL_LEADER ? "process" : "cgroup"; -+ w = who == KILL_LEADER ? "control" : "all"; - assert_cc(sizeof(signo) == sizeof(int32_t)); - - r = bus_method_call_with_reply( -@@ -2815,7 +2815,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo - DBUS_TYPE_INT32, &signo, - DBUS_TYPE_INVALID); - if (r < 0) { -- log_error("Failed to stop unit %s: %s", unit, bus_error(error, r)); -+ log_error("Failed to kill unit %s: %s", unit, bus_error(error, r)); - return r; - } - diff --git a/0146-Revert-systemd-add-a-start-job-for-all-units-specifi.patch b/0146-Revert-systemd-add-a-start-job-for-all-units-specifi.patch deleted file mode 100644 index bb465d9..0000000 --- a/0146-Revert-systemd-add-a-start-job-for-all-units-specifi.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 106c98f6b08d3b9254b419b09bc4ceed1963d7aa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 14 Jan 2014 17:31:00 -0500 -Subject: [PATCH] Revert "systemd: add a start job for all units specified with - SYSTEMD_WANTS=" - -This reverts commit 043a559ff3732439fc61872a6320ee0a05dd088f. - -This was a mistake, and was reverted upstream. ---- - src/core/device.c | 14 +++----------- - 1 file changed, 3 insertions(+), 11 deletions(-) - -diff --git a/src/core/device.c b/src/core/device.c -index e02c207..f79c206 100644 ---- a/src/core/device.c -+++ b/src/core/device.c -@@ -282,8 +282,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) { -- _cleanup_free_ char *e, *n = NULL; -- Unit *other; -+ char *e, *n; - - e = strndup(w, l); - if (!e) { -@@ -295,19 +294,12 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p - r = -ENOMEM; - goto fail; - } -+ free(e); - - r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true); -+ free(n); - if (r < 0) - goto fail; -- -- other = manager_get_unit(u->manager, n); -- if (!other || !unit_can_start(other)) -- continue; -- -- r = manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL); -- if (r < 0) -- log_warning("Failed to add job %s/%s, ignoring: %s.", -- other->id, job_type_to_string(JOB_START), strerror(-r)); - } - } - } diff --git a/0147-core-do-not-segfault-if-swap-activity-happens-when-p.patch b/0147-core-do-not-segfault-if-swap-activity-happens-when-p.patch deleted file mode 100644 index dd7a6a3..0000000 --- a/0147-core-do-not-segfault-if-swap-activity-happens-when-p.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 85a77eea8d7114675602a33d2e067fd7c4ad0624 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 12 Jan 2014 11:38:56 -0500 -Subject: [PATCH] core: do not segfault if swap activity happens when - /proc/swaps is not open - -In https://bugzilla.redhat.com/show_bug.cgi?id=969795 systemd crashes -in swap_dispatch_reload called from manager_loop becuase m->proc_swaps -is NULL. It can legitimately be NULL if something went wrong when -initially enumerating swap devices when starting the manager. This -is probably a sign of significant trouble, but let's do our best -to recover. ---- - src/core/swap.c | 45 +++++++++++++++++++++++++++++---------------- - 1 file changed, 29 insertions(+), 16 deletions(-) - -diff --git a/src/core/swap.c b/src/core/swap.c -index 147f710..f295b65 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -1068,14 +1068,40 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) { - return r; - } - -+static int open_proc_swaps(Manager *m) { -+ if (!m->proc_swaps) { -+ struct epoll_event ev = { -+ .events = EPOLLPRI, -+ .data.ptr = &m->swap_watch, -+ }; -+ -+ m->proc_swaps = fopen("/proc/swaps", "re"); -+ if (!m->proc_swaps) -+ return (errno == ENOENT) ? 0 : -errno; -+ -+ m->swap_watch.type = WATCH_SWAP; -+ m->swap_watch.fd = fileno(m->proc_swaps); -+ -+ if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0) -+ return -errno; -+ } -+ -+ return 0; -+} -+ - int swap_dispatch_reload(Manager *m) { - /* This function should go as soon as the kernel properly notifies us */ -+ int r; - - if (_likely_(!m->request_reload)) - return 0; - - m->request_reload = false; - -+ r = open_proc_swaps(m); -+ if (r < 0) -+ return r; -+ - return swap_fd_event(m, EPOLLPRI); - } - -@@ -1225,22 +1251,9 @@ static int swap_enumerate(Manager *m) { - int r; - assert(m); - -- if (!m->proc_swaps) { -- struct epoll_event ev = { -- .events = EPOLLPRI, -- .data.ptr = &m->swap_watch, -- }; -- -- m->proc_swaps = fopen("/proc/swaps", "re"); -- if (!m->proc_swaps) -- return (errno == ENOENT) ? 0 : -errno; -- -- m->swap_watch.type = WATCH_SWAP; -- m->swap_watch.fd = fileno(m->proc_swaps); -- -- if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0) -- return -errno; -- } -+ r = open_proc_swaps(m); -+ if (r < 0) -+ return r; - - r = swap_load_proc_swaps(m, false); - if (r < 0) diff --git a/0148-kernel-install-add-h-help.patch b/0148-kernel-install-add-h-help.patch deleted file mode 100644 index fae104a..0000000 --- a/0148-kernel-install-add-h-help.patch +++ /dev/null @@ -1,69 +0,0 @@ -From cb5fd30c9ca64024335129d393c15a9586433ca2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 8 Dec 2013 07:46:46 -0500 -Subject: [PATCH] kernel-install: add -h/--help - ---- - src/kernel-install/kernel-install | 21 ++++++++++++++------- - 1 file changed, 14 insertions(+), 7 deletions(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index 9d3e75d..f5ff362 100644 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -21,9 +21,9 @@ - - usage() - { -- echo "Usage:" >&2 -- echo " $0 add " >&2 -- echo " $0 remove " >&2 -+ echo "Usage:" -+ echo " $0 add KERNEL-VERSION KERNEL-IMAGE" -+ echo " $0 remove KERNEL-VERSION KERNEL-IMAGE" - } - - dropindirs_sort() -@@ -54,6 +54,13 @@ dropindirs_sort() - - export LC_COLLATE=C - -+for i in "$@"; do -+ if [ "$i" == "--help" -o "$i" == "-h" ]; then -+ usage -+ exit 0 -+ fi -+done -+ - if [[ "${0##*/}" == 'installkernel' ]]; then - COMMAND='add' - else -@@ -75,7 +82,7 @@ if ! [[ $MACHINE_ID ]]; then - fi - - if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then -- usage -+ echo "Not enough arguments" >&2 - exit 1 - fi - -@@ -90,8 +97,8 @@ readarray -t PLUGINS < <( - - case $COMMAND in - add) -- if [[ ! $KERNEL_IMAGE ]]; then -- usage -+ if [[ ! "$KERNEL_IMAGE" ]]; then -+ echo "Command 'add' requires an argument" >&2 - exit 1 - fi - -@@ -121,7 +128,7 @@ case $COMMAND in - ;; - - *) -- usage -+ echo "Unknown command '$COMMAND'" >&2 - exit 1 - ;; - esac diff --git a/0149-kernel-install-fix-help-output.patch b/0149-kernel-install-fix-help-output.patch deleted file mode 100644 index 2ed9d61..0000000 --- a/0149-kernel-install-fix-help-output.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 245b830c77bfbac0346bd1df3fa5d6b81d77014a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=A9bastien=20Luttringer?= -Date: Thu, 5 Dec 2013 02:55:05 +0100 -Subject: [PATCH] kernel-install: fix help output - -Kernel install doesn't need the second argument on his command line when -removing. -This is correctly documented in the man page. ---- - src/kernel-install/kernel-install | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install -index f5ff362..3ae1d77 100644 ---- a/src/kernel-install/kernel-install -+++ b/src/kernel-install/kernel-install -@@ -23,7 +23,7 @@ usage() - { - echo "Usage:" - echo " $0 add KERNEL-VERSION KERNEL-IMAGE" -- echo " $0 remove KERNEL-VERSION KERNEL-IMAGE" -+ echo " $0 remove KERNEL-VERSION" - } - - dropindirs_sort() diff --git a/0150-man-improve-wording-and-comma-usage-in-systemd.journ.patch b/0150-man-improve-wording-and-comma-usage-in-systemd.journ.patch deleted file mode 100644 index 69eb561..0000000 --- a/0150-man-improve-wording-and-comma-usage-in-systemd.journ.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 07e7e0378c3f2b73e56e886f7a4b59068dbbbc55 Mon Sep 17 00:00:00 2001 -From: "Jason St. John" -Date: Tue, 10 Dec 2013 00:10:03 -0500 -Subject: [PATCH] man: improve wording and comma usage in - systemd.journal-fields(7) - -Improve wording under "Description" and "_KERNEL_DEVICE=" ---- - man/systemd.journal-fields.xml | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml -index 8a15598..bb89ed5 100644 ---- a/man/systemd.journal-fields.xml -+++ b/man/systemd.journal-fields.xml -@@ -51,14 +51,14 @@ - Description - - Entries in the journal resemble an environment -- block in their syntax, however with fields that can -+ block in their syntax but with fields that can - include binary data. Primarily, fields are formatted - UTF-8 text strings, and binary formatting is used only - where formatting as UTF-8 text strings makes little - sense. New fields may freely be defined by - applications, but a few fields have special - meaning. All fields with special meanings are -- optional. In some cases fields may appear more than -+ optional. In some cases, fields may appear more than - once per entry. -
- -@@ -176,7 +176,7 @@ - _UID= - _GID= - -- The process, user and -+ The process, user, and - group ID of the process the - journal entry originates from - formatted as a decimal -@@ -190,7 +190,7 @@ - _CMDLINE= - - The name, the executable -- path and the command line of -+ path, and the command line of - the process the journal entry - originates from. - -@@ -389,12 +389,12 @@ - the major and minor of the - device node, separated by : - and prefixed by b. Similar -- for character devices, but -+ for character devices but - prefixed by c. For network -- devices the interface index, -+ devices, this is the interface index - prefixed by n. For all other -- devices + followed by the -- subsystem name, followed by -+ devices, this is the subsystem name -+ prefixed by +, followed by - :, followed by the kernel - device name. - diff --git a/0151-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch b/0151-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch deleted file mode 100644 index 6dceeae..0000000 --- a/0151-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 26dcf06766bc1fc533d301831838e9e302315134 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Mon, 9 Dec 2013 21:58:34 -0800 -Subject: [PATCH] drop several entries from kbd-model-map whose kbd layouts do - not exist - -kbd-model-map was generated from system-config-keyboard's keyboard_models.py. -Several of the kbd layouts referred in that file do not exist and, so far as I -can tell, never did. I believe these entries existed simply to provide the xkb -configuration information for those layouts, and there never were matching kbd -entries; the kbd names were entirely notional, to satisfy the need for some -entry or other in that field. - -For systemd, the only function of kbd-model-map is to 'match' kbd and xkb -configurations, so it does not make any sense to maintain entries for cases -where only one or the other exists in this context. ---- - src/locale/kbd-model-map | 12 ------------ - 1 file changed, 12 deletions(-) - -diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map -index 1fe9bca..78c7887 100644 ---- a/src/locale/kbd-model-map -+++ b/src/locale/kbd-model-map -@@ -4,22 +4,18 @@ sg ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp - nl nl pc105 - terminate:ctrl_alt_bksp - mk-utf mk,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - trq tr pc105 - terminate:ctrl_alt_bksp --guj in,us pc105 guj terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - uk gb pc105 - terminate:ctrl_alt_bksp - is-latin1 is pc105 - terminate:ctrl_alt_bksp - de de pc105 - terminate:ctrl_alt_bksp --gur gur,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - la-latin1 latam pc105 - terminate:ctrl_alt_bksp - us us pc105+inet - terminate:ctrl_alt_bksp - ko kr pc105 - terminate:ctrl_alt_bksp - ro-std ro pc105 std terminate:ctrl_alt_bksp - de-latin1 de pc105 - terminate:ctrl_alt_bksp --tml-inscript in,us pc105 tam terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - slovene si pc105 - terminate:ctrl_alt_bksp - hu101 hu pc105 qwerty terminate:ctrl_alt_bksp - jp106 jp jp106 - terminate:ctrl_alt_bksp - croat hr pc105 - terminate:ctrl_alt_bksp --ben-probhat in,us pc105 ben_probhat terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - fi-latin1 fi pc105 - terminate:ctrl_alt_bksp - it2 it pc105 - terminate:ctrl_alt_bksp - hu hu pc105 - terminate:ctrl_alt_bksp -@@ -29,7 +25,6 @@ fr_CH ch pc105 fr terminate:ctrl_alt_bksp - dk-latin1 dk pc105 - terminate:ctrl_alt_bksp - fr fr pc105 - terminate:ctrl_alt_bksp - it it pc105 - terminate:ctrl_alt_bksp --tml-uni in,us pc105 tam_TAB terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - ua-utf ua,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - fr-latin1 fr pc105 - terminate:ctrl_alt_bksp - sg-latin1 ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp -@@ -39,16 +34,12 @@ fr-pc fr pc105 - terminate:ctrl_alt_bksp - bg_pho-utf8 bg,us pc105 ,phonetic terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - it-ibm it pc105 - terminate:ctrl_alt_bksp - cz-us-qwertz cz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll --ar-digits ara,us pc105 digits terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - br-abnt2 br abnt2 - terminate:ctrl_alt_bksp - ro ro pc105 - terminate:ctrl_alt_bksp - us-acentos us pc105 intl terminate:ctrl_alt_bksp - pt-latin1 pt pc105 - terminate:ctrl_alt_bksp - ro-std-cedilla ro pc105 std_cedilla terminate:ctrl_alt_bksp - tj tj pc105 - terminate:ctrl_alt_bksp --ar-qwerty ara,us pc105 qwerty terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll --ar-azerty-digits ara,us pc105 azerty_digits terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll --ben in,us pc105 ben terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - de-latin1-nodeadkeys de pc105 nodeadkeys terminate:ctrl_alt_bksp - no no pc105 - terminate:ctrl_alt_bksp - bg_bds-utf8 bg,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll -@@ -60,11 +51,8 @@ pl2 pl pc105 - terminate:ctrl_alt_bksp - es es pc105 - terminate:ctrl_alt_bksp - ro-cedilla ro pc105 cedilla terminate:ctrl_alt_bksp - ie ie pc105 - terminate:ctrl_alt_bksp --ar-azerty ara,us pc105 azerty terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll --ar-qwerty-digits ara,us pc105 qwerty_digits terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - et ee pc105 - terminate:ctrl_alt_bksp - sk-qwerty sk pc105 - terminate:ctrl_alt_bksp,qwerty --dev dev,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll - fr-latin9 fr pc105 latin9 terminate:ctrl_alt_bksp - fr_CH-latin1 ch pc105 fr terminate:ctrl_alt_bksp - cf ca pc105 - terminate:ctrl_alt_bksp diff --git a/0152-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch b/0152-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch deleted file mode 100644 index b64a443..0000000 --- a/0152-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch +++ /dev/null @@ -1,22 +0,0 @@ -From bc0cbe40cbfde7e8194f6f4b9b17e7102efa35c7 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Mon, 9 Dec 2013 22:02:25 -0800 -Subject: [PATCH] correct name of Tajik kbd layout in kbd-model-map - ---- - src/locale/kbd-model-map | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map -index 78c7887..322c0a9 100644 ---- a/src/locale/kbd-model-map -+++ b/src/locale/kbd-model-map -@@ -39,7 +39,7 @@ ro ro pc105 - terminate:ctrl_alt_bksp - us-acentos us pc105 intl terminate:ctrl_alt_bksp - pt-latin1 pt pc105 - terminate:ctrl_alt_bksp - ro-std-cedilla ro pc105 std_cedilla terminate:ctrl_alt_bksp --tj tj pc105 - terminate:ctrl_alt_bksp -+tj_alt-UTF8 tj pc105 - terminate:ctrl_alt_bksp - de-latin1-nodeadkeys de pc105 nodeadkeys terminate:ctrl_alt_bksp - no no pc105 - terminate:ctrl_alt_bksp - bg_bds-utf8 bg,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll diff --git a/0153-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0153-hwdb-Update-database-of-Bluetooth-company-identifier.patch deleted file mode 100644 index 15b0ddc..0000000 --- a/0153-hwdb-Update-database-of-Bluetooth-company-identifier.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 4ee475e4786ac69b74a75fd668f0bb8e07bdde2d Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Tue, 10 Dec 2013 03:17:39 -0800 -Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers - ---- - hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb -index dcc25bb..6f8301f 100644 ---- a/hwdb/20-bluetooth-vendor-product.hwdb -+++ b/hwdb/20-bluetooth-vendor-product.hwdb -@@ -821,3 +821,21 @@ bluetooth:v010F* - - bluetooth:v0110* - ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd. -+ -+bluetooth:v0111* -+ ID_VENDOR_FROM_DATABASE=Steelseries ApS -+ -+bluetooth:v0112* -+ ID_VENDOR_FROM_DATABASE=vyzybl Inc. -+ -+bluetooth:v0113* -+ ID_VENDOR_FROM_DATABASE=Openbrain Technologies, Co., Ltd. -+ -+bluetooth:v0114* -+ ID_VENDOR_FROM_DATABASE=Xensr -+ -+bluetooth:v0115* -+ ID_VENDOR_FROM_DATABASE=e.solutions -+ -+bluetooth:v0116* -+ ID_VENDOR_FROM_DATABASE=1OAK Technologies diff --git a/0154-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch b/0154-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch deleted file mode 100644 index 9c35091..0000000 --- a/0154-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d8b3047ccb52c2b55683f2fe12f0674f63d746cb Mon Sep 17 00:00:00 2001 -From: Dan McGee -Date: Sun, 8 Dec 2013 13:27:05 -0600 -Subject: [PATCH] Ensure unit is journaled for short-lived or oneshot processes - -In the time it takes to process incoming log messages, the process we -are logging details for may exit. This means the cgroup data is no -longer available from '/proc'. Unfortunately, the way the code was -structured before, we never log _SYSTEMD_UNIT if we don't have this -cgroup information. - -Add an else if case that allows the passed in unit_id to be logged even -if we couldn't capture cgroup information. This ensures a command like -`journalctl -u run-XXX` will return all log messages from a oneshot -process. ---- - src/journal/journald-server.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c -index a0a8e9c..1fcb3d5 100644 ---- a/src/journal/journald-server.c -+++ b/src/journal/journald-server.c -@@ -626,6 +626,9 @@ static void dispatch_message_real( - } - - free(c); -+ } else if (unit_id) { -+ x = strappenda("_SYSTEMD_UNIT=", unit_id); -+ IOVEC_SET_STRING(iovec[n++], x); - } - - #ifdef HAVE_SELINUX diff --git a/0155-libudev-hwdb-use-libudev-not-systemd-logging.patch b/0155-libudev-hwdb-use-libudev-not-systemd-logging.patch deleted file mode 100644 index e4f88c0..0000000 --- a/0155-libudev-hwdb-use-libudev-not-systemd-logging.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 4c5b792c88c81d0595a1273804d2cd405140f81d Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Tue, 10 Dec 2013 16:36:45 +0100 -Subject: [PATCH] libudev: hwdb - use libudev not systemd logging - ---- - src/libudev/libudev-hwdb.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c -index de1cb83..ba43b9f 100644 ---- a/src/libudev/libudev-hwdb.c -+++ b/src/libudev/libudev-hwdb.c -@@ -277,38 +277,38 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) { - - hwdb->f = fopen("/etc/udev/hwdb.bin", "re"); - if (!hwdb->f) { -- log_debug("error reading /etc/udev/hwdb.bin: %m"); -+ udev_dbg(udev, "error reading /etc/udev/hwdb.bin: %m"); - udev_hwdb_unref(hwdb); - return NULL; - } - - if (fstat(fileno(hwdb->f), &hwdb->st) < 0 || - (size_t)hwdb->st.st_size < offsetof(struct trie_header_f, strings_len) + 8) { -- log_debug("error reading /etc/udev/hwdb.bin: %m"); -+ udev_dbg(udev, "error reading /etc/udev/hwdb.bin: %m"); - udev_hwdb_unref(hwdb); - return NULL; - } - - hwdb->map = mmap(0, hwdb->st.st_size, PROT_READ, MAP_SHARED, fileno(hwdb->f), 0); - if (hwdb->map == MAP_FAILED) { -- log_debug("error mapping /etc/udev/hwdb.bin: %m"); -+ udev_dbg(udev, "error mapping /etc/udev/hwdb.bin: %m"); - udev_hwdb_unref(hwdb); - return NULL; - } - - if (memcmp(hwdb->map, sig, sizeof(hwdb->head->signature)) != 0 || - (size_t)hwdb->st.st_size != le64toh(hwdb->head->file_size)) { -- log_debug("error recognizing the format of /etc/udev/hwdb.bin"); -+ udev_dbg(udev, "error recognizing the format of /etc/udev/hwdb.bin"); - udev_hwdb_unref(hwdb); - return NULL; - } - -- log_debug("=== trie on-disk ===\n"); -- log_debug("tool version: %"PRIu64, le64toh(hwdb->head->tool_version)); -- log_debug("file size: %8llu bytes\n", (unsigned long long) hwdb->st.st_size); -- log_debug("header size %8"PRIu64" bytes\n", le64toh(hwdb->head->header_size)); -- log_debug("strings %8"PRIu64" bytes\n", le64toh(hwdb->head->strings_len)); -- log_debug("nodes %8"PRIu64" bytes\n", le64toh(hwdb->head->nodes_len)); -+ udev_dbg(udev, "=== trie on-disk ===\n"); -+ udev_dbg(udev, "tool version: %"PRIu64, le64toh(hwdb->head->tool_version)); -+ udev_dbg(udev, "file size: %8llu bytes\n", (unsigned long long) hwdb->st.st_size); -+ udev_dbg(udev, "header size %8"PRIu64" bytes\n", le64toh(hwdb->head->header_size)); -+ udev_dbg(udev, "strings %8"PRIu64" bytes\n", le64toh(hwdb->head->strings_len)); -+ udev_dbg(udev, "nodes %8"PRIu64" bytes\n", le64toh(hwdb->head->nodes_len)); - return hwdb; - } - diff --git a/0156-core-manager-remove-infinite-loop.patch b/0156-core-manager-remove-infinite-loop.patch deleted file mode 100644 index 53e8f4c..0000000 --- a/0156-core-manager-remove-infinite-loop.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 906a89f8e60c9a39610afd7edbc41f79a3c711e7 Mon Sep 17 00:00:00 2001 -From: Shawn Landden -Date: Tue, 10 Dec 2013 09:28:26 -0800 -Subject: [PATCH] core/manager: remove infinite loop - ---- - src/core/manager.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/core/manager.c b/src/core/manager.c -index 944c196..a34a3c6 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -2285,10 +2285,8 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { - } - - finish: -- if (ferror(f)) { -+ if (ferror(f)) - r = -EIO; -- goto finish; -- } - - assert(m->n_reloading > 0); - m->n_reloading --; diff --git a/0157-util-check-for-overflow-in-greedy_realloc.patch b/0157-util-check-for-overflow-in-greedy_realloc.patch deleted file mode 100644 index 9cdcc40..0000000 --- a/0157-util-check-for-overflow-in-greedy_realloc.patch +++ /dev/null @@ -1,34 +0,0 @@ -From b7b1af75b9f76f3bff35369b0c1666890c586144 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 10 Dec 2013 18:53:03 +0000 -Subject: [PATCH] util: check for overflow in greedy_realloc() - -Conflicts: - src/shared/util.c ---- - src/shared/util.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 1510c5e..02bae90 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -5832,10 +5832,18 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) { - size_t a; - void *q; - -+ assert(p); -+ assert(allocated); -+ - if (*allocated >= need) - return *p; - - a = MAX(64u, need * 2); -+ -+ /* check for overflows */ -+ if (a < need) -+ return NULL; -+ - q = realloc(*p, a); - if (!q) - return NULL; diff --git a/0158-journald-use-a-bit-more-cleanup-magic.patch b/0158-journald-use-a-bit-more-cleanup-magic.patch deleted file mode 100644 index 2338479..0000000 --- a/0158-journald-use-a-bit-more-cleanup-magic.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ce69ab385535d23bec04018941b0cda19d2d4855 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 10 Dec 2013 19:51:47 +0000 -Subject: [PATCH] journald: use a bit more cleanup magic! - ---- - src/journal/journald-stream.c | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) - -diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c -index 4080622..771a2bd 100644 ---- a/src/journal/journald-stream.c -+++ b/src/journal/journald-stream.c -@@ -75,7 +75,7 @@ struct StdoutStream { - - static int stdout_stream_log(StdoutStream *s, const char *p) { - struct iovec iovec[N_IOVEC_META_FIELDS + 5]; -- char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL; -+ _cleanup_free_ char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL; - unsigned n = 0; - int priority; - char *label = NULL; -@@ -128,12 +128,6 @@ static int stdout_stream_log(StdoutStream *s, const char *p) { - #endif - - server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0); -- -- free(message); -- free(syslog_priority); -- free(syslog_facility); -- free(syslog_identifier); -- - return 0; - } - diff --git a/0159-journald-malloc-less-when-streaming-messages.patch b/0159-journald-malloc-less-when-streaming-messages.patch deleted file mode 100644 index 362b36d..0000000 --- a/0159-journald-malloc-less-when-streaming-messages.patch +++ /dev/null @@ -1,110 +0,0 @@ -From feaaf9358a0bd619ef77dca732aa08e21f5c1a56 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 10 Dec 2013 06:17:01 -0500 -Subject: [PATCH] journald: malloc less when streaming messages - ---- - src/journal/journald-stream.c | 23 ++++++++++++----------- - src/journal/journald-syslog.c | 4 ++-- - src/journal/journald-syslog.h | 2 +- - 3 files changed, 15 insertions(+), 14 deletions(-) - -diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c -index 771a2bd..aae381b 100644 ---- a/src/journal/journald-stream.c -+++ b/src/journal/journald-stream.c -@@ -75,9 +75,11 @@ struct StdoutStream { - - static int stdout_stream_log(StdoutStream *s, const char *p) { - struct iovec iovec[N_IOVEC_META_FIELDS + 5]; -- _cleanup_free_ char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL; -- unsigned n = 0; - int priority; -+ char syslog_priority[] = "PRIORITY=\0"; -+ char syslog_facility[sizeof("SYSLOG_FACILITY=") + DECIMAL_STR_MAX(priority)]; -+ _cleanup_free_ char *message = NULL, *syslog_identifier = NULL; -+ unsigned n = 0; - char *label = NULL; - size_t label_len = 0; - -@@ -90,7 +92,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) { - priority = s->priority; - - if (s->level_prefix) -- syslog_parse_priority((char**) &p, &priority, false); -+ syslog_parse_priority(&p, &priority, false); - - if (s->forward_to_syslog || s->server->forward_to_syslog) - server_forward_syslog(s->server, syslog_fixup_facility(priority), s->identifier, p, &s->ucred, NULL); -@@ -103,12 +105,13 @@ static int stdout_stream_log(StdoutStream *s, const char *p) { - - IOVEC_SET_STRING(iovec[n++], "_TRANSPORT=stdout"); - -- if (asprintf(&syslog_priority, "PRIORITY=%i", priority & LOG_PRIMASK) >= 0) -- IOVEC_SET_STRING(iovec[n++], syslog_priority); -+ syslog_priority[strlen("PRIORITY=")] = '0' + LOG_PRI(priority); -+ IOVEC_SET_STRING(iovec[n++], syslog_priority); - -- if (priority & LOG_FACMASK) -- if (asprintf(&syslog_facility, "SYSLOG_FACILITY=%i", LOG_FAC(priority)) >= 0) -- IOVEC_SET_STRING(iovec[n++], syslog_facility); -+ if (priority & LOG_FACMASK) { -+ snprintf(syslog_facility, sizeof(syslog_facility), "SYSLOG_FACILITY=%i", LOG_FAC(priority)); -+ IOVEC_SET_STRING(iovec[n++], syslog_facility); -+ } - - if (s->identifier) { - syslog_identifier = strappend("SYSLOG_IDENTIFIER=", s->identifier); -@@ -408,7 +411,7 @@ fail: - - int server_open_stdout_socket(Server *s) { - int r; -- struct epoll_event ev; -+ struct epoll_event ev = { .events = EPOLLIN }; - - assert(s); - -@@ -441,8 +444,6 @@ int server_open_stdout_socket(Server *s) { - } else - fd_nonblock(s->stdout_fd, 1); - -- zero(ev); -- ev.events = EPOLLIN; - ev.data.fd = s->stdout_fd; - if (epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, s->stdout_fd, &ev) < 0) { - log_error("Failed to add stdout server fd to epoll object: %m"); -diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c -index c2770a5..5d9b665 100644 ---- a/src/journal/journald-syslog.c -+++ b/src/journal/journald-syslog.c -@@ -236,7 +236,7 @@ size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid) - return e; - } - --void syslog_parse_priority(char **p, int *priority, bool with_facility) { -+void syslog_parse_priority(const char **p, int *priority, bool with_facility) { - int a = 0, b = 0, c = 0; - int k; - -@@ -365,7 +365,7 @@ void server_process_syslog_message( - assert(buf); - - orig = buf; -- syslog_parse_priority((char**) &buf, &priority, true); -+ syslog_parse_priority(&buf, &priority, true); - - if (s->forward_to_syslog) - forward_syslog_raw(s, priority, orig, ucred, tv); -diff --git a/src/journal/journald-syslog.h b/src/journal/journald-syslog.h -index 8ccdb77..057ea79 100644 ---- a/src/journal/journald-syslog.h -+++ b/src/journal/journald-syslog.h -@@ -25,7 +25,7 @@ - - int syslog_fixup_facility(int priority) _const_; - --void syslog_parse_priority(char **p, int *priority, bool with_facility); -+void syslog_parse_priority(const char **p, int *priority, bool with_facility); - size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid); - - void server_forward_syslog(Server *s, int priority, const char *identifier, const char *message, struct ucred *ucred, struct timeval *tv); diff --git a/0160-activate-clean-up-inherited-descriptors.patch b/0160-activate-clean-up-inherited-descriptors.patch deleted file mode 100644 index 8776646..0000000 --- a/0160-activate-clean-up-inherited-descriptors.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 9b618fb2369046434ced28fe1420d8d5c75cd46e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 10 Dec 2013 21:52:11 -0500 -Subject: [PATCH] activate: clean up inherited descriptors - -> [simon@troela server]$ /usr/lib/systemd/systemd-activate -l 9000 main.js -> Assertion 'fd == 3 + count' failed at src/activate/activate.c:115, -> function open_sockets(). Aborting. -> Aborted (core dumped) - -> after a bit debuging i found the problem: -> slim appears to leak an fd into all of its children: -> stat /proc/14004/fd/3 (14004 is the pid a random process in my session) -> File: '/proc/14004/fd/3' -> '/var/log/slim.log' - -systemd-activate should be robust against the shell (or anything else) leaking -descriptors. Now everything except stdin/stdout/stderr and received sockets -will be closed. ---- - src/activate/activate.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/src/activate/activate.c b/src/activate/activate.c -index a9461bc..6aa8b9f 100644 ---- a/src/activate/activate.c -+++ b/src/activate/activate.c -@@ -137,6 +137,17 @@ static int open_sockets(int *epoll_fd, bool accept) { - count ++; - } - -+ /* Close logging and all other descriptors */ -+ if (arg_listen) { -+ int except[3 + n]; -+ -+ for (fd = 0; fd < SD_LISTEN_FDS_START + n; fd++) -+ except[fd] = fd; -+ -+ log_close(); -+ close_all_fds(except, 3 + n); -+ } -+ - /** Note: we leak some fd's on error here. I doesn't matter - * much, since the program will exit immediately anyway, but - * would be a pain to fix. -@@ -147,6 +158,7 @@ static int open_sockets(int *epoll_fd, bool accept) { - - fd = make_socket_fd(*address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC)); - if (fd < 0) { -+ log_open(); - log_error("Failed to open '%s': %s", *address, strerror(-fd)); - return fd; - } -@@ -154,6 +166,9 @@ static int open_sockets(int *epoll_fd, bool accept) { - count ++; - } - -+ if (arg_listen) -+ log_open(); -+ - *epoll_fd = epoll_create1(EPOLL_CLOEXEC); - if (*epoll_fd < 0) { - log_error("Failed to create epoll object: %m"); -@@ -298,10 +313,10 @@ static void sigchld_hdl(int sig, siginfo_t *t, void *data) { - - static int install_chld_handler(void) { - int r; -- struct sigaction act; -- zero(act); -- act.sa_flags = SA_SIGINFO; -- act.sa_sigaction = sigchld_hdl; -+ struct sigaction act = { -+ .sa_flags = SA_SIGINFO, -+ .sa_sigaction = sigchld_hdl, -+ }; - - r = sigaction(SIGCHLD, &act, 0); - if (r < 0) diff --git a/0161-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch b/0161-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch deleted file mode 100644 index 297de17..0000000 --- a/0161-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch +++ /dev/null @@ -1,95 +0,0 @@ -From bb9c2f82137bb6d1a352341eb81ed2a0ac96d4cb Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 11 Dec 2013 18:38:51 +0100 -Subject: [PATCH] man: explain in more detail how SYSTEMD_READY= influences - SYSTEMD_WANTS= in udev rules - -https://bugzilla.redhat.com/show_bug.cgi?id=1026860 ---- - man/systemd.device.xml | 45 +++++++++++++++++++++++++++++++-------------- - 1 file changed, 31 insertions(+), 14 deletions(-) - -diff --git a/man/systemd.device.xml b/man/systemd.device.xml -index 96ebe89..002b647 100644 ---- a/man/systemd.device.xml -+++ b/man/systemd.device.xml -@@ -70,12 +70,15 @@ - since no device-specific options may be - configured. - -- systemd will automatically create dynamic device -- units for all kernel devices that are marked with the -- "systemd" udev tag (by default all block and network -- devices, and a few others). This may be used to define -- dependencies between devices and other -- units. -+ systemd will dynamically create device units for -+ all kernel devices that are marked with the "systemd" -+ udev tag (by default all block and network devices, -+ and a few others). This may be used to define -+ dependencies between devices and other units. To tag a -+ udev device use TAG+="systemd" in -+ the udev rules file, see -+ udev7 -+ for details. - - Device units are named after the - /sys and -@@ -93,7 +96,7 @@ - - The settings of device units may either be - configured via unit files, or directly from the udev -- database (which is recommended). The following udev -+ database (which is recommended). The following udev device - properties are understood by systemd: - - -@@ -101,16 +104,26 @@ - SYSTEMD_WANTS= - Adds dependencies of - type Wants from -- this unit to all listed units. This -+ the device unit to all listed units. This - may be used to activate arbitrary -- units, when a specific device becomes -+ units when a specific device becomes - available. Note that this and the - other tags are not taken into account - unless the device is tagged with the - systemd string in - the udev database, because otherwise - the device is not exposed as systemd -- unit. -+ unit (see above). Note that systemd -+ will only act on -+ Wants dependencies -+ when a device first becomes active, it -+ will not act on them if they are added -+ to devices that are already -+ active. Use -+ SYSTEMD_READY= (see -+ below) to influence on which udev -+ event to trigger the device -+ dependencies. - - - -@@ -135,10 +148,14 @@ - device disappears from the udev - tree. This option is useful to support - devices that initially show up in an -- uninitialized state in the tree, and for -- which a changed event is generated the -- moment they are fully set -- up. -+ uninitialized state in the tree, and -+ for which a changed -+ event is generated the moment they are -+ fully set up. Note that -+ SYSTEMD_WANTS= (see -+ above) is not acted on as long as -+ SYSTEMD_READY=0 is -+ set for a device. - - - diff --git a/0162-units-don-t-run-readahead-done-timers-in-containers.patch b/0162-units-don-t-run-readahead-done-timers-in-containers.patch deleted file mode 100644 index ac5f405..0000000 --- a/0162-units-don-t-run-readahead-done-timers-in-containers.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 3fa582ff9d4bea413a7a0e301b7dbca6b33382b0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 11 Dec 2013 23:31:34 +0100 -Subject: [PATCH] units: don't run readahead done timers in containers - -We don't run the collector in the container either, hence we don't need -to stop it either. ---- - units/systemd-readahead-done.service.in | 1 + - units/systemd-readahead-done.timer | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/units/systemd-readahead-done.service.in b/units/systemd-readahead-done.service.in -index c3b2ac5..e0d9579 100644 ---- a/units/systemd-readahead-done.service.in -+++ b/units/systemd-readahead-done.service.in -@@ -12,6 +12,7 @@ DefaultDependencies=no - Conflicts=shutdown.target - After=default.target - Before=shutdown.target -+ConditionVirtualization=no - - [Service] - Type=oneshot -diff --git a/units/systemd-readahead-done.timer b/units/systemd-readahead-done.timer -index 41bfb2b..a9f6278 100644 ---- a/units/systemd-readahead-done.timer -+++ b/units/systemd-readahead-done.timer -@@ -12,6 +12,7 @@ DefaultDependencies=no - Conflicts=shutdown.target - After=default.target - Before=shutdown.target -+ConditionVirtualization=no - - [Timer] - OnActiveSec=30s diff --git a/0163-test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch b/0163-test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch deleted file mode 100644 index db7b9d7..0000000 --- a/0163-test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 622dfd7a6553cc27b6f75653481dd8808f717c49 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Thu, 12 Dec 2013 00:06:30 +0100 -Subject: [PATCH] test-fileio: replace mktemp with mkstemp to avoid warnings - -This is a fairly useless thing to do but it makes the compilers -and analyzers shut up about the use of mktemp. ---- - src/test/test-fileio.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c -index 06f3e28..b005f3b 100644 ---- a/src/test/test-fileio.c -+++ b/src/test/test-fileio.c -@@ -41,7 +41,9 @@ static void test_parse_env_file(void) { - char **i; - unsigned k; - -- assert_se(mktemp(p)); -+ fd = mkstemp(p); -+ assert_se(fd >= 0); -+ close(fd); - - fd = mkostemp(t, O_CLOEXEC); - assert_se(fd >= 0); -@@ -152,7 +154,9 @@ static void test_parse_multiline_env_file(void) { - _cleanup_strv_free_ char **a = NULL, **b = NULL; - char **i; - -- assert_se(mktemp(p)); -+ fd = mkstemp(p); -+ assert_se(fd >= 0); -+ close(fd); - - fd = mkostemp(t, O_CLOEXEC); - assert_se(fd >= 0); diff --git a/0164-journal-pipe-journalctl-help-output-into-a-pager.patch b/0164-journal-pipe-journalctl-help-output-into-a-pager.patch deleted file mode 100644 index 8e0c0ca..0000000 --- a/0164-journal-pipe-journalctl-help-output-into-a-pager.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 59f2f4cfd399275c3da061212fc25636ee72367f Mon Sep 17 00:00:00 2001 -From: Djalal Harouni -Date: Thu, 12 Dec 2013 00:22:48 +0100 -Subject: [PATCH] journal: pipe journalctl help output into a pager - -journalctl help output might run off the screen, so be consistent -as other systemd tools do and pipe it into a pager. ---- - src/journal/journalctl.c | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index a5c4779..71e28b0 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -114,8 +114,18 @@ typedef struct boot_id_t { - uint64_t last; - } boot_id_t; - -+static void pager_open_if_enabled(void) { -+ -+ if (arg_no_pager) -+ return; -+ -+ pager_open(arg_pager_end); -+} -+ - static int help(void) { - -+ pager_open_if_enabled(); -+ - printf("%s [OPTIONS...] [MATCHES...]\n\n" - "Query the journal.\n\n" - "Flags:\n" -@@ -1635,8 +1645,8 @@ int main(int argc, char *argv[]) { - return EXIT_FAILURE; - } - -- if (!arg_no_pager && !arg_follow) -- pager_open(arg_pager_end); -+ if (!arg_follow) -+ pager_open_if_enabled(); - - if (!arg_quiet) { - usec_t start, end; diff --git a/0165-nspawn-complain-and-continue-if-machine-has-same-id.patch b/0165-nspawn-complain-and-continue-if-machine-has-same-id.patch deleted file mode 100644 index 7597fe9..0000000 --- a/0165-nspawn-complain-and-continue-if-machine-has-same-id.patch +++ /dev/null @@ -1,63 +0,0 @@ -From bedb539662380d6a120db1e8dbb63b55d2ecac2c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 11 Dec 2013 22:00:33 -0500 -Subject: [PATCH] nspawn: complain and continue if machine has same id - -If --link-journal=host or --link-journal=guest is used, this totally -cannot work and we exit with an error. If however --link-journal=auto -or --link-journal=no is used, just display a warning. - -Having the same machine id can happen if booting from the same -filesystem as the host. Since other things mostly function correctly, -let's allow that. - -https://bugs.freedesktop.org/show_bug.cgi?id=68369 ---- - src/nspawn/nspawn.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 7346253..618f9c3 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -811,14 +811,11 @@ static int setup_hostname(void) { - } - - static int setup_journal(const char *directory) { -- sd_id128_t machine_id; -+ sd_id128_t machine_id, this_id; - _cleanup_free_ char *p = NULL, *b = NULL, *q = NULL, *d = NULL; - char *id; - int r; - -- if (arg_link_journal == LINK_NO) -- return 0; -- - p = strappend(directory, "/etc/machine-id"); - if (!p) - return log_oom(); -@@ -842,6 +839,24 @@ static int setup_journal(const char *directory) { - return r; - } - -+ r = sd_id128_get_machine(&this_id); -+ if (r < 0) { -+ log_error("Failed to retrieve machine ID: %s", strerror(-r)); -+ return r; -+ } -+ -+ if (sd_id128_equal(machine_id, this_id)) { -+ log_full(arg_link_journal == LINK_AUTO ? LOG_WARNING : LOG_ERR, -+ "Host and machine ids are equal (%s): refusing to link journals", id); -+ if (arg_link_journal == LINK_AUTO) -+ return 0; -+ return -+ -EEXIST; -+ } -+ -+ if (arg_link_journal == LINK_NO) -+ return 0; -+ - free(p); - p = strappend("/var/log/journal/", id); - q = strjoin(directory, "/var/log/journal/", id, NULL); diff --git a/0166-man-beef-up-ExecStart-description.patch b/0166-man-beef-up-ExecStart-description.patch deleted file mode 100644 index 6c1fb82..0000000 --- a/0166-man-beef-up-ExecStart-description.patch +++ /dev/null @@ -1,150 +0,0 @@ -From a6ba849c002fc991a290d2792573a9145f02aaf6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 14 Dec 2013 17:21:55 -0500 -Subject: [PATCH] man: beef up ExecStart description - -We have lots of questions from people who assume that shell syntax works -here, so let's be very explicit what is allowed and what is not. A few -examples should also help. - -http://bugs.debian.org/732156 ---- - man/systemd.service.xml | 97 ++++++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 80 insertions(+), 17 deletions(-) - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 3f31c11..ca297ba 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -305,9 +305,10 @@ - ExecStart= - Commands with their - arguments that are executed when this -- service is started. The first -- argument must be an absolute path -- name. -+ service is started. For each of the -+ specified commands, the first argument -+ must be an absolute and literal path -+ to an executable. - - When Type is - not , only one -@@ -332,6 +333,35 @@ - prior assignments of this option will - have no effect. - -+ Each command line is split on -+ whitespace, with the first item being -+ the command to execute, and the -+ subsequent items being the arguments. -+ Double quotes ("...") and single -+ quotes ('...') may be used, in which -+ case everything until the next -+ matching quote becomes part of the -+ same argument. Quotes themselves are -+ removed after parsing. In addition, a -+ trailing backslash -+ (\) may be used to -+ merge lines. This syntax is intended -+ to be very similar to shell syntax, -+ but only the meta-characters and -+ expansions described in the following -+ paragraphs are understood. -+ Specifically, redirection using -+ <, -+ <<, -+ >, and -+ >>, pipes -+ using |, and -+ running programs in the background -+ using & -+ and other elements of shell -+ syntax are not supported. -+ -+ - If more than one command is - specified, the commands are invoked - one by one sequentially in the order -@@ -350,10 +380,11 @@ - The command line accepts - % specifiers as - described in -- systemd.unit5. Note -- that the first argument of the command -- line (i.e. the program to execute) may -- not include specifiers. -+ systemd.unit5. -+ Note that the first argument of the -+ command line (i.e. the program to -+ execute) may not include -+ specifiers. - - Basic environment variable - substitution is supported. Use -@@ -372,9 +403,7 @@ - more arguments. To pass literal dollar sign - use $$. Note that the first - argument (i.e. the program to execute) -- may not be a variable, since it must -- be a literal and absolute path -- name. -+ may not be a variable. - - Optionally, if the absolute file - name is prefixed with -@@ -402,13 +431,47 @@ - ExecStart=/bin/sh -c 'dmesg | tac' - - -- For services run by a user -- instance of systemd the special -- environment variable -- $MANAGERPID is set -- to the PID of the systemd -- instance. -- -+ Only select environment variables -+ are set for executed commands. See -+ systemd.exec5. -+ -+ -+ Example: -+ ExecStart=/bin/echo one ; /bin/echo "two two" -+ -+ This will execute -+ /bin/echo two -+ times, each time with one argument, -+ one and -+ two two, -+ respectively. Since two commands are -+ specified -+ Type=oneshot must -+ be used. -+ -+ Example: -+ ExecStart=/bin/echo / >/dev/null & \; \ -+/bin/ls -+ -+ This will execute -+ /bin/echo with five -+ arguments: /, -+ >/dev/null, -+ &, -+ ;, and -+ /bin/ls. -+ -+ Example: -+ Environment="ONE=one" 'TWO=two two' -+ExecStart=/bin/echo $ONE $TWO ${TWO} -+ -+ This will execute -+ /bin/echo with four -+ arguments: one, -+ two, -+ two, and -+ two two. -+ - - - diff --git a/0167-man-remove-advice-to-avoid-setting-the-same-var-more.patch b/0167-man-remove-advice-to-avoid-setting-the-same-var-more.patch deleted file mode 100644 index b1943b1..0000000 --- a/0167-man-remove-advice-to-avoid-setting-the-same-var-more.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 7c6c28dca3b75b7d0c2d067752ed917b113d90d2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 14 Dec 2013 17:30:25 -0500 -Subject: [PATCH] man: remove advice to avoid setting the same var more than - once - -So far the compatibility with .desktop settings hasn't been imporant -at all, and we do not want people to write convoluted unit -files. ---- - man/systemd.service.xml | 6 +----- - man/systemd.unit.xml | 11 +++++++++++ - 2 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index ca297ba..8f9137c 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -321,11 +321,7 @@ - (these semicolons must be passed as - separate words). Alternatively, this - directive may be specified more than -- once with the same effect. However, -- the latter syntax is not recommended -- for compatibility with parsers -- suitable for XDG -- .desktop files. -+ once with the same effect. - Lone semicolons may be escaped as - \;. If the empty - string is assigned to this option, the -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 029392c..77127ff 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -120,6 +120,17 @@ - systemd.scope5. - - -+ Various settings are allowed to be specified -+ more than once, in which case the interpretation -+ depends on the setting. Often, multiple settings form -+ a list, and setting to an empty value "resets", which -+ means that previous assignments are ignored. When this -+ is allowed, it is mentioned in the description of the -+ setting. Note that using multiple assignments to the -+ same value makes the unit file incompatible with -+ parsers for the XDG .desktop file -+ format. -+ - Unit files are loaded from a set of paths - determined during compilation, described in the next section. - diff --git a/0168-systemctl-add-the-plain-option-to-the-help-message.patch b/0168-systemctl-add-the-plain-option-to-the-help-message.patch deleted file mode 100644 index ec04f72..0000000 --- a/0168-systemctl-add-the-plain-option-to-the-help-message.patch +++ /dev/null @@ -1,23 +0,0 @@ -From c818ae0c9288afac78a1761de3bd65007448558a Mon Sep 17 00:00:00 2001 -From: Djalal Harouni -Date: Sun, 15 Dec 2013 00:05:38 +0100 -Subject: [PATCH] systemctl: add the --plain option to the help message - ---- - src/systemctl/systemctl.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index db584b2..bc9808a 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -4748,7 +4748,8 @@ static int systemctl_help(void) { - " --root=PATH Enable unit files in the specified root directory\n" - " -n --lines=INTEGER Number of journal entries to show\n" - " -o --output=STRING Change journal output mode (short, short-monotonic,\n" -- " verbose, export, json, json-pretty, json-sse, cat)\n\n" -+ " verbose, export, json, json-pretty, json-sse, cat)\n" -+ " --plain Print unit dependencies as a list instead of a tree\n\n" - "Unit Commands:\n" - " list-units List loaded units\n" - " list-sockets List loaded sockets ordered by address\n" diff --git a/0169-Fix-a-few-resource-leaks-in-error-paths.patch b/0169-Fix-a-few-resource-leaks-in-error-paths.patch deleted file mode 100644 index fc01bb9..0000000 --- a/0169-Fix-a-few-resource-leaks-in-error-paths.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 010d6c4909ed75c247ff91a555c7942f9c2ce1c5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 15 Dec 2013 16:25:04 -0500 -Subject: [PATCH] Fix a few resource leaks in error paths - -https://bugzilla.redhat.com/show_bug.cgi?id=1043304 - -Conflicts: - src/libsystemd-bus/bus-objects.c - src/udev/net/link-config.c ---- - src/sleep/sleep.c | 15 +++++++-------- - 1 file changed, 7 insertions(+), 8 deletions(-) - -diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c -index a56ab89..f96987f 100644 ---- a/src/sleep/sleep.c -+++ b/src/sleep/sleep.c -@@ -57,15 +57,14 @@ static int write_mode(char **modes) { - return r; - } - --static int write_state(FILE *f0, char **states) { -- FILE _cleanup_fclose_ *f = f0; -+static int write_state(FILE **f, char **states) { - char **state; - int r = 0; - - STRV_FOREACH(state, states) { - int k; - -- k = write_string_to_file(f, *state); -+ k = write_string_to_file(*f, *state); - if (k == 0) - return 0; - log_debug("Failed to write '%s' to /sys/power/state: %s", -@@ -73,9 +72,9 @@ static int write_state(FILE *f0, char **states) { - if (r == 0) - r = k; - -- fclose(f); -- f = fopen("/sys/power/state", "we"); -- if (!f) { -+ fclose(*f); -+ *f = fopen("/sys/power/state", "we"); -+ if (!*f) { - log_error("Failed to open /sys/power/state: %m"); - return -errno; - } -@@ -87,7 +86,7 @@ static int write_state(FILE *f0, char **states) { - static int execute(char **modes, char **states) { - char* arguments[4]; - int r; -- FILE *f; -+ _cleanup_fclose_ FILE *f = NULL; - const char* note = strappenda("SLEEP=", arg_verb); - - /* This file is opened first, so that if we hit an error, -@@ -115,7 +114,7 @@ static int execute(char **modes, char **states) { - note, - NULL); - -- r = write_state(f, states); -+ r = write_state(&f, states); - if (r < 0) - return r; - diff --git a/0170-Fix-a-few-signed-unsigned-format-string-issues.patch b/0170-Fix-a-few-signed-unsigned-format-string-issues.patch deleted file mode 100644 index 085e455..0000000 --- a/0170-Fix-a-few-signed-unsigned-format-string-issues.patch +++ /dev/null @@ -1,81 +0,0 @@ -From dca7710c31218a2292c8e3987d1e906b27bed4e9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 15 Dec 2013 16:26:27 -0500 -Subject: [PATCH] Fix a few signed/unsigned format string issues - -Since numbers involved are all small, behaviour was correct already. - -https://bugzilla.redhat.com/show_bug.cgi?id=1043304 ---- - src/shared/time-util.c | 2 +- - src/udev/udev-builtin-net_id.c | 21 +++++++-------------- - 2 files changed, 8 insertions(+), 15 deletions(-) - -diff --git a/src/shared/time-util.c b/src/shared/time-util.c -index 81d4ede..d31401b 100644 ---- a/src/shared/time-util.c -+++ b/src/shared/time-util.c -@@ -382,7 +382,7 @@ void dual_timestamp_deserialize(const char *value, dual_timestamp *t) { - assert(value); - assert(t); - -- if (sscanf(value, "%lli %llu", &a, &b) != 2) -+ if (sscanf(value, "%llu %llu", &a, &b) != 2) - log_debug("Failed to parse finish timestamp value %s", value); - else { - t->realtime = a; -diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c -index 9ae8f08..9bc1946 100644 ---- a/src/udev/udev-builtin-net_id.c -+++ b/src/udev/udev-builtin-net_id.c -@@ -166,23 +166,17 @@ out: - - static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { - struct udev *udev = udev_device_get_udev(names->pcidev); -- unsigned int domain; -- unsigned int bus; -- unsigned int slot; -- unsigned int func; -- unsigned int dev_id = 0; -+ unsigned domain, bus, slot, func, dev_id = 0; - size_t l; - char *s; - const char *attr; - struct udev_device *pci = NULL; -- char slots[256]; -- DIR *dir; -+ char slots[256], str[256]; -+ _cleanup_closedir_ DIR *dir = NULL; - struct dirent *dent; -- char str[256]; -- int hotplug_slot = 0; -- int err = 0; -+ int hotplug_slot = 0, err = 0; - -- if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%d", &domain, &bus, &slot, &func) != 4) -+ if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4) - return -ENOENT; - - /* kernel provided multi-device index */ -@@ -239,7 +233,6 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { - if (hotplug_slot > 0) - break; - } -- closedir(dir); - - if (hotplug_slot > 0) { - s = names->pci_slot; -@@ -341,11 +334,11 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) { - return -ENOENT; - - /* bus num:core num */ -- if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*d:%d", &core) != 1) -+ if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*u:%u", &core) != 1) - return -EINVAL; - /* suppress the common core == 0 */ - if (core > 0) -- snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core); -+ snprintf(names->bcma_core, sizeof(names->bcma_core), "b%u", core); - - names->type = NET_BCMA; - return 0; diff --git a/0171-util-try-harder-to-increase-the-send-recv-buffers-of.patch b/0171-util-try-harder-to-increase-the-send-recv-buffers-of.patch deleted file mode 100644 index 361253f..0000000 --- a/0171-util-try-harder-to-increase-the-send-recv-buffers-of.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 4a0ab3a8fd59d38dabb9a7096939d8d8e8adc62f Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 16 Dec 2013 17:04:36 +0100 -Subject: [PATCH] util: try harder to increase the send/recv buffers of sockets - -If we have the priviliges we will try SO_SNDBUFFORCE/SO_RCVBUFFORCE and -only fall back to SO_SNDBUF/SO_RCVBUF if that fails. ---- - src/shared/util.c | 25 ++++++++++++------------- - 1 file changed, 12 insertions(+), 13 deletions(-) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 02bae90..8824b9b 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -4928,15 +4928,15 @@ int fd_inc_sndbuf(int fd, size_t n) { - socklen_t l = sizeof(value); - - r = getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, &l); -- if (r >= 0 && -- l == sizeof(value) && -- (size_t) value >= n*2) -+ if (r >= 0 && l == sizeof(value) && (size_t) value >= n*2) - return 0; - -+ /* If we have the privileges we will ignore the kernel limit. */ -+ - value = (int) n; -- r = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, sizeof(value)); -- if (r < 0) -- return -errno; -+ if (setsockopt(fd, SOL_SOCKET, SO_SNDBUFFORCE, &value, sizeof(value)) < 0) -+ if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, sizeof(value)) < 0) -+ return -errno; - - return 1; - } -@@ -4946,16 +4946,15 @@ int fd_inc_rcvbuf(int fd, size_t n) { - socklen_t l = sizeof(value); - - r = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, &l); -- if (r >= 0 && -- l == sizeof(value) && -- (size_t) value >= n*2) -+ if (r >= 0 && l == sizeof(value) && (size_t) value >= n*2) - return 0; - -- value = (int) n; -- r = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, sizeof(value)); -- if (r < 0) -- return -errno; -+ /* If we have the privileges we will ignore the kernel limit. */ - -+ value = (int) n; -+ if (setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &value, sizeof(value)) < 0) -+ if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, sizeof(value)) < 0) -+ return -errno; - return 1; - } - diff --git a/0172-execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch b/0172-execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch deleted file mode 100644 index 82de044..0000000 --- a/0172-execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8d872d28194f58da2311ca88072084458dc2eb15 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 16 Dec 2013 20:00:09 +0100 -Subject: [PATCH] execute: also set SO_SNDBUF when spawning a service with - stdout/stderr connected to journald - ---- - src/core/execute.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/core/execute.c b/src/core/execute.c -index 58be72a..9b85379 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -75,6 +75,8 @@ - /* This assumes there is a 'tty' group */ - #define TTY_MODE 0620 - -+#define SNDBUF_SIZE (8*1024*1024) -+ - static int shift_fds(int fds[], unsigned n_fds) { - int start, restart_from; - -@@ -232,6 +234,8 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons - return -errno; - } - -+ fd_inc_sndbuf(fd, SNDBUF_SIZE); -+ - dprintf(fd, - "%s\n" - "%s\n" diff --git a/0173-journal-file-protect-against-alloca-0.patch b/0173-journal-file-protect-against-alloca-0.patch deleted file mode 100644 index 953373e..0000000 --- a/0173-journal-file-protect-against-alloca-0.patch +++ /dev/null @@ -1,23 +0,0 @@ -From a25fd0d4bd3cf652e55c24e7dc873fe530fa111a Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Mon, 16 Dec 2013 23:35:30 +0100 -Subject: [PATCH] journal-file: protect against alloca(0) - ---- - src/journal/journal-file.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 090cf97..8ea258b 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -2737,7 +2737,8 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 - ts.realtime = le64toh(o->entry.realtime); - - n = journal_file_entry_n_items(o); -- items = alloca(sizeof(EntryItem) * n); -+ /* alloca() can't take 0, hence let's allocate at least one */ -+ items = alloca(sizeof(EntryItem) * MAX(1u, n)); - - for (i = 0; i < n; i++) { - uint64_t l, h; diff --git a/0174-man-describe-journalctl-show-cursor.patch b/0174-man-describe-journalctl-show-cursor.patch deleted file mode 100644 index e36e5b6..0000000 --- a/0174-man-describe-journalctl-show-cursor.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 2d46a006393fe823e119a14794a931bd9bc25f74 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 16 Dec 2013 23:40:00 -0500 -Subject: [PATCH] man: describe journalctl --show-cursor - ---- - man/journalctl.xml | 22 +++++++++++++++++----- - 1 file changed, 17 insertions(+), 5 deletions(-) - -diff --git a/man/journalctl.xml b/man/journalctl.xml -index c0cc96d..d936933 100644 ---- a/man/journalctl.xml -+++ b/man/journalctl.xml -@@ -576,11 +576,23 @@ - - - -- Start showing entries from the -- location in the journal -- after the location -- specified by the this cursor. -- -+ Start showing entries -+ from the location in the journal -+ after the -+ location specified by the this cursor. -+ The cursor is shown when the -+ option -+ is used. -+ -+ -+ -+ -+ -+ The cursor is shown after the last -+ entry after two dashes: -+ -- cursor: s=0639... -+ The format of this the cursor is private -+ and subject ot change. - - - diff --git a/0175-journal-fix-against-theoretical-undefined-behavior.patch b/0175-journal-fix-against-theoretical-undefined-behavior.patch deleted file mode 100644 index d2825e4..0000000 --- a/0175-journal-fix-against-theoretical-undefined-behavior.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 9e32b8f531a1e15f85cce97bea931c43a9db7798 Mon Sep 17 00:00:00 2001 -From: Shawn Landden -Date: Mon, 16 Dec 2013 15:41:00 -0800 -Subject: [PATCH] journal: fix against (theoretical) undefined behavior - -While all the libc implementations I know return NULL when memchr's size -parameter is 0, without accessing any memory, passing NULL to memchr is -still invalid: - -C11 7.24.1p2: Where an argument declared as "size_t n" specifies the length -of the array for a function, n can have the value zero on a call to that -function. Unless explicitly stated otherwise in the description of a -particular function in this subclause, pointer arguments on such a call -shall still have valid values, as described in 7.1.4. On such a call, a -function that locates a character finds no occurrence, a function that -compares two character sequences returns zero, and a function that copies -characters copies zero characters. - -see http://llvm.org/bugs/show_bug.cgi?id=18247 ---- - src/journal/journal-file.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 8ea258b..71ef092 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1010,7 +1010,10 @@ static int journal_file_append_data( - if (r < 0) - return r; - -- eq = memchr(data, '=', size); -+ if (!data) -+ eq = NULL; -+ else -+ eq = memchr(data, '=', size); - if (eq && eq > data) { - uint64_t fp; - Object *fo; diff --git a/0176-journald-downgrade-warning-message-when-dev-kmsg-doe.patch b/0176-journald-downgrade-warning-message-when-dev-kmsg-doe.patch deleted file mode 100644 index 6936e38..0000000 --- a/0176-journald-downgrade-warning-message-when-dev-kmsg-doe.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 602fa0f30e4770b1f45e005a7ed9417065b0d640 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 17 Dec 2013 19:56:06 +0100 -Subject: [PATCH] journald: downgrade warning message when /dev/kmsg does not - exist - ---- - src/journal/journald-kmsg.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c -index 21649d0..9895808 100644 ---- a/src/journal/journald-kmsg.c -+++ b/src/journal/journald-kmsg.c -@@ -382,7 +382,8 @@ int server_open_dev_kmsg(Server *s) { - - s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); - if (s->dev_kmsg_fd < 0) { -- log_warning("Failed to open /dev/kmsg, ignoring: %m"); -+ log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, -+ "Failed to open /dev/kmsg, ignoring: %m"); - return 0; - } - diff --git a/0177-journal-file.c-remove-redundant-assignment-of-variab.patch b/0177-journal-file.c-remove-redundant-assignment-of-variab.patch deleted file mode 100644 index e5baa81..0000000 --- a/0177-journal-file.c-remove-redundant-assignment-of-variab.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 029cd4a129832bcc750206deb05695da350efe77 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Tue, 17 Dec 2013 20:15:45 +0100 -Subject: [PATCH] journal-file.c: remove redundant assignment of variable - -we also do 'last_index = (uint64_t) -1;' at the end of the while -loop so there is no reason to also do it here. ---- - src/journal/journal-file.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 71ef092..5ef6a2a 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1628,8 +1628,6 @@ static int generic_array_bisect( - else - left = y + 1; - } -- -- last_index = (uint64_t) -1; - } - - for (;;) { diff --git a/0178-login-Don-t-stop-a-running-user-manager-from-garbage.patch b/0178-login-Don-t-stop-a-running-user-manager-from-garbage.patch deleted file mode 100644 index 4523e80..0000000 --- a/0178-login-Don-t-stop-a-running-user-manager-from-garbage.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0fa446efab8593abc726a7c2438549098db4cc70 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Thomas=20B=C3=A4chler?= -Date: Sun, 15 Dec 2013 12:06:37 +0100 -Subject: [PATCH] login: Don't stop a running user manager from - garbage-collecting the user. - -With the current logic, a user will never be garbage-collected, since its -manager will always be around. Change the logic such that a user is -garbage-collected when it has no sessions and linger is disabled. - -Conflicts: - src/login/logind-user.c ---- - src/login/logind-user.c | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/src/login/logind-user.c b/src/login/logind-user.c -index adbe638..e2fce5c 100644 ---- a/src/login/logind-user.c -+++ b/src/login/logind-user.c -@@ -629,12 +629,6 @@ int user_check_gc(User *u, bool drop_not_started) { - if (u->slice_job || u->service_job) - return 1; - -- if (u->slice && manager_unit_is_active(u->manager, u->slice) != 0) -- return 1; -- -- if (u->service && manager_unit_is_active(u->manager, u->service) != 0) -- return 1; -- - return 0; - } - diff --git a/0179-libudev-devices-received-from-udev-are-always-initia.patch b/0179-libudev-devices-received-from-udev-are-always-initia.patch deleted file mode 100644 index 492bb25..0000000 --- a/0179-libudev-devices-received-from-udev-are-always-initia.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 0e075f4d98a653cc0b468fc786fcd869075a75e1 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Wed, 18 Dec 2013 16:49:19 +0100 -Subject: [PATCH] libudev: devices received from udev are always initialized - -Conflicts: - TODO ---- - src/libudev/libudev-device.c | 2 ++ - src/libudev/libudev-monitor.c | 62 +++++++++++++++++++++---------------------- - 2 files changed, 33 insertions(+), 31 deletions(-) - -diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c -index 161181a..b6c4e24 100644 ---- a/src/libudev/libudev-device.c -+++ b/src/libudev/libudev-device.c -@@ -536,6 +536,8 @@ int udev_device_read_db(struct udev_device *udev_device, const char *dbfile) - udev_dbg(udev_device->udev, "no db file to read %s: %m\n", dbfile); - return -1; - } -+ -+ /* devices with a database entry are initialized */ - udev_device->is_initialized = true; - - while (fgets(line, sizeof(line), f)) { -diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c -index 0212792..ff89e14 100644 ---- a/src/libudev/libudev-monitor.c -+++ b/src/libudev/libudev-monitor.c -@@ -324,9 +324,6 @@ _public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor) - int err = 0; - const int on = 1; - -- if (udev_monitor->snl.nl.nl_family == 0) -- return -EINVAL; -- - udev_monitor_filter_update(udev_monitor); - - if (!udev_monitor->bound) { -@@ -524,7 +521,6 @@ _public_ struct udev_device *udev_monitor_receive_device(struct udev_monitor *ud - char buf[8192]; - ssize_t buflen; - ssize_t bufpos; -- struct udev_monitor_netlink_header *nlh; - - retry: - if (udev_monitor == NULL) -@@ -536,11 +532,8 @@ retry: - smsg.msg_iovlen = 1; - smsg.msg_control = cred_msg; - smsg.msg_controllen = sizeof(cred_msg); -- -- if (udev_monitor->snl.nl.nl_family != 0) { -- smsg.msg_name = &snl; -- smsg.msg_namelen = sizeof(snl); -- } -+ smsg.msg_name = &snl; -+ smsg.msg_namelen = sizeof(snl); - - buflen = recvmsg(udev_monitor->sock, &smsg, 0); - if (buflen < 0) { -@@ -554,20 +547,18 @@ retry: - return NULL; - } - -- if (udev_monitor->snl.nl.nl_family != 0) { -- if (snl.nl.nl_groups == 0) { -- /* unicast message, check if we trust the sender */ -- if (udev_monitor->snl_trusted_sender.nl.nl_pid == 0 || -- snl.nl.nl_pid != udev_monitor->snl_trusted_sender.nl.nl_pid) { -- udev_dbg(udev_monitor->udev, "unicast netlink message ignored\n"); -- return NULL; -- } -- } else if (snl.nl.nl_groups == UDEV_MONITOR_KERNEL) { -- if (snl.nl.nl_pid > 0) { -- udev_dbg(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n", -- snl.nl.nl_pid); -- return NULL; -- } -+ if (snl.nl.nl_groups == 0) { -+ /* unicast message, check if we trust the sender */ -+ if (udev_monitor->snl_trusted_sender.nl.nl_pid == 0 || -+ snl.nl.nl_pid != udev_monitor->snl_trusted_sender.nl.nl_pid) { -+ udev_dbg(udev_monitor->udev, "unicast netlink message ignored\n"); -+ return NULL; -+ } -+ } else if (snl.nl.nl_groups == UDEV_MONITOR_KERNEL) { -+ if (snl.nl.nl_pid > 0) { -+ udev_dbg(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n", -+ snl.nl.nl_pid); -+ return NULL; - } - } - -@@ -583,35 +574,47 @@ retry: - return NULL; - } - -+ udev_device = udev_device_new(udev_monitor->udev); -+ if (udev_device == NULL) -+ return NULL; -+ - if (memcmp(buf, "libudev", 8) == 0) { -+ struct udev_monitor_netlink_header *nlh; -+ - /* udev message needs proper version magic */ - nlh = (struct udev_monitor_netlink_header *) buf; - if (nlh->magic != htonl(UDEV_MONITOR_MAGIC)) { - udev_err(udev_monitor->udev, "unrecognized message signature (%x != %x)\n", -- nlh->magic, htonl(UDEV_MONITOR_MAGIC)); -+ nlh->magic, htonl(UDEV_MONITOR_MAGIC)); -+ udev_device_unref(udev_device); - return NULL; - } -- if (nlh->properties_off+32 > (size_t)buflen) -+ if (nlh->properties_off+32 > (size_t)buflen) { -+ udev_device_unref(udev_device); - return NULL; -+ } -+ - bufpos = nlh->properties_off; -+ -+ /* devices received from udev are always initialized */ -+ udev_device_set_is_initialized(udev_device); - } else { - /* kernel message with header */ - bufpos = strlen(buf) + 1; - if ((size_t)bufpos < sizeof("a@/d") || bufpos >= buflen) { - udev_dbg(udev_monitor->udev, "invalid message length\n"); -+ udev_device_unref(udev_device); - return NULL; - } - - /* check message header */ - if (strstr(buf, "@/") == NULL) { - udev_dbg(udev_monitor->udev, "unrecognized message header\n"); -+ udev_device_unref(udev_device); - return NULL; - } - } - -- udev_device = udev_device_new(udev_monitor->udev); -- if (udev_device == NULL) -- return NULL; - udev_device_set_info_loaded(udev_device); - - while (bufpos < buflen) { -@@ -664,9 +667,6 @@ int udev_monitor_send_device(struct udev_monitor *udev_monitor, - struct udev_list_entry *list_entry; - uint64_t tag_bloom_bits; - -- if (udev_monitor->snl.nl.nl_family == 0) -- return -EINVAL; -- - blen = udev_device_get_properties_monitor_buf(udev_device, &buf); - if (blen < 32) - return -EINVAL; diff --git a/0180-log-don-t-reopen-dev-console-each-time-we-call-log_o.patch b/0180-log-don-t-reopen-dev-console-each-time-we-call-log_o.patch deleted file mode 100644 index ea04f74..0000000 --- a/0180-log-don-t-reopen-dev-console-each-time-we-call-log_o.patch +++ /dev/null @@ -1,49 +0,0 @@ -From df5013c79d99848730abe4585dd93f77409a95c0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 18 Dec 2013 05:07:34 +0100 -Subject: [PATCH] log: don't reopen /dev/console each time we call log_open() - -Instead, force reopen it only if we really really have to. ---- - src/core/main.c | 1 + - src/core/shutdown.c | 1 + - src/shared/log.c | 2 -- - 3 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/main.c b/src/core/main.c -index 58c3a9e..935762f 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -1347,6 +1347,7 @@ int main(int argc, char *argv[]) { - /* Running inside a container, as PID 1 */ - arg_running_as = SYSTEMD_SYSTEM; - log_set_target(LOG_TARGET_CONSOLE); -+ log_close_console(); /* force reopen of /dev/console */ - log_open(); - - /* For the later on, see above... */ -diff --git a/src/core/shutdown.c b/src/core/shutdown.c -index ea02b60..5e0f3ce 100644 ---- a/src/core/shutdown.c -+++ b/src/core/shutdown.c -@@ -155,6 +155,7 @@ int main(int argc, char *argv[]) { - - log_parse_environment(); - log_set_target(LOG_TARGET_CONSOLE); /* syslog will die if not gone yet */ -+ log_close_console(); /* force reopen of /dev/console */ - log_open(); - - umask(0022); -diff --git a/src/shared/log.c b/src/shared/log.c -index 8f4995a..bd918fb 100644 ---- a/src/shared/log.c -+++ b/src/shared/log.c -@@ -272,8 +272,6 @@ int log_open(void) { - log_close_journal(); - log_close_syslog(); - -- /* Get the real /dev/console if we are PID=1, hence reopen */ -- log_close_console(); - return log_open_console(); - } - diff --git a/0181-log-when-we-log-to-dev-console-and-got-disconnected-.patch b/0181-log-when-we-log-to-dev-console-and-got-disconnected-.patch deleted file mode 100644 index 643807f..0000000 --- a/0181-log-when-we-log-to-dev-console-and-got-disconnected-.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 21804157ff0e60508fd128310505381f7b3ec2b0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 18 Dec 2013 16:49:15 +0100 -Subject: [PATCH] log: when we log to /dev/console and got disconnected (maybe - due to vhangup) reconnect - ---- - src/shared/log.c | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -diff --git a/src/shared/log.c b/src/shared/log.c -index bd918fb..de770ca 100644 ---- a/src/shared/log.c -+++ b/src/shared/log.c -@@ -335,8 +335,25 @@ static int write_to_console( - IOVEC_SET_STRING(iovec[n++], ANSI_HIGHLIGHT_OFF); - IOVEC_SET_STRING(iovec[n++], "\n"); - -- if (writev(console_fd, iovec, n) < 0) -- return -errno; -+ if (writev(console_fd, iovec, n) < 0) { -+ -+ if (errno == EIO && getpid() == 1) { -+ -+ /* If somebody tried to kick us from our -+ * console tty (via vhangup() or suchlike), -+ * try to reconnect */ -+ -+ log_close_console(); -+ log_open_console(); -+ -+ if (console_fd < 0) -+ return 0; -+ -+ if (writev(console_fd, iovec, n) < 0) -+ return -errno; -+ } else -+ return -errno; -+ } - - return 1; - } diff --git a/0182-loginctl-when-showing-device-tree-of-seats-with-no-d.patch b/0182-loginctl-when-showing-device-tree-of-seats-with-no-d.patch deleted file mode 100644 index 68ec5ce..0000000 --- a/0182-loginctl-when-showing-device-tree-of-seats-with-no-d.patch +++ /dev/null @@ -1,23 +0,0 @@ -From d34a6029e4a59c75d9826e0aa57e548a86b08bba Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 18 Dec 2013 17:16:33 +0100 -Subject: [PATCH] loginctl: when showing device tree of seats with no devices - show something useful - ---- - src/login/sysfs-show.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c -index f7d11dd..cb12ebf 100644 ---- a/src/login/sysfs-show.c -+++ b/src/login/sysfs-show.c -@@ -181,6 +181,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) { - first = udev_enumerate_get_list_entry(e); - if (first) - show_sysfs_one(udev, seat, &first, "/", prefix, n_columns); -+ else -+ printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), "(none)"); - - return r; - } diff --git a/0183-man-be-more-explicit-about-option-arguments-that-tak.patch b/0183-man-be-more-explicit-about-option-arguments-that-tak.patch deleted file mode 100644 index f930ed0..0000000 --- a/0183-man-be-more-explicit-about-option-arguments-that-tak.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 6bd96f28f8d67cb5cb77057e60badb4550ae35f3 Mon Sep 17 00:00:00 2001 -From: "Jason St. John" -Date: Tue, 17 Dec 2013 18:48:43 -0500 -Subject: [PATCH] man: be more explicit about option arguments that take - 128-bit IDs in journalctl(1) - -It may not be immediately obvious to the reader what "ID128" is, so replace the -example option argument "ID128" with "128-bit-ID". ---- - man/journalctl.xml | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/man/journalctl.xml b/man/journalctl.xml -index d936933..dced90f 100644 ---- a/man/journalctl.xml -+++ b/man/journalctl.xml -@@ -725,7 +725,7 @@ - - - - - List the contents of -@@ -734,7 +734,7 @@ - description strings. - - If any -- ID128s are -+ 128-bit-IDs are - specified, only those entries are shown. - - -@@ -742,7 +742,7 @@ - - - - - Show the contents of -@@ -753,7 +753,7 @@ - files. - - If any -- ID128s are -+ 128-bit-IDs are - specified, only those entries are shown. - - diff --git a/0184-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch b/0184-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch deleted file mode 100644 index 9e08719..0000000 --- a/0184-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 1f3128aec84ea40d54423386384ad28a789cb381 Mon Sep 17 00:00:00 2001 -From: "Jason St. John" -Date: Tue, 17 Dec 2013 19:40:02 -0500 -Subject: [PATCH] man: add DOI for refereed article on Forward Secure Sealing - to journald.conf(5) - -In journalctl(1), be more explicit about the reference to "Seal=" in -journald.conf(5) and what information can be found there. ---- - man/journalctl.xml | 8 ++++++-- - man/journald.conf.xml | 10 +++++----- - 2 files changed, 11 insertions(+), 7 deletions(-) - -diff --git a/man/journalctl.xml b/man/journalctl.xml -index dced90f..d75c758 100644 ---- a/man/journalctl.xml -+++ b/man/journalctl.xml -@@ -781,10 +781,14 @@ - sealing key is stored in the journal - data directory and shall remain on the - host. The verification key should be -- stored externally. Also see the -+ stored externally. Refer to the - option in - journald.conf5 -- for details. -+ for information on Forward Secure -+ Sealing and for a link to a refereed -+ scholarly paper detailing the -+ cryptographic theory it is based on. -+ - - - -diff --git a/man/journald.conf.xml b/man/journald.conf.xml -index 7aa2e78..8e642a3 100644 ---- a/man/journald.conf.xml -+++ b/man/journald.conf.xml -@@ -130,15 +130,15 @@ - by - journalctl1's - -- command), forward secure sealing (FSS) -+ command), Forward Secure Sealing (FSS) - for all persistent journal files is - enabled. FSS is based on Seekable - Sequential Key Generators by -- G. A. Marson and B. Poettering and -- may be used to protect journal files -- from unnoticed -- alteration. -+ G. A. Marson and B. Poettering -+ (doi:10.1007/978-3-642-40203-6_7) -+ and may be used to protect journal files -+ from unnoticed alteration. - - - diff --git a/0185-journalctl-zsh-completion-fix-several-issues-in-help.patch b/0185-journalctl-zsh-completion-fix-several-issues-in-help.patch deleted file mode 100644 index 4a8b38f..0000000 --- a/0185-journalctl-zsh-completion-fix-several-issues-in-help.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 643f82598b69d3b3002294a456a459cceb075cd3 Mon Sep 17 00:00:00 2001 -From: "Jason St. John" -Date: Tue, 17 Dec 2013 21:36:27 -0500 -Subject: [PATCH] journalctl,zsh-completion: fix several issues in --help - message text - --- fix grammar and reword some descriptions for clarity --- add a useful description of what --follow does --- fix the description for --after-cursor --- properly introduce the FSS acronym for "Forward Secure Sealing" in -both sections --- clarify the --disk-usage command - -[zj: perform similar changes to zsh completions] - -squash! journalctl: fix several issues in --help message text - -Conflicts: - src/journal/journalctl.c ---- - shell-completion/zsh/_journalctl | 14 +++++++------- - src/journal/journalctl.c | 34 +++++++++++++++++----------------- - 2 files changed, 24 insertions(+), 24 deletions(-) - -diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl -index 29ff3e3..8c3dbb0 100644 ---- a/shell-completion/zsh/_journalctl -+++ b/shell-completion/zsh/_journalctl -@@ -71,14 +71,14 @@ _arguments -s \ - {-m,--merge}'[Show entries from all available journals]' \ - {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \ - '--list-boots[List boots ordered by time]' \ -- {-k,--dmesg}'[Show only kernel messages, Implies -b]' \ -+ {-k,--dmesg}'[Show only kernel messages from the current boot]' \ - {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \ - '--user-unit=[Show data only from the specified user session unit]:units:_journal_fields USER_UNIT' \ - {-p+,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \ -- {-c+,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \ -- '--after-cursor=[Start showing entries from the location in the journal after the cursor]:cursors:_journal_fields __CURSORS' \ -- '--since=[Start showing entries newer or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \ -- '--until=[Stop showing entries older or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \ -+ {-c+,--cursor=}'[Start showing entries from the specified cursor]:cursors:_journal_fields __CURSORS' \ -+ '--after-cursor=[Start showing entries from after the specified cursor]:cursors:_journal_fields __CURSORS' \ -+ '--since=[Start showing entries on or newer than the specified date]:YYYY-MM-DD HH\:MM\:SS' \ -+ '--until=[Stop showing entries on or older than the specified date]:YYYY-MM-DD HH\:MM\:SS' \ - {-F,--field=}'[List all values a certain field takes]:Fields:_list_fields' \ - '--system[Show system and kernel messages]' \ - '--user[Show messages from user services]' \ -@@ -91,8 +91,8 @@ _arguments -s \ - '--list-catalog[List messages in catalog]' \ - '--dump-catalog[Dump messages in catalog]' \ - '--update-catalog[Update binary catalog database]' \ -- '--setup-keys[Generate new FSS key pair]' \ -- '--force[Force recreation of FSS keys]' \ -+ '--setup-keys[Generate a new FSS key pair]' \ -+ '--force[Force recreation of the FSS keys]' \ - '--interval=[Time interval for changing the FSS sealing key]:time interval' \ - '--verify[Verify journal file consistency]' \ - '--verify-key=[Specify FSS verification key]:FSS key' \ -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index 71e28b0..1d66792 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -130,30 +130,30 @@ static int help(void) { - "Query the journal.\n\n" - "Flags:\n" - " --system Show only the system journal\n" -- " --user Show only the user journal for current user\n" -- " --since=DATE Start showing entries newer or of the specified date\n" -- " --until=DATE Stop showing entries older or of the specified date\n" -- " -c --cursor=CURSOR Start showing entries from specified cursor\n" -- " --after-cursor=CURSOR Start showing entries from specified cursor\n" -+ " --user Show only the user journal for the current user\n" -+ " --since=DATE Start showing entries on or newer than the specified date\n" -+ " --until=DATE Stop showing entries on or older than the specified date\n" -+ " -c --cursor=CURSOR Start showing entries from the specified cursor\n" -+ " --after-cursor=CURSOR Start showing entries from after the specified cursor\n" - " --show-cursor Print the cursor after all the entries\n" -- " -b --boot[=ID] Show data only from ID or current boot if unspecified\n" -+ " -b --boot[=ID] Show data only from ID or, if unspecified, the current boot\n" - " --list-boots Show terse information about recorded boots\n" -- " -k --dmesg Show kernel message log from current boot\n" -+ " -k --dmesg Show kernel message log from the current boot\n" - " -u --unit=UNIT Show data only from the specified unit\n" - " --user-unit=UNIT Show data only from the specified user session unit\n" - " -p --priority=RANGE Show only messages within the specified priority range\n" - " -e --pager-end Immediately jump to end of the journal in the pager\n" -- " -f --follow Follow journal\n" -+ " -f --follow Follow the journal\n" - " -n --lines[=INTEGER] Number of journal entries to show\n" - " --no-tail Show all lines, even in follow mode\n" - " -r --reverse Show the newest entries first\n" - " -o --output=STRING Change journal output mode (short, short-iso,\n" -- " short-precise, short-monotonic, verbose,\n" -- " export, json, json-pretty, json-sse, cat)\n" -+ " short-precise, short-monotonic, verbose,\n" -+ " export, json, json-pretty, json-sse, cat)\n" - " -x --catalog Add message explanations where available\n" - " -l --full Do not ellipsize fields\n" - " -a --all Show all fields, including long and unprintable\n" -- " -q --quiet Don't show privilege warning\n" -+ " -q --quiet Do not show privilege warning\n" - " --no-pager Do not pipe output into a pager\n" - " -m --merge Show entries from all available journals\n" - " -D --directory=PATH Show journal files from directory\n" -@@ -162,20 +162,20 @@ static int help(void) { - #ifdef HAVE_GCRYPT - " --interval=TIME Time interval for changing the FSS sealing key\n" - " --verify-key=KEY Specify FSS verification key\n" -- " --force Force overriding new FSS key pair with --setup-keys\n" -+ " --force Force overriding of the FSS key pair with --setup-keys\n" - #endif - "\nCommands:\n" -- " -h --help Show this help\n" -+ " -h --help Show this help text\n" - " --version Show package version\n" -- " --new-id128 Generate a new 128 Bit ID\n" -+ " --new-id128 Generate a new 128-bit ID\n" - " --header Show journal header information\n" -- " --disk-usage Show total disk usage\n" -- " -F --field=FIELD List all values a certain field takes\n" -+ " --disk-usage Show total disk usage of all journal files\n" -+ " -F --field=FIELD List all values that a specified field takes\n" - " --list-catalog Show message IDs of all entries in the message catalog\n" - " --dump-catalog Show entries in the message catalog\n" - " --update-catalog Update the message catalog database\n" - #ifdef HAVE_GCRYPT -- " --setup-keys Generate new FSS key pair\n" -+ " --setup-keys Generate a new FSS key pair\n" - " --verify Verify journal file consistency\n" - #endif - , program_invocation_short_name); diff --git a/0186-keymap-Refactor-Acer-tables.patch b/0186-keymap-Refactor-Acer-tables.patch deleted file mode 100644 index 424f2b1..0000000 --- a/0186-keymap-Refactor-Acer-tables.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 7bf8a20c2f52a3684deef37098f7a73a873da93c Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Thu, 19 Dec 2013 08:33:32 +0100 -Subject: [PATCH] keymap: Refactor Acer tables - -Move common keys into generic Acer table, and factorize the model specific -exceptions. ---- - hwdb/60-keyboard.hwdb | 101 ++++++++++++++++++-------------------------------- - 1 file changed, 36 insertions(+), 65 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index d4d948d..ab9e569 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -46,52 +46,7 @@ - # Acer - ########################################## - --# Acer platform kernel driver --keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr* -- KEYBOARD_KEY_82=f21 -- --# Aspire 5720 --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr* -- KEYBOARD_KEY_84=bluetooth # sent when bluetooth module missing, and key pressed -- KEYBOARD_KEY_92=media # Acer arcade -- KEYBOARD_KEY_d4=bluetooth # Bluetooth on -- KEYBOARD_KEY_d9=bluetooth # Bluetooth off -- KEYBOARD_KEY_f4=prog3 # e-key -- --# Aspire 5920g --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:* -- KEYBOARD_KEY_8a=media -- KEYBOARD_KEY_92=media -- KEYBOARD_KEY_a6=setup -- KEYBOARD_KEY_b2=www -- KEYBOARD_KEY_d9=bluetooth # (toggle) on-to-off -- --# Aspire 6920 --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:* -- KEYBOARD_KEY_d9=bluetooth # (toggle) on-to-off -- KEYBOARD_KEY_92=media -- KEYBOARD_KEY_9e=back -- KEYBOARD_KEY_83=rewind -- KEYBOARD_KEY_89=fastforward -- --# Aspire 8930 --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:* -- KEYBOARD_KEY_ca=prog3 # key 'HOLD' on CineDash Media Console -- KEYBOARD_KEY_83=rewind -- KEYBOARD_KEY_89=fastforward -- KEYBOARD_KEY_92=media # key 'ARCADE' on CineDash Media Console -- KEYBOARD_KEY_9e=back -- --# Travelmate C300 --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr* -- KEYBOARD_KEY_67=f24 # FIXME: rotate screen -- KEYBOARD_KEY_68=up -- KEYBOARD_KEY_69=down -- KEYBOARD_KEY_6b=fn -- KEYBOARD_KEY_6c=screenlock # FIXME: lock tablet device/buttons -- --# -+# common keys - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn* - keyboard:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr* -@@ -99,6 +54,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr* - KEYBOARD_KEY_a6=setup # Fn+F2 Acer eSettings - KEYBOARD_KEY_a7=battery # Fn+F3 Power Management - KEYBOARD_KEY_a9=switchvideomode # Fn+F5 -+ KEYBOARD_KEY_b2=www - KEYBOARD_KEY_b3=euro - KEYBOARD_KEY_b4=dollar - KEYBOARD_KEY_ce=brightnessup # Fn+Right -@@ -118,33 +74,48 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr* - KEYBOARD_KEY_f8=fn - KEYBOARD_KEY_f9=prog1 # Launch NTI shadow - --# -+# Acer platform kernel driver -+keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr* -+ KEYBOARD_KEY_82=f21 # Touchpad toggle -+ -+# Aspire models -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*:pvr* -+ KEYBOARD_KEY_84=bluetooth # sent when bluetooth module missing, and key pressed -+ KEYBOARD_KEY_d9=bluetooth # Bluetooth off -+ KEYBOARD_KEY_92=media # Acer arcade -+ -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr* -+ KEYBOARD_KEY_f4=prog3 # e-key -+ -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:* -+ KEYBOARD_KEY_8a=media -+ KEYBOARD_KEY_a6=setup -+ -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:* -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:* -+ KEYBOARD_KEY_ca=prog3 # key 'HOLD' on CineDash Media Console -+ KEYBOARD_KEY_83=rewind -+ KEYBOARD_KEY_89=fastforward -+ KEYBOARD_KEY_9e=back -+ -+# Travelmate C300 -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr* -+ KEYBOARD_KEY_67=f24 # FIXME: rotate screen -+ KEYBOARD_KEY_68=up -+ KEYBOARD_KEY_69=down -+ KEYBOARD_KEY_6b=fn -+ KEYBOARD_KEY_6c=screenlock # FIXME: lock tablet device/buttons -+ -+# on some models this isn't brightnessup - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5210*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5220*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5610*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5620*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5720*:pvr* -- KEYBOARD_KEY_ee=screenlock -- --# --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6292*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*8471*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*7720*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1810T*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO751h:* --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO531h:* -- KEYBOARD_KEY_d9=bluetooth -- --# --keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr* -- KEYBOARD_KEY_b2=www -- KEYBOARD_KEY_ee=screenlock -- --# - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:* -- KEYBOARD_KEY_b2=www - KEYBOARD_KEY_ee=screenlock - - ########################################################### diff --git a/0187-logging-reduce-send-timeout-to-something-more-sensib.patch b/0187-logging-reduce-send-timeout-to-something-more-sensib.patch deleted file mode 100644 index 4c7c234..0000000 --- a/0187-logging-reduce-send-timeout-to-something-more-sensib.patch +++ /dev/null @@ -1,49 +0,0 @@ -From f1a638c065df3432bb69cc664b5425b96de13325 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 14 Dec 2013 11:54:26 -0500 -Subject: [PATCH] logging: reduce send timeout to something more sensible - -For a user, the timeout of 1 min per message seems equivalent to a hang. -If journald cannot process a message from PID1 for 10 ms then something -is significantly wrong. It's better to lose the message and continue. ---- - src/shared/log.c | 5 ++++- - src/shared/time-util.c | 7 +++---- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/shared/log.c b/src/shared/log.c -index de770ca..2267764 100644 ---- a/src/shared/log.c -+++ b/src/shared/log.c -@@ -126,7 +126,10 @@ static int create_log_socket(int type) { - /* We need a blocking fd here since we'd otherwise lose - messages way too early. However, let's not hang forever in the - unlikely case of a deadlock. */ -- timeval_store(&tv, 1*USEC_PER_MINUTE); -+ if (getpid() == 1) -+ timeval_store(&tv, 10 * USEC_PER_MSEC); -+ else -+ timeval_store(&tv, 10 * USEC_PER_SEC); - setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); - - return fd; -diff --git a/src/shared/time-util.c b/src/shared/time-util.c -index d31401b..505b280 100644 ---- a/src/shared/time-util.c -+++ b/src/shared/time-util.c -@@ -141,12 +141,11 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) { - if (u == (usec_t) -1) { - tv->tv_sec = (time_t) -1; - tv->tv_usec = (suseconds_t) -1; -- return tv; -+ } else { -+ tv->tv_sec = (time_t) (u / USEC_PER_SEC); -+ tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC); - } - -- tv->tv_sec = (time_t) (u / USEC_PER_SEC); -- tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC); -- - return tv; - } - diff --git a/0188-DEFAULT_PATH_SPLIT_USR-macro.patch b/0188-DEFAULT_PATH_SPLIT_USR-macro.patch deleted file mode 100644 index 60d290f..0000000 --- a/0188-DEFAULT_PATH_SPLIT_USR-macro.patch +++ /dev/null @@ -1,43 +0,0 @@ -From e02f70c30b2ad98e5547faebd1304d5273eb0fe6 Mon Sep 17 00:00:00 2001 -From: Shawn Landden -Date: Fri, 20 Dec 2013 15:35:38 -0800 -Subject: [PATCH] DEFAULT_PATH_SPLIT_USR macro - ---- - src/nspawn/nspawn.c | 2 +- - src/shared/path-util.h | 7 +++++-- - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 618f9c3..cafc306 100644 ---- a/src/nspawn/nspawn.c -+++ b/src/nspawn/nspawn.c -@@ -1227,7 +1227,7 @@ int main(int argc, char *argv[]) { - gid_t gid = (gid_t) -1; - unsigned n_env = 2; - const char *envp[] = { -- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", -+ "PATH=" DEFAULT_PATH_SPLIT_USR, - "container=systemd-nspawn", /* LXC sets container=lxc, so follow the scheme here */ - NULL, /* TERM */ - NULL, /* HOME */ -diff --git a/src/shared/path-util.h b/src/shared/path-util.h -index 0a42de7..1e58e1b 100644 ---- a/src/shared/path-util.h -+++ b/src/shared/path-util.h -@@ -25,10 +25,13 @@ - - #include "macro.h" - -+#define DEFAULT_PATH_NORMAL "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" -+#define DEFAULT_PATH_SPLIT_USR DEFAULT_PATH_NORMAL ":/sbin:/bin" -+ - #ifdef HAVE_SPLIT_USR --# define DEFAULT_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -+# define DEFAULT_PATH DEFAULT_PATH_SPLIT_USR - #else --# define DEFAULT_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" -+# define DEFAULT_PATH DEFAULT_PATH_NORMAL - #endif - - bool is_path(const char *p) _pure_; diff --git a/0189-fstab-generator-Do-not-try-to-fsck-non-devices.patch b/0189-fstab-generator-Do-not-try-to-fsck-non-devices.patch deleted file mode 100644 index 7bb4534..0000000 --- a/0189-fstab-generator-Do-not-try-to-fsck-non-devices.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 67ab7e43a7c5623af367193817f5b562d635b0aa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Thomas=20B=C3=A4chler?= -Date: Sat, 21 Dec 2013 11:22:37 +0100 -Subject: [PATCH] fstab-generator: Do not try to fsck non-devices - -This fixes a regression introduced in 64e70e4 where the mount fails -when fstab is misconfigured with fs_passno > 0 on a virtual file -system like nfs, and the type is specified as "auto". ---- - src/fstab-generator/fstab-generator.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 4137796..8c4c61c 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -153,6 +153,11 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty - if (passno == 0) - return 0; - -+ if (!is_device_path(what)) { -+ log_warning("Checking was requested for \"%s\", but it is not a device.", what); -+ return 0; -+ } -+ - if (type && !streq(type, "auto")) { - int r; - const char *checker; diff --git a/0190-logind-remove-dead-variable.patch b/0190-logind-remove-dead-variable.patch deleted file mode 100644 index 59b0a63..0000000 --- a/0190-logind-remove-dead-variable.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 45e44dd49cafc1befdc1fb6d948071520335964a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 19 Dec 2013 14:16:46 -0500 -Subject: [PATCH] logind: remove dead variable - -Noticed-by: Jan Alexander Steffens ---- - src/login/logind-user.c | 3 --- - src/login/logind-user.h | 1 - - 2 files changed, 4 deletions(-) - -diff --git a/src/login/logind-user.c b/src/login/logind-user.c -index e2fce5c..b87311c 100644 ---- a/src/login/logind-user.c -+++ b/src/login/logind-user.c -@@ -648,9 +648,6 @@ UserState user_get_state(User *u) { - - assert(u); - -- if (u->closing) -- return USER_CLOSING; -- - if (u->slice_job || u->service_job) - return USER_OPENING; - -diff --git a/src/login/logind-user.h b/src/login/logind-user.h -index b9171d3..a36f456 100644 ---- a/src/login/logind-user.h -+++ b/src/login/logind-user.h -@@ -61,7 +61,6 @@ struct User { - - bool in_gc_queue:1; - bool started:1; -- bool closing:1; - - LIST_HEAD(Session, sessions); - LIST_FIELDS(User, gc_queue); diff --git a/0191-hwdb-update.patch b/0191-hwdb-update.patch deleted file mode 100644 index 7359702..0000000 --- a/0191-hwdb-update.patch +++ /dev/null @@ -1,4917 +0,0 @@ -From 59f89c783a3dd29bc024be457dfd7ad664d55358 Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Sun, 22 Dec 2013 11:32:11 -0800 -Subject: [PATCH] hwdb: update - -Conflicts: - hwdb/20-sdio-vendor-model.hwdb ---- - hwdb/20-OUI.hwdb | 1174 ++++++++++++++++++++++++++++++++++++++++- - hwdb/20-pci-vendor-model.hwdb | 689 ++++++++++++++++++++++-- - hwdb/20-usb-vendor-model.hwdb | 112 +++- - 3 files changed, 1922 insertions(+), 53 deletions(-) - -diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb -index 5067167..92b96ae 100644 ---- a/hwdb/20-OUI.hwdb -+++ b/hwdb/20-OUI.hwdb -@@ -13411,6 +13411,222 @@ OUI:40D855198* - OUI:40D855199* - ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH - -+OUI:40D85519A* -+ ID_OUI_FROM_DATABASE=Rohde&Schwarz Topex SA -+ -+OUI:40D85519B* -+ ID_OUI_FROM_DATABASE=Northern Star Technologies -+ -+OUI:40D85519C* -+ ID_OUI_FROM_DATABASE=Parris Service Corporation -+ -+OUI:40D85519D* -+ ID_OUI_FROM_DATABASE=EMAC, Inc. -+ -+OUI:40D85519E* -+ ID_OUI_FROM_DATABASE=Thirdwayv Inc. -+ -+OUI:40D85519F* -+ ID_OUI_FROM_DATABASE=Patria Aviation Oy -+ -+OUI:40D8551A0* -+ ID_OUI_FROM_DATABASE=Futaba Corporation -+ -+OUI:40D8551A1* -+ ID_OUI_FROM_DATABASE=KRONOTECH SRL -+ -+OUI:40D8551A2* -+ ID_OUI_FROM_DATABASE=HIPODROMO DE AGUA CALIENTE, S.A. DE C.V. -+ -+OUI:40D8551A3* -+ ID_OUI_FROM_DATABASE=Noritake Itron Corporation -+ -+OUI:40D8551A4* -+ ID_OUI_FROM_DATABASE=cibite AG -+ -+OUI:40D8551A5* -+ ID_OUI_FROM_DATABASE=DemoPad -+ -+OUI:40D8551A6* -+ ID_OUI_FROM_DATABASE=RB-LINK Wireless -+ -+OUI:40D8551A7* -+ ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic CO., LTD -+ -+OUI:40D8551A8* -+ ID_OUI_FROM_DATABASE=Multiobrabotka -+ -+OUI:40D8551A9* -+ ID_OUI_FROM_DATABASE=Lubino s.r.o. -+ -+OUI:40D8551AA* -+ ID_OUI_FROM_DATABASE=Broachlink Technology Co.,Limited -+ -+OUI:40D8551AB* -+ ID_OUI_FROM_DATABASE=Rosslare Enterprises Limited -+ -+OUI:40D8551AC* -+ ID_OUI_FROM_DATABASE=ELAN SYSTEMS -+ -+OUI:40D8551AD* -+ ID_OUI_FROM_DATABASE=WICHER DIGITAL TECHNIK -+ -+OUI:40D8551AE* -+ ID_OUI_FROM_DATABASE=Autonomous Solutions, Inc -+ -+OUI:40D8551AF* -+ ID_OUI_FROM_DATABASE=Vigitron Inc. -+ -+OUI:40D8551B0* -+ ID_OUI_FROM_DATABASE=Shin-ei Electronic Measuring Co.,Ltd. -+ -+OUI:40D8551B1* -+ ID_OUI_FROM_DATABASE=Logos 01 S.r.l. -+ -+OUI:40D8551B2* -+ ID_OUI_FROM_DATABASE=AGE A. Gilg Elektronik -+ -+OUI:40D8551B3* -+ ID_OUI_FROM_DATABASE=BETTINI SRL -+ -+OUI:40D8551B4* -+ ID_OUI_FROM_DATABASE=Inforce Computing Inc. -+ -+OUI:40D8551B5* -+ ID_OUI_FROM_DATABASE=A+EC Klein Ingenieurbuero -+ -+OUI:40D8551B6* -+ ID_OUI_FROM_DATABASE=Magic Systems -+ -+OUI:40D8551B7* -+ ID_OUI_FROM_DATABASE=TEWS Elektronik GmbH & Co. KG -+ -+OUI:40D8551B8* -+ ID_OUI_FROM_DATABASE=Orion Systems, Inc -+ -+OUI:40D8551B9* -+ ID_OUI_FROM_DATABASE=Beking Industrieele automatisering -+ -+OUI:40D8551BA* -+ ID_OUI_FROM_DATABASE=Creative Lighting And Sound Systems Pty Ltd -+ -+OUI:40D8551BB* -+ ID_OUI_FROM_DATABASE=Micromega Dynamics SA -+ -+OUI:40D8551BC* -+ ID_OUI_FROM_DATABASE=KbDevice,Inc. -+ -+OUI:40D8551BD* -+ ID_OUI_FROM_DATABASE=HORIBA ABX -+ -+OUI:40D8551BE* -+ ID_OUI_FROM_DATABASE=PEEK TRAFFIC -+ -+OUI:40D8551BF* -+ ID_OUI_FROM_DATABASE=shanghai mingding information tech co.Ltd -+ -+OUI:40D8551C0* -+ ID_OUI_FROM_DATABASE=NPB Automation AB -+ -+OUI:40D8551C1* -+ ID_OUI_FROM_DATABASE=Triamec Motion AG -+ -+OUI:40D8551C2* -+ ID_OUI_FROM_DATABASE=Digital Display Systems -+ -+OUI:40D8551C3* -+ ID_OUI_FROM_DATABASE=Cornfed Systems LLC -+ -+OUI:40D8551C4* -+ ID_OUI_FROM_DATABASE=QED Advanced Systems Limited -+ -+OUI:40D8551C6* -+ ID_OUI_FROM_DATABASE=Device Solutions Ltd -+ -+OUI:40D8551C7* -+ ID_OUI_FROM_DATABASE=Wexiödisk AB -+ -+OUI:40D8551C8* -+ ID_OUI_FROM_DATABASE=Sensata Technologies -+ -+OUI:40D8551C9* -+ ID_OUI_FROM_DATABASE=Andy-L Ltd. -+ -+OUI:40D8551CA* -+ ID_OUI_FROM_DATABASE=Rigel Engineering -+ -+OUI:40D8551CB* -+ ID_OUI_FROM_DATABASE=MG S.r.l. -+ -+OUI:40D8551CD* -+ ID_OUI_FROM_DATABASE=YXLON International A/S -+ -+OUI:40D8551CE* -+ ID_OUI_FROM_DATABASE=Peter Huber -+ -+OUI:40D8551CF* -+ ID_OUI_FROM_DATABASE=Omnik New Energy Co., Ltd -+ -+OUI:40D8551D0* -+ ID_OUI_FROM_DATABASE=Webeasy BV -+ -+OUI:40D8551D1* -+ ID_OUI_FROM_DATABASE=Founder Broadband Network Service Co.,Ltd. -+ -+OUI:40D8551D2* -+ ID_OUI_FROM_DATABASE=InventLab s.c. -+ -+OUI:40D8551D3* -+ ID_OUI_FROM_DATABASE=Kaluga Teletypes Manufacturing Plant -+ -+OUI:40D8551D4* -+ ID_OUI_FROM_DATABASE=Prisma Engineering srl -+ -+OUI:40D8551D5* -+ ID_OUI_FROM_DATABASE=FST21 Ltd. -+ -+OUI:40D8551D6* -+ ID_OUI_FROM_DATABASE=EMS Computers Pty Ltd -+ -+OUI:40D8551D7* -+ ID_OUI_FROM_DATABASE=Wheatstone Corporation -+ -+OUI:40D8551D8* -+ ID_OUI_FROM_DATABASE=Owl Computing Technologies, Inc. -+ -+OUI:40D8551D9* -+ ID_OUI_FROM_DATABASE=Commercial Wireless Systems International LLC. -+ -+OUI:40D8551DA* -+ ID_OUI_FROM_DATABASE=Energy Technology and Control Ltd. -+ -+OUI:40D8551DB* -+ ID_OUI_FROM_DATABASE=NIPPON TECHNO LAB.,INC, -+ -+OUI:40D8551DC* -+ ID_OUI_FROM_DATABASE=Aplex Technology Inc. -+ -+OUI:40D8551DD* -+ ID_OUI_FROM_DATABASE=BaOpt Benelux bv -+ -+OUI:40D8551DE* -+ ID_OUI_FROM_DATABASE=Vidisys GmbH -+ -+OUI:40D8551DF* -+ ID_OUI_FROM_DATABASE=Chengdu Meihuan Technology Co.,Ltd -+ -+OUI:40D8551E0* -+ ID_OUI_FROM_DATABASE=Embedded Technology Corporation -+ -+OUI:40D8551E1* -+ ID_OUI_FROM_DATABASE=AD QUALITE -+ -+OUI:40D8551E2* -+ ID_OUI_FROM_DATABASE=ELNEC s.r.o. -+ -+OUI:40D8551E3* -+ ID_OUI_FROM_DATABASE=Mega Electronics Ltd -+ - OUI:000000* - ID_OUI_FROM_DATABASE=XEROX CORPORATION - -@@ -13664,7 +13880,7 @@ OUI:000053* - ID_OUI_FROM_DATABASE=COMPUCORP - - OUI:000054* -- ID_OUI_FROM_DATABASE=MODICON, INC. -+ ID_OUI_FROM_DATABASE=Schnieder Electric - - OUI:000055* - ID_OUI_FROM_DATABASE=COMMISSARIAT A L`ENERGIE ATOM. -@@ -13694,7 +13910,7 @@ OUI:00005D* - ID_OUI_FROM_DATABASE=CS TELECOM - - OUI:00005E* -- ID_OUI_FROM_DATABASE=USC INFORMATION SCIENCES INST -+ ID_OUI_FROM_DATABASE=ICANN, IANA Department - - OUI:00005F* - ID_OUI_FROM_DATABASE=SUMITOMO ELECTRIC IND., LTD. -@@ -17957,7 +18173,7 @@ OUI:0005ED* - ID_OUI_FROM_DATABASE=Technikum Joanneum GmbH - - OUI:0005EE* -- ID_OUI_FROM_DATABASE=BEWATOR Group -+ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR - - OUI:0005EF* - ID_OUI_FROM_DATABASE=ADOIR Digital Technology -@@ -19412,7 +19628,7 @@ OUI:0007D2* - ID_OUI_FROM_DATABASE=Logopak Systeme GmbH & Co. KG - - OUI:0007D3* -- ID_OUI_FROM_DATABASE=Stork Prints B.V. -+ ID_OUI_FROM_DATABASE=SPGPrints B.V. - - OUI:0007D4* - ID_OUI_FROM_DATABASE=Zhejiang Yutong Network Communication Co Ltd. -@@ -19613,7 +19829,7 @@ OUI:000815* - ID_OUI_FROM_DATABASE=CATS Co., Ltd. - - OUI:000816* -- ID_OUI_FROM_DATABASE=Bluetags A/S -+ ID_OUI_FROM_DATABASE=Bluelon ApS - - OUI:000817* - ID_OUI_FROM_DATABASE=EmergeCore Networks LLC -@@ -29819,7 +30035,7 @@ OUI:001587* - ID_OUI_FROM_DATABASE=Takenaka Seisakusho Co.,Ltd - - OUI:001588* -- ID_OUI_FROM_DATABASE=Balda Solution Malaysia Sdn Bhd -+ ID_OUI_FROM_DATABASE=Salutica Allied Solutions Sdn Bhd - - OUI:001589* - ID_OUI_FROM_DATABASE=D-MAX Technology Co.,Ltd -@@ -33935,7 +34151,7 @@ OUI:001AE7* - ID_OUI_FROM_DATABASE=Aztek Networks, Inc. - - OUI:001AE8* -- ID_OUI_FROM_DATABASE=Siemens Enterprise Communications GmbH & Co. KG -+ ID_OUI_FROM_DATABASE=Unify GmbH and Co KG - - OUI:001AE9* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. -@@ -36926,7 +37142,7 @@ OUI:001ECC* - ID_OUI_FROM_DATABASE=2Wire, Inc. - - OUI:001ECD* -- ID_OUI_FROM_DATABASE=2Wire, Inc. -+ ID_OUI_FROM_DATABASE=KYLAND Technology Co. LTD - - OUI:001ECE* - ID_OUI_FROM_DATABASE=2Wire, Inc. -@@ -40337,7 +40553,7 @@ OUI:002340* - ID_OUI_FROM_DATABASE=MiX Telematics - - OUI:002341* -- ID_OUI_FROM_DATABASE=Siemens AG, Infrastructure & Cities Sector, Building Technologies Division -+ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR - - OUI:002342* - ID_OUI_FROM_DATABASE=Coffee Equipment Company -@@ -42200,7 +42416,7 @@ OUI:0025B8* - ID_OUI_FROM_DATABASE=Agile Communications, Inc. - - OUI:0025B9* -- ID_OUI_FROM_DATABASE=Agilink Systems Corp. -+ ID_OUI_FROM_DATABASE=Cypress Solutions Inc - - OUI:0025BA* - ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD -@@ -44405,7 +44621,7 @@ OUI:004065* - ID_OUI_FROM_DATABASE=GTE SPACENET - - OUI:004066* -- ID_OUI_FROM_DATABASE=HITACHI CABLE, LTD. -+ ID_OUI_FROM_DATABASE=Hitachi Metals, Ltd. - - OUI:004067* - ID_OUI_FROM_DATABASE=OMNIBYTE CORPORATION -@@ -46100,7 +46316,7 @@ OUI:0060A3* - ID_OUI_FROM_DATABASE=CONTINUUM TECHNOLOGY CORP. - - OUI:0060A4* -- ID_OUI_FROM_DATABASE=GRINAKER SYSTEM TECHNOLOGIES -+ ID_OUI_FROM_DATABASE=GEW Technologies (PTY)Ltd - - OUI:0060A5* - ID_OUI_FROM_DATABASE=PERFORMANCE TELECOM CORP. -@@ -46904,7 +47120,7 @@ OUI:0080A1* - ID_OUI_FROM_DATABASE=MICROTEST, INC. - - OUI:0080A2* -- ID_OUI_FROM_DATABASE=Tattile SRL -+ ID_OUI_FROM_DATABASE=CREATIVE ELECTRONIC SYSTEMS - - OUI:0080A3* - ID_OUI_FROM_DATABASE=Lantronix -@@ -47188,6 +47404,9 @@ OUI:0080FF* - OUI:008865* - ID_OUI_FROM_DATABASE=Apple - -+OUI:008B43* -+ ID_OUI_FROM_DATABASE=RFTECH -+ - OUI:008C10* - ID_OUI_FROM_DATABASE=Black Box Corp. - -@@ -47980,6 +48199,9 @@ OUI:0091D6* - OUI:0091FA* - ID_OUI_FROM_DATABASE=Synapse Product Development - -+OUI:0092FA* -+ ID_OUI_FROM_DATABASE=SHENZHEN WISKY TECHNOLOGY CO.,LTD -+ - OUI:009363* - ID_OUI_FROM_DATABASE=Uni-Link Technology Co., Ltd. - -@@ -51340,6 +51562,9 @@ OUI:00E8AB* - OUI:00EB2D* - ID_OUI_FROM_DATABASE=Sony Mobile Communications AB - -+OUI:00EEBD* -+ ID_OUI_FROM_DATABASE=HTC Corporation -+ - OUI:00F051* - ID_OUI_FROM_DATABASE=KWB Gmbh - -@@ -51481,6 +51706,9 @@ OUI:044BFF* - OUI:044CEF* - ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd - -+OUI:044E06* -+ ID_OUI_FROM_DATABASE=Ericsson AB -+ - OUI:044F8B* - ID_OUI_FROM_DATABASE=Adapteva, Inc. - -@@ -51628,6 +51856,9 @@ OUI:04DAD2* - OUI:04DB56* - ID_OUI_FROM_DATABASE=Apple, Inc. - -+OUI:04DB8A* -+ ID_OUI_FROM_DATABASE=Suntech International Ltd. -+ - OUI:04DD4C* - ID_OUI_FROM_DATABASE=Velocytech - -@@ -51664,6 +51895,9 @@ OUI:04EE91* - OUI:04F021* - ID_OUI_FROM_DATABASE=Compex Systems Pte Ltd - -+OUI:04F13E* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:04F17D* - ID_OUI_FROM_DATABASE=Tarana Wireless - -@@ -52117,6 +52351,12 @@ OUI:08008F* - OUI:080090* - ID_OUI_FROM_DATABASE=SONOMA SYSTEMS - -+OUI:080371* -+ ID_OUI_FROM_DATABASE=KRG CORPORATE -+ -+OUI:0805CD* -+ ID_OUI_FROM_DATABASE=DongGuang EnMai Electronic Product Co.Ltd. -+ - OUI:0808C2* - ID_OUI_FROM_DATABASE=Samsung Electronics - -@@ -52204,12 +52444,21 @@ OUI:083E0C* - OUI:083E8E* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd - -+OUI:083F3E* -+ ID_OUI_FROM_DATABASE=WSH GmbH -+ -+OUI:083F76* -+ ID_OUI_FROM_DATABASE=Intellian Technologies, Inc. -+ - OUI:084027* - ID_OUI_FROM_DATABASE=Gridstore Inc. - - OUI:08482C* - ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD. - -+OUI:084929* -+ ID_OUI_FROM_DATABASE=CYBATI -+ - OUI:084E1C* - ID_OUI_FROM_DATABASE=H2A Systems, LLC - -@@ -52222,6 +52471,9 @@ OUI:08512E* - OUI:085240* - ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH - -+OUI:085700* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:085AE0* - ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd. - -@@ -52240,6 +52492,9 @@ OUI:0868D0* - OUI:0868EA* - ID_OUI_FROM_DATABASE=EITO ELECTRONICS CO., LTD. - -+OUI:086DF2* -+ ID_OUI_FROM_DATABASE=Shenzhen MIMOWAVE Technology Co.,Ltd -+ - OUI:087045* - ID_OUI_FROM_DATABASE=Apple - -@@ -52450,6 +52705,9 @@ OUI:0C3956* - OUI:0C3C65* - ID_OUI_FROM_DATABASE=Dome Imaging Inc - -+OUI:0C3E9F* -+ ID_OUI_FROM_DATABASE=Apple, Inc -+ - OUI:0C469D* - ID_OUI_FROM_DATABASE=MS Sedco - -@@ -52462,6 +52720,9 @@ OUI:0C4C39* - OUI:0C4DE9* - ID_OUI_FROM_DATABASE=Apple - -+OUI:0C4F5A* -+ ID_OUI_FROM_DATABASE=ASA-RT s.r.l. -+ - OUI:0C51F7* - ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX - -@@ -52597,6 +52858,9 @@ OUI:0CC0C0* - OUI:0CC3A7* - ID_OUI_FROM_DATABASE=Meritec - -+OUI:0CC47A* -+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc. -+ - OUI:0CC47E* - ID_OUI_FROM_DATABASE=EUCAST Co., Ltd. - -@@ -52657,6 +52921,9 @@ OUI:0CDDEF* - OUI:0CDFA4* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:0CE0E4* -+ ID_OUI_FROM_DATABASE=Plantronics, Inc -+ - OUI:0CE5D3* - ID_OUI_FROM_DATABASE=DH electronics GmbH - -@@ -52765,6 +53032,9 @@ OUI:101F74* - OUI:102279* - ID_OUI_FROM_DATABASE=ZeroDesktop, Inc. - -+OUI:1027BE* -+ ID_OUI_FROM_DATABASE=TVIP -+ - OUI:102831* - ID_OUI_FROM_DATABASE=Morion Inc. - -@@ -52954,6 +53224,12 @@ OUI:10D542* - OUI:10DDB1* - ID_OUI_FROM_DATABASE=Apple - -+OUI:10DDF4* -+ ID_OUI_FROM_DATABASE=Maxway Electronics CO.,LTD -+ -+OUI:10DEE4* -+ ID_OUI_FROM_DATABASE=automationNEXT GmbH -+ - OUI:10E2D5* - ID_OUI_FROM_DATABASE=Qi Hardware Inc. - -@@ -53155,6 +53431,12 @@ OUI:14B1C8* - OUI:14B73D* - ID_OUI_FROM_DATABASE=ARCHEAN Technologies - -+OUI:14B968* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ -+OUI:14C089* -+ ID_OUI_FROM_DATABASE=DUNE HD LTD -+ - OUI:14C21D* - ID_OUI_FROM_DATABASE=Sabtech Industries - -@@ -53275,6 +53557,9 @@ OUI:182012* - OUI:182032* - ID_OUI_FROM_DATABASE=Apple - -+OUI:1820A6* -+ ID_OUI_FROM_DATABASE=Sage Co., Ltd. -+ - OUI:182666* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -53386,6 +53671,9 @@ OUI:1880CE* - OUI:1880F5* - ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd - -+OUI:188331* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:188410* - ID_OUI_FROM_DATABASE=CoreTrust Inc. - -@@ -53401,6 +53689,9 @@ OUI:188796* - OUI:188857* - ID_OUI_FROM_DATABASE=Beijing Jinhong Xi-Dian Information Technology Corp. - -+OUI:1889DF* -+ ID_OUI_FROM_DATABASE=CerebrEX Inc. -+ - OUI:188ED5* - ID_OUI_FROM_DATABASE=TP Vision Belgium N.V. - innovation site Brugge - -@@ -53491,6 +53782,9 @@ OUI:18E288* - OUI:18E2C2* - ID_OUI_FROM_DATABASE=Samsung Electronics - -+OUI:18E728* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:18E7F4* - ID_OUI_FROM_DATABASE=Apple - -@@ -53521,6 +53815,9 @@ OUI:18FC9F* - OUI:18FE34* - ID_OUI_FROM_DATABASE=Espressif Inc. - -+OUI:18FF2E* -+ ID_OUI_FROM_DATABASE=Shenzhen Rui Ying Da Technology Co., Ltd -+ - OUI:1C0656* - ID_OUI_FROM_DATABASE=IDY Corporation - -@@ -53551,6 +53848,9 @@ OUI:1C184A* - OUI:1C19DE* - ID_OUI_FROM_DATABASE=eyevis GmbH - -+OUI:1C1B68* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:1C1D67* - ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd - -@@ -53707,6 +54007,9 @@ OUI:1CA770* - OUI:1CAA07* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:1CAB01* -+ ID_OUI_FROM_DATABASE=Innovolt -+ - OUI:1CABA7* - ID_OUI_FROM_DATABASE=Apple - -@@ -53770,6 +54073,9 @@ OUI:1CE62B* - OUI:1CE6C7* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:1CEEE8* -+ ID_OUI_FROM_DATABASE=Ilshin Elecom -+ - OUI:1CF061* - ID_OUI_FROM_DATABASE=SCAPS GmbH - -@@ -53779,6 +54085,9 @@ OUI:1CF5E7* - OUI:1CFA68* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -+OUI:1CFCBB* -+ ID_OUI_FROM_DATABASE=Realfiction ApS -+ - OUI:1CFEA7* - ID_OUI_FROM_DATABASE=IDentytech Solutins Ltd. - -@@ -53794,12 +54103,21 @@ OUI:200505* - OUI:2005E8* - ID_OUI_FROM_DATABASE=OOO InProMedia - -+OUI:2008ED* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:200A5E* - ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing co.,LTD - - OUI:200BC7* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:200CC8* -+ ID_OUI_FROM_DATABASE=NETGEAR INC., -+ -+OUI:200E95* -+ ID_OUI_FROM_DATABASE=IEC – TC9 WG43 -+ - OUI:20107A* - ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. - -@@ -53917,6 +54235,9 @@ OUI:207D74* - OUI:20858C* - ID_OUI_FROM_DATABASE=Assa - -+OUI:2087AC* -+ ID_OUI_FROM_DATABASE=AES motomation -+ - OUI:208984* - ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD - -@@ -54022,6 +54343,9 @@ OUI:20E564* - OUI:20E791* - ID_OUI_FROM_DATABASE=Siemens Healthcare Diagnostics, Inc - -+OUI:20EAC7* -+ ID_OUI_FROM_DATABASE=SHENZHEN RIOPINE ELECTRONICS CO., LTD -+ - OUI:20EEC6* - ID_OUI_FROM_DATABASE=Elefirst Science & Tech Co ., ltd - -@@ -54070,6 +54394,9 @@ OUI:241064* - OUI:241125* - ID_OUI_FROM_DATABASE=Hutek Co., Ltd. - -+OUI:241148* -+ ID_OUI_FROM_DATABASE=Entropix, LLC -+ - OUI:2411D0* - ID_OUI_FROM_DATABASE=Chongqing Ehs Science and Technology Development Co.,Ltd. - -@@ -54085,6 +54412,9 @@ OUI:241F2C* - OUI:2421AB* - ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications - -+OUI:242642* -+ ID_OUI_FROM_DATABASE=SHARP Corporation. -+ - OUI:242FFA* - ID_OUI_FROM_DATABASE=Toshiba Global Commerce Solutions - -@@ -54328,6 +54658,9 @@ OUI:281878* - OUI:2818FD* - ID_OUI_FROM_DATABASE=Aditya Infotech Ltd. - -+OUI:282246* -+ ID_OUI_FROM_DATABASE=Beijing Sinoix Communication Co., LTD -+ - OUI:2826A6* - ID_OUI_FROM_DATABASE=PBR electronics GmbH - -@@ -54397,6 +54730,12 @@ OUI:286046* - OUI:286094* - ID_OUI_FROM_DATABASE=CAPELEC - -+OUI:286336* -+ ID_OUI_FROM_DATABASE=Siemens AG - Industrial Automation - EWA -+ -+OUI:28656B* -+ ID_OUI_FROM_DATABASE=Keystone Microtech Corporation -+ - OUI:286AB8* - ID_OUI_FROM_DATABASE=Apple - -@@ -54451,6 +54790,9 @@ OUI:28987B* - OUI:289A4B* - ID_OUI_FROM_DATABASE=SteelSeries ApS - -+OUI:289AFA* -+ ID_OUI_FROM_DATABASE=TCT Mobile Limited -+ - OUI:289EDF* - ID_OUI_FROM_DATABASE=Danfoss Turbocor Compressors, Inc - -@@ -54487,6 +54829,9 @@ OUI:28BA18* - OUI:28BAB5* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:28BB59* -+ ID_OUI_FROM_DATABASE=RNET Technologies, Inc. -+ - OUI:28BE9B* - ID_OUI_FROM_DATABASE=Technicolor USA Inc. - -@@ -54502,6 +54847,9 @@ OUI:28C68E* - OUI:28C718* - ID_OUI_FROM_DATABASE=Altierre - -+OUI:28C825* -+ ID_OUI_FROM_DATABASE=DellKing Industrial Co., Ltd -+ - OUI:28C914* - ID_OUI_FROM_DATABASE=Taimag Corporation - -@@ -54547,6 +54895,9 @@ OUI:28D997* - OUI:28DB81* - ID_OUI_FROM_DATABASE=Shanghai Guao Electronic Technology Co., Ltd - -+OUI:28DEF6* -+ ID_OUI_FROM_DATABASE=bioMerieux Inc. -+ - OUI:28E02C* - ID_OUI_FROM_DATABASE=Apple - -@@ -54598,6 +54949,9 @@ OUI:2C00F7* - OUI:2C0623* - ID_OUI_FROM_DATABASE=Win Leader Inc. - -+OUI:2C073C* -+ ID_OUI_FROM_DATABASE=DEVLINE LIMITED -+ - OUI:2C10C1* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -@@ -54655,6 +55009,9 @@ OUI:2C3A28* - OUI:2C3BFD* - ID_OUI_FROM_DATABASE=Netstor Technology Co., Ltd. - -+OUI:2C3ECF* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:2C3F38* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -@@ -54673,6 +55030,9 @@ OUI:2C441B* - OUI:2C44FD* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:2C534A* -+ ID_OUI_FROM_DATABASE=Shenzhen Winyao Electronic Limited -+ - OUI:2C542D* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -@@ -54748,6 +55108,9 @@ OUI:2C922C* - OUI:2C9464* - ID_OUI_FROM_DATABASE=Cincoze Co., Ltd. - -+OUI:2C957F* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:2C9717* - ID_OUI_FROM_DATABASE=I.C.Y. B.V. - -@@ -55009,6 +55372,9 @@ OUI:3092F6* - OUI:309BAD* - ID_OUI_FROM_DATABASE=BBK Electronics Corp., Ltd., - -+OUI:30A8DB* -+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -+ - OUI:30AABD* - ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology Co.,Ltd - -@@ -55024,6 +55390,12 @@ OUI:30B216* - OUI:30B3A2* - ID_OUI_FROM_DATABASE=Shenzhen Heguang Measurement & Control Technology Co.,Ltd - -+OUI:30B5C2* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ -+OUI:30C750* -+ ID_OUI_FROM_DATABASE=MIC Technology Group -+ - OUI:30C82A* - ID_OUI_FROM_DATABASE=Wi-Next s.r.l. - -@@ -55060,6 +55432,9 @@ OUI:30F31D* - OUI:30F33A* - ID_OUI_FROM_DATABASE=+plugg srl - -+OUI:30F42F* -+ ID_OUI_FROM_DATABASE=ESP -+ - OUI:30F70D* - ID_OUI_FROM_DATABASE=Cisco Systems - -@@ -55087,6 +55462,9 @@ OUI:3413E8* - OUI:34159E* - ID_OUI_FROM_DATABASE=Apple - -+OUI:3417EB* -+ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test -+ - OUI:341A4C* - ID_OUI_FROM_DATABASE=SHENZHEN WEIBU ELECTRONICS CO.,LTD. - -@@ -55117,6 +55495,9 @@ OUI:343111* - OUI:3440B5* - ID_OUI_FROM_DATABASE=IBM - -+OUI:34466F* -+ ID_OUI_FROM_DATABASE=HiTEM Engineering -+ - OUI:344B3D* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - -@@ -55126,6 +55507,9 @@ OUI:344B50* - OUI:344F3F* - ID_OUI_FROM_DATABASE=IO-Power Technology Co., Ltd. - -+OUI:344F5C* -+ ID_OUI_FROM_DATABASE=R&M AG -+ - OUI:344F69* - ID_OUI_FROM_DATABASE=EKINOPS SAS - -@@ -55318,6 +55702,12 @@ OUI:34D7B4* - OUI:34DBFD* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:34DE1A* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ -+OUI:34DE34* -+ ID_OUI_FROM_DATABASE=zte corporation -+ - OUI:34DF2A* - ID_OUI_FROM_DATABASE=Fujikon Industrial Co.,Limited - -@@ -55456,6 +55846,9 @@ OUI:386793* - OUI:386BBB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:386C9B* -+ ID_OUI_FROM_DATABASE=Ivy Biomedical -+ - OUI:386E21* - ID_OUI_FROM_DATABASE=Wasion Group Ltd. - -@@ -55576,9 +55969,15 @@ OUI:38ECE4* - OUI:38EE9D* - ID_OUI_FROM_DATABASE=Anedo Ltd. - -+OUI:38F098* -+ ID_OUI_FROM_DATABASE=Vapor Stone Rail Systems -+ - OUI:38F597* - ID_OUI_FROM_DATABASE=home2net GmbH - -+OUI:38F708* -+ ID_OUI_FROM_DATABASE=National Resource Management, Inc. -+ - OUI:38F8B7* - ID_OUI_FROM_DATABASE=V2COM PARTICIPACOES S.A. - -@@ -55603,9 +56002,15 @@ OUI:3C0771* - OUI:3C081E* - ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd - -+OUI:3C08F6* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:3C096D* - ID_OUI_FROM_DATABASE=Powerhouse Dynamics - -+OUI:3C0C48* -+ ID_OUI_FROM_DATABASE=Servergy, Inc. -+ - OUI:3C0E23* - ID_OUI_FROM_DATABASE=Cisco - -@@ -55639,6 +56044,9 @@ OUI:3C1A79* - OUI:3C1CBE* - ID_OUI_FROM_DATABASE=JADAK LLC - -+OUI:3C25D7* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:3C26D5* - ID_OUI_FROM_DATABASE=Sotera Wireless - -@@ -55744,6 +56152,9 @@ OUI:3C83B5* - OUI:3C86A8* - ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD - -+OUI:3C89A6* -+ ID_OUI_FROM_DATABASE=KAPELSE -+ - OUI:3C8AB0* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -55837,6 +56248,9 @@ OUI:3CD92B* - OUI:3CDF1E* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:3CDFBD* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:3CE072* - ID_OUI_FROM_DATABASE=Apple - -@@ -55870,6 +56284,9 @@ OUI:3CF748* - OUI:3CFB96* - ID_OUI_FROM_DATABASE=Emcraft Systems LLC - -+OUI:400107* -+ ID_OUI_FROM_DATABASE=Arista Corp -+ - OUI:4001C6* - ID_OUI_FROM_DATABASE=3COM EUROPE LTD - -@@ -55948,6 +56365,9 @@ OUI:40406B* - OUI:404A03* - ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation - -+OUI:404A18* -+ ID_OUI_FROM_DATABASE=Addrek Smart Solutions -+ - OUI:404D8E* - ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd - -@@ -56011,6 +56431,9 @@ OUI:407074* - OUI:407496* - ID_OUI_FROM_DATABASE=aFUN TECHNOLOGY INC. - -+OUI:407875* -+ ID_OUI_FROM_DATABASE=IMBEL - Industria de Material Belico do Brasil -+ - OUI:407A80* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -56059,6 +56482,9 @@ OUI:40A6A4* - OUI:40A6D9* - ID_OUI_FROM_DATABASE=Apple - -+OUI:40A8F0* -+ ID_OUI_FROM_DATABASE=Hewlett Packard -+ - OUI:40AC8D* - ID_OUI_FROM_DATABASE=Data Management, Inc. - -@@ -56164,6 +56590,9 @@ OUI:4403A7* - OUI:440CFD* - ID_OUI_FROM_DATABASE=NetMan Co., Ltd. - -+OUI:4411C2* -+ ID_OUI_FROM_DATABASE=Telegartner Karl Gartner GmbH -+ - OUI:441319* - ID_OUI_FROM_DATABASE=WKK TECHNOLOGY LTD. - -@@ -56182,6 +56611,9 @@ OUI:4423AA* - OUI:4425BB* - ID_OUI_FROM_DATABASE=Bamboo Entertainment Corporation - -+OUI:442938* -+ ID_OUI_FROM_DATABASE=NietZsche enterprise Co.Ltd. -+ - OUI:442A60* - ID_OUI_FROM_DATABASE=Apple - -@@ -56230,6 +56662,9 @@ OUI:443D21* - OUI:443EB2* - ID_OUI_FROM_DATABASE=DEOTRON Co., LTD. - -+OUI:444891* -+ ID_OUI_FROM_DATABASE=HDMI Licensing, LLC -+ - OUI:444A65* - ID_OUI_FROM_DATABASE=Silverflare Ltd. - -@@ -56287,6 +56722,9 @@ OUI:446D57* - OUI:44700B* - ID_OUI_FROM_DATABASE=IFFU - -+OUI:447098* -+ ID_OUI_FROM_DATABASE=MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED -+ - OUI:447BC4* - ID_OUI_FROM_DATABASE=DualShine Technology(SZ)Co.,Ltd - -@@ -56296,6 +56734,9 @@ OUI:447C7F* - OUI:447DA5* - ID_OUI_FROM_DATABASE=VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD - -+OUI:447E76* -+ ID_OUI_FROM_DATABASE=Trek Technology (S) Pte Ltd -+ - OUI:447E95* - ID_OUI_FROM_DATABASE=Alpha and Omega, Inc - -@@ -56365,6 +56806,9 @@ OUI:44C15C* - OUI:44C233* - ID_OUI_FROM_DATABASE=Guangzhou Comet Technology Development Co.Ltd - -+OUI:44C306* -+ ID_OUI_FROM_DATABASE=SIFROM Inc. -+ - OUI:44C39B* - ID_OUI_FROM_DATABASE=OOO RUBEZH NPO - -@@ -56443,6 +56887,9 @@ OUI:4813F3* - OUI:48174C* - ID_OUI_FROM_DATABASE=MicroPower technologies - -+OUI:481842* -+ ID_OUI_FROM_DATABASE=Shanghai Winaas Co. Equipment Co. Ltd. -+ - OUI:481BD2* - ID_OUI_FROM_DATABASE=Intron Scientific co., ltd. - -@@ -56458,6 +56905,9 @@ OUI:4833DD* - OUI:48343D* - ID_OUI_FROM_DATABASE=IEP GmbH - -+OUI:483D32* -+ ID_OUI_FROM_DATABASE=Syscor Controls & Automation -+ - OUI:484487* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -56476,6 +56926,9 @@ OUI:485261* - OUI:485A3F* - ID_OUI_FROM_DATABASE=WISOL - -+OUI:485AB6* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -+ - OUI:485B39* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -@@ -56500,6 +56953,9 @@ OUI:486FD2* - OUI:487119* - ID_OUI_FROM_DATABASE=SGB GROUP LTD. - -+OUI:48746E* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:488E42* - ID_OUI_FROM_DATABASE=DIGALOG GmbH - -@@ -56530,6 +56986,9 @@ OUI:48AA5D* - OUI:48B253* - ID_OUI_FROM_DATABASE=Marketaxess Corporation - -+OUI:48B5A7* -+ ID_OUI_FROM_DATABASE=Glory Horse Industries Ltd. -+ - OUI:48B8DE* - ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD. - -@@ -56554,6 +57013,9 @@ OUI:48C8B6* - OUI:48CB6E* - ID_OUI_FROM_DATABASE=Cello Electronics (UK) Ltd - -+OUI:48D0CF* -+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc. -+ - OUI:48D224* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -@@ -56584,6 +57046,12 @@ OUI:48EB30* - OUI:48ED80* - ID_OUI_FROM_DATABASE=daesung eltec - -+OUI:48EE07* -+ ID_OUI_FROM_DATABASE=Silver Palm Technologies LLC -+ -+OUI:48EE86* -+ ID_OUI_FROM_DATABASE=UTStarcom (China) Co.,Ltd -+ - OUI:48F230* - ID_OUI_FROM_DATABASE=Ubizcore Co.,LTD - -@@ -56605,6 +57073,9 @@ OUI:48F925* - OUI:48FCB8* - ID_OUI_FROM_DATABASE=Woodstream Corporation - -+OUI:48FEEA* -+ ID_OUI_FROM_DATABASE=HOMA B.V. -+ - OUI:4C0082* - ID_OUI_FROM_DATABASE=Cisco - -@@ -56626,6 +57097,9 @@ OUI:4C09B4* - OUI:4C0B3A* - ID_OUI_FROM_DATABASE=TCT Mobile Limited - -+OUI:4C0DEE* -+ ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD. -+ - OUI:4C0F6E* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -56746,6 +57220,9 @@ OUI:4C7897* - OUI:4C79BA* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:4C7F62* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:4C804F* - ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp - -@@ -56755,6 +57232,9 @@ OUI:4C8093* - OUI:4C82CF* - ID_OUI_FROM_DATABASE=Echostar Technologies - -+OUI:4C8B30* -+ ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc -+ - OUI:4C8B55* - ID_OUI_FROM_DATABASE=Grupo Digicon - -@@ -56779,6 +57259,9 @@ OUI:4C9E80* - OUI:4C9EE4* - ID_OUI_FROM_DATABASE=Hanyang Navicom Co.,Ltd. - -+OUI:4CA56D* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:4CA74B* - ID_OUI_FROM_DATABASE=Alcatel Lucent - -@@ -56833,6 +57316,9 @@ OUI:4CCC34* - OUI:4CD637* - ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd - -+OUI:4CD7B6* -+ ID_OUI_FROM_DATABASE=Helmer Scientific -+ - OUI:4CD9C4* - ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd - -@@ -56854,6 +57340,9 @@ OUI:4CEDDE* - OUI:4CF02E* - ID_OUI_FROM_DATABASE=Vifa Denmark A/S - -+OUI:4CF45B* -+ ID_OUI_FROM_DATABASE=Blue Clover Devices -+ - OUI:4CF737* - ID_OUI_FROM_DATABASE=SamJi Electronics Co., Ltd - -@@ -56884,6 +57373,9 @@ OUI:5017FF* - OUI:501AC5* - ID_OUI_FROM_DATABASE=Microsoft - -+OUI:501CBF* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:50206B* - ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions - -@@ -56950,6 +57442,9 @@ OUI:504F94* - OUI:505663* - ID_OUI_FROM_DATABASE=Texas Instruments - -+OUI:5056A8* -+ ID_OUI_FROM_DATABASE=Jolla Ltd -+ - OUI:5057A8* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -@@ -56959,6 +57454,9 @@ OUI:505AC6* - OUI:506028* - ID_OUI_FROM_DATABASE=Xirrus Inc. - -+OUI:506184* -+ ID_OUI_FROM_DATABASE=Avaya, Inc -+ - OUI:5061D6* - ID_OUI_FROM_DATABASE=Indu-Sol GmbH - -@@ -57025,6 +57523,9 @@ OUI:509871* - OUI:509F27* - ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd - -+OUI:50A054* -+ ID_OUI_FROM_DATABASE=Actineon -+ - OUI:50A0BF* - ID_OUI_FROM_DATABASE=Alba Fiber Systems Inc. - -@@ -57046,6 +57547,9 @@ OUI:50ABBF* - OUI:50AF73* - ID_OUI_FROM_DATABASE=Shenzhen Bitland Information Technology Co., Ltd. - -+OUI:50B695* -+ ID_OUI_FROM_DATABASE=Micropoint Biotechnologies,Inc. -+ - OUI:50B7C3* - ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD - -@@ -57163,6 +57667,9 @@ OUI:5422F8* - OUI:542696* - ID_OUI_FROM_DATABASE=Apple - -+OUI:54271E* -+ ID_OUI_FROM_DATABASE=AzureWave Technonloies, Inc. -+ - OUI:542A9C* - ID_OUI_FROM_DATABASE=LSY Defense, LLC. - -@@ -57175,6 +57682,9 @@ OUI:542F89* - OUI:543131* - ID_OUI_FROM_DATABASE=Raster Vision Ltd - -+OUI:543530* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -+ - OUI:5435DF* - ID_OUI_FROM_DATABASE=Symeo GmbH - -@@ -57214,6 +57724,9 @@ OUI:545FA9* - OUI:5461EA* - ID_OUI_FROM_DATABASE=Zaplox AB - -+OUI:54724F* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:547398* - ID_OUI_FROM_DATABASE=Toyo Electronics Corporation - -@@ -57274,6 +57787,9 @@ OUI:549D85* - OUI:54A04F* - ID_OUI_FROM_DATABASE=t-mac Technologies Ltd - -+OUI:54A31B* -+ ID_OUI_FROM_DATABASE=Shenzhen Linkworld Technology Co,.LTD -+ - OUI:54A51B* - ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd - -@@ -57286,6 +57802,9 @@ OUI:54A619* - OUI:54A9D4* - ID_OUI_FROM_DATABASE=Minibar Systems - -+OUI:54AE27* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:54B620* - ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd. - -@@ -57295,9 +57814,15 @@ OUI:54BEF7* - OUI:54CDA7* - ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd - -+OUI:54CDEE* -+ ID_OUI_FROM_DATABASE=ShenZhen Apexis Electronic Co.,Ltd -+ - OUI:54D0ED* - ID_OUI_FROM_DATABASE=AXIM Communications - -+OUI:54D163* -+ ID_OUI_FROM_DATABASE=MAX-TECH,INC -+ - OUI:54D1B0* - ID_OUI_FROM_DATABASE=Universal Laser Systems, Inc - -@@ -57310,6 +57835,9 @@ OUI:54DF63* - OUI:54E032* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:54E2E0* -+ ID_OUI_FROM_DATABASE=Pace plc -+ - OUI:54E3B0* - ID_OUI_FROM_DATABASE=JVL Industri Elektronik - -@@ -57337,6 +57865,9 @@ OUI:54FB58* - OUI:54FDBF* - ID_OUI_FROM_DATABASE=Scheidt & Bachmann GmbH - -+OUI:580528* -+ ID_OUI_FROM_DATABASE=LABRIS NETWORKS -+ - OUI:580556* - ID_OUI_FROM_DATABASE=Elettronica GF S.r.L. - -@@ -57346,6 +57877,9 @@ OUI:5808FA* - OUI:5809E5* - ID_OUI_FROM_DATABASE=Kivic Inc. - -+OUI:580A20* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:581243* - ID_OUI_FROM_DATABASE=AcSiP Technology Corp. - -@@ -57394,6 +57928,9 @@ OUI:5846E1* - OUI:5848C0* - ID_OUI_FROM_DATABASE=COFLEC - -+OUI:58493B* -+ ID_OUI_FROM_DATABASE=Palo Alto Networks -+ - OUI:5849BA* - ID_OUI_FROM_DATABASE=Chitai Electronic Corp. - -@@ -57406,6 +57943,9 @@ OUI:584CEE* - OUI:585076* - ID_OUI_FROM_DATABASE=Linear Equipamentos Eletronicos SA - -+OUI:5850AB* -+ ID_OUI_FROM_DATABASE=TLS Corporation -+ - OUI:5850E6* - ID_OUI_FROM_DATABASE=Best Buy Corporation - -@@ -57493,6 +58033,9 @@ OUI:589835* - OUI:58986F* - ID_OUI_FROM_DATABASE=Revolution Display - -+OUI:589CFC* -+ ID_OUI_FROM_DATABASE=FreeBSD Foundation -+ - OUI:58A2B5* - ID_OUI_FROM_DATABASE=LG Electronics - -@@ -57628,6 +58171,9 @@ OUI:5C22C4* - OUI:5C2479* - ID_OUI_FROM_DATABASE=Baltech AG - -+OUI:5C254C* -+ ID_OUI_FROM_DATABASE=Avire Global Pte Ltd -+ - OUI:5C260A* - ID_OUI_FROM_DATABASE=Dell Inc. - -@@ -57757,6 +58303,9 @@ OUI:5CBD9E* - OUI:5CC213* - ID_OUI_FROM_DATABASE=Fr. Sauter AG - -+OUI:5CC5D4* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:5CC6D0* - ID_OUI_FROM_DATABASE=Skyworth Digital technology(shenzhen)co.ltd. - -@@ -57808,6 +58357,9 @@ OUI:5CE286* - OUI:5CE2F4* - ID_OUI_FROM_DATABASE=AcSiP Technology Corp. - -+OUI:5CE7BF* -+ ID_OUI_FROM_DATABASE=New Singularity International Technical Development Co.,Ltd -+ - OUI:5CE8EB* - ID_OUI_FROM_DATABASE=Samsung Electronics - -@@ -57826,6 +58378,9 @@ OUI:5CF370* - OUI:5CF3FC* - ID_OUI_FROM_DATABASE=IBM Corp - -+OUI:5CF50D* -+ ID_OUI_FROM_DATABASE=Institute of microelectronic applications -+ - OUI:5CF6DC* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD - -@@ -57847,6 +58402,9 @@ OUI:5CFFFF* - OUI:6002B4* - ID_OUI_FROM_DATABASE=Wistron NeWeb Corp. - -+OUI:600308* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:600347* - ID_OUI_FROM_DATABASE=Billion Electric Co. Ltd. - -@@ -57874,6 +58432,9 @@ OUI:601D0F* - OUI:601E02* - ID_OUI_FROM_DATABASE=EltexAlatau - -+OUI:602103* -+ ID_OUI_FROM_DATABASE=STCUBE.INC -+ - OUI:6021C0* - ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. - -@@ -58117,12 +58678,18 @@ OUI:60FB42* - OUI:60FE1E* - ID_OUI_FROM_DATABASE=China Palms Telecom.Ltd - -+OUI:60FE20* -+ ID_OUI_FROM_DATABASE=2 Wire -+ - OUI:60FEC5* - ID_OUI_FROM_DATABASE=Apple - - OUI:60FEF9* - ID_OUI_FROM_DATABASE=Thomas & Betts - -+OUI:60FFDD* -+ ID_OUI_FROM_DATABASE=C.E. ELECTRONICS, INC -+ - OUI:6400F1* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -@@ -58228,6 +58795,9 @@ OUI:645563* - OUI:64557F* - ID_OUI_FROM_DATABASE=NSFOCUS Information Technology Co., Ltd. - -+OUI:6455B1* -+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -+ - OUI:645601* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD - -@@ -58363,6 +58933,9 @@ OUI:64AE88* - OUI:64B310* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:64B370* -+ ID_OUI_FROM_DATABASE=PowerComm Solutons LLC -+ - OUI:64B64A* - ID_OUI_FROM_DATABASE=ViVOtech, Inc. - -@@ -58435,12 +59008,18 @@ OUI:64E682* - OUI:64E84F* - ID_OUI_FROM_DATABASE=Serialway Communication Technology Co. Ltd - -+OUI:64E892* -+ ID_OUI_FROM_DATABASE=Morio Denki Co., Ltd. -+ - OUI:64E8E6* - ID_OUI_FROM_DATABASE=global moisture management system - - OUI:64E950* - ID_OUI_FROM_DATABASE=Cisco - -+OUI:64EB8C* -+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation -+ - OUI:64ED57* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -@@ -58570,6 +59149,9 @@ OUI:687251* - OUI:68764F* - ID_OUI_FROM_DATABASE=Sony Mobile Communications AB - -+OUI:687848* -+ ID_OUI_FROM_DATABASE=Westunitis Co., Ltd. -+ - OUI:68784C* - ID_OUI_FROM_DATABASE=Nortel Networks - -@@ -58594,6 +59176,9 @@ OUI:688470* - OUI:688540* - ID_OUI_FROM_DATABASE=IGI Mobile, Inc. - -+OUI:68856A* -+ ID_OUI_FROM_DATABASE=OuterLink Corporation -+ - OUI:6886A7* - ID_OUI_FROM_DATABASE=Cisco - -@@ -58684,6 +59269,9 @@ OUI:68CE4E* - OUI:68D1FD* - ID_OUI_FROM_DATABASE=Shenzhen Trimax Technology Co.,Ltd - -+OUI:68D247* -+ ID_OUI_FROM_DATABASE=Portalis LC -+ - OUI:68D925* - ID_OUI_FROM_DATABASE=ProSys Development Services - -@@ -58732,6 +59320,9 @@ OUI:68FCB3* - OUI:6C0460* - ID_OUI_FROM_DATABASE=RBH Access Technologies Inc. - -+OUI:6C09D6* -+ ID_OUI_FROM_DATABASE=Digiquest Electronics LTD -+ - OUI:6C0E0D* - ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB - -@@ -58816,12 +59407,18 @@ OUI:6C5D63* - OUI:6C5E7A* - ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd - -+OUI:6C5F1C* -+ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. -+ - OUI:6C6126* - ID_OUI_FROM_DATABASE=Rinicom Holdings - - OUI:6C626D* - ID_OUI_FROM_DATABASE=Micro-Star INT'L CO., LTD - -+OUI:6C641A* -+ ID_OUI_FROM_DATABASE=Penguin Computing -+ - OUI:6C6F18* - ID_OUI_FROM_DATABASE=Stereotaxis, Inc. - -@@ -58864,6 +59461,9 @@ OUI:6C92BF* - OUI:6C98EB* - ID_OUI_FROM_DATABASE=Xyne GmbH - -+OUI:6C9989* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:6C9AC9* - ID_OUI_FROM_DATABASE=Valentine Research, Inc. - -@@ -59023,6 +59623,9 @@ OUI:702559* - OUI:702B1D* - ID_OUI_FROM_DATABASE=E-Domus International Limited - -+OUI:702C1F* -+ ID_OUI_FROM_DATABASE=Wisol -+ - OUI:702F4B* - ID_OUI_FROM_DATABASE=PolyVision Inc. - -@@ -59071,6 +59674,9 @@ OUI:704AE4* - OUI:704CED* - ID_OUI_FROM_DATABASE=TMRG, Inc. - -+OUI:704E01* -+ ID_OUI_FROM_DATABASE=KWANGWON TECH CO., LTD. -+ - OUI:7052C5* - ID_OUI_FROM_DATABASE=Avaya, Inc. - -@@ -59389,9 +59995,15 @@ OUI:746630* - OUI:746A89* - ID_OUI_FROM_DATABASE=Rezolt Corporation - -+OUI:746A8F* -+ ID_OUI_FROM_DATABASE=VS Vision Systems GmbH -+ - OUI:746B82* - ID_OUI_FROM_DATABASE=MOVEK - -+OUI:746F3D* -+ ID_OUI_FROM_DATABASE=Contec GmbH -+ - OUI:7472F2* - ID_OUI_FROM_DATABASE=Chipsip Technology Co., Ltd. - -@@ -59413,6 +60025,9 @@ OUI:747E2D* - OUI:74867A* - ID_OUI_FROM_DATABASE=Dell Inc PCBA Test - -+OUI:74882A* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:74888B* - ID_OUI_FROM_DATABASE=ADB Broadband Italia - -@@ -59422,6 +60037,9 @@ OUI:748E08* - OUI:748EF8* - ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. - -+OUI:748F1B* -+ ID_OUI_FROM_DATABASE=MasterImage 3D -+ - OUI:749050* - ID_OUI_FROM_DATABASE=Renesas Electronics Corporation - -@@ -59437,6 +60055,9 @@ OUI:74943D* - OUI:749975* - ID_OUI_FROM_DATABASE=IBM Corporation - -+OUI:749C52* -+ ID_OUI_FROM_DATABASE=Huizhou Desay SV Automotive Co., Ltd. -+ - OUI:749DDC* - ID_OUI_FROM_DATABASE=2Wire - -@@ -59467,6 +60088,9 @@ OUI:74BE08* - OUI:74BFA1* - ID_OUI_FROM_DATABASE=HYUNTECK - -+OUI:74C621* -+ ID_OUI_FROM_DATABASE=Zhejiang Hite Renewable Energy Co.,LTD -+ - OUI:74C99A* - ID_OUI_FROM_DATABASE=Ericsson AB - -@@ -59605,6 +60229,9 @@ OUI:78303B* - OUI:7830E1* - ID_OUI_FROM_DATABASE=UltraClenz, LLC - -+OUI:7831C1* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:78324F* - ID_OUI_FROM_DATABASE=Millennium Group, Inc. - -@@ -59614,6 +60241,9 @@ OUI:783CE3* - OUI:783D5B* - ID_OUI_FROM_DATABASE=TELNET Redes Inteligentes S.A. - -+OUI:783E53* -+ ID_OUI_FROM_DATABASE=BSkyB Ltd -+ - OUI:783F15* - ID_OUI_FROM_DATABASE=EasySYNC Ltd. - -@@ -59638,6 +60268,9 @@ OUI:78491D* - OUI:784B08* - ID_OUI_FROM_DATABASE=f.robotics acquisitions ltd - -+OUI:784B87* -+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co.,Ltd. -+ - OUI:78510C* - ID_OUI_FROM_DATABASE=LiveU Ltd. - -@@ -59674,6 +60307,9 @@ OUI:78617C* - OUI:7866AE* - ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc. - -+OUI:786A89* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:786C1C* - ID_OUI_FROM_DATABASE=Apple - -@@ -59737,6 +60373,9 @@ OUI:78A2A0* - OUI:78A3E4* - ID_OUI_FROM_DATABASE=Apple - -+OUI:78A504* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:78A5DD* - ID_OUI_FROM_DATABASE=Shenzhen Smarteye Digital Electronics Co., Ltd - -@@ -59830,6 +60469,9 @@ OUI:78D5B5* - OUI:78D6F0* - ID_OUI_FROM_DATABASE=Samsung Electro Mechanics - -+OUI:78D752* -+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -+ - OUI:78D99F* - ID_OUI_FROM_DATABASE=NuCom HK Ltd. - -@@ -59887,6 +60529,9 @@ OUI:78FE3D* - OUI:78FE41* - ID_OUI_FROM_DATABASE=Socus networks - -+OUI:78FEE2* -+ ID_OUI_FROM_DATABASE=Shanghai Diveo Technology Co., Ltd -+ - OUI:78FF57* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -59929,6 +60574,9 @@ OUI:7C1476* - OUI:7C160D* - ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG - -+OUI:7C1A03* -+ ID_OUI_FROM_DATABASE=8Locations Co., Ltd. -+ - OUI:7C1AFC* - ID_OUI_FROM_DATABASE=Dalian Co-Edifice Video Technology Co., Ltd - -@@ -60058,6 +60706,9 @@ OUI:7C822D* - OUI:7C8306* - ID_OUI_FROM_DATABASE=Glen Dimplex Nordic as - -+OUI:7C8D91* -+ ID_OUI_FROM_DATABASE=Shanghai Hongzhuo Information Technology co.,LTD -+ - OUI:7C8EE4* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -60172,6 +60823,9 @@ OUI:7CDD90* - OUI:7CE044* - ID_OUI_FROM_DATABASE=NEON Inc - -+OUI:7CE1FF* -+ ID_OUI_FROM_DATABASE=Computer Performance, Inc. DBA Digital Loggers, Inc. -+ - OUI:7CE56B* - ID_OUI_FROM_DATABASE=ESEN Optoelectronics Technology Co.,Ltd. - -@@ -60214,6 +60868,9 @@ OUI:80000B* - OUI:800010* - ID_OUI_FROM_DATABASE=ATT BELL LABORATORIES - -+OUI:80006E* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:8005DF* - ID_OUI_FROM_DATABASE=Montage Technology Group Limited - -@@ -60307,9 +60964,15 @@ OUI:805719* - OUI:8058C5* - ID_OUI_FROM_DATABASE=NovaTec Kommunikationstechnik GmbH - -+OUI:8059FD* -+ ID_OUI_FROM_DATABASE=Noviga -+ - OUI:806007* - ID_OUI_FROM_DATABASE=RIM - -+OUI:80618F* -+ ID_OUI_FROM_DATABASE=Shenzhen sangfei consumer communications co.,ltd -+ - OUI:806459* - ID_OUI_FROM_DATABASE=Nimbus Inc. - -@@ -60448,6 +61111,9 @@ OUI:80D733* - OUI:80DB31* - ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd. - -+OUI:80EA96* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:80EE73* - ID_OUI_FROM_DATABASE=Shuttle Inc. - -@@ -60481,6 +61147,9 @@ OUI:840F45* - OUI:841715* - ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd. - -+OUI:841766* -+ ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd -+ - OUI:841888* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -60502,9 +61171,15 @@ OUI:84248D* - OUI:84253F* - ID_OUI_FROM_DATABASE=Silex Technology, Inc - -+OUI:8425A4* -+ ID_OUI_FROM_DATABASE=Tariox Limited -+ - OUI:8425DB* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:842615* -+ ID_OUI_FROM_DATABASE=ADB Broadband Italia -+ - OUI:84262B* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - -@@ -60586,6 +61261,9 @@ OUI:846AED* - OUI:846EB1* - ID_OUI_FROM_DATABASE=Park Assist LLC - -+OUI:847207* -+ ID_OUI_FROM_DATABASE=I&C Technology -+ - OUI:84742A* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -60610,12 +61288,18 @@ OUI:848336* - OUI:848371* - ID_OUI_FROM_DATABASE=Avaya, Inc - -+OUI:848433* -+ ID_OUI_FROM_DATABASE=Paradox Engineering SA -+ - OUI:848506* - ID_OUI_FROM_DATABASE=Apple - - OUI:848D84* - ID_OUI_FROM_DATABASE=Rajant Corporation - -+OUI:848E0C* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:848E96* - ID_OUI_FROM_DATABASE=Embertec Pty Ltd - -@@ -60838,6 +61522,9 @@ OUI:888717* - OUI:8887DD* - ID_OUI_FROM_DATABASE=DarbeeVision Inc. - -+OUI:888914* -+ ID_OUI_FROM_DATABASE=All Components Incorporated -+ - OUI:888964* - ID_OUI_FROM_DATABASE=GSI Electronics Inc. - -@@ -60853,6 +61540,9 @@ OUI:889166* - OUI:8891DD* - ID_OUI_FROM_DATABASE=Racktivity - -+OUI:889471* -+ ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. -+ - OUI:8894F9* - ID_OUI_FROM_DATABASE=Gemicom Technology, Inc. - -@@ -60883,6 +61573,9 @@ OUI:88A3CC* - OUI:88A5BD* - ID_OUI_FROM_DATABASE=QPCOM INC. - -+OUI:88A73C* -+ ID_OUI_FROM_DATABASE=Ragentek Technology Group -+ - OUI:88ACC1* - ID_OUI_FROM_DATABASE=Generiton Co., Ltd. - -@@ -60916,6 +61609,9 @@ OUI:88CB87* - OUI:88D7BC* - ID_OUI_FROM_DATABASE=DEP Company - -+OUI:88D962* -+ ID_OUI_FROM_DATABASE=Canopus Systems US LLC -+ - OUI:88DC96* - ID_OUI_FROM_DATABASE=SENAO Networks, Inc. - -@@ -60928,12 +61624,18 @@ OUI:88E0A0* - OUI:88E0F3* - ID_OUI_FROM_DATABASE=Juniper Networks - -+OUI:88E3AB* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:88E712* - ID_OUI_FROM_DATABASE=Whirlpool Corporation - - OUI:88E7A6* - ID_OUI_FROM_DATABASE=iKnowledge Integration Corp. - -+OUI:88E8F8* -+ ID_OUI_FROM_DATABASE=YONG TAI ELECTRONIC (DONGGUAN) LTD. -+ - OUI:88E917* - ID_OUI_FROM_DATABASE=Tamaggo - -@@ -60949,6 +61651,9 @@ OUI:88F488* - OUI:88F490* - ID_OUI_FROM_DATABASE=Jetmobile Pte Ltd - -+OUI:88F7C7* -+ ID_OUI_FROM_DATABASE=Technicolor USA Inc. -+ - OUI:88FD15* - ID_OUI_FROM_DATABASE=LINEEYE CO., LTD - -@@ -60994,6 +61699,9 @@ OUI:8C271D* - OUI:8C278A* - ID_OUI_FROM_DATABASE=Vocollect Inc - -+OUI:8C2937* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:8C2DAA* - ID_OUI_FROM_DATABASE=Apple - -@@ -61012,6 +61720,9 @@ OUI:8C3C07* - OUI:8C3C4A* - ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC. - -+OUI:8C41F2* -+ ID_OUI_FROM_DATABASE=RDA Technologies Ltd. -+ - OUI:8C4435* - ID_OUI_FROM_DATABASE=Shanghai BroadMobi Communication Technology Co., Ltd. - -@@ -61099,6 +61810,9 @@ OUI:8C7716* - OUI:8C7B9D* - ID_OUI_FROM_DATABASE=Apple - -+OUI:8C7C92* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:8C7CB5* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -61153,6 +61867,9 @@ OUI:8CB82C* - OUI:8CB864* - ID_OUI_FROM_DATABASE=AcSiP Technology Corp. - -+OUI:8CBEBE* -+ ID_OUI_FROM_DATABASE=Xiaomi Technology Co.,Ltd -+ - OUI:8CC121* - ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company - -@@ -61285,6 +62002,9 @@ OUI:902B34* - OUI:902E87* - ID_OUI_FROM_DATABASE=LabJack - -+OUI:9031CD* -+ ID_OUI_FROM_DATABASE=Onyx Healthcare Inc. -+ - OUI:90342B* - ID_OUI_FROM_DATABASE=Gatekeeper Systems, Inc. - -@@ -61324,6 +62044,9 @@ OUI:9049FA* - OUI:904CE5* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:904E2B* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:90507B* - ID_OUI_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG - -@@ -61426,6 +62149,9 @@ OUI:9092B4* - OUI:9094E4* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:909864* -+ ID_OUI_FROM_DATABASE=Impex-Sat GmbH&Co KG -+ - OUI:909916* - ID_OUI_FROM_DATABASE=ELVEES NeoTek OJSC - -@@ -61501,6 +62227,12 @@ OUI:90D92C* - OUI:90DA4E* - ID_OUI_FROM_DATABASE=AVANU - -+OUI:90DB46* -+ ID_OUI_FROM_DATABASE=E-LEAD ELECTRONIC CO., LTD -+ -+OUI:90DFB7* -+ ID_OUI_FROM_DATABASE=s.m.s smart microwave sensors GmbH -+ - OUI:90E0F0* - ID_OUI_FROM_DATABASE=Harman International - -@@ -61513,6 +62245,12 @@ OUI:90E6BA* - OUI:90EA60* - ID_OUI_FROM_DATABASE=SPI Lasers Ltd - -+OUI:90F1AA* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD -+ -+OUI:90F1B0* -+ ID_OUI_FROM_DATABASE=Hangzhou Anheng Info&Tech CO.,LTD -+ - OUI:90F278* - ID_OUI_FROM_DATABASE=Radius Gateway - -@@ -61624,6 +62362,9 @@ OUI:945047* - OUI:945103* - ID_OUI_FROM_DATABASE=Samsung Electronics - -+OUI:9451BF* -+ ID_OUI_FROM_DATABASE=Hyundai ESG -+ - OUI:94592D* - ID_OUI_FROM_DATABASE=EKE Building Technology Systems Ltd - -@@ -61681,6 +62422,9 @@ OUI:949BFD* - OUI:949C55* - ID_OUI_FROM_DATABASE=Alta Data Technologies - -+OUI:949F3F* -+ ID_OUI_FROM_DATABASE=Optek Digital Technology company limited -+ - OUI:949FB4* - ID_OUI_FROM_DATABASE=ChengDu JiaFaAnTai Technology Co.,Ltd - -@@ -61711,6 +62455,9 @@ OUI:94BA56* - OUI:94BF1E* - ID_OUI_FROM_DATABASE=eflow Inc. / Smart Device Planning and Development Division - -+OUI:94C014* -+ ID_OUI_FROM_DATABASE=Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek -+ - OUI:94C150* - ID_OUI_FROM_DATABASE=2Wire Inc - -@@ -61939,6 +62686,9 @@ OUI:9873C4* - OUI:9876B6* - ID_OUI_FROM_DATABASE=Adafruit - -+OUI:987770* -+ ID_OUI_FROM_DATABASE=Pep Digital Technology (Guangzhou) Co., Ltd -+ - OUI:988217* - ID_OUI_FROM_DATABASE=Disruptive Ltd - -@@ -61990,6 +62740,9 @@ OUI:98BC57* - OUI:98BC99* - ID_OUI_FROM_DATABASE=Edeltech Co.,Ltd. - -+OUI:98C0EB* -+ ID_OUI_FROM_DATABASE=Global Regency Ltd -+ - OUI:98C845* - ID_OUI_FROM_DATABASE=PacketAccess - -@@ -62026,6 +62779,9 @@ OUI:98E79A* - OUI:98EC65* - ID_OUI_FROM_DATABASE=Cosesy ApS - -+OUI:98F0AB* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:98F537* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -62113,6 +62869,9 @@ OUI:9C31B6* - OUI:9C3AAF* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:9C3EAA* -+ ID_OUI_FROM_DATABASE=EnvyLogic Co.,Ltd. -+ - OUI:9C417C* - ID_OUI_FROM_DATABASE=Hame Technology Co., Limited - -@@ -62179,6 +62938,12 @@ OUI:9C611D* - OUI:9C645E* - ID_OUI_FROM_DATABASE=Harman Consumer Group - -+OUI:9C65B0* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ -+OUI:9C65F9* -+ ID_OUI_FROM_DATABASE=AcSiP Technology Corp. -+ - OUI:9C6650* - ID_OUI_FROM_DATABASE=Glodio Technolies Co.,Ltd Tianjin Branch - -@@ -62203,6 +62968,9 @@ OUI:9C807D* - OUI:9C80DF* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -+OUI:9C86DA* -+ ID_OUI_FROM_DATABASE=Phoenix Geophysics Ltd. -+ - OUI:9C8888* - ID_OUI_FROM_DATABASE=Simac Techniek NV - -@@ -62272,6 +63040,9 @@ OUI:9CB793* - OUI:9CBB98* - ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD - -+OUI:9CBD9D* -+ ID_OUI_FROM_DATABASE=SkyDisk, Inc. -+ - OUI:9CC077* - ID_OUI_FROM_DATABASE=PrintCounts, LLC - -@@ -62332,6 +63103,9 @@ OUI:9CF8DB* - OUI:9CF938* - ID_OUI_FROM_DATABASE=AREVA NP GmbH - -+OUI:9CFBF1* -+ ID_OUI_FROM_DATABASE=MESOMATIC GmbH & Co.KG -+ - OUI:9CFFBE* - ID_OUI_FROM_DATABASE=OTSL Inc. - -@@ -62449,6 +63223,9 @@ OUI:A05DE7* - OUI:A05E6B* - ID_OUI_FROM_DATABASE=MELPER Co., Ltd. - -+OUI:A06518* -+ ID_OUI_FROM_DATABASE=VNPT TECHNOLOGY -+ - OUI:A067BE* - ID_OUI_FROM_DATABASE=Sicon s.r.l. - -@@ -62479,6 +63256,9 @@ OUI:A073FC* - OUI:A07591* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:A07771* -+ ID_OUI_FROM_DATABASE=Vialis BV -+ - OUI:A078BA* - ID_OUI_FROM_DATABASE=Pantech Co., Ltd. - -@@ -62500,6 +63280,9 @@ OUI:A08869* - OUI:A088B4* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:A089E4* -+ ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd -+ - OUI:A08A87* - ID_OUI_FROM_DATABASE=HuiZhou KaiYue Electronic Co.,Ltd - -@@ -62599,6 +63382,9 @@ OUI:A0E25A* - OUI:A0E295* - ID_OUI_FROM_DATABASE=DAT System Co.,Ltd - -+OUI:A0E453* -+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -+ - OUI:A0E534* - ID_OUI_FROM_DATABASE=Stratec Biomedical AG - -@@ -62635,6 +63421,9 @@ OUI:A0F419* - OUI:A0F450* - ID_OUI_FROM_DATABASE=HTC Corporation - -+OUI:A0F459* -+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED -+ - OUI:A0FE91* - ID_OUI_FROM_DATABASE=AVAT Automation GmbH - -@@ -62740,6 +63529,9 @@ OUI:A45D36* - OUI:A46706* - ID_OUI_FROM_DATABASE=Apple - -+OUI:A46CC1* -+ ID_OUI_FROM_DATABASE=LTi REEnergy GmbH -+ - OUI:A46E79* - ID_OUI_FROM_DATABASE=DFT System Co.Ltd - -@@ -62785,6 +63577,9 @@ OUI:A49947* - OUI:A49981* - ID_OUI_FROM_DATABASE=FuJian Elite Power Tech CO.,LTD. - -+OUI:A49A58* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:A49B13* - ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc. - -@@ -62836,6 +63631,9 @@ OUI:A4B980* - OUI:A4BADB* - ID_OUI_FROM_DATABASE=Dell Inc. - -+OUI:A4BBAF* -+ ID_OUI_FROM_DATABASE=Lime Instruments -+ - OUI:A4BE61* - ID_OUI_FROM_DATABASE=EutroVision System, Inc. - -@@ -62941,6 +63739,9 @@ OUI:A80180* - OUI:A80600* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:A80C0D* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:A8154D* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -@@ -62959,6 +63760,9 @@ OUI:A81FAF* - OUI:A82066* - ID_OUI_FROM_DATABASE=Apple - -+OUI:A824EB* -+ ID_OUI_FROM_DATABASE=ZAO NPO Introtest -+ - OUI:A826D9* - ID_OUI_FROM_DATABASE=HTC Corporation - -@@ -62992,6 +63796,9 @@ OUI:A854B2* - OUI:A8556A* - ID_OUI_FROM_DATABASE=Pocketnet Technology Inc. - -+OUI:A8574E* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:A85BB0* - ID_OUI_FROM_DATABASE=Shenzhen Dehoo Technology Co.,Ltd - -@@ -63034,6 +63841,9 @@ OUI:A87B39* - OUI:A87E33* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S - -+OUI:A881F1* -+ ID_OUI_FROM_DATABASE=BMEYE B.V. -+ - OUI:A886DD* - ID_OUI_FROM_DATABASE=Apple, Inc. - -@@ -63085,12 +63895,18 @@ OUI:A8B0AE* - OUI:A8B1D4* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:A8B9B3* -+ ID_OUI_FROM_DATABASE=ESSYS -+ - OUI:A8BBCF* - ID_OUI_FROM_DATABASE=Apple - - OUI:A8BD1A* - ID_OUI_FROM_DATABASE=Honey Bee (Hong Kong) Limited - -+OUI:A8BD3A* -+ ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD -+ - OUI:A8C222* - ID_OUI_FROM_DATABASE=TM-Research Inc. - -@@ -63157,6 +63973,9 @@ OUI:AA0004* - OUI:AC0142* - ID_OUI_FROM_DATABASE=Uriel Technologies SIA - -+OUI:AC02CA* -+ ID_OUI_FROM_DATABASE=HI Solutions, Inc. -+ - OUI:AC02CF* - ID_OUI_FROM_DATABASE=RW Tecnologia Industria e Comercio Ltda - -@@ -63208,6 +64027,9 @@ OUI:AC319D* - OUI:AC34CB* - ID_OUI_FROM_DATABASE=Shanhai GBCOM Communication Technology Co. Ltd - -+OUI:AC3613* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:AC3C0B* - ID_OUI_FROM_DATABASE=Apple - -@@ -63406,6 +64228,9 @@ OUI:ACCE8F* - OUI:ACCF23* - ID_OUI_FROM_DATABASE=Hi-flying electronics technology Co.,Ltd - -+OUI:ACCF5C* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:ACD180* - ID_OUI_FROM_DATABASE=Crexendo Business Solutions, Inc. - -@@ -63421,6 +64246,9 @@ OUI:ACD9D6* - OUI:ACDBDA* - ID_OUI_FROM_DATABASE=Shenzhen Geniatech Inc, Ltd - -+OUI:ACE069* -+ ID_OUI_FROM_DATABASE=ISAAC Instruments -+ - OUI:ACE215* - ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd - -@@ -63493,6 +64321,9 @@ OUI:B01C91* - OUI:B024F3* - ID_OUI_FROM_DATABASE=Progeny Systems - -+OUI:B03495* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:B0358D* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -63523,6 +64354,9 @@ OUI:B050BC* - OUI:B0518E* - ID_OUI_FROM_DATABASE=Holl technology CO.Ltd. - -+OUI:B05706* -+ ID_OUI_FROM_DATABASE=Vallox Oy -+ - OUI:B058C4* - ID_OUI_FROM_DATABASE=Broadcast Microwave Services, Inc - -@@ -63538,6 +64372,12 @@ OUI:B06563* - OUI:B065BD* - ID_OUI_FROM_DATABASE=Apple - -+OUI:B068B6* -+ ID_OUI_FROM_DATABASE=Hangzhou OYE Technology Co. Ltd -+ -+OUI:B06971* -+ ID_OUI_FROM_DATABASE=DEI Sales, Inc. -+ - OUI:B06CBF* - ID_OUI_FROM_DATABASE=3ality Digital Systems GmbH - -@@ -63568,6 +64408,9 @@ OUI:B0808C* - OUI:B081D8* - ID_OUI_FROM_DATABASE=I-sys Corp - -+OUI:B0869E* -+ ID_OUI_FROM_DATABASE=Chloride S.r.L -+ - OUI:B08807* - ID_OUI_FROM_DATABASE=Strata Worldwide - -@@ -63643,6 +64486,9 @@ OUI:B0BF99* - OUI:B0C4E7* - ID_OUI_FROM_DATABASE=Samsung Electronics - -+OUI:B0C554* -+ ID_OUI_FROM_DATABASE=D-Link International -+ - OUI:B0C69A* - ID_OUI_FROM_DATABASE=Juniper Networks - -@@ -63673,6 +64519,9 @@ OUI:B0D2F5* - OUI:B0D7C5* - ID_OUI_FROM_DATABASE=STP KFT - -+OUI:B0DA00* -+ ID_OUI_FROM_DATABASE=CERA ELECTRONIQUE -+ - OUI:B0DF3A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -63694,6 +64543,9 @@ OUI:B0E97E* - OUI:B0EC71* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:B0EC8F* -+ ID_OUI_FROM_DATABASE=GMX SAS -+ - OUI:B0EE45* - ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc. - -@@ -63736,6 +64588,9 @@ OUI:B41489* - OUI:B41513* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -+OUI:B418D1* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:B41DEF* - ID_OUI_FROM_DATABASE=Internet Laboratories, Inc. - -@@ -63754,6 +64609,9 @@ OUI:B428F1* - OUI:B42A39* - ID_OUI_FROM_DATABASE=ORBIT MERRET, spol. s r. o. - -+OUI:B42C92* -+ ID_OUI_FROM_DATABASE=Zhejiang Weirong Electronic Co., Ltd -+ - OUI:B42CBE* - ID_OUI_FROM_DATABASE=Direct Payment Solutions Limited - -@@ -63787,6 +64645,9 @@ OUI:B43E3B* - OUI:B4417A* - ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd - -+OUI:B4430D* -+ ID_OUI_FROM_DATABASE=Broadlink Pty Ltd -+ - OUI:B44CC2* - ID_OUI_FROM_DATABASE=NR ELECTRIC CO., LTD - -@@ -63847,6 +64708,9 @@ OUI:B482C5* - OUI:B482FE* - ID_OUI_FROM_DATABASE=Askey Computer Corp - -+OUI:B48547* -+ ID_OUI_FROM_DATABASE=Amptown System Company GmbH -+ - OUI:B48910* - ID_OUI_FROM_DATABASE=Coster T.E. S.P.A. - -@@ -63856,6 +64720,9 @@ OUI:B4944E* - OUI:B49842* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:B4994C* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:B499BA* - ID_OUI_FROM_DATABASE=Hewlett-Packard Company - -@@ -63875,7 +64742,7 @@ OUI:B4A5A9* - ID_OUI_FROM_DATABASE=MODI GmbH - - OUI:B4A82B* -- ID_OUI_FROM_DATABASE=Histar -+ ID_OUI_FROM_DATABASE=Histar Digital Electronics Co., Ltd. - - OUI:B4A95A* - ID_OUI_FROM_DATABASE=Avaya, Inc -@@ -63895,6 +64762,9 @@ OUI:B4B362* - OUI:B4B52F* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:B4B542* -+ ID_OUI_FROM_DATABASE=Hubbell Power Systems, Inc. -+ - OUI:B4B5AF* - ID_OUI_FROM_DATABASE=Minsung Electronics - -@@ -64021,6 +64891,9 @@ OUI:B830A8* - OUI:B836D8* - ID_OUI_FROM_DATABASE=Videoswitch - -+OUI:B83861* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:B838CA* - ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD - -@@ -64036,6 +64909,9 @@ OUI:B83E59* - OUI:B8415F* - ID_OUI_FROM_DATABASE=ASP AG - -+OUI:B843E4* -+ ID_OUI_FROM_DATABASE=Vlatacom -+ - OUI:B847C6* - ID_OUI_FROM_DATABASE=SanJet Technology Corp. - -@@ -64075,6 +64951,9 @@ OUI:B8653B* - OUI:B86B23* - ID_OUI_FROM_DATABASE=Toshiba - -+OUI:B86CE8* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:B870F4* - ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. - -@@ -64543,6 +65422,9 @@ OUI:BCF2AF* - OUI:BCF5AC* - ID_OUI_FROM_DATABASE=LG Electronics - -+OUI:BCF61C* -+ ID_OUI_FROM_DATABASE=Geomodeling Wuxi Technology Co. Ltd. -+ - OUI:BCF685* - ID_OUI_FROM_DATABASE=D-Link International - -@@ -64762,6 +65644,9 @@ OUI:C0C3B6* - OUI:C0C520* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -+OUI:C0C569* -+ ID_OUI_FROM_DATABASE=SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD -+ - OUI:C0C687* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -@@ -64798,6 +65683,9 @@ OUI:C0EAE4* - OUI:C0F1C4* - ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd. - -+OUI:C0F79D* -+ ID_OUI_FROM_DATABASE=Powercode -+ - OUI:C0F8DA* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -64816,18 +65704,27 @@ OUI:C401B1* - OUI:C40415* - ID_OUI_FROM_DATABASE=NETGEAR INC., - -+OUI:C40528* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:C40938* - ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd - - OUI:C40ACB* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:C40E45* -+ ID_OUI_FROM_DATABASE=ACK Networks,Inc. -+ - OUI:C40F09* - ID_OUI_FROM_DATABASE=Hermes electronic GmbH - - OUI:C4108A* - ID_OUI_FROM_DATABASE=Ruckus Wireless - -+OUI:C4143C* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:C416FA* - ID_OUI_FROM_DATABASE=Prysm Inc - -@@ -64858,6 +65755,9 @@ OUI:C42628* - OUI:C42795* - ID_OUI_FROM_DATABASE=Technicolor USA Inc. - -+OUI:C4291D* -+ ID_OUI_FROM_DATABASE=KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS. -+ - OUI:C42C03* - ID_OUI_FROM_DATABASE=Apple - -@@ -64900,9 +65800,15 @@ OUI:C44AD0* - OUI:C44B44* - ID_OUI_FROM_DATABASE=Omniprint Inc. - -+OUI:C44E1F* -+ ID_OUI_FROM_DATABASE=BlueN -+ - OUI:C44EAC* - ID_OUI_FROM_DATABASE=Shenzhen Shiningworth Technology Co., Ltd. - -+OUI:C45006* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:C45444* - ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC. - -@@ -65002,6 +65908,9 @@ OUI:C495A2* - OUI:C49805* - ID_OUI_FROM_DATABASE=Minieum Networks, Inc - -+OUI:C4A81D* -+ ID_OUI_FROM_DATABASE=D-Link International -+ - OUI:C4AAA1* - ID_OUI_FROM_DATABASE=SUMMIT DEVELOPMENT, spol.s r.o. - -@@ -65014,12 +65923,18 @@ OUI:C4B512* - OUI:C4BA99* - ID_OUI_FROM_DATABASE=I+ME Actia Informatik und Mikro-Elektronik GmbH - -+OUI:C4C0AE* -+ ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD. -+ - OUI:C4C19F* - ID_OUI_FROM_DATABASE=National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO) - - OUI:C4C755* - ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd - -+OUI:C4C919* -+ ID_OUI_FROM_DATABASE=Energy Imports Ltd -+ - OUI:C4CAD9* - ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited - -@@ -65050,6 +65965,9 @@ OUI:C4E7BE* - OUI:C4E92F* - ID_OUI_FROM_DATABASE=AB Sciex - -+OUI:C4E984* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:C4EBE3* - ID_OUI_FROM_DATABASE=RRCN SAS - -@@ -65092,6 +66010,9 @@ OUI:C80E95* - OUI:C81479* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:C816BD* -+ ID_OUI_FROM_DATABASE=HISENSE ELECTRIC CO.,LTD. -+ - OUI:C819F7* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -65302,6 +66223,9 @@ OUI:C8D2C1* - OUI:C8D3A3* - ID_OUI_FROM_DATABASE=D-Link International - -+OUI:C8D429* -+ ID_OUI_FROM_DATABASE=Muehlbauer AG -+ - OUI:C8D5FE* - ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd - -@@ -65428,6 +66352,9 @@ OUI:CC34D7* - OUI:CC3540* - ID_OUI_FROM_DATABASE=Technicolor USA Inc. - -+OUI:CC398C* -+ ID_OUI_FROM_DATABASE=Shiningtek -+ - OUI:CC3A61* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD. - -@@ -65527,6 +66454,12 @@ OUI:CC7D37* - OUI:CC7EE7* - ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company - -+OUI:CC856C* -+ ID_OUI_FROM_DATABASE=SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD -+ -+OUI:CC89FD* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:CC8CE3* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -65539,18 +66472,27 @@ OUI:CC912B* - OUI:CC944A* - ID_OUI_FROM_DATABASE=Pfeiffer Vacuum GmbH - -+OUI:CC95D7* -+ ID_OUI_FROM_DATABASE=VIZIO, Inc -+ - OUI:CC96A0* - ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd - - OUI:CC9E00* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -+OUI:CC9F35* -+ ID_OUI_FROM_DATABASE=Transbit Sp. z o.o. -+ - OUI:CCA374* - ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd - - OUI:CCA462* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:CCA614* -+ ID_OUI_FROM_DATABASE=AIFA TECHNOLOGY CORP. -+ - OUI:CCAF78* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -@@ -65650,6 +66592,9 @@ OUI:CCF954* - OUI:CCF9E8* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -+OUI:CCFA00* -+ ID_OUI_FROM_DATABASE=LG Electronics -+ - OUI:CCFB65* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -@@ -65731,6 +66676,9 @@ OUI:D0574C* - OUI:D05785* - ID_OUI_FROM_DATABASE=Pantech Co., Ltd. - -+OUI:D057A1* -+ ID_OUI_FROM_DATABASE=Werma Signaltechnik GmbH & Co. KG -+ - OUI:D05875* - ID_OUI_FROM_DATABASE=Active Control Technology Inc. - -@@ -65743,6 +66691,9 @@ OUI:D05A0F* - OUI:D05FCE* - ID_OUI_FROM_DATABASE=Hitachi Data Systems - -+OUI:D0634D* -+ ID_OUI_FROM_DATABASE=Meiko Maschinenbau GmbH & Co. KG -+ - OUI:D063B4* - ID_OUI_FROM_DATABASE=SolidRun Ltd. - -@@ -65755,6 +66706,9 @@ OUI:D067E5* - OUI:D0699E* - ID_OUI_FROM_DATABASE=LUMINEX Lighting Control Equipment - -+OUI:D069D0* -+ ID_OUI_FROM_DATABASE=Verto Medical Solutions, LLC -+ - OUI:D0737F* - ID_OUI_FROM_DATABASE=Mini-Circuits - -@@ -65767,12 +66721,18 @@ OUI:D073D5* - OUI:D075BE* - ID_OUI_FROM_DATABASE=Reno A&E - -+OUI:D07AB5* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:D07DE5* - ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc. - - OUI:D07E28* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:D07E35* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:D08999* - ID_OUI_FROM_DATABASE=APCON, Inc. - -@@ -65797,6 +66757,9 @@ OUI:D095C7* - OUI:D09B05* - ID_OUI_FROM_DATABASE=Emtronix - -+OUI:D09C30* -+ ID_OUI_FROM_DATABASE=Foster Electric Company, Limited -+ - OUI:D09D0A* - ID_OUI_FROM_DATABASE=LINKCOM - -@@ -65824,6 +66787,9 @@ OUI:D0B53D* - OUI:D0BB80* - ID_OUI_FROM_DATABASE=SHL Telemedicine International Ltd. - -+OUI:D0BD01* -+ ID_OUI_FROM_DATABASE=DS International -+ - OUI:D0BE2C* - ID_OUI_FROM_DATABASE=CNSLink Co., Ltd. - -@@ -65965,6 +66931,9 @@ OUI:D4206D* - OUI:D4223F* - ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. - -+OUI:D4224E* -+ ID_OUI_FROM_DATABASE=Alcatel Lucent -+ - OUI:D42751* - ID_OUI_FROM_DATABASE=Infopia Co., Ltd - -@@ -65977,6 +66946,12 @@ OUI:D429EA* - OUI:D42C3D* - ID_OUI_FROM_DATABASE=Sky Light Digital Limited - -+OUI:D42F23* -+ ID_OUI_FROM_DATABASE=Akenori PTE Ltd -+ -+OUI:D4319D* -+ ID_OUI_FROM_DATABASE=Sinwatec -+ - OUI:D43A65* - ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd. - -@@ -66241,6 +67216,9 @@ OUI:D809C3* - OUI:D80DE3* - ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS - -+OUI:D8150D* -+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -+ - OUI:D8160A* - ID_OUI_FROM_DATABASE=Nippon Electro-Sensory Devices - -@@ -66277,6 +67255,9 @@ OUI:D82916* - OUI:D82986* - ID_OUI_FROM_DATABASE=Best Wish Technology LTD - -+OUI:D82A15* -+ ID_OUI_FROM_DATABASE=Leitner SpA -+ - OUI:D82A7E* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -66325,9 +67306,15 @@ OUI:D85D4C* - OUI:D85D84* - ID_OUI_FROM_DATABASE=CAx soft GmbH - -+OUI:D86194* -+ ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido -+ - OUI:D862DB* - ID_OUI_FROM_DATABASE=Eno Inc. - -+OUI:D86595* -+ ID_OUI_FROM_DATABASE=Toy's Myth Inc. -+ - OUI:D866C6* - ID_OUI_FROM_DATABASE=Shenzhen Daystar Technology Co.,ltd - -@@ -66361,6 +67348,9 @@ OUI:D87988* - OUI:D87CDD* - ID_OUI_FROM_DATABASE=SANIX INCORPORATED - -+OUI:D881CE* -+ ID_OUI_FROM_DATABASE=AHN INC. -+ - OUI:D88A3B* - ID_OUI_FROM_DATABASE=UNIT-EM - -@@ -66418,6 +67408,9 @@ OUI:D8B377* - OUI:D8B6C1* - ID_OUI_FROM_DATABASE=NetworkAccountant, Inc. - -+OUI:D8B6D6* -+ ID_OUI_FROM_DATABASE=Blu Tether Limited -+ - OUI:D8B8F6* - ID_OUI_FROM_DATABASE=Nantworks - -@@ -66466,6 +67459,12 @@ OUI:D8DA52* - OUI:D8DCE9* - ID_OUI_FROM_DATABASE=Kunshan Erlab ductless filtration system Co.,Ltd - -+OUI:D8DD5F* -+ ID_OUI_FROM_DATABASE=BALMUDA Inc. -+ -+OUI:D8DDFD* -+ ID_OUI_FROM_DATABASE=Texas Instruments -+ - OUI:D8DF0D* - ID_OUI_FROM_DATABASE=beroNet GmbH - -@@ -66484,9 +67483,15 @@ OUI:D8E952* - OUI:D8EB97* - ID_OUI_FROM_DATABASE=TRENDnet, Inc. - -+OUI:D8EE78* -+ ID_OUI_FROM_DATABASE=Moog Protokraft -+ - OUI:D8F0F2* - ID_OUI_FROM_DATABASE=Zeebo Inc - -+OUI:D8FC93* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:D8FE8F* - ID_OUI_FROM_DATABASE=IDFone Co., Ltd. - -@@ -66499,6 +67504,9 @@ OUI:DC0265* - OUI:DC028E* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:DC052F* -+ ID_OUI_FROM_DATABASE=National Products Inc. -+ - OUI:DC0575* - ID_OUI_FROM_DATABASE=SIEMENS ENERGY AUTOMATION - -@@ -66619,6 +67627,9 @@ OUI:DC86D8* - OUI:DC9B1E* - ID_OUI_FROM_DATABASE=Intercom, Inc. - -+OUI:DC9B9C* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:DC9C52* - ID_OUI_FROM_DATABASE=Sapphire Technology Limited. - -@@ -66670,6 +67681,9 @@ OUI:DCC101* - OUI:DCC422* - ID_OUI_FROM_DATABASE=Systembase Limited - -+OUI:DCC793* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:DCCBA8* - ID_OUI_FROM_DATABASE=Explora Technologies Inc - -@@ -66703,6 +67717,9 @@ OUI:DCDECA* - OUI:DCE2AC* - ID_OUI_FROM_DATABASE=Lumens Digital Optics Inc. - -+OUI:DCE578* -+ ID_OUI_FROM_DATABASE=Experimental Factory of Scientific Engineering and Special Design Department -+ - OUI:DCE71C* - ID_OUI_FROM_DATABASE=AUG Elektronik GmbH - -@@ -66781,6 +67798,9 @@ OUI:E03005* - OUI:E031D0* - ID_OUI_FROM_DATABASE=SZ Telstar CO., LTD - -+OUI:E036E3* -+ ID_OUI_FROM_DATABASE=Stage One International Co., Ltd. -+ - OUI:E039D7* - ID_OUI_FROM_DATABASE=Plexxi, Inc. - -@@ -66793,6 +67813,9 @@ OUI:E03E4A* - OUI:E03E7D* - ID_OUI_FROM_DATABASE=data-complex GmbH - -+OUI:E03F49* -+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -+ - OUI:E0469A* - ID_OUI_FROM_DATABASE=NETGEAR - -@@ -66841,6 +67864,9 @@ OUI:E0757D* - OUI:E07C62* - ID_OUI_FROM_DATABASE=Whistle Labs, Inc. - -+OUI:E07F53* -+ ID_OUI_FROM_DATABASE=TECHBOARD SRL -+ - OUI:E07F88* - ID_OUI_FROM_DATABASE=EVIDENCE Network SIA - -@@ -66967,6 +67993,9 @@ OUI:E0D10A* - OUI:E0D1E6* - ID_OUI_FROM_DATABASE=Aliph dba Jawbone - -+OUI:E0D31A* -+ ID_OUI_FROM_DATABASE=EQUES Technology Co., Limited -+ - OUI:E0D7BA* - ID_OUI_FROM_DATABASE=Texas Instruments - -@@ -66979,6 +68008,9 @@ OUI:E0DADC* - OUI:E0DB55* - ID_OUI_FROM_DATABASE=Dell Inc - -+OUI:E0DB88* -+ ID_OUI_FROM_DATABASE=Open Standard Digital-IF Interface for SATCOM Systems -+ - OUI:E0DCA0* - ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch - -@@ -67030,6 +68062,9 @@ OUI:E40439* - OUI:E4115B* - ID_OUI_FROM_DATABASE=Hewlett Packard - -+OUI:E4121D* -+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -+ - OUI:E41289* - ID_OUI_FROM_DATABASE=topsystem Systemhaus GmbH - -@@ -67093,6 +68128,9 @@ OUI:E446BD* - OUI:E448C7* - ID_OUI_FROM_DATABASE=Cisco SPVTG - -+OUI:E44C6C* -+ ID_OUI_FROM_DATABASE=Shenzhen Guo Wei Electronic Co,. Ltd. -+ - OUI:E44E18* - ID_OUI_FROM_DATABASE=Gardasoft VisionLimited - -@@ -67144,6 +68182,9 @@ OUI:E47CF9* - OUI:E47D5A* - ID_OUI_FROM_DATABASE=Beijing Hanbang Technology Corp. - -+OUI:E48184* -+ ID_OUI_FROM_DATABASE=Alcatel-Lucent -+ - OUI:E481B3* - ID_OUI_FROM_DATABASE=Shenzhen ACT Industrial Co.,Ltd. - -@@ -67267,6 +68308,9 @@ OUI:E8056D* - OUI:E80688* - ID_OUI_FROM_DATABASE=Apple - -+OUI:E8088B* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:E80B13* - ID_OUI_FROM_DATABASE=Akib Systems Taiwan, INC - -@@ -67285,6 +68329,9 @@ OUI:E81132* - OUI:E81324* - ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD - -+OUI:E817FC* -+ ID_OUI_FROM_DATABASE=NIFTY Corporation -+ - OUI:E82877* - ID_OUI_FROM_DATABASE=TMY Co., Ltd. - -@@ -67363,6 +68410,9 @@ OUI:E85E53* - OUI:E8611F* - ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd - -+OUI:E8617E* -+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation -+ - OUI:E86183* - ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC - -@@ -67438,6 +68488,9 @@ OUI:E8A4C1* - OUI:E8ABFA* - ID_OUI_FROM_DATABASE=Shenzhen Reecam Tech.Ltd. - -+OUI:E8B1FC* -+ ID_OUI_FROM_DATABASE=Intel Corporate -+ - OUI:E8B4AE* - ID_OUI_FROM_DATABASE=Shenzhen C&D Electronics Co.,Ltd - -@@ -67519,6 +68572,9 @@ OUI:E8E776* - OUI:E8E875* - ID_OUI_FROM_DATABASE=iS5 Communications Inc. - -+OUI:E8EA6A* -+ ID_OUI_FROM_DATABASE=StarTech.com -+ - OUI:E8EADA* - ID_OUI_FROM_DATABASE=Denkovi Assembly Electroncs LTD - -@@ -67534,6 +68590,9 @@ OUI:E8F226* - OUI:E8F928* - ID_OUI_FROM_DATABASE=RFTECH SRL - -+OUI:E8FC60* -+ ID_OUI_FROM_DATABASE=ELCOM Innovations Private Limited -+ - OUI:EC0ED6* - ID_OUI_FROM_DATABASE=ITECH INSTRUMENTS SAS - -@@ -67756,6 +68815,12 @@ OUI:ECF236* - OUI:ECF35B* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:ECF4BB* -+ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test -+ -+OUI:ECF72B* -+ ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD. -+ - OUI:ECFAAA* - ID_OUI_FROM_DATABASE=The IMS Company - -@@ -67783,6 +68848,9 @@ OUI:F008F1* - OUI:F013C3* - ID_OUI_FROM_DATABASE=SHENZHEN FENDA TECHNOLOGY CO., LTD - -+OUI:F015A0* -+ ID_OUI_FROM_DATABASE=KyungDong One Co., Ltd. -+ - OUI:F01C13* - ID_OUI_FROM_DATABASE=LG Electronics - -@@ -67822,12 +68890,21 @@ OUI:F02A61* - OUI:F02FD8* - ID_OUI_FROM_DATABASE=Bi2-Vision - -+OUI:F0321A* -+ ID_OUI_FROM_DATABASE=Mita-Teknik A/S -+ - OUI:F037A1* - ID_OUI_FROM_DATABASE=Huike Electronics (SHENZHEN) CO., LTD. - -+OUI:F03A4B* -+ ID_OUI_FROM_DATABASE=Bloombase, Inc. -+ - OUI:F03A55* - ID_OUI_FROM_DATABASE=Omega Elektronik AS - -+OUI:F03FF8* -+ ID_OUI_FROM_DATABASE=R L Drake -+ - OUI:F04335* - ID_OUI_FROM_DATABASE=DVN(Shanghai)Ltd. - -@@ -67900,12 +68977,18 @@ OUI:F07F0C* - OUI:F081AF* - ID_OUI_FROM_DATABASE=IRZ AUTOMATION TECHNOLOGIES LTD - -+OUI:F08261* -+ ID_OUI_FROM_DATABASE=SAGEMCOM -+ - OUI:F0842F* - ID_OUI_FROM_DATABASE=ADB Broadband Italia - - OUI:F084C9* - ID_OUI_FROM_DATABASE=zte corporation - -+OUI:F08A28* -+ ID_OUI_FROM_DATABASE=JIANGSU HENGSION ELECTRONIC S and T CO.,LTD -+ - OUI:F08BFE* - ID_OUI_FROM_DATABASE=COSTEL.,CO.LTD - -@@ -67990,6 +69073,9 @@ OUI:F0DA7C* - OUI:F0DB30* - ID_OUI_FROM_DATABASE=Yottabyte - -+OUI:F0DBF8* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:F0DCE2* - ID_OUI_FROM_DATABASE=Apple - -@@ -68029,6 +69115,9 @@ OUI:F0F260* - OUI:F0F5AE* - ID_OUI_FROM_DATABASE=Adaptrum Inc. - -+OUI:F0F61C* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:F0F644* - ID_OUI_FROM_DATABASE=Whitesky Science & Technology Co.,Ltd. - -@@ -68089,6 +69178,9 @@ OUI:F42896* - OUI:F436E1* - ID_OUI_FROM_DATABASE=Abilis Systems SARL - -+OUI:F437B7* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:F43814* - ID_OUI_FROM_DATABASE=Shanghai Howell Electronic Co.,Ltd - -@@ -68191,6 +69283,9 @@ OUI:F48771* - OUI:F48E09* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:F490CA* -+ ID_OUI_FROM_DATABASE=Tensorcom -+ - OUI:F490EA* - ID_OUI_FROM_DATABASE=Deciso B.V. - -@@ -68221,9 +69316,15 @@ OUI:F4B164* - OUI:F4B381* - ID_OUI_FROM_DATABASE=WindowMaster A/S - -+OUI:F4B52F* -+ ID_OUI_FROM_DATABASE=Juniper networks -+ - OUI:F4B549* - ID_OUI_FROM_DATABASE=Yeastar Technology Co., Ltd. - -+OUI:F4B6E5* -+ ID_OUI_FROM_DATABASE=TerraSem Co.,Ltd -+ - OUI:F4B72A* - ID_OUI_FROM_DATABASE=TIME INTERCONNECT LTD - -@@ -68251,6 +69352,9 @@ OUI:F4CD90* - OUI:F4CE46* - ID_OUI_FROM_DATABASE=Hewlett-Packard Company - -+OUI:F4CFE2* -+ ID_OUI_FROM_DATABASE=Cisco -+ - OUI:F4D9FB* - ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD - -@@ -68260,6 +69364,9 @@ OUI:F4DC4D* - OUI:F4DCDA* - ID_OUI_FROM_DATABASE=Zhuhai Jiahe Communication Technology Co., limited - -+OUI:F4DCF9* -+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd -+ - OUI:F4E142* - ID_OUI_FROM_DATABASE=Delta Elektronika BV - -@@ -68413,6 +69520,9 @@ OUI:F8572E* - OUI:F85BC9* - ID_OUI_FROM_DATABASE=M-Cube Spa - -+OUI:F85C45* -+ ID_OUI_FROM_DATABASE=IC Nexus Co. Ltd. -+ - OUI:F85F2A* - ID_OUI_FROM_DATABASE=Nokia Corporation - -@@ -68494,6 +69604,9 @@ OUI:F8A45F* - OUI:F8A963* - ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. - -+OUI:F8A9D0* -+ ID_OUI_FROM_DATABASE=LG Electronics -+ - OUI:F8A9DE* - ID_OUI_FROM_DATABASE=PUISSANCE PLUS - -@@ -68566,6 +69679,9 @@ OUI:F8DC7A* - OUI:F8DFA8* - ID_OUI_FROM_DATABASE=ZTE Corporation - -+OUI:F8E079* -+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC -+ - OUI:F8E4FB* - ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc - -@@ -68581,6 +69697,9 @@ OUI:F8EA0A* - OUI:F8EDA5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -+OUI:F8F005* -+ ID_OUI_FROM_DATABASE=Newport Media Inc. -+ - OUI:F8F014* - ID_OUI_FROM_DATABASE=RackWare Inc. - -@@ -68623,12 +69742,18 @@ OUI:FC01CD* - OUI:FC0647* - ID_OUI_FROM_DATABASE=Cortland Research, LLC - -+OUI:FC07A0* -+ ID_OUI_FROM_DATABASE=LRE Medical GmbH -+ - OUI:FC0877* - ID_OUI_FROM_DATABASE=Prentke Romich Company - - OUI:FC09D8* - ID_OUI_FROM_DATABASE=ACTEON Group - -+OUI:FC09F6* -+ ID_OUI_FROM_DATABASE=GUANGDONG TONZE ELECTRIC CO.,LTD -+ - OUI:FC0A81* - ID_OUI_FROM_DATABASE=Motorola Solutions Inc. - -@@ -68641,6 +69766,15 @@ OUI:FC10BD* - OUI:FC1186* - ID_OUI_FROM_DATABASE=Logic3 plc - -+OUI:FC1349* -+ ID_OUI_FROM_DATABASE=Global Apps Corp. -+ -+OUI:FC15B4* -+ ID_OUI_FROM_DATABASE=Hewlett Packard -+ -+OUI:FC1607* -+ ID_OUI_FROM_DATABASE=Taian Technology(Wuxi) Co.,Ltd. -+ - OUI:FC1794* - ID_OUI_FROM_DATABASE=InterCreative Co., Ltd - -@@ -68668,6 +69802,9 @@ OUI:FC229C* - OUI:FC253F* - ID_OUI_FROM_DATABASE=Apple - -+OUI:FC27A2* -+ ID_OUI_FROM_DATABASE=TRANS ELECTRIC CO., LTD. -+ - OUI:FC2A54* - ID_OUI_FROM_DATABASE=Connected Data, Inc. - -@@ -68761,6 +69898,9 @@ OUI:FC8E7E* - OUI:FC8FC4* - ID_OUI_FROM_DATABASE=Intelligent Technology Inc. - -+OUI:FC923B* -+ ID_OUI_FROM_DATABASE=Nokia Corporation -+ - OUI:FC946C* - ID_OUI_FROM_DATABASE=UBIVELOX - -@@ -68791,6 +69931,9 @@ OUI:FCAF6A* - OUI:FCB0C4* - ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd - -+OUI:FCBBA1* -+ ID_OUI_FROM_DATABASE=Shenzhen Minicreate Technology Co.,Ltd -+ - OUI:FCC23D* - ID_OUI_FROM_DATABASE=Atmel Corporation - -@@ -68851,6 +69994,9 @@ OUI:FCF528* - OUI:FCF8AE* - ID_OUI_FROM_DATABASE=Intel Corporate - -+OUI:FCF8B7* -+ ID_OUI_FROM_DATABASE=TRONTEQ Electronic -+ - OUI:FCFAF7* - ID_OUI_FROM_DATABASE=Shanghai Baud Data Communication Co.,Ltd. - -diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb -index 289f81c..6142dc8 100644 ---- a/hwdb/20-pci-vendor-model.hwdb -+++ b/hwdb/20-pci-vendor-model.hwdb -@@ -917,6 +917,9 @@ pci:v00001000d0000005Bsv00001028sd00001F37* - pci:v00001000d0000005Bsv00001028sd00001F38* - ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics) - -+pci:v00001000d0000005Bsv00008086sd00003510* -+ ID_MODEL_FROM_DATABASE=RMS25PB080 RAID Controller -+ - pci:v00001000d0000005Bsv00008086sd00003513* - ID_MODEL_FROM_DATABASE=RMS25CB080 RAID Controller - -@@ -4203,7 +4206,7 @@ pci:v00001002d00006631* - ID_MODEL_FROM_DATABASE=Oland - - pci:v00001002d00006640* -- ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M] -+ ID_MODEL_FROM_DATABASE=Saturn XT [FirePro M6100] - - pci:v00001002d00006641* - ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M] -@@ -4248,7 +4251,10 @@ pci:v00001002d00006660* - ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M] - - pci:v00001002d00006663* -- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M] -+ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M] -+ -+pci:v00001002d00006663sv00001025sd00000846* -+ ID_MODEL_FROM_DATABASE=Radeon HD 8570A - - pci:v00001002d00006664* - ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series] -@@ -4904,12 +4910,18 @@ pci:v00001002d00006758sv0000174Bsd00007670* - pci:v00001002d00006758sv0000174Bsd0000E181* - ID_MODEL_FROM_DATABASE=Radeon HD 6670 - -+pci:v00001002d00006758sv00001787sd00002309* -+ ID_MODEL_FROM_DATABASE=Radeon HD 6670 -+ - pci:v00001002d00006759* -- ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570] -+ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] - - pci:v00001002d00006759sv0000103Csd00003130* - ID_MODEL_FROM_DATABASE=Radeon HD 6570 - -+pci:v00001002d00006759sv00001043sd00000403* -+ ID_MODEL_FROM_DATABASE=Radeon HD 6570 -+ - pci:v00001002d00006759sv00001462sd00002500* - ID_MODEL_FROM_DATABASE=Radeon HD 6570 - -@@ -4925,6 +4937,9 @@ pci:v00001002d00006759sv00001642sd00003A67* - pci:v00001002d00006759sv00001682sd00003280* - ID_MODEL_FROM_DATABASE=Radeon HD 7570 - -+pci:v00001002d00006759sv00001682sd00003530* -+ ID_MODEL_FROM_DATABASE=Radeon HD 8550 -+ - pci:v00001002d00006759sv0000174Bsd00007570* - ID_MODEL_FROM_DATABASE=Radeon HD 7570 - -@@ -5585,6 +5600,9 @@ pci:v00001002d00006779sv0000103Csd00002128* - pci:v00001002d00006779sv0000103Csd00002AEE* - ID_MODEL_FROM_DATABASE=Radeon HD 7450A - -+pci:v00001002d00006779sv00001462sd00002125* -+ ID_MODEL_FROM_DATABASE=Radeon HD 6450 -+ - pci:v00001002d00006779sv00001462sd00002346* - ID_MODEL_FROM_DATABASE=Radeon HD 7450 - -@@ -5813,6 +5831,15 @@ pci:v00001002d000067A1* - pci:v00001002d000067A2* - ID_MODEL_FROM_DATABASE=Hawaii GL - -+pci:v00001002d000067A8* -+ ID_MODEL_FROM_DATABASE=Hawaii -+ -+pci:v00001002d000067A9* -+ ID_MODEL_FROM_DATABASE=Hawaii -+ -+pci:v00001002d000067AA* -+ ID_MODEL_FROM_DATABASE=Hawaii -+ - pci:v00001002d000067B0* - ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] - -@@ -5907,7 +5934,7 @@ pci:v00001002d00006821sv00001002sd0000031E* - ID_MODEL_FROM_DATABASE=FirePro SX4000 - - pci:v00001002d00006822* -- ID_MODEL_FROM_DATABASE=Venus PRO -+ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860] - - pci:v00001002d00006823* - ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M] -@@ -7463,6 +7490,9 @@ pci:v00001002d000068F9sv0000103Csd00002AAE* - pci:v00001002d000068F9sv0000103Csd00003580* - ID_MODEL_FROM_DATABASE=Radeon HD 5450 - -+pci:v00001002d000068F9sv00001043sd00000386* -+ ID_MODEL_FROM_DATABASE=Radeon HD 5450 -+ - pci:v00001002d000068F9sv00001043sd000003C2* - ID_MODEL_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP) - -@@ -8834,9 +8864,18 @@ pci:v00001002d00009901* - pci:v00001002d00009902* - ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller - -+pci:v00001002d00009902sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001002d00009903* - ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G] - -+pci:v00001002d00009903sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ -+pci:v00001002d00009903sv0000103Csd00001952* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001002d00009904* - ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7560D] - -@@ -10964,6 +11003,9 @@ pci:v00001022d00007801* - pci:v00001022d00007801sv0000103Csd0000168B* - ID_MODEL_FROM_DATABASE=ProBook 4535s Notebook - -+pci:v00001022d00007801sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d00007802* - ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] - -@@ -10982,27 +11024,45 @@ pci:v00001022d00007806* - pci:v00001022d00007807* - ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller - -+pci:v00001022d00007807sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d00007808* - ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller - -+pci:v00001022d00007808sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d00007809* - ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller - -+pci:v00001022d00007809sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d0000780B* - ID_MODEL_FROM_DATABASE=FCH SMBus Controller - -+pci:v00001022d0000780Bsv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d0000780C* - ID_MODEL_FROM_DATABASE=FCH IDE Controller - - pci:v00001022d0000780D* - ID_MODEL_FROM_DATABASE=FCH Azalia Controller - -+pci:v00001022d0000780Dsv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d0000780Dsv00001043sd00008444* - ID_MODEL_FROM_DATABASE=F2A85-M Series - - pci:v00001022d0000780E* - ID_MODEL_FROM_DATABASE=FCH LPC Bridge - -+pci:v00001022d0000780Esv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d0000780F* - ID_MODEL_FROM_DATABASE=FCH PCI Bridge - -@@ -11015,11 +11075,41 @@ pci:v00001022d00007813* - pci:v00001022d00007814* - ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller - -+pci:v00001022d00007814sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v00001022d00007900* -- ID_MODEL_FROM_DATABASE=CZ SATA Controller [IDE mode] -+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [IDE mode] -+ -+pci:v00001022d00007901* -+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] -+ -+pci:v00001022d00007902* -+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] -+ -+pci:v00001022d00007903* -+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] -+ -+pci:v00001022d00007904* -+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] -+ -+pci:v00001022d00007906* -+ ID_MODEL_FROM_DATABASE=FCH SD Flash Controller -+ -+pci:v00001022d00007908* -+ ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller - - pci:v00001022d0000790B* -- ID_MODEL_FROM_DATABASE=CZ SMBus Controller -+ ID_MODEL_FROM_DATABASE=FCH SMBus Controller -+ -+pci:v00001022d0000790E* -+ ID_MODEL_FROM_DATABASE=FCH LPC Bridge -+ -+pci:v00001022d0000790F* -+ ID_MODEL_FROM_DATABASE=FCH PCI Bridge -+ -+pci:v00001022d00007914* -+ ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller - - pci:v00001022d00009600* - ID_MODEL_FROM_DATABASE=RS780 Host Bridge -@@ -23672,6 +23762,21 @@ pci:v000010DEd000005E6* - pci:v000010DEd000005E7* - ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] - -+pci:v000010DEd000005E7sv000010DEsd00000595* -+ ID_MODEL_FROM_DATABASE=Tesla T10 Processor -+ -+pci:v000010DEd000005E7sv000010DEsd0000068F* -+ ID_MODEL_FROM_DATABASE=Tesla T10 Processor -+ -+pci:v000010DEd000005E7sv000010DEsd00000697* -+ ID_MODEL_FROM_DATABASE=Tesla M1060 -+ -+pci:v000010DEd000005E7sv000010DEsd00000714* -+ ID_MODEL_FROM_DATABASE=Tesla M1060 -+ -+pci:v000010DEd000005E7sv000010DEsd00000743* -+ ID_MODEL_FROM_DATABASE=Tesla M1060 -+ - pci:v000010DEd000005EA* - ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260] - -@@ -23732,6 +23837,9 @@ pci:v000010DEd00000608* - pci:v000010DEd00000609* - ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS] - -+pci:v000010DEd00000609sv0000106Bsd000000A7* -+ ID_MODEL_FROM_DATABASE=GeForce 8800 GS -+ - pci:v000010DEd0000060A* - ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 280M] - -@@ -23864,6 +23972,9 @@ pci:v000010DEd0000062D* - pci:v000010DEd0000062E* - ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] - -+pci:v000010DEd0000062Esv0000106Bsd00000605* -+ ID_MODEL_FROM_DATABASE=GeForce GT 130 -+ - pci:v000010DEd0000062F* - ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 S] - -@@ -23921,6 +24032,9 @@ pci:v000010DEd00000648* - pci:v000010DEd00000649* - ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT] - -+pci:v000010DEd00000649sv00001043sd0000202D* -+ ID_MODEL_FROM_DATABASE=GeForce GT 220M -+ - pci:v000010DEd0000064A* - ID_MODEL_FROM_DATABASE=G96M [GeForce 9700M GT] - -@@ -23942,12 +24056,21 @@ pci:v000010DEd00000651* - pci:v000010DEd00000652* - ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M] - -+pci:v000010DEd00000652sv0000152Dsd00000850* -+ ID_MODEL_FROM_DATABASE=GeForce GT 240M LE -+ - pci:v000010DEd00000653* - ID_MODEL_FROM_DATABASE=G96M [GeForce GT 120M] - - pci:v000010DEd00000654* - ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M] - -+pci:v000010DEd00000654sv00001043sd000014A2* -+ ID_MODEL_FROM_DATABASE=GeForce GT 320M -+ -+pci:v000010DEd00000654sv00001043sd000014D2* -+ ID_MODEL_FROM_DATABASE=GeForce GT 320M -+ - pci:v000010DEd00000655* - ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120] - -@@ -24098,6 +24221,9 @@ pci:v000010DEd000006E7* - pci:v000010DEd000006E8* - ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS] - -+pci:v000010DEd000006E8sv0000103Csd0000360B* -+ ID_MODEL_FROM_DATABASE=GeForce 9200M GE -+ - pci:v000010DEd000006E9* - ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS] - -@@ -24596,6 +24722,9 @@ pci:v000010DEd000007FEsv00001019sd0000297A* - pci:v000010DEd000007FEsv00001AFAsd00007150* - ID_MODEL_FROM_DATABASE=JW-IN7150-HD - -+pci:v000010DEd00000840* -+ ID_MODEL_FROM_DATABASE=C77 [GeForce 8200M] -+ - pci:v000010DEd00000844* - ID_MODEL_FROM_DATABASE=C77 [GeForce 9100M G] - -@@ -24665,6 +24794,9 @@ pci:v000010DEd00000865* - pci:v000010DEd00000866* - ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G] - -+pci:v000010DEd00000866sv0000106Bsd000000B1* -+ ID_MODEL_FROM_DATABASE=GeForce 9400M -+ - pci:v000010DEd00000867* - ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] - -@@ -24746,6 +24878,9 @@ pci:v000010DEd0000087E* - pci:v000010DEd0000087F* - ID_MODEL_FROM_DATABASE=ION LE VGA - -+pci:v000010DEd000008A0* -+ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] -+ - pci:v000010DEd000008A2* - ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] - -@@ -24755,6 +24890,9 @@ pci:v000010DEd000008A3* - pci:v000010DEd000008A4* - ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] - -+pci:v000010DEd000008A5* -+ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] -+ - pci:v000010DEd00000A20* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220] - -@@ -24875,6 +25013,9 @@ pci:v000010DEd00000A73* - pci:v000010DEd00000A74* - ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M] - -+pci:v000010DEd00000A74sv00001B0Asd0000903A* -+ ID_MODEL_FROM_DATABASE=GeForce G210 -+ - pci:v000010DEd00000A75* - ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M] - -@@ -24986,6 +25127,9 @@ pci:v000010DEd00000A7Asv00001462sd0000AC82* - pci:v000010DEd00000A7Asv00001462sd0000AE33* - ID_MODEL_FROM_DATABASE=GeForce 405 - -+pci:v000010DEd00000A7Asv00001642sd00003980* -+ ID_MODEL_FROM_DATABASE=GeForce 405 -+ - pci:v000010DEd00000A7Asv000017AAsd00003950* - ID_MODEL_FROM_DATABASE=GeForce 405M - -@@ -24995,6 +25139,9 @@ pci:v000010DEd00000A7Asv000017AAsd0000397D* - pci:v000010DEd00000A7Asv00001B0Asd00002091* - ID_MODEL_FROM_DATABASE=GeForce 315M - -+pci:v000010DEd00000A7Asv00001B0Asd000090B4* -+ ID_MODEL_FROM_DATABASE=GeForce 405 -+ - pci:v000010DEd00000A7Asv00001BFDsd00000003* - ID_MODEL_FROM_DATABASE=GeForce 405 - -@@ -25266,7 +25413,7 @@ pci:v000010DEd00000AD8* - ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode) - - pci:v000010DEd00000BE2* -- ID_MODEL_FROM_DATABASE=High Definition Audio Controller -+ ID_MODEL_FROM_DATABASE=GT216 HDMI Audio Controller - - pci:v000010DEd00000BE2sv00001043sd00008311* - ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 -@@ -25460,12 +25607,42 @@ pci:v000010DEd00000DE4* - pci:v000010DEd00000DE5* - ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 530] - -+pci:v000010DEd00000DE7* -+ ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 610] -+ - pci:v000010DEd00000DE8* - ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 620M] - - pci:v000010DEd00000DE9* - ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] - -+pci:v000010DEd00000DE9sv00001025sd00000692* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd00000725* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd00000728* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd0000072B* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd0000072E* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd00000753* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv00001025sd00000754* -+ ID_MODEL_FROM_DATABASE=GeForce GT 620M -+ -+pci:v000010DEd00000DE9sv000017AAsd00003977* -+ ID_MODEL_FROM_DATABASE=GeForce GT 640M LE -+ -+pci:v000010DEd00000DE9sv00001B0Asd00002210* -+ ID_MODEL_FROM_DATABASE=GeForce GT 635M -+ - pci:v000010DEd00000DEA* - ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] - -@@ -25514,6 +25691,12 @@ pci:v000010DEd00000DF3* - pci:v000010DEd00000DF4* - ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M] - -+pci:v000010DEd00000DF4sv0000152Dsd00000952* -+ ID_MODEL_FROM_DATABASE=GeForce GT 630M -+ -+pci:v000010DEd00000DF4sv0000152Dsd00000953* -+ ID_MODEL_FROM_DATABASE=GeForce GT 630M -+ - pci:v000010DEd00000DF5* - ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M] - -@@ -25610,6 +25793,9 @@ pci:v000010DEd00000FC6sv00001043sd00008428* - pci:v000010DEd00000FCD* - ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M] - -+pci:v000010DEd00000FCE* -+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M LE] -+ - pci:v000010DEd00000FD1* - ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] - -@@ -25667,6 +25853,9 @@ pci:v000010DEd00000FE0* - pci:v000010DEd00000FE1* - ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 730M] - -+pci:v000010DEd00000FE2* -+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M] -+ - pci:v000010DEd00000FE3* - ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M] - -@@ -25688,6 +25877,12 @@ pci:v000010DEd00000FE7* - pci:v000010DEd00000FE7sv000010DEsd0000101E* - ID_MODEL_FROM_DATABASE=GRID K100 - -+pci:v000010DEd00000FE9* -+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M Mac Edition] -+ -+pci:v000010DEd00000FEA* -+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M Mac Edition] -+ - pci:v000010DEd00000FEF* - ID_MODEL_FROM_DATABASE=GK107GL [GRID K340] - -@@ -25739,6 +25934,15 @@ pci:v000010DEd00001003* - pci:v000010DEd00001004* - ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780] - -+pci:v000010DEd00001004sv00003842sd00000784* -+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 SC w/ ACX Cooler] -+ -+pci:v000010DEd00001004sv00003842sd00001784* -+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler] -+ -+pci:v000010DEd00001004sv00003842sd00001788* -+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler] -+ - pci:v000010DEd00001005* - ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] - -@@ -25763,6 +25967,9 @@ pci:v000010DEd00001005sv00003842sd00002794* - pci:v000010DEd00001005sv00003842sd00002795* - ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature - -+pci:v000010DEd0000100A* -+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Ti] -+ - pci:v000010DEd0000101F* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20] - -@@ -25775,15 +25982,24 @@ pci:v000010DEd00001021* - pci:v000010DEd00001022* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c] - -+pci:v000010DEd00001023* -+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40m] -+ - pci:v000010DEd00001024* -- ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c] -+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40c] - - pci:v000010DEd00001026* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s] - -+pci:v000010DEd00001027* -+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40st] -+ - pci:v000010DEd00001028* - ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20m] - -+pci:v000010DEd00001029* -+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40s] -+ - pci:v000010DEd0000103A* - ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000] - -@@ -25832,6 +26048,12 @@ pci:v000010DEd00001057* - pci:v000010DEd00001058* - ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] - -+pci:v000010DEd00001058sv0000103Csd00002AED* -+ ID_MODEL_FROM_DATABASE=GeForce 610 -+ -+pci:v000010DEd00001058sv0000103Csd00002AF1* -+ ID_MODEL_FROM_DATABASE=GeForce 610 -+ - pci:v000010DEd00001058sv00001043sd000010AC* - ID_MODEL_FROM_DATABASE=GeForce GT 610M - -@@ -25841,6 +26063,9 @@ pci:v000010DEd00001058sv00001043sd000010BC* - pci:v000010DEd00001058sv00001043sd00001652* - ID_MODEL_FROM_DATABASE=GeForce GT 610M - -+pci:v000010DEd00001059* -+ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] -+ - pci:v000010DEd0000105A* - ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] - -@@ -25904,6 +26129,12 @@ pci:v000010DEd00001091sv000010DEsd0000088E* - pci:v000010DEd00001091sv000010DEsd00000891* - ID_MODEL_FROM_DATABASE=Tesla X2090 - -+pci:v000010DEd00001091sv000010DEsd00000974* -+ ID_MODEL_FROM_DATABASE=Tesla X2090 -+ -+pci:v000010DEd00001091sv000010DEsd0000098D* -+ ID_MODEL_FROM_DATABASE=Tesla X2090 -+ - pci:v000010DEd00001094* - ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075] - -@@ -25941,7 +26172,7 @@ pci:v000010DEd000010D8* - ID_MODEL_FROM_DATABASE=GT218 [NVS 300] - - pci:v000010DEd00001140* -- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M / GT 620M/625M/630M/720M] -+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] - - pci:v000010DEd00001140sv00001025sd00000600* - ID_MODEL_FROM_DATABASE=GeForce GT 620M -@@ -26081,6 +26312,9 @@ pci:v000010DEd00001140sv00001028sd00000554* - pci:v000010DEd00001140sv00001028sd00000557* - ID_MODEL_FROM_DATABASE=GeForce GT 620M - -+pci:v000010DEd00001140sv00001028sd00000562* -+ ID_MODEL_FROM_DATABASE=GeForce GT 625M -+ - pci:v000010DEd00001140sv00001028sd00000565* - ID_MODEL_FROM_DATABASE=GeForce GT 630M - -@@ -26111,6 +26345,12 @@ pci:v000010DEd00001140sv00001028sd000005B3* - pci:v000010DEd00001140sv00001028sd000005DA* - ID_MODEL_FROM_DATABASE=GeForce GT 630M - -+pci:v000010DEd00001140sv00001028sd000005DE* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ -+pci:v000010DEd00001140sv00001028sd000005E0* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv00001028sd000005E8* - ID_MODEL_FROM_DATABASE=GeForce GT 630M - -@@ -26156,6 +26396,9 @@ pci:v000010DEd00001140sv00001043sd0000126D* - pci:v000010DEd00001140sv00001043sd0000131D* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -+pci:v000010DEd00001140sv00001043sd000013FD* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv00001043sd000014C7* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -@@ -26189,6 +26432,9 @@ pci:v000010DEd00001140sv00001043sd0000224A* - pci:v000010DEd00001140sv00001043sd00008595* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -+pci:v000010DEd00001140sv00001072sd0000152D* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv000010CFsd000017F5* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -@@ -26291,6 +26537,9 @@ pci:v000010DEd00001140sv0000144Dsd0000C709* - pci:v000010DEd00001140sv0000144Dsd0000C711* - ID_MODEL_FROM_DATABASE=GeForce 710M - -+pci:v000010DEd00001140sv0000144Dsd0000C736* -+ ID_MODEL_FROM_DATABASE=GeForce 710M -+ - pci:v000010DEd00001140sv00001462sd000010B8* - ID_MODEL_FROM_DATABASE=GeForce GT 710M - -@@ -26303,6 +26552,9 @@ pci:v000010DEd00001140sv00001462sd0000AA33* - pci:v000010DEd00001140sv00001462sd0000AAA2* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -+pci:v000010DEd00001140sv00001462sd0000AAA3* -+ ID_MODEL_FROM_DATABASE=GeForce 820M -+ - pci:v000010DEd00001140sv00001462sd0000AE71* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -@@ -26315,15 +26567,30 @@ pci:v000010DEd00001140sv0000152Dsd00000982* - pci:v000010DEd00001140sv0000152Dsd00000983* - ID_MODEL_FROM_DATABASE=GeForce GT 630M - -+pci:v000010DEd00001140sv0000152Dsd00001012* -+ ID_MODEL_FROM_DATABASE=GeForce 710M -+ - pci:v000010DEd00001140sv0000152Dsd00001030* - ID_MODEL_FROM_DATABASE=GeForce GT 630M - - pci:v000010DEd00001140sv0000152Dsd00001055* - ID_MODEL_FROM_DATABASE=GeForce 710M - -+pci:v000010DEd00001140sv0000152Dsd00001067* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ -+pci:v000010DEd00001140sv0000152Dsd00001072* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv000017AAsd00002200* - ID_MODEL_FROM_DATABASE=NVS 5200M - -+pci:v000010DEd00001140sv000017AAsd00002213* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ -+pci:v000010DEd00001140sv000017AAsd00002220* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv000017AAsd00003656* - ID_MODEL_FROM_DATABASE=GeForce GT 620M - -@@ -26369,6 +26636,9 @@ pci:v000010DEd00001140sv000017AAsd00003977* - pci:v000010DEd00001140sv000017AAsd00003983* - ID_MODEL_FROM_DATABASE=GeForce 610M - -+pci:v000010DEd00001140sv000017AAsd00005001* -+ ID_MODEL_FROM_DATABASE=GeForce 610M -+ - pci:v000010DEd00001140sv000017AAsd00005003* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -@@ -26414,18 +26684,33 @@ pci:v000010DEd00001140sv000017AAsd0000502E* - pci:v000010DEd00001140sv000017AAsd0000502F* - ID_MODEL_FROM_DATABASE=GeForce GT 720M - -+pci:v000010DEd00001140sv000017AAsd0000503E* -+ ID_MODEL_FROM_DATABASE=GeForce 710M -+ -+pci:v000010DEd00001140sv000017AAsd0000503F* -+ ID_MODEL_FROM_DATABASE=GeForce 820M -+ - pci:v000010DEd00001140sv00001854sd00000177* - ID_MODEL_FROM_DATABASE=GeForce 710M - - pci:v000010DEd00001140sv00001854sd00000180* - ID_MODEL_FROM_DATABASE=GeForce 710M - -+pci:v000010DEd00001140sv00001854sd00000190* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ -+pci:v000010DEd00001140sv00001854sd00000192* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001140sv00001B0Asd000020DD* - ID_MODEL_FROM_DATABASE=GeForce GT 620M - - pci:v000010DEd00001140sv00001B0Asd000020DF* - ID_MODEL_FROM_DATABASE=GeForce GT 620M - -+pci:v000010DEd00001140sv00001B0Asd00002202* -+ ID_MODEL_FROM_DATABASE=GeForce GT 720M -+ - pci:v000010DEd00001180* - ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] - -@@ -26484,10 +26769,10 @@ pci:v000010DEd00001193* - ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM] - - pci:v000010DEd0000119D* -- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M] -+ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M Mac Edition] - - pci:v000010DEd0000119E* -- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M] -+ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M Mac Edition] - - pci:v000010DEd0000119F* - ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M] -@@ -27210,32 +27495,23 @@ pci:v000010EC* - ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd. - - pci:v000010ECd00000139* -- ID_MODEL_FROM_DATABASE=Zonet Zen3200 -- --pci:v000010ECd00000880* -- ID_MODEL_FROM_DATABASE=Realtek 880 High Definition Audio -- --pci:v000010ECd00000883* -- ID_MODEL_FROM_DATABASE=Realtek 883 High Definition Audio -- --pci:v000010ECd00000885* -- ID_MODEL_FROM_DATABASE=Realtek 885 High Definition Audio -- --pci:v000010ECd00000888* -- ID_MODEL_FROM_DATABASE=Realtek 888 High Definition Audio -- --pci:v000010ECd00000892* -- ID_MODEL_FROM_DATABASE=Realtek 892 High Definition Audio -+ ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ Ethernet Controller - - pci:v000010ECd00005209* - ID_MODEL_FROM_DATABASE=RTS5209 PCI Express Card Reader - -+pci:v000010ECd00005227* -+ ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader -+ - pci:v000010ECd00005229* - ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader - - pci:v000010ECd00005229sv00001025sd00000813* - ID_MODEL_FROM_DATABASE=Aspire R7-571 - -+pci:v000010ECd00005229sv0000103Csd0000194E* -+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook -+ - pci:v000010ECd00005288* - ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader - -@@ -27449,6 +27725,9 @@ pci:v000010ECd00008168* - pci:v000010ECd00008168sv00001019sd00008168* - ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller - -+pci:v000010ECd00008168sv00001028sd00000283* -+ ID_MODEL_FROM_DATABASE=Vostro 220 -+ - pci:v000010ECd00008168sv00001028sd000004B2* - ID_MODEL_FROM_DATABASE=Vostro 3350 - -@@ -27458,6 +27737,9 @@ pci:v000010ECd00008168sv00001028sd000004DA* - pci:v000010ECd00008168sv0000103Csd00001611* - ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 - -+pci:v000010ECd00008168sv0000103Csd00001950* -+ ID_MODEL_FROM_DATABASE=ProBook 450/455 -+ - pci:v000010ECd00008168sv00001043sd000011F5* - ID_MODEL_FROM_DATABASE=A6J-Q008 - -@@ -27617,6 +27899,9 @@ pci:v000010ECd00008199sv00001462sd00006894* - pci:v000010ECd00008723* - ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter - -+pci:v000010ECd0000B723* -+ ID_MODEL_FROM_DATABASE=RTL8723BE PCIe Wireless Network Adapter -+ - pci:v000010ED* - ID_VENDOR_FROM_DATABASE=Ascii Corporation - -@@ -31562,6 +31847,15 @@ pci:v00001137d00000042* - pci:v00001137d00000042sv00001137sd00000047* - ID_MODEL_FROM_DATABASE=VIC P81E PCIe Management Controller - -+pci:v00001137d00000042sv00001137sd00000085* -+ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Management Controller -+ -+pci:v00001137d00000042sv00001137sd000000CD* -+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Management Controller -+ -+pci:v00001137d00000042sv00001137sd000000CE* -+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Management Controller -+ - pci:v00001137d00000043* - ID_MODEL_FROM_DATABASE=VIC Ethernet NIC - -@@ -31580,6 +31874,12 @@ pci:v00001137d00000043sv00001137sd00000084* - pci:v00001137d00000043sv00001137sd00000085* - ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC - -+pci:v00001137d00000043sv00001137sd000000CD* -+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC -+ -+pci:v00001137d00000043sv00001137sd000000CE* -+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC -+ - pci:v00001137d00000044* - ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic - -@@ -31598,6 +31898,12 @@ pci:v00001137d00000044sv00001137sd00000084* - pci:v00001137d00000044sv00001137sd00000085* - ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic - -+pci:v00001137d00000044sv00001137sd000000CD* -+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC Dynamic -+ -+pci:v00001137d00000044sv00001137sd000000CE* -+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC Dynamic -+ - pci:v00001137d00000045* - ID_MODEL_FROM_DATABASE=VIC FCoE HBA - -@@ -31610,18 +31916,24 @@ pci:v00001137d00000045sv00001137sd00000048* - pci:v00001137d00000045sv00001137sd0000004F* - ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA - -+pci:v00001137d00000045sv00001137sd00000084* -+ ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA -+ -+pci:v00001137d00000045sv00001137sd00000085* -+ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCoE HBA -+ -+pci:v00001137d00000045sv00001137sd000000CD* -+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe FCoE HBA -+ -+pci:v00001137d00000045sv00001137sd000000CE* -+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe FCoE HBA -+ - pci:v00001137d0000004E* - ID_MODEL_FROM_DATABASE=VIC 82 PCIe Upstream Port - - pci:v00001137d00000071* - ID_MODEL_FROM_DATABASE=VIC SR-IOV VF - --pci:v00001137d00000084* -- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA -- --pci:v00001137d00000085* -- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCOE HBA -- - pci:v00001137d000000CF* - ID_MODEL_FROM_DATABASE=VIC Userspace NIC - -@@ -35087,6 +35399,15 @@ pci:v000011F8d00007384* - pci:v000011F8d00008000* - ID_MODEL_FROM_DATABASE=PM8000 [SPC - SAS Protocol Controller] - -+pci:v000011F8d00008032* -+ ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN -+ -+pci:v000011F8d00008032sv0000117Csd0000003B* -+ ID_MODEL_FROM_DATABASE=Celerity FC-82EN Fibre Channel Adapter -+ -+pci:v000011F8d00008032sv0000117Csd0000003C* -+ ID_MODEL_FROM_DATABASE=Celerity FC-84EN Fibre Channel Adapter -+ - pci:v000011F9* - ID_VENDOR_FROM_DATABASE=I-Cube Inc - -@@ -42029,6 +42350,24 @@ pci:v0000144C* - pci:v0000144D* - ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd - -+pci:v0000144Dd00001600* -+ ID_MODEL_FROM_DATABASE=Apple PCIe SSD -+ -+pci:v0000144Dd0000A800* -+ ID_MODEL_FROM_DATABASE=XP941 PCIe SSD -+ -+pci:v0000144Dd0000A820* -+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X -+ -+pci:v0000144Dd0000A820sv00001028sd00001F95* -+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 400GB -+ -+pci:v0000144Dd0000A820sv00001028sd00001F96* -+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 800GB -+ -+pci:v0000144Dd0000A820sv00001028sd00001F97* -+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 1600GB -+ - pci:v0000144E* - ID_VENDOR_FROM_DATABASE=OLITEC - -@@ -42527,6 +42866,9 @@ pci:v000014C2* - pci:v000014C3* - ID_VENDOR_FROM_DATABASE=MEDIATEK Corp. - -+pci:v000014C3d00007630* -+ ID_MODEL_FROM_DATABASE=MT7630e 802.11bgn Wireless Network Adapter -+ - pci:v000014C4* - ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd - -@@ -46334,6 +46676,9 @@ pci:v000015ADd000007B0* - pci:v000015ADd000007C0* - ID_MODEL_FROM_DATABASE=PVSCSI SCSI Controller - -+pci:v000015ADd000007E0* -+ ID_MODEL_FROM_DATABASE=SATA AHCI controller -+ - pci:v000015ADd00000801* - ID_MODEL_FROM_DATABASE=Virtual Machine Interface - -@@ -46623,11 +46968,17 @@ pci:v000015BCd00000103* - ID_MODEL_FROM_DATABASE=QX4 PCI Express quad 4-gigabit Fibre Channel controller - - pci:v000015BCd00000105* -- ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter -+ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES - - pci:v000015BCd00000105sv0000117Csd00000022* - ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter - -+pci:v000015BCd00000105sv0000117Csd00000025* -+ ID_MODEL_FROM_DATABASE=Celerity FC-44ES Fibre Channel Adapter -+ -+pci:v000015BCd00000105sv0000117Csd00000026* -+ ID_MODEL_FROM_DATABASE=Celerity FC-42ES Fibre Channel Adapter -+ - pci:v000015BCd00001100* - ID_MODEL_FROM_DATABASE=E8001-66442 PCI Express CIC - -@@ -48215,6 +48566,9 @@ pci:v0000170C* - pci:v00001719* - ID_VENDOR_FROM_DATABASE=EZChip Technologies - -+pci:v00001719d00001000* -+ ID_MODEL_FROM_DATABASE=NPA Access Network Processor Family -+ - pci:v00001725* - ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor - -@@ -49040,9 +49394,15 @@ pci:v00001814d00003092* - pci:v00001814d00003290* - ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe - -+pci:v00001814d00003290sv0000103Csd000018EC* -+ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter -+ - pci:v00001814d00003298* - ID_MODEL_FROM_DATABASE=RT3290 Bluetooth - -+pci:v00001814d00003298sv0000103Csd000018EC* -+ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter -+ - pci:v00001814d00003592* - ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe - -@@ -51299,6 +51659,9 @@ pci:v00001B4Bd00009172* - pci:v00001B4Bd0000917A* - ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller - -+pci:v00001B4Bd00009183* -+ ID_MODEL_FROM_DATABASE=88SS9183 PCIe SSD Controller -+ - pci:v00001B4Bd00009192* - ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller - -@@ -51455,9 +51818,27 @@ pci:v00001C1Cd00000001* - pci:v00001C2C* - ID_VENDOR_FROM_DATABASE=Fiberblaze - -+pci:v00001C2Cd0000000A* -+ ID_MODEL_FROM_DATABASE=Capture -+ -+pci:v00001C2Cd0000000F* -+ ID_MODEL_FROM_DATABASE=SmartNIC -+ -+pci:v00001C2Cd000000A0* -+ ID_MODEL_FROM_DATABASE=FBC4G Capture 4x1Gb -+ -+pci:v00001C2Cd000000A1* -+ ID_MODEL_FROM_DATABASE=FBC4XG Capture 4x10Gb -+ -+pci:v00001C2Cd000000A2* -+ ID_MODEL_FROM_DATABASE=FBC8XG Capture 8x10Gb -+ - pci:v00001C32* - ID_VENDOR_FROM_DATABASE=Highland Technology, Inc. - -+pci:v00001C33* -+ ID_VENDOR_FROM_DATABASE=Daktronics, Inc -+ - pci:v00001C3B* - ID_VENDOR_FROM_DATABASE=Accensus, LLC - -@@ -51503,6 +51884,9 @@ pci:v00001CE4d00000001* - pci:v00001CE4d00000002* - ID_MODEL_FROM_DATABASE=ExaNIC X2 - -+pci:v00001CF7* -+ ID_VENDOR_FROM_DATABASE=Subspace Dynamics -+ - pci:v00001D44* - ID_VENDOR_FROM_DATABASE=DPT - -@@ -54284,6 +54668,81 @@ pci:v00008086d000008B4sv00008086sd00008270* - pci:v00008086d000008CF* - ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller - -+pci:v00008086d0000095A* -+ ID_MODEL_FROM_DATABASE=Wireless 7265 -+ -+pci:v00008086d0000095Asv00008086sd00001010* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005000* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005002* -+ ID_MODEL_FROM_DATABASE=Wireless-N 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005010* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005020* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 -+ -+pci:v00008086d0000095Asv00008086sd0000502A* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005090* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005110* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005400* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005410* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005420* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 -+ -+pci:v00008086d0000095Asv00008086sd00005490* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00009010* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00009210* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Asv00008086sd00009410* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095B* -+ ID_MODEL_FROM_DATABASE=Wireless 7265 -+ -+pci:v00008086d0000095Bsv00008086sd0000500A* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005012* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005200* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005202* -+ ID_MODEL_FROM_DATABASE=Wireless-N 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005210* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005290* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005302* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ -+pci:v00008086d0000095Bsv00008086sd00005310* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ - pci:v00008086d00000960* - ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge - -@@ -54299,6 +54758,9 @@ pci:v00008086d00000A04* - pci:v00008086d00000A06* - ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -+pci:v00008086d00000A0C* -+ ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller -+ - pci:v00008086d00000A16* - ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -@@ -57332,6 +57794,12 @@ pci:v00008086d00001521sv00001028sd00001F62* - pci:v00008086d00001521sv0000103Csd000017D1* - ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter - -+pci:v00008086d00001521sv0000103Csd00002003* -+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 367i Adapter -+ -+pci:v00008086d00001521sv0000103Csd00002226* -+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 1-port 364i Adapter -+ - pci:v00008086d00001521sv0000103Csd0000337F* - ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter - -@@ -57407,6 +57875,9 @@ pci:v00008086d00001523sv0000103Csd00001784* - pci:v00008086d00001523sv0000103Csd000018D1* - ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter - -+pci:v00008086d00001523sv0000103Csd00001989* -+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 363i Adapter -+ - pci:v00008086d00001523sv0000103Csd0000339F* - ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter - -@@ -57584,6 +58055,9 @@ pci:v00008086d00001560* - pci:v00008086d0000157B* - ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection - -+pci:v00008086d0000157C* -+ ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection -+ - pci:v00008086d000015A0* - ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM - -@@ -58448,6 +58922,9 @@ pci:v00008086d00001E2Dsv00001849sd00001E2D* - pci:v00008086d00001E31* - ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller - -+pci:v00008086d00001E31sv0000103Csd000017AB* -+ ID_MODEL_FROM_DATABASE=ProBook 6570b -+ - pci:v00008086d00001E31sv00001043sd00001477* - ID_MODEL_FROM_DATABASE=N56VZ - -@@ -58748,7 +59225,7 @@ pci:v00008086d00001F3F* - pci:v00008086d00001F40* - ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane - --pci:v00008086d00001F40sv00001028sd000010F1* -+pci:v00008086d00001F40sv00001028sd000005F1* - ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane - - pci:v00008086d00001F41* -@@ -65144,6 +65621,9 @@ pci:v00008086d00002E17* - pci:v00008086d00002E20* - ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller - -+pci:v00008086d00002E20sv00001028sd00000283* -+ ID_MODEL_FROM_DATABASE=Dell Vostro 220 -+ - pci:v00008086d00002E20sv00001043sd000082D3* - ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard - -@@ -67689,7 +68169,7 @@ pci:v00008086d00004227* - ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection - - pci:v00008086d00004227sv00008086sd00001011* -- ID_MODEL_FROM_DATABASE=ThinkPad R60e/X60s -+ ID_MODEL_FROM_DATABASE=ThinkPad T60/R60e/X60s - - pci:v00008086d00004227sv00008086sd00001014* - ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection -@@ -69155,6 +69635,111 @@ pci:v00008086d00009C65* - pci:v00008086d00009C66* - ID_MODEL_FROM_DATABASE=Lynx Point-LP SPI Controller #1 - -+pci:v00008086d00009C83* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [AHCI Mode] -+ -+pci:v00008086d00009C85* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode] -+ -+pci:v00008086d00009C87* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode] -+ -+pci:v00008086d00009C8F* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode] -+ -+pci:v00008086d00009C90* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #1 -+ -+pci:v00008086d00009C92* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #2 -+ -+pci:v00008086d00009C94* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #3 -+ -+pci:v00008086d00009C96* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #4 -+ -+pci:v00008086d00009C98* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #5 -+ -+pci:v00008086d00009C9A* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #6 -+ -+pci:v00008086d00009CA0* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP High Definition Audio Controller -+ -+pci:v00008086d00009CA2* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SMBus Controller -+ -+pci:v00008086d00009CA4* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Thermal Management Controller -+ -+pci:v00008086d00009CA6* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB EHCI Controller -+ -+pci:v00008086d00009CB1* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB xHCI Controller -+ -+pci:v00008086d00009CB5* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Secure Digital IO Controller -+ -+pci:v00008086d00009CB6* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Smart Sound Technology Controller -+ -+pci:v00008086d00009CBA* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #1 -+ -+pci:v00008086d00009CBB* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #2 -+ -+pci:v00008086d00009CBC* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP IDE-r Controller -+ -+pci:v00008086d00009CBD* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP KT Controller -+ -+pci:v00008086d00009CC1* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC2* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC3* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC5* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC6* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC7* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CC9* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller -+ -+pci:v00008086d00009CE0* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO DMA Controller -+ -+pci:v00008086d00009CE1* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #0 -+ -+pci:v00008086d00009CE2* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #1 -+ -+pci:v00008086d00009CE3* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #0 -+ -+pci:v00008086d00009CE4* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #1 -+ -+pci:v00008086d00009CE5* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #0 -+ -+pci:v00008086d00009CE6* -+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #1 -+ - pci:v00008086d0000A000* - ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge - -@@ -70691,6 +71276,24 @@ pci:v0000BDBDd0000A11E* - pci:v0000BDBDd0000A121* - ID_MODEL_FROM_DATABASE=DeckLink HD Extreme 3D/3D+ - -+pci:v0000BDBDd0000A124* -+ ID_MODEL_FROM_DATABASE=Intensity Extreme -+ -+pci:v0000BDBDd0000A126* -+ ID_MODEL_FROM_DATABASE=Intensity Shuttle -+ -+pci:v0000BDBDd0000A127* -+ ID_MODEL_FROM_DATABASE=UltraStudio Express -+ -+pci:v0000BDBDd0000A129* -+ ID_MODEL_FROM_DATABASE=UltraStudio Mini Monitor -+ -+pci:v0000BDBDd0000A12A* -+ ID_MODEL_FROM_DATABASE=UltraStudio Mini Recorder -+ -+pci:v0000BDBDd0000A12D* -+ ID_MODEL_FROM_DATABASE=UltraStudio 4K -+ - pci:v0000BDBDd0000A12E* - ID_MODEL_FROM_DATABASE=DeckLink 4K Extreme - -@@ -70700,6 +71303,9 @@ pci:v0000BDBDd0000A12F* - pci:v0000BDBDd0000A130* - ID_MODEL_FROM_DATABASE=DeckLink Mini Recorder - -+pci:v0000BDBDd0000A132* -+ ID_MODEL_FROM_DATABASE=UltraStudio 4K -+ - pci:v0000C001* - ID_VENDOR_FROM_DATABASE=TSI Telsys - -@@ -70860,7 +71466,7 @@ pci:v0000DCBA* - ID_VENDOR_FROM_DATABASE=Dynamic Engineering - - pci:v0000DCBAd00000046* -- ID_MODEL_FROM_DATABASE=PCIeAlteraCycloneIV -+ ID_MODEL_FROM_DATABASE=PCIe Altera Cyclone IV - - pci:v0000DCBAd00000047* - ID_MODEL_FROM_DATABASE=VPX-RCB -@@ -70868,6 +71474,15 @@ pci:v0000DCBAd00000047* - pci:v0000DCBAd00000048* - ID_MODEL_FROM_DATABASE=PMC-Biserial-III-BAE9 - -+pci:v0000DCBAd0000004E* -+ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY5 -+ -+pci:v0000DCBAd0000004F* -+ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY6 -+ -+pci:v0000DCBAd00000052* -+ ID_MODEL_FROM_DATABASE=PCIeBiSerialDb37 BA22 LVDS IO -+ - pci:v0000DD01* - ID_VENDOR_FROM_DATABASE=Digital Devices GmbH - -diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb -index da8385e..6663820 100644 ---- a/hwdb/20-usb-vendor-model.hwdb -+++ b/hwdb/20-usb-vendor-model.hwdb -@@ -53,6 +53,12 @@ usb:v017C* - usb:v017Cp145F* - ID_MODEL_FROM_DATABASE=Trust Deskset - -+usb:v0200* -+ ID_VENDOR_FROM_DATABASE=TP-Link -+ -+usb:v0200p0201* -+ ID_MODEL_FROM_DATABASE=MA180 UMTS Modem -+ - usb:v0204* - ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd - -@@ -515,6 +521,12 @@ usb:v03F0p0417* - usb:v03F0p0423* - ID_MODEL_FROM_DATABASE=HS-COMBO Cardreader - -+usb:v03F0p042A* -+ ID_MODEL_FROM_DATABASE=LaserJet M1132 MFP -+ -+usb:v03F0p0441* -+ ID_MODEL_FROM_DATABASE=HP Prime Calculator -+ - usb:v03F0p0504* - ID_MODEL_FROM_DATABASE=DeskJet 885c - -@@ -957,7 +969,7 @@ usb:v03F0p2317* - ID_MODEL_FROM_DATABASE=LaserJet 4350 - - usb:v03F0p231D* -- ID_MODEL_FROM_DATABASE=4 GB Flash Drive -+ ID_MODEL_FROM_DATABASE=Broadcom 2070 Bluetooth Combo - - usb:v03F0p2402* - ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series -@@ -1214,6 +1226,9 @@ usb:v03F0p3B17* - usb:v03F0p3C02* - ID_MODEL_FROM_DATABASE=PhotoSmart 7350 - -+usb:v03F0p3C05* -+ ID_MODEL_FROM_DATABASE=Scanjet Professional 1000 Mobile Scanner -+ - usb:v03F0p3C11* - ID_MODEL_FROM_DATABASE=PSC 1358 - -@@ -2018,6 +2033,9 @@ usb:v0403p8040* - usb:v0403p8070* - ID_MODEL_FROM_DATABASE=7 Port Hub - -+usb:v0403p8140* -+ ID_MODEL_FROM_DATABASE=Vehicle Explorer Interface -+ - usb:v0403p8210* - ID_MODEL_FROM_DATABASE=MGTimer - MGCC (Vic) Timing System - -@@ -2036,6 +2054,12 @@ usb:v0403p8A28* - usb:v0403p8A98* - ID_MODEL_FROM_DATABASE=TIAO Multi-Protocol Adapter - -+usb:v0403p9133* -+ ID_MODEL_FROM_DATABASE=CallerID -+ -+usb:v0403p9135* -+ ID_MODEL_FROM_DATABASE=Rotary Pub alarm -+ - usb:v0403p9E90* - ID_MODEL_FROM_DATABASE=Marvell OpenRD Base/Client - -@@ -2978,6 +3002,9 @@ usb:v040Ap6005* - usb:v040B* - ID_VENDOR_FROM_DATABASE=Weltrend Semiconductor - -+usb:v040Bp0A68* -+ ID_MODEL_FROM_DATABASE=Func MS-3 gaming mouse [WT6573F MCU] -+ - usb:v040Bp6510* - ID_MODEL_FROM_DATABASE=Weltrend Bar Code Reader - -@@ -3662,6 +3689,9 @@ usb:v041Ep4057* - usb:v041Ep4058* - ID_MODEL_FROM_DATABASE=Live! Cam Optia AF - -+usb:v041Ep405F* -+ ID_MODEL_FROM_DATABASE=WebCam Vista (VF0330) -+ - usb:v041Ep4061* - ID_MODEL_FROM_DATABASE=Live! Cam Notebook Pro [VF0400] - -@@ -5255,6 +5285,9 @@ usb:v0457p0162* - usb:v0457p0163* - ID_MODEL_FROM_DATABASE=802.11 Wireless LAN Adapter - -+usb:v0457p0817* -+ ID_MODEL_FROM_DATABASE=SiS-184-ASUS-4352.17 touch panel -+ - usb:v0457p5401* - ID_MODEL_FROM_DATABASE=Wireless Adapter RO80211GS-USB - -@@ -5531,6 +5564,9 @@ usb:v0458p7079* - usb:v0458p707F* - ID_MODEL_FROM_DATABASE=TVGo DVB-T03 [RTL2832] - -+usb:v0458p7088* -+ ID_MODEL_FROM_DATABASE=WideCam 1050 -+ - usb:v0459* - ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc. - -@@ -6401,6 +6437,9 @@ usb:v045Ep0772* - usb:v045Ep0779* - ID_MODEL_FROM_DATABASE=LifeCam HD-3000 - -+usb:v045Ep0797* -+ ID_MODEL_FROM_DATABASE=Optical Mouse 200 -+ - usb:v045Ep930A* - ID_MODEL_FROM_DATABASE=ISOUSB.SYS Intel 82930 Isochronous IO Test Board - -@@ -6624,7 +6663,7 @@ usb:v046A* - ID_VENDOR_FROM_DATABASE=Cherry GmbH - - usb:v046Ap0001* -- ID_MODEL_FROM_DATABASE=My3000 Keyboard -+ ID_MODEL_FROM_DATABASE=Keyboard - - usb:v046Ap0003* - ID_MODEL_FROM_DATABASE=My3000 Hub -@@ -8504,6 +8543,9 @@ usb:v0480pA006* - usb:v0480pA007* - ID_MODEL_FROM_DATABASE=External Disk USB 3.0 - -+usb:v0480pD010* -+ ID_MODEL_FROM_DATABASE=External Disk 3TB -+ - usb:v0481* - ID_VENDOR_FROM_DATABASE=Zenith Data Systems - -@@ -8597,6 +8639,9 @@ usb:v0483p5001* - usb:v0483p5710* - ID_MODEL_FROM_DATABASE=Joystick in FS Mode - -+usb:v0483p5720* -+ ID_MODEL_FROM_DATABASE=STM microSD Flash Device -+ - usb:v0483p5721* - ID_MODEL_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator - -@@ -8693,6 +8738,12 @@ usb:v048Dp9009* - usb:v048Dp9135* - ID_MODEL_FROM_DATABASE=Zolid Mini DVB-T Stick - -+usb:v048Dp9503* -+ ID_MODEL_FROM_DATABASE=ITE it9503 feature-limited DVB-T transmission chip [ccHDtv] -+ -+usb:v048Dp9507* -+ ID_MODEL_FROM_DATABASE=ITE it9507 full featured DVB-T transmission chip [ccHDtv] -+ - usb:v048F* - ID_VENDOR_FROM_DATABASE=Eicon Tech. - -@@ -10937,9 +10988,21 @@ usb:v04A9p3260* - usb:v04A9p3264* - ID_MODEL_FROM_DATABASE=PowerShot A1400 - -+usb:v04A9p3265* -+ ID_MODEL_FROM_DATABASE=Powershot ELPH 130 IS / IXUS 140 -+ - usb:v04A9p3268* - ID_MODEL_FROM_DATABASE=PowerShot ELPH 330 HS / IXUS 255 HS - -+usb:v04A9p3271* -+ ID_MODEL_FROM_DATABASE=PowerShot A2500 -+ -+usb:v04A9p3276* -+ ID_MODEL_FROM_DATABASE=PowerShot SX170 IS -+ -+usb:v04A9p327D* -+ ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132 -+ - usb:v04AA* - ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd - -@@ -11162,6 +11225,9 @@ usb:v04B0p0425* - usb:v04B0p0428* - ID_MODEL_FROM_DATABASE=D7000 - -+usb:v04B0p0429* -+ ID_MODEL_FROM_DATABASE=D5100 -+ - usb:v04B0p042A* - ID_MODEL_FROM_DATABASE=D800 (ptp) - -@@ -12806,6 +12872,9 @@ usb:v04D9p1503* - usb:v04D9p1603* - ID_MODEL_FROM_DATABASE=Keyboard - -+usb:v04D9p1702* -+ ID_MODEL_FROM_DATABASE=Keyboard LKS02 -+ - usb:v04D9p2013* - ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard] - -@@ -12821,6 +12890,9 @@ usb:v04D9p2519* - usb:v04D9p2832* - ID_MODEL_FROM_DATABASE=1channel Telephone line recorder - -+usb:v04D9p2834* -+ ID_MODEL_FROM_DATABASE=HT82A834R Audio MCU -+ - usb:v04D9pA055* - ID_MODEL_FROM_DATABASE=Keyboard - -@@ -14252,6 +14324,9 @@ usb:v04F2pB354* - usb:v04F3* - ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. - -+usb:v04F3p000A* -+ ID_MODEL_FROM_DATABASE=Touchscreen -+ - usb:v04F3p0103* - ID_MODEL_FROM_DATABASE=ActiveJet K-2024 Multimedia Keyboard - -@@ -15302,6 +15377,12 @@ usb:v050Dp1102* - usb:v050Dp1103* - ID_MODEL_FROM_DATABASE=F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] - -+usb:v050Dp1106* -+ ID_MODEL_FROM_DATABASE=F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] -+ -+usb:v050Dp1109* -+ ID_MODEL_FROM_DATABASE=F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] -+ - usb:v050Dp11F2* - ID_MODEL_FROM_DATABASE=ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] - -@@ -16514,6 +16595,9 @@ usb:v054Cp0485* - usb:v054Cp04CB* - ID_MODEL_FROM_DATABASE=WALKMAN NWZ-E354 - -+usb:v054Cp06BB* -+ ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805 -+ - usb:v054Cp1000* - ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver - -@@ -47582,6 +47666,15 @@ usb:v2101* - usb:v2101p0201* - ID_MODEL_FROM_DATABASE=SIIG 4-to-2 Printer Switch - -+usb:v2149* -+ ID_VENDOR_FROM_DATABASE=Advanced Silicon S.A. -+ -+usb:v2149p211B* -+ ID_MODEL_FROM_DATABASE=Touchscreen Controller -+ -+usb:v2149p2703* -+ ID_MODEL_FROM_DATABASE=TS58xxA/TC56xxA [CoolTouch] -+ - usb:v2162* - ID_VENDOR_FROM_DATABASE=Creative (?) - -@@ -47636,6 +47729,21 @@ usb:v2227* - usb:v2227p3105* - ID_MODEL_FROM_DATABASE=SKYDATA SKD-U100 - -+usb:v2232* -+ ID_VENDOR_FROM_DATABASE=Silicon Motion -+ -+usb:v2232p1005* -+ ID_MODEL_FROM_DATABASE=WebCam SCB-0385N -+ -+usb:v2232p1028* -+ ID_MODEL_FROM_DATABASE=WebCam SC-03FFL11939N -+ -+usb:v2232p1029* -+ ID_MODEL_FROM_DATABASE=WebCam SC-13HDL11939N -+ -+usb:v2232p1037* -+ ID_MODEL_FROM_DATABASE=WebCam SC-03FFM12339N -+ - usb:v2233* - ID_VENDOR_FROM_DATABASE=RadioShack Corporation - diff --git a/0192-delta-replace-readdir_r-with-readdir.patch b/0192-delta-replace-readdir_r-with-readdir.patch deleted file mode 100644 index 0ebc7d7..0000000 --- a/0192-delta-replace-readdir_r-with-readdir.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 3c0667a5ed5bc7043499f176d68f77dea6bae944 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Thu, 19 Dec 2013 11:16:12 +0100 -Subject: [PATCH] delta: replace readdir_r with readdir - ---- - src/delta/delta.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/delta/delta.c b/src/delta/delta.c -index b3272d9..fd024fc 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -280,13 +280,13 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - - for (;;) { - struct dirent *de; -- union dirent_storage buf; - int k; - char *p; - -- k = readdir_r(d, &buf.de, &de); -- if (k != 0) -- return -k; -+ errno = 0; -+ de = readdir(d); -+ if (!de && errno != 0) -+ return -errno; - - if (!de) - break; diff --git a/0193-delta-fix-delta-for-drop-ins.patch b/0193-delta-fix-delta-for-drop-ins.patch deleted file mode 100644 index 94b5a5d..0000000 --- a/0193-delta-fix-delta-for-drop-ins.patch +++ /dev/null @@ -1,375 +0,0 @@ -From e0902bd55deee738f3d6e33b8744364ef922caa2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 22 Dec 2013 19:45:02 -0500 -Subject: [PATCH] delta: fix delta for drop-ins - -Also, fix highlighting, add more debug statements, make const tables -static and global, run path_kill_slashes only at entry. - -Conflicts: - src/delta/delta.c ---- - src/delta/delta.c | 174 +++++++++++++++++++++++++----------------------------- - 1 file changed, 79 insertions(+), 95 deletions(-) - -diff --git a/src/delta/delta.c b/src/delta/delta.c -index fd024fc..e97f2e9 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -33,6 +33,34 @@ - #include "build.h" - #include "strv.h" - -+static const char prefixes[] = -+ "/etc\0" -+ "/run\0" -+ "/usr/local/lib\0" -+ "/usr/local/share\0" -+ "/usr/lib\0" -+ "/usr/share\0" -+#ifdef HAVE_SPLIT_USR -+ "/lib\0" -+#endif -+ ; -+ -+static const char suffixes[] = -+ "sysctl.d\0" -+ "tmpfiles.d\0" -+ "modules-load.d\0" -+ "binfmt.d\0" -+ "systemd/system\0" -+ "systemd/user\0" -+ "systemd/system-preset\0" -+ "systemd/user-preset\0" -+ "udev/rules.d\0" -+ "modprobe.d\0"; -+ -+static const char have_dropins[] = -+ "systemd/system\0" -+ "systemd/user\0"; -+ - static bool arg_no_pager = false; - static int arg_diff = -1; - -@@ -48,6 +76,14 @@ static enum { - (SHOW_MASKED | SHOW_EQUIVALENT | SHOW_REDIRECTED | SHOW_OVERRIDDEN | SHOW_EXTENDED) - } arg_flags = 0; - -+static void pager_open_if_enabled(void) { -+ -+ if (arg_no_pager) -+ return; -+ -+ pager_open(false); -+} -+ - static int equivalent(const char *a, const char *b) { - _cleanup_free_ char *x = NULL, *y = NULL; - -@@ -76,7 +112,7 @@ static int notify_override_equivalent(const char *top, const char *bottom) { - return 0; - - printf("%s%s%s %s → %s\n", -- ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight(), top, bottom); -+ ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(), top, bottom); - return 1; - } - -@@ -160,24 +196,26 @@ static int found_override(const char *top, const char *bottom) { - } - - static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const char *toppath, const char *drop) { -- _cleanup_free_ char *conf = NULL; -+ _cleanup_free_ char *unit = NULL; - _cleanup_free_ char *path = NULL; - _cleanup_strv_free_ char **list = NULL; - char **file; - char *c; - int r; - -+ assert(!endswith(drop, "/")); -+ - path = strjoin(toppath, "/", drop, NULL); - if (!path) - return -ENOMEM; - -- path_kill_slashes(path); -+ log_debug("Looking at %s", path); - -- conf = strdup(drop); -- if (!conf) -+ unit = strdup(drop); -+ if (!unit) - return -ENOMEM; - -- c = strrchr(conf, '.'); -+ c = strrchr(unit, '.'); - if (!c) - return -EINVAL; - *c = 0; -@@ -200,35 +238,21 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const - p = strjoin(path, "/", *file, NULL); - if (!p) - return -ENOMEM; -+ d = p + strlen(toppath) + 1; - -- path_kill_slashes(p); -- -- d = strrchr(p, '/'); -- if (!d || d == p) { -- free(p); -- return -EINVAL; -- } -- d--; -- d = strrchr(p, '/'); -- -- if (!d || d == p) { -- free(p); -- return -EINVAL; -- } -- -+ log_debug("Adding at top: %s → %s", d, p); - k = hashmap_put(top, d, p); - if (k >= 0) { - p = strdup(p); - if (!p) - return -ENOMEM; -- d = strrchr(p, '/'); -- d--; -- d = strrchr(p, '/'); -+ d = p + strlen(toppath) + 1; - } else if (k != -EEXIST) { - free(p); - return k; - } - -+ log_debug("Adding at bottom: %s → %s", d, p); - free(hashmap_remove(bottom, d)); - k = hashmap_put(bottom, d, p); - if (k < 0) { -@@ -236,14 +260,14 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const - return k; - } - -- h = hashmap_get(drops, conf); -+ h = hashmap_get(drops, unit); - if (!h) { - h = hashmap_new(string_hash_func, string_compare_func); - if (!h) - return -ENOMEM; -- hashmap_put(drops, conf, h); -- conf = strdup(conf); -- if (!conf) -+ hashmap_put(drops, unit, h); -+ unit = strdup(unit); -+ if (!unit) - return -ENOMEM; - } - -@@ -251,7 +275,8 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const - if (!p) - return -ENOMEM; - -- k = hashmap_put(h, path_get_file_name(p), p); -+ log_debug("Adding to drops: %s → %s → %s", unit, basename(p), p); -+ k = hashmap_put(h, basename(p), p); - if (k < 0) { - free(p); - if (k != -EEXIST) -@@ -269,12 +294,14 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - assert(drops); - assert(path); - -+ log_debug("Looking at %s", path); -+ - d = opendir(path); - if (!d) { - if (errno == ENOENT) - return 0; - -- log_error("Failed to enumerate %s: %m", path); -+ log_error("Failed to open %s: %m", path); - return -errno; - } - -@@ -285,11 +312,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - - errno = 0; - de = readdir(d); -- if (!de && errno != 0) -- return -errno; -- - if (!de) -- break; -+ return -errno; - - if (dropins && de->d_type == DT_DIR && endswith(de->d_name, ".d")) - enumerate_dir_d(top, bottom, drops, path, de->d_name); -@@ -301,9 +325,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - if (!p) - return -ENOMEM; - -- path_kill_slashes(p); -- -- k = hashmap_put(top, path_get_file_name(p), p); -+ log_debug("Adding at top: %s → %s", basename(p), p); -+ k = hashmap_put(top, basename(p), p); - if (k >= 0) { - p = strdup(p); - if (!p) -@@ -313,44 +336,37 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - return k; - } - -- free(hashmap_remove(bottom, path_get_file_name(p))); -- k = hashmap_put(bottom, path_get_file_name(p), p); -+ log_debug("Adding at bottom: %s → %s", basename(p), p); -+ free(hashmap_remove(bottom, basename(p))); -+ k = hashmap_put(bottom, basename(p), p); - if (k < 0) { - free(p); - return k; - } - } -- -- return 0; - } - --static int process_suffix(const char *prefixes, const char *suffix, bool dropins) { -+static int process_suffix(const char *suffix) { - const char *p; - char *f; -- Hashmap *top, *bottom=NULL, *drops=NULL; -+ Hashmap *top, *bottom, *drops; - Hashmap *h; - char *key; - int r = 0, k; - Iterator i, j; - int n_found = 0; -+ bool dropins; - -- assert(prefixes); - assert(suffix); -+ assert(!startswith(suffix, "/")); -+ assert(!strstr(suffix, "//")); - -- top = hashmap_new(string_hash_func, string_compare_func); -- if (!top) { -- r = -ENOMEM; -- goto finish; -- } -+ dropins = nulstr_contains(have_dropins, suffix); - -+ top = hashmap_new(string_hash_func, string_compare_func); - bottom = hashmap_new(string_hash_func, string_compare_func); -- if (!bottom) { -- r = -ENOMEM; -- goto finish; -- } -- - drops = hashmap_new(string_hash_func, string_compare_func); -- if (!drops) { -+ if (!top || !bottom || !drops) { - r = -ENOMEM; - goto finish; - } -@@ -365,10 +381,8 @@ static int process_suffix(const char *prefixes, const char *suffix, bool dropins - } - - k = enumerate_dir(top, bottom, drops, t, dropins); -- if (k < 0) -+ if (r == 0) - r = k; -- -- log_debug("Looking at %s", t); - } - - HASHMAP_FOREACH_KEY(f, key, top, i) { -@@ -409,21 +423,20 @@ finish: - return r < 0 ? r : n_found; - } - --static int process_suffix_chop(const char *prefixes, const char *suffix, const char *have_dropins) { -+static int process_suffix_chop(const char *suffix) { - const char *p; - -- assert(prefixes); - assert(suffix); - - if (!path_is_absolute(suffix)) -- return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix)); -+ return process_suffix(suffix); - - /* Strip prefix from the suffix */ - NULSTR_FOREACH(p, prefixes) { - if (startswith(suffix, p)) { - suffix += strlen(p); - suffix += strspn(suffix, "/"); -- return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix)); -+ return process_suffix(suffix); - } - } - -@@ -548,35 +561,6 @@ static int parse_argv(int argc, char *argv[]) { - } - - int main(int argc, char *argv[]) { -- -- const char prefixes[] = -- "/etc\0" -- "/run\0" -- "/usr/local/lib\0" -- "/usr/local/share\0" -- "/usr/lib\0" -- "/usr/share\0" --#ifdef HAVE_SPLIT_USR -- "/lib\0" --#endif -- ; -- -- const char suffixes[] = -- "sysctl.d\0" -- "tmpfiles.d\0" -- "modules-load.d\0" -- "binfmt.d\0" -- "systemd/system\0" -- "systemd/user\0" -- "systemd/system-preset\0" -- "systemd/user-preset\0" -- "udev/rules.d\0" -- "modprobe.d\0"; -- -- const char have_dropins[] = -- "systemd/system\0" -- "systemd/user\0"; -- - int r = 0, k; - int n_found = 0; - -@@ -595,14 +579,14 @@ int main(int argc, char *argv[]) { - else if (arg_diff) - arg_flags |= SHOW_OVERRIDDEN; - -- if (!arg_no_pager) -- pager_open(false); -+ pager_open_if_enabled(); - - if (optind < argc) { - int i; - - for (i = optind; i < argc; i++) { -- k = process_suffix_chop(prefixes, argv[i], have_dropins); -+ path_kill_slashes(argv[i]); -+ k = process_suffix_chop(argv[i]); - if (k < 0) - r = k; - else -@@ -613,7 +597,7 @@ int main(int argc, char *argv[]) { - const char *n; - - NULSTR_FOREACH(n, suffixes) { -- k = process_suffix(prefixes, n, nulstr_contains(have_dropins, n)); -+ k = process_suffix(n); - if (k < 0) - r = k; - else diff --git a/0194-delta-if-prefix-is-specified-only-show-overrides-the.patch b/0194-delta-if-prefix-is-specified-only-show-overrides-the.patch deleted file mode 100644 index 23026ab..0000000 --- a/0194-delta-if-prefix-is-specified-only-show-overrides-the.patch +++ /dev/null @@ -1,251 +0,0 @@ -From 31ce1352b687551d62d3b7d4dc1276b2dff1d65a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 22 Dec 2013 22:53:23 -0500 -Subject: [PATCH] delta: if prefix is specified, only show overrides there - -systemd-delta /run/systemd/system will show all unit overrides -in /run, etc. ---- - man/systemd-delta.xml | 80 +++++++++++++++++++++++++++++++++++++++++---------- - src/delta/delta.c | 71 ++++++++++++++++++++++++++++----------------- - 2 files changed, 109 insertions(+), 42 deletions(-) - -diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml -index 413ebd8..4d3ab78 100644 ---- a/man/systemd-delta.xml -+++ b/man/systemd-delta.xml -@@ -49,7 +49,9 @@ - - - -- systemd-delta OPTIONS SUFFIX -+ systemd-delta -+ OPTIONS -+ PREFIX/SUFFIX|SUFFIX - - - -@@ -57,18 +59,46 @@ - Description - - systemd-delta may be used to -- identify and compare configuration files in -- /etc that override default -- counterparts in /usr. The command -- line argument can be one or more name of a subdirectories of -- /etc or -- /usr/lib to compare, such as -- tmpfiles.d, sysctl.d or -- systemd/system. -- -- When no argument is specified a number of -- well-known subdirectories are searched for overridden -- files. -+ identify and compare configuration files that override -+ other configuration files. Files in -+ /etc have highest priority, files -+ in /run have the second highest -+ priority, ..., files in /lib have -+ lowest priority. Files in a directory with higher -+ priority override files with the same name in -+ directories of lower priority. In addition, certain -+ configuration files can have .d -+ directories which contain "drop-in" files with -+ configuration snippets which augment the main -+ configuration file. "Drop-in" files can be overriden -+ in the same way by placing files with the same name in -+ a directory of higher priority (except that in case of -+ "drop-in" files, both the "drop-in" file name and the -+ name of the containing directory, which corresponds to -+ the name of the main configuration file, must match). -+ For a fuller explanation, see -+ systemd.unit5. -+ -+ -+ The command line argument will be split into a -+ prefix and a suffix. Either is optional. The prefix -+ must be one of the directories containing -+ configuration files (/etc, -+ /run, -+ /usr/lib, ...). If it is given, -+ only overriding files contained in this directory will -+ be shown. Otherwise, all overriding files will be -+ shown. The suffix must be a name of a subdirectory -+ containing configuration files like -+ tmpfiles.d, -+ sysctl.d or -+ systemd/system. If it is given, -+ only configuration files in this subdirectory (across -+ all configuration paths) will be analyzed. Otherwise, -+ all configuration files will be analyzed. If the -+ commandline argument is not given at all, all -+ configuration files will be analyzed. See below for -+ some examples. -
- - -@@ -168,9 +198,28 @@ - - - -- - - -+ -+ Examples -+ -+ To see all local configuration: -+ systemd-delta -+ -+ -+ To see all runtime configuration: -+ systemd-delta /run -+ -+ -+ To see all system unit configuration changes: -+ systemd-delta systemd/system -+ -+ -+ To see all runtime "drop-in" changes for system units: -+ systemd-delta --type=extended /run/systemd/system -+ -+ -+ - - Exit status - -@@ -181,7 +230,8 @@ - - See Also - -- systemd1 -+ systemd1, -+ systemd.unit5 - - - -diff --git a/src/delta/delta.c b/src/delta/delta.c -index e97f2e9..ae658f9 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -4,6 +4,7 @@ - This file is part of systemd. - - Copyright 2012 Lennart Poettering -+ Copyright 2013 Zbigniew Jędrzejewski-Szmek - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by -@@ -346,7 +347,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - } - } - --static int process_suffix(const char *suffix) { -+static int process_suffix(const char *suffix, const char *onlyprefix) { - const char *p; - char *f; - Hashmap *top, *bottom, *drops; -@@ -391,20 +392,23 @@ static int process_suffix(const char *suffix) { - o = hashmap_get(bottom, key); - assert(o); - -- if (path_equal(o, f)) -- notify_override_unchanged(f); -- else { -- k = found_override(f, o); -- if (k < 0) -- r = k; -- else -- n_found += k; -+ if (!onlyprefix || startswith(o, onlyprefix)) { -+ if (path_equal(o, f)) { -+ notify_override_unchanged(f); -+ } else { -+ k = found_override(f, o); -+ if (k < 0) -+ r = k; -+ else -+ n_found += k; -+ } - } - - h = hashmap_get(drops, key); - if (h) - HASHMAP_FOREACH(o, h, j) -- n_found += notify_override_extended(f, o); -+ if (!onlyprefix || startswith(o, onlyprefix)) -+ n_found += notify_override_extended(f, o); - } - - finish: -@@ -423,24 +427,41 @@ finish: - return r < 0 ? r : n_found; - } - --static int process_suffix_chop(const char *suffix) { -+static int process_suffixes(const char *onlyprefix) { -+ const char *n; -+ int n_found = 0, r; -+ -+ NULSTR_FOREACH(n, suffixes) { -+ r = process_suffix(n, onlyprefix); -+ if (r < 0) -+ return r; -+ else -+ n_found += r; -+ } -+ return n_found; -+} -+ -+static int process_suffix_chop(const char *arg) { - const char *p; - -- assert(suffix); -+ assert(arg); - -- if (!path_is_absolute(suffix)) -- return process_suffix(suffix); -+ if (!path_is_absolute(arg)) -+ return process_suffix(arg, NULL); - - /* Strip prefix from the suffix */ - NULSTR_FOREACH(p, prefixes) { -- if (startswith(suffix, p)) { -- suffix += strlen(p); -+ const char *suffix = startswith(arg, p); -+ if (suffix) { - suffix += strspn(suffix, "/"); -- return process_suffix(suffix); -+ if (*suffix) -+ return process_suffix(suffix, NULL); -+ else -+ return process_suffixes(arg); - } - } - -- log_error("Invalid suffix specification %s.", suffix); -+ log_error("Invalid suffix specification %s.", arg); - return -EINVAL; - } - -@@ -594,15 +615,11 @@ int main(int argc, char *argv[]) { - } - - } else { -- const char *n; -- -- NULSTR_FOREACH(n, suffixes) { -- k = process_suffix(n); -- if (k < 0) -- r = k; -- else -- n_found += k; -- } -+ k = process_suffixes(NULL); -+ if (k < 0) -+ r = k; -+ else -+ n_found += k; - } - - if (r >= 0) diff --git a/0195-log-log_error-and-friends-add-a-newline-after-each-l.patch b/0195-log-log_error-and-friends-add-a-newline-after-each-l.patch deleted file mode 100644 index e89402c..0000000 --- a/0195-log-log_error-and-friends-add-a-newline-after-each-l.patch +++ /dev/null @@ -1,1520 +0,0 @@ -From 316d1c573345d8d13a289ce38cbe2fd683a75d98 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Tue, 24 Dec 2013 16:39:37 +0100 -Subject: [PATCH] log: log_error() and friends add a newline after each line - anyway, so avoid including it in the log strings - -Conflicts: - src/bus-driverd/bus-driverd.c - src/bus-proxyd/bus-proxyd.c - src/shared/path-util.c - src/udev/net/link-config.c - src/udev/scsi_id/scsi_id.c - src/udev/scsi_id/scsi_serial.c - src/udev/udev-builtin-keyboard.c - src/udev/udev-event.c - src/udev/udev-rules.c - src/udev/udevadm-monitor.c - src/udev/udevadm-trigger.c - src/udev/udevd.c ---- - src/binfmt/binfmt.c | 2 +- - src/bootchart/bootchart.c | 4 +- - src/journal/coredumpctl.c | 2 +- - src/journal/journal-authenticate.c | 2 +- - src/modules-load/modules-load.c | 4 +- - src/sysctl/sysctl.c | 2 +- - src/test/test-udev.c | 8 +- - src/tmpfiles/tmpfiles.c | 4 +- - src/udev/accelerometer/accelerometer.c | 2 +- - src/udev/ata_id/ata_id.c | 6 +- - src/udev/cdrom_id/cdrom_id.c | 160 ++++++++++++++++----------------- - src/udev/udev-builtin-blkid.c | 2 +- - src/udev/udev-builtin-firmware.c | 10 +-- - src/udev/udev-builtin-input_id.c | 14 +-- - src/udev/udev-builtin-kmod.c | 18 ++-- - src/udev/udev-builtin-usb_id.c | 22 ++--- - src/udev/udev-ctrl.c | 22 ++--- - src/udev/udev-node.c | 32 +++---- - src/udev/udev-watch.c | 10 +-- - src/udev/udevadm-hwdb.c | 42 ++++----- - src/udev/udevadm-settle.c | 16 ++-- - src/udev/udevadm-test.c | 4 +- - src/udev/udevadm.c | 2 +- - 23 files changed, 195 insertions(+), 195 deletions(-) - -diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c -index 5a42b3d..7ed1ae7 100644 ---- a/src/binfmt/binfmt.c -+++ b/src/binfmt/binfmt.c -@@ -94,7 +94,7 @@ static int apply_file(const char *path, bool ignore_enoent) { - return r; - } - -- log_debug("apply: %s\n", path); -+ log_debug("apply: %s", path); - for (;;) { - char l[LINE_MAX], *p; - int k; -diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c -index 14ccd3e..9f99c1f 100644 ---- a/src/bootchart/bootchart.c -+++ b/src/bootchart/bootchart.c -@@ -262,12 +262,12 @@ static void do_journal_append(char *file) - - f = open(file, O_RDONLY); - if (f < 0) { -- log_error("Failed to read bootchart data: %m\n"); -+ log_error("Failed to read bootchart data: %m"); - return; - } - n = loop_read(f, p + 10, BOOTCHART_MAX, false); - if (n < 0) { -- log_error("Failed to read bootchart data: %s\n", strerror(-n)); -+ log_error("Failed to read bootchart data: %s", strerror(-n)); - close(f); - return; - } -diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c -index 75c96cc..560a91b 100644 ---- a/src/journal/coredumpctl.c -+++ b/src/journal/coredumpctl.c -@@ -417,7 +417,7 @@ static int dump_core(sd_journal* j) { - - r = sd_journal_previous(j); - if (r >= 0) -- log_warning("More than one entry matches, ignoring rest.\n"); -+ log_warning("More than one entry matches, ignoring rest."); - - return 0; - } -diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c -index bd7100a..f416b79 100644 ---- a/src/journal/journal-authenticate.c -+++ b/src/journal/journal-authenticate.c -@@ -60,7 +60,7 @@ int journal_file_append_tag(JournalFile *f) { - o->tag.seqnum = htole64(journal_file_tag_seqnum(f)); - o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state)); - -- log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"\n", -+ log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"", - le64toh(o->tag.seqnum), - FSPRG_GetEpoch(f->fsprg_state)); - -diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c -index 49ee420..9789398 100644 ---- a/src/modules-load/modules-load.c -+++ b/src/modules-load/modules-load.c -@@ -122,7 +122,7 @@ static int load_module(struct kmod_ctx *ctx, const char *m) { - struct kmod_list *itr, *modlist = NULL; - int r = 0; - -- log_debug("load: %s\n", m); -+ log_debug("load: %s", m); - - r = kmod_module_new_from_lookup(ctx, m, &modlist); - if (r < 0) { -@@ -190,7 +190,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent - return r; - } - -- log_debug("apply: %s\n", path); -+ log_debug("apply: %s", path); - for (;;) { - char line[LINE_MAX], *l; - int k; -diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c -index b5670db..8fb0eb6 100644 ---- a/src/sysctl/sysctl.c -+++ b/src/sysctl/sysctl.c -@@ -132,7 +132,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno - return r; - } - -- log_debug("parse: %s\n", path); -+ log_debug("parse: %s", path); - while (!feof(f)) { - char l[LINE_MAX], *p, *value, *new_value, *property, *existing; - void *v; -diff --git a/src/test/test-udev.c b/src/test/test-udev.c -index 17825f1..676669b 100644 ---- a/src/test/test-udev.c -+++ b/src/test/test-udev.c -@@ -101,20 +101,20 @@ int main(int argc, char *argv[]) - if (udev == NULL) - return EXIT_FAILURE; - -- log_debug("version %s\n", VERSION); -+ log_debug("version %s", VERSION); - label_init("/dev"); - - sigprocmask(SIG_SETMASK, NULL, &sigmask_orig); - - action = argv[1]; - if (action == NULL) { -- log_error("action missing\n"); -+ log_error("action missing"); - goto out; - } - - devpath = argv[2]; - if (devpath == NULL) { -- log_error("devpath missing\n"); -+ log_error("devpath missing"); - goto out; - } - -@@ -123,7 +123,7 @@ int main(int argc, char *argv[]) - strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL); - dev = udev_device_new_from_syspath(udev, syspath); - if (dev == NULL) { -- log_debug("unknown device '%s'\n", devpath); -+ log_debug("unknown device '%s'", devpath); - goto out; - } - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index e23847b..00f74c2 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -359,7 +359,7 @@ static int dir_cleanup( - continue; - - if (i->type != IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) { -- log_debug("rmdir '%s'\n", sub_path); -+ log_debug("rmdir '%s'", sub_path); - - if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) { - if (errno != ENOENT && errno != ENOTEMPTY) { -@@ -407,7 +407,7 @@ static int dir_cleanup( - if (age >= cutoff) - continue; - -- log_debug("unlink '%s'\n", sub_path); -+ log_debug("unlink '%s'", sub_path); - - if (unlinkat(dirfd(d), dent->d_name, 0) < 0) { - if (errno != ENOENT) { -diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c -index e611b48..9610d7c 100644 ---- a/src/udev/accelerometer/accelerometer.c -+++ b/src/udev/accelerometer/accelerometer.c -@@ -334,7 +334,7 @@ int main (int argc, char** argv) - return 0; - } - -- log_debug("opening accelerometer device %s\n", devnode); -+ log_debug("opening accelerometer device %s", devnode); - test_orientation(udev, dev, devnode); - free(devnode); - log_close(); -diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c -index d375d43..5e55f8d 100644 ---- a/src/udev/ata_id/ata_id.c -+++ b/src/udev/ata_id/ata_id.c -@@ -462,14 +462,14 @@ int main(int argc, char *argv[]) - - node = argv[optind]; - if (node == NULL) { -- log_error("no node specified\n"); -+ log_error("no node specified"); - rc = 1; - goto exit; - } - - fd = open(node, O_RDONLY|O_NONBLOCK); - if (fd < 0) { -- log_error("unable to open '%s'\n", node); -+ log_error("unable to open '%s'", node); - rc = 1; - goto exit; - } -@@ -501,7 +501,7 @@ int main(int argc, char *argv[]) - } else { - /* If this fails, then try HDIO_GET_IDENTITY */ - if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) { -- log_debug("HDIO_GET_IDENTITY failed for '%s': %m\n", node); -+ log_debug("HDIO_GET_IDENTITY failed for '%s': %m", node); - rc = 2; - goto close; - } -diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c -index 1ad0459..1fc0dfa 100644 ---- a/src/udev/cdrom_id/cdrom_id.c -+++ b/src/udev/cdrom_id/cdrom_id.c -@@ -137,10 +137,10 @@ static bool is_mounted(const char *device) - static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err) - { - if (err == -1) { -- log_debug("%s failed\n", cmd); -+ log_debug("%s failed", cmd); - return; - } -- log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh\n", cmd, SK(err), ASC(err), ASCQ(err)); -+ log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh", cmd, SK(err), ASC(err), ASCQ(err)); - } - - struct scsi_cmd { -@@ -205,11 +205,11 @@ static int media_lock(struct udev *udev, int fd, bool lock) - /* disable the kernel's lock logic */ - err = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_LOCK); - if (err < 0) -- log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed\n"); -+ log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed"); - - err = ioctl(fd, CDROM_LOCKDOOR, lock ? 1 : 0); - if (err < 0) -- log_debug("CDROM_LOCKDOOR failed\n"); -+ log_debug("CDROM_LOCKDOOR failed"); - - return err; - } -@@ -237,7 +237,7 @@ static int cd_capability_compat(struct udev *udev, int fd) - - capability = ioctl(fd, CDROM_GET_CAPABILITY, NULL); - if (capability < 0) { -- log_debug("CDROM_GET_CAPABILITY failed\n"); -+ log_debug("CDROM_GET_CAPABILITY failed"); - return -1; - } - -@@ -261,7 +261,7 @@ static int cd_capability_compat(struct udev *udev, int fd) - static int cd_media_compat(struct udev *udev, int fd) - { - if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) { -- log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK\n"); -+ log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK"); - return -1; - } - cd_media = 1; -@@ -285,11 +285,11 @@ static int cd_inquiry(struct udev *udev, int fd) - } - - if ((inq[0] & 0x1F) != 5) { -- log_debug("not an MMC unit\n"); -+ log_debug("not an MMC unit"); - return -1; - } - -- log_debug("INQUIRY: [%.8s][%.16s][%.4s]\n", inq + 8, inq + 16, inq + 32); -+ log_debug("INQUIRY: [%.8s][%.16s][%.4s]", inq + 8, inq + 16, inq + 32); - return 0; - } - -@@ -299,105 +299,105 @@ static void feature_profile_media(struct udev *udev, int cur_profile) - case 0x03: - case 0x04: - case 0x05: -- log_debug("profile 0x%02x \n", cur_profile); -+ log_debug("profile 0x%02x ", cur_profile); - cd_media = 1; - cd_media_mo = 1; - break; - case 0x08: -- log_debug("profile 0x%02x media_cd_rom\n", cur_profile); -+ log_debug("profile 0x%02x media_cd_rom", cur_profile); - cd_media = 1; - cd_media_cd_rom = 1; - break; - case 0x09: -- log_debug("profile 0x%02x media_cd_r\n", cur_profile); -+ log_debug("profile 0x%02x media_cd_r", cur_profile); - cd_media = 1; - cd_media_cd_r = 1; - break; - case 0x0a: -- log_debug("profile 0x%02x media_cd_rw\n", cur_profile); -+ log_debug("profile 0x%02x media_cd_rw", cur_profile); - cd_media = 1; - cd_media_cd_rw = 1; - break; - case 0x10: -- log_debug("profile 0x%02x media_dvd_ro\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_ro", cur_profile); - cd_media = 1; - cd_media_dvd_rom = 1; - break; - case 0x11: -- log_debug("profile 0x%02x media_dvd_r\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_r", cur_profile); - cd_media = 1; - cd_media_dvd_r = 1; - break; - case 0x12: -- log_debug("profile 0x%02x media_dvd_ram\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_ram", cur_profile); - cd_media = 1; - cd_media_dvd_ram = 1; - break; - case 0x13: -- log_debug("profile 0x%02x media_dvd_rw_ro\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_rw_ro", cur_profile); - cd_media = 1; - cd_media_dvd_rw = 1; - cd_media_dvd_rw_ro = 1; - break; - case 0x14: -- log_debug("profile 0x%02x media_dvd_rw_seq\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_rw_seq", cur_profile); - cd_media = 1; - cd_media_dvd_rw = 1; - cd_media_dvd_rw_seq = 1; - break; - case 0x1B: -- log_debug("profile 0x%02x media_dvd_plus_r\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_plus_r", cur_profile); - cd_media = 1; - cd_media_dvd_plus_r = 1; - break; - case 0x1A: -- log_debug("profile 0x%02x media_dvd_plus_rw\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_plus_rw", cur_profile); - cd_media = 1; - cd_media_dvd_plus_rw = 1; - break; - case 0x2A: -- log_debug("profile 0x%02x media_dvd_plus_rw_dl\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_plus_rw_dl", cur_profile); - cd_media = 1; - cd_media_dvd_plus_rw_dl = 1; - break; - case 0x2B: -- log_debug("profile 0x%02x media_dvd_plus_r_dl\n", cur_profile); -+ log_debug("profile 0x%02x media_dvd_plus_r_dl", cur_profile); - cd_media = 1; - cd_media_dvd_plus_r_dl = 1; - break; - case 0x40: -- log_debug("profile 0x%02x media_bd\n", cur_profile); -+ log_debug("profile 0x%02x media_bd", cur_profile); - cd_media = 1; - cd_media_bd = 1; - break; - case 0x41: - case 0x42: -- log_debug("profile 0x%02x media_bd_r\n", cur_profile); -+ log_debug("profile 0x%02x media_bd_r", cur_profile); - cd_media = 1; - cd_media_bd_r = 1; - break; - case 0x43: -- log_debug("profile 0x%02x media_bd_re\n", cur_profile); -+ log_debug("profile 0x%02x media_bd_re", cur_profile); - cd_media = 1; - cd_media_bd_re = 1; - break; - case 0x50: -- log_debug("profile 0x%02x media_hddvd\n", cur_profile); -+ log_debug("profile 0x%02x media_hddvd", cur_profile); - cd_media = 1; - cd_media_hddvd = 1; - break; - case 0x51: -- log_debug("profile 0x%02x media_hddvd_r\n", cur_profile); -+ log_debug("profile 0x%02x media_hddvd_r", cur_profile); - cd_media = 1; - cd_media_hddvd_r = 1; - break; - case 0x52: -- log_debug("profile 0x%02x media_hddvd_rw\n", cur_profile); -+ log_debug("profile 0x%02x media_hddvd_rw", cur_profile); - cd_media = 1; - cd_media_hddvd_rw = 1; - break; - default: -- log_debug("profile 0x%02x \n", cur_profile); -+ log_debug("profile 0x%02x ", cur_profile); - break; - } - } -@@ -414,77 +414,77 @@ static int feature_profiles(struct udev *udev, const unsigned char *profiles, si - case 0x03: - case 0x04: - case 0x05: -- log_debug("profile 0x%02x mo\n", profile); -+ log_debug("profile 0x%02x mo", profile); - cd_mo = 1; - break; - case 0x08: -- log_debug("profile 0x%02x cd_rom\n", profile); -+ log_debug("profile 0x%02x cd_rom", profile); - cd_cd_rom = 1; - break; - case 0x09: -- log_debug("profile 0x%02x cd_r\n", profile); -+ log_debug("profile 0x%02x cd_r", profile); - cd_cd_r = 1; - break; - case 0x0A: -- log_debug("profile 0x%02x cd_rw\n", profile); -+ log_debug("profile 0x%02x cd_rw", profile); - cd_cd_rw = 1; - break; - case 0x10: -- log_debug("profile 0x%02x dvd_rom\n", profile); -+ log_debug("profile 0x%02x dvd_rom", profile); - cd_dvd_rom = 1; - break; - case 0x12: -- log_debug("profile 0x%02x dvd_ram\n", profile); -+ log_debug("profile 0x%02x dvd_ram", profile); - cd_dvd_ram = 1; - break; - case 0x13: - case 0x14: -- log_debug("profile 0x%02x dvd_rw\n", profile); -+ log_debug("profile 0x%02x dvd_rw", profile); - cd_dvd_rw = 1; - break; - case 0x1B: -- log_debug("profile 0x%02x dvd_plus_r\n", profile); -+ log_debug("profile 0x%02x dvd_plus_r", profile); - cd_dvd_plus_r = 1; - break; - case 0x1A: -- log_debug("profile 0x%02x dvd_plus_rw\n", profile); -+ log_debug("profile 0x%02x dvd_plus_rw", profile); - cd_dvd_plus_rw = 1; - break; - case 0x2A: -- log_debug("profile 0x%02x dvd_plus_rw_dl\n", profile); -+ log_debug("profile 0x%02x dvd_plus_rw_dl", profile); - cd_dvd_plus_rw_dl = 1; - break; - case 0x2B: -- log_debug("profile 0x%02x dvd_plus_r_dl\n", profile); -+ log_debug("profile 0x%02x dvd_plus_r_dl", profile); - cd_dvd_plus_r_dl = 1; - break; - case 0x40: - cd_bd = 1; -- log_debug("profile 0x%02x bd\n", profile); -+ log_debug("profile 0x%02x bd", profile); - break; - case 0x41: - case 0x42: - cd_bd_r = 1; -- log_debug("profile 0x%02x bd_r\n", profile); -+ log_debug("profile 0x%02x bd_r", profile); - break; - case 0x43: - cd_bd_re = 1; -- log_debug("profile 0x%02x bd_re\n", profile); -+ log_debug("profile 0x%02x bd_re", profile); - break; - case 0x50: - cd_hddvd = 1; -- log_debug("profile 0x%02x hddvd\n", profile); -+ log_debug("profile 0x%02x hddvd", profile); - break; - case 0x51: - cd_hddvd_r = 1; -- log_debug("profile 0x%02x hddvd_r\n", profile); -+ log_debug("profile 0x%02x hddvd_r", profile); - break; - case 0x52: - cd_hddvd_rw = 1; -- log_debug("profile 0x%02x hddvd_rw\n", profile); -+ log_debug("profile 0x%02x hddvd_rw", profile); - break; - default: -- log_debug("profile 0x%02x \n", profile); -+ log_debug("profile 0x%02x ", profile); - break; - } - } -@@ -507,13 +507,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd) - if ((err != 0)) { - info_scsi_cmd_err(udev, "READ DISC INFORMATION", err); - if (cd_media == 1) { -- log_debug("no current profile, but disc is present; assuming CD-ROM\n"); -+ log_debug("no current profile, but disc is present; assuming CD-ROM"); - cd_media_cd_rom = 1; - cd_media_track_count = 1; - cd_media_track_count_data = 1; - return 0; - } else { -- log_debug("no current profile, assuming no media\n"); -+ log_debug("no current profile, assuming no media"); - return -1; - } - }; -@@ -522,13 +522,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd) - - if (header[2] & 16) { - cd_media_cd_rw = 1; -- log_debug("profile 0x0a media_cd_rw\n"); -+ log_debug("profile 0x0a media_cd_rw"); - } else if ((header[2] & 3) < 2 && cd_cd_r) { - cd_media_cd_r = 1; -- log_debug("profile 0x09 media_cd_r\n"); -+ log_debug("profile 0x09 media_cd_r"); - } else { - cd_media_cd_rom = 1; -- log_debug("profile 0x08 media_cd_rom\n"); -+ log_debug("profile 0x08 media_cd_rom"); - } - return 0; - } -@@ -556,8 +556,8 @@ static int cd_profiles(struct udev *udev, int fd) - info_scsi_cmd_err(udev, "GET CONFIGURATION", err); - /* handle pre-MMC2 drives which do not support GET CONFIGURATION */ - if (SK(err) == 0x5 && ASC(err) == 0x20) { -- log_debug("drive is pre-MMC2 and does not support 46h get configuration command\n"); -- log_debug("trying to work around the problem\n"); -+ log_debug("drive is pre-MMC2 and does not support 46h get configuration command"); -+ log_debug("trying to work around the problem"); - ret = cd_profiles_old_mmc(udev, fd); - } - goto out; -@@ -565,18 +565,18 @@ static int cd_profiles(struct udev *udev, int fd) - - cur_profile = features[6] << 8 | features[7]; - if (cur_profile > 0) { -- log_debug("current profile 0x%02x\n", cur_profile); -+ log_debug("current profile 0x%02x", cur_profile); - feature_profile_media (udev, cur_profile); - ret = 0; /* we have media */ - } else { -- log_debug("no current profile, assuming no media\n"); -+ log_debug("no current profile, assuming no media"); - } - - len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3]; -- log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len); -+ log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len); - - if (len > sizeof(features)) { -- log_debug("can not get features in a single query, truncating\n"); -+ log_debug("can not get features in a single query, truncating"); - len = sizeof(features); - } else if (len <= 8) { - len = sizeof(features); -@@ -596,10 +596,10 @@ static int cd_profiles(struct udev *udev, int fd) - - /* parse the length once more, in case the drive decided to have other features suddenly :) */ - len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3]; -- log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len); -+ log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len); - - if (len > sizeof(features)) { -- log_debug("can not get features in a single query, truncating\n"); -+ log_debug("can not get features in a single query, truncating"); - len = sizeof(features); - } - -@@ -611,11 +611,11 @@ static int cd_profiles(struct udev *udev, int fd) - - switch (feature) { - case 0x00: -- log_debug("GET CONFIGURATION: feature 'profiles', with %i entries\n", features[i+3] / 4); -+ log_debug("GET CONFIGURATION: feature 'profiles', with %i entries", features[i+3] / 4); - feature_profiles(udev, &features[i]+4, features[i+3]); - break; - default: -- log_debug("GET CONFIGURATION: feature 0x%04x , with 0x%02x bytes\n", feature, features[i+3]); -+ log_debug("GET CONFIGURATION: feature 0x%04x , with 0x%02x bytes", feature, features[i+3]); - break; - } - } -@@ -646,8 +646,8 @@ static int cd_media_info(struct udev *udev, int fd) - }; - - cd_media = 1; -- log_debug("disk type %02x\n", header[8]); -- log_debug("hardware reported media status: %s\n", media_status[header[2] & 3]); -+ log_debug("disk type %02x", header[8]); -+ log_debug("hardware reported media status: %s", media_status[header[2] & 3]); - - /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */ - if (!cd_media_cd_rom) -@@ -685,7 +685,7 @@ static int cd_media_info(struct udev *udev, int fd) - } - if (dvdstruct[4] & 0x02) { - cd_media_state = media_status[2]; -- log_debug("write-protected DVD-RAM media inserted\n"); -+ log_debug("write-protected DVD-RAM media inserted"); - goto determined; - } - -@@ -702,13 +702,13 @@ static int cd_media_info(struct udev *udev, int fd) - - len = format[3]; - if (len & 7 || len < 16) { -- log_debug("invalid format capacities length\n"); -+ log_debug("invalid format capacities length"); - return -1; - } - - switch(format[8] & 3) { - case 1: -- log_debug("unformatted DVD-RAM media inserted\n"); -+ log_debug("unformatted DVD-RAM media inserted"); - /* This means that last format was interrupted - * or failed, blank dvd-ram discs are factory - * formatted. Take no action here as it takes -@@ -717,12 +717,12 @@ static int cd_media_info(struct udev *udev, int fd) - goto determined; - - case 2: -- log_debug("formatted DVD-RAM media inserted\n"); -+ log_debug("formatted DVD-RAM media inserted"); - break; - - case 3: - cd_media = 0; //return no media -- log_debug("format capacities returned no media\n"); -+ log_debug("format capacities returned no media"); - return -1; - } - } -@@ -758,9 +758,9 @@ static int cd_media_info(struct udev *udev, int fd) - - if (!result) { - cd_media_state = media_status[0]; -- log_debug("no data in blocks 0 or 16, assuming blank\n"); -+ log_debug("no data in blocks 0 or 16, assuming blank"); - } else { -- log_debug("data in blocks 0 or 16, assuming complete\n"); -+ log_debug("data in blocks 0 or 16, assuming complete"); - } - } - -@@ -796,7 +796,7 @@ static int cd_media_toc(struct udev *udev, int fd) - } - - len = (header[0] << 8 | header[1]) + 2; -- log_debug("READ TOC: len: %d, start track: %d, end track: %d\n", len, header[2], header[3]); -+ log_debug("READ TOC: len: %d, start track: %d, end track: %d", len, header[2], header[3]); - if (len > sizeof(toc)) - return -1; - if (len < 2) -@@ -830,7 +830,7 @@ static int cd_media_toc(struct udev *udev, int fd) - is_data_track = (p[1] & 0x04) != 0; - - block = p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7]; -- log_debug("track=%u info=0x%x(%s) start_block=%u\n", -+ log_debug("track=%u info=0x%x(%s) start_block=%u", - p[2], p[1] & 0x0f, is_data_track ? "data":"audio", block); - - if (is_data_track) -@@ -850,7 +850,7 @@ static int cd_media_toc(struct udev *udev, int fd) - return -1; - } - len = header[4+4] << 24 | header[4+5] << 16 | header[4+6] << 8 | header[4+7]; -- log_debug("last track %u starts at block %u\n", header[4+2], len); -+ log_debug("last track %u starts at block %u", header[4+2], len); - cd_media_session_last_offset = (unsigned long long int)len * 2048; - return 0; - } -@@ -919,7 +919,7 @@ int main(int argc, char *argv[]) - - node = argv[optind]; - if (!node) { -- log_error("no device\n"); -+ log_error("no device"); - fprintf(stderr, "no device\n"); - rc = 1; - goto exit; -@@ -937,12 +937,12 @@ int main(int argc, char *argv[]) - nanosleep(&duration, NULL); - } - if (fd < 0) { -- log_debug("unable to open '%s'\n", node); -+ log_debug("unable to open '%s'", node); - fprintf(stderr, "unable to open '%s'\n", node); - rc = 1; - goto exit; - } -- log_debug("probing: '%s'\n", node); -+ log_debug("probing: '%s'", node); - - /* same data as original cdrom_id */ - if (cd_capability_compat(udev, fd) < 0) { -@@ -973,19 +973,19 @@ int main(int argc, char *argv[]) - work: - /* lock the media, so we enable eject button events */ - if (lock && cd_media) { -- log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)\n"); -+ log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)"); - media_lock(udev, fd, true); - } - - if (unlock && cd_media) { -- log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n"); -+ log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)"); - media_lock(udev, fd, false); - } - - if (eject) { -- log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n"); -+ log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)"); - media_lock(udev, fd, false); -- log_debug("START_STOP_UNIT (eject)\n"); -+ log_debug("START_STOP_UNIT (eject)"); - media_eject(udev, fd); - } - -diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c -index b48dccc..c806bd6 100644 ---- a/src/udev/udev-builtin-blkid.c -+++ b/src/udev/udev-builtin-blkid.c -@@ -190,7 +190,7 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t - if (err < 0) - goto out; - -- log_debug("probe %s %sraid offset=%llu\n", -+ log_debug("probe %s %sraid offset=%llu", - udev_device_get_devnode(dev), - noraid ? "no" : "", (unsigned long long) offset); - -diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c -index b80940b..8cfeed6 100644 ---- a/src/udev/udev-builtin-firmware.c -+++ b/src/udev/udev-builtin-firmware.c -@@ -33,7 +33,7 @@ static bool set_loading(struct udev *udev, char *loadpath, const char *state) - - ldfile = fopen(loadpath, "we"); - if (ldfile == NULL) { -- log_error("error: can not open '%s'\n", loadpath); -+ log_error("error: can not open '%s'", loadpath); - return false; - }; - fprintf(ldfile, "%s\n", state); -@@ -53,7 +53,7 @@ static bool copy_firmware(struct udev *udev, const char *source, const char *tar - return false; - } - -- log_debug("writing '%s' (%zi) to '%s'\n", source, size, target); -+ log_debug("writing '%s' (%zi) to '%s'", source, size, target); - - fsource = fopen(source, "re"); - if (fsource == NULL) -@@ -90,7 +90,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo - - firmware = udev_device_get_property_value(dev, "FIRMWARE"); - if (firmware == NULL) { -- log_error("firmware parameter missing\n\n"); -+ log_error("firmware parameter missing"); - rc = EXIT_FAILURE; - goto exit; - } -@@ -112,7 +112,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo - strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL); - - if (fwfile == NULL) { -- log_debug("did not find firmware file '%s'\n", firmware); -+ log_debug("did not find firmware file '%s'", firmware); - rc = EXIT_FAILURE; - /* - * Do not cancel the request in the initrd, the real root might have -@@ -136,7 +136,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo - - strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL); - if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) { -- log_error("error sending firmware '%s' to device\n", firmware); -+ log_error("error sending firmware '%s' to device", firmware); - set_loading(udev, loadpath, "-1"); - rc = EXIT_FAILURE; - goto exit; -diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c -index 445b602..4691fc0 100644 ---- a/src/udev/udev-builtin-input_id.c -+++ b/src/udev/udev-builtin-input_id.c -@@ -57,7 +57,7 @@ static void get_cap_mask(struct udev_device *dev, - unsigned long val; - - snprintf(text, sizeof(text), "%s", udev_device_get_sysattr_value(pdev, attr)); -- log_debug("%s raw kernel attribute: %s\n", attr, text); -+ log_debug("%s raw kernel attribute: %s", attr, text); - - memset (bitmask, 0, bitmask_size); - i = 0; -@@ -66,7 +66,7 @@ static void get_cap_mask(struct udev_device *dev, - if (i < bitmask_size/sizeof(unsigned long)) - bitmask[i] = val; - else -- log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val); -+ log_debug("ignoring %s block %lX which is larger than maximum size", attr, val); - *word = '\0'; - ++i; - } -@@ -74,12 +74,12 @@ static void get_cap_mask(struct udev_device *dev, - if (i < bitmask_size / sizeof(unsigned long)) - bitmask[i] = val; - else -- log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val); -+ log_debug("ignoring %s block %lX which is larger than maximum size", attr, val); - - if (test) { - /* printf pattern with the right unsigned long number of hex chars */ - snprintf(text, sizeof(text), " bit %%4u: %%0%zilX\n", 2 * sizeof(unsigned long)); -- log_debug("%s decoded bit map:\n", attr); -+ log_debug("%s decoded bit map:", attr); - val = bitmask_size / sizeof (unsigned long); - /* skip over leading zeros */ - while (bitmask[val-1] == 0 && val > 0) -@@ -151,7 +151,7 @@ static void test_key (struct udev_device *dev, - - /* do we have any KEY_* capability? */ - if (!test_bit (EV_KEY, bitmask_ev)) { -- log_debug("test_key: no EV_KEY capability\n"); -+ log_debug("test_key: no EV_KEY capability"); - return; - } - -@@ -159,13 +159,13 @@ static void test_key (struct udev_device *dev, - found = 0; - for (i = 0; i < BTN_MISC/BITS_PER_LONG; ++i) { - found |= bitmask_key[i]; -- log_debug("test_key: checking bit block %lu for any keys; found=%i\n", (unsigned long)i*BITS_PER_LONG, found > 0); -+ log_debug("test_key: checking bit block %lu for any keys; found=%i", (unsigned long)i*BITS_PER_LONG, found > 0); - } - /* If there are no keys in the lower block, check the higher block */ - if (!found) { - for (i = KEY_OK; i < BTN_TRIGGER_HAPPY; ++i) { - if (test_bit (i, bitmask_key)) { -- log_debug("test_key: Found key %x in high block\n", i); -+ log_debug("test_key: Found key %x in high block", i); - found = 1; - break; - } -diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c -index fc28121..097f881 100644 ---- a/src/udev/udev-builtin-kmod.c -+++ b/src/udev/udev-builtin-kmod.c -@@ -44,18 +44,18 @@ static int load_module(struct udev *udev, const char *alias) - return err; - - if (list == NULL) -- log_debug("no module matches '%s'\n", alias); -+ log_debug("no module matches '%s'", alias); - - kmod_list_foreach(l, list) { - struct kmod_module *mod = kmod_module_get_module(l); - - err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL); - if (err == KMOD_PROBE_APPLY_BLACKLIST) -- log_debug("module '%s' is blacklisted\n", kmod_module_get_name(mod)); -+ log_debug("module '%s' is blacklisted", kmod_module_get_name(mod)); - else if (err == 0) -- log_debug("inserted '%s'\n", kmod_module_get_name(mod)); -+ log_debug("inserted '%s'", kmod_module_get_name(mod)); - else -- log_debug("failed to insert '%s'\n", kmod_module_get_name(mod)); -+ log_debug("failed to insert '%s'", kmod_module_get_name(mod)); - - kmod_module_unref(mod); - } -@@ -79,12 +79,12 @@ static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool te - return 0; - - if (argc < 3 || !streq(argv[1], "load")) { -- log_error("expect: %s load \n", argv[0]); -+ log_error("expect: %s load ", argv[0]); - return EXIT_FAILURE; - } - - for (i = 2; argv[i]; i++) { -- log_debug("execute '%s' '%s'\n", argv[1], argv[i]); -+ log_debug("execute '%s' '%s'", argv[1], argv[i]); - load_module(udev, argv[i]); - } - -@@ -101,7 +101,7 @@ static int builtin_kmod_init(struct udev *udev) - if (!ctx) - return -ENOMEM; - -- log_debug("load module index\n"); -+ log_debug("load module index"); - kmod_set_log_fn(ctx, udev_kmod_log, udev); - kmod_load_resources(ctx); - return 0; -@@ -110,14 +110,14 @@ static int builtin_kmod_init(struct udev *udev) - /* called on udev shutdown and reload request */ - static void builtin_kmod_exit(struct udev *udev) - { -- log_debug("unload module index\n"); -+ log_debug("unload module index"); - ctx = kmod_unref(ctx); - } - - /* called every couple of seconds during event activity; 'true' if config has changed */ - static bool builtin_kmod_validate(struct udev *udev) - { -- log_debug("validate module index\n"); -+ log_debug("validate module index"); - if (!ctx) - return false; - return (kmod_validate_resources(ctx) != KMOD_RESOURCES_OK); -diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c -index 3e2f43e..1b9f824 100644 ---- a/src/udev/udev-builtin-usb_id.c -+++ b/src/udev/udev-builtin-usb_id.c -@@ -275,7 +275,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - /* usb interface directory */ - dev_interface = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface"); - if (dev_interface == NULL) { -- log_debug("unable to access usb_interface device of '%s'\n", -+ log_debug("unable to access usb_interface device of '%s'", - udev_device_get_syspath(dev)); - return EXIT_FAILURE; - } -@@ -285,7 +285,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - - if_class = udev_device_get_sysattr_value(dev_interface, "bInterfaceClass"); - if (!if_class) { -- log_debug("%s: cannot get bInterfaceClass attribute\n", -+ log_debug("%s: cannot get bInterfaceClass attribute", - udev_device_get_sysname(dev)); - return EXIT_FAILURE; - } -@@ -300,13 +300,13 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - set_usb_iftype(type_str, if_class_num, sizeof(type_str)-1); - } - -- log_debug("%s: if_class %d protocol %d\n", -+ log_debug("%s: if_class %d protocol %d", - udev_device_get_syspath(dev_interface), if_class_num, protocol); - - /* usb device directory */ - dev_usb = udev_device_get_parent_with_subsystem_devtype(dev_interface, "usb", "usb_device"); - if (!dev_usb) { -- log_debug("unable to find parent 'usb' device of '%s'\n", -+ log_debug("unable to find parent 'usb' device of '%s'", - udev_device_get_syspath(dev)); - return EXIT_FAILURE; - } -@@ -323,19 +323,19 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - /* get scsi device */ - dev_scsi = udev_device_get_parent_with_subsystem_devtype(dev, "scsi", "scsi_device"); - if (dev_scsi == NULL) { -- log_debug("unable to find parent 'scsi' device of '%s'\n", -+ log_debug("unable to find parent 'scsi' device of '%s'", - udev_device_get_syspath(dev)); - goto fallback; - } - if (sscanf(udev_device_get_sysname(dev_scsi), "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4) { -- log_debug("invalid scsi device '%s'\n", udev_device_get_sysname(dev_scsi)); -+ log_debug("invalid scsi device '%s'", udev_device_get_sysname(dev_scsi)); - goto fallback; - } - - /* Generic SPC-2 device */ - scsi_vendor = udev_device_get_sysattr_value(dev_scsi, "vendor"); - if (!scsi_vendor) { -- log_debug("%s: cannot get SCSI vendor attribute\n", -+ log_debug("%s: cannot get SCSI vendor attribute", - udev_device_get_sysname(dev_scsi)); - goto fallback; - } -@@ -345,7 +345,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - - scsi_model = udev_device_get_sysattr_value(dev_scsi, "model"); - if (!scsi_model) { -- log_debug("%s: cannot get SCSI model attribute\n", -+ log_debug("%s: cannot get SCSI model attribute", - udev_device_get_sysname(dev_scsi)); - goto fallback; - } -@@ -355,7 +355,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - - scsi_type = udev_device_get_sysattr_value(dev_scsi, "type"); - if (!scsi_type) { -- log_debug("%s: cannot get SCSI type attribute\n", -+ log_debug("%s: cannot get SCSI type attribute", - udev_device_get_sysname(dev_scsi)); - goto fallback; - } -@@ -363,7 +363,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool - - scsi_rev = udev_device_get_sysattr_value(dev_scsi, "rev"); - if (!scsi_rev) { -- log_debug("%s: cannot get SCSI revision attribute\n", -+ log_debug("%s: cannot get SCSI revision attribute", - udev_device_get_sysname(dev_scsi)); - goto fallback; - } -@@ -389,7 +389,7 @@ fallback: - if (!usb_vendor) - usb_vendor = vendor_id; - if (!usb_vendor) { -- log_debug("No USB vendor information available\n"); -+ log_debug("No USB vendor information available"); - return EXIT_FAILURE; - } - udev_util_encode_string(usb_vendor, vendor_str_enc, sizeof(vendor_str_enc)); -diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c -index e60da90..1898685 100644 ---- a/src/udev/udev-ctrl.c -+++ b/src/udev/udev-ctrl.c -@@ -84,7 +84,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd) - if (fd < 0) { - uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); - if (uctrl->sock < 0) { -- log_error("error getting socket: %m\n"); -+ log_error("error getting socket: %m"); - udev_ctrl_unref(uctrl); - return NULL; - } -@@ -118,14 +118,14 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl) - - if (err < 0) { - err = -errno; -- log_error("bind failed: %m\n"); -+ log_error("bind failed: %m"); - return err; - } - - err = listen(uctrl->sock, 0); - if (err < 0) { - err = -errno; -- log_error("listen failed: %m\n"); -+ log_error("listen failed: %m"); - return err; - } - -@@ -193,7 +193,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) - conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); - if (conn->sock < 0) { - if (errno != EINTR) -- log_error("unable to receive ctrl connection: %m\n"); -+ log_error("unable to receive ctrl connection: %m"); - goto err; - } - -@@ -204,7 +204,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) - goto err; - } - if (ucred.uid > 0) { -- log_error("sender uid=%i, message ignored\n", ucred.uid); -+ log_error("sender uid=%i, message ignored", ucred.uid); - goto err; - } - -@@ -367,11 +367,11 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) - continue; - goto err; - } else if (r == 0) { -- log_error("timeout waiting for ctrl message\n"); -+ log_error("timeout waiting for ctrl message"); - goto err; - } else { - if (!(pfd[0].revents & POLLIN)) { -- log_error("ctrl connection error: %m\n"); -+ log_error("ctrl connection error: %m"); - goto err; - } - } -@@ -388,24 +388,24 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) - smsg.msg_controllen = sizeof(cred_msg); - size = recvmsg(conn->sock, &smsg, 0); - if (size < 0) { -- log_error("unable to receive ctrl message: %m\n"); -+ log_error("unable to receive ctrl message: %m"); - goto err; - } - cmsg = CMSG_FIRSTHDR(&smsg); - cred = (struct ucred *) CMSG_DATA(cmsg); - - if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { -- log_error("no sender credentials received, message ignored\n"); -+ log_error("no sender credentials received, message ignored"); - goto err; - } - - if (cred->uid != 0) { -- log_error("sender uid=%i, message ignored\n", cred->uid); -+ log_error("sender uid=%i, message ignored", cred->uid); - goto err; - } - - if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) { -- log_error("message magic 0x%08x doesn't match, ignore it\n", uctrl_msg->ctrl_msg_wire.magic); -+ log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic); - goto err; - } - -diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c -index 1148a15..ca3d781 100644 ---- a/src/udev/udev-node.c -+++ b/src/udev/udev-node.c -@@ -65,7 +65,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s - /* preserve link with correct target, do not replace node of other device */ - if (lstat(slink, &stats) == 0) { - if (S_ISBLK(stats.st_mode) || S_ISCHR(stats.st_mode)) { -- log_error("conflicting device node '%s' found, link to '%s' will not be created\n", slink, node); -+ log_error("conflicting device node '%s' found, link to '%s' will not be created", slink, node); - goto exit; - } else if (S_ISLNK(stats.st_mode)) { - char buf[UTIL_PATH_SIZE]; -@@ -75,7 +75,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s - if (len > 0 && len < (int)sizeof(buf)) { - buf[len] = '\0'; - if (streq(target, buf)) { -- log_debug("preserve already existing symlink '%s' to '%s'\n", slink, target); -+ log_debug("preserve already existing symlink '%s' to '%s'", slink, target); - label_fix(slink, true, false); - utimensat(AT_FDCWD, slink, NULL, AT_SYMLINK_NOFOLLOW); - goto exit; -@@ -83,7 +83,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s - } - } - } else { -- log_debug("creating symlink '%s' to '%s'\n", slink, target); -+ log_debug("creating symlink '%s' to '%s'", slink, target); - do { - err = mkdir_parents_label(slink, 0755); - if (err != 0 && err != -ENOENT) -@@ -98,7 +98,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s - goto exit; - } - -- log_debug("atomically replace '%s'\n", slink); -+ log_debug("atomically replace '%s'", slink); - strscpyl(slink_tmp, sizeof(slink_tmp), slink, ".tmp-", udev_device_get_id_filename(dev), NULL); - unlink(slink_tmp); - do { -@@ -112,12 +112,12 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s - label_context_clear(); - } while (err == -ENOENT); - if (err != 0) { -- log_error("symlink '%s' '%s' failed: %m\n", target, slink_tmp); -+ log_error("symlink '%s' '%s' failed: %m", target, slink_tmp); - goto exit; - } - err = rename(slink_tmp, slink); - if (err != 0) { -- log_error("rename '%s' '%s' failed: %m\n", slink_tmp, slink); -+ log_error("rename '%s' '%s' failed: %m", slink_tmp, slink); - unlink(slink_tmp); - } - exit: -@@ -151,7 +151,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons - if (dent->d_name[0] == '.') - continue; - -- log_debug("found '%s' claiming '%s'\n", dent->d_name, stackdir); -+ log_debug("found '%s' claiming '%s'", dent->d_name, stackdir); - - /* did we find ourself? */ - if (streq(dent->d_name, udev_device_get_id_filename(dev))) -@@ -164,7 +164,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons - devnode = udev_device_get_devnode(dev_db); - if (devnode != NULL) { - if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) { -- log_debug("'%s' claims priority %i for '%s'\n", -+ log_debug("'%s' claims priority %i for '%s'", - udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir); - priority = udev_device_get_devlink_priority(dev_db); - strscpy(buf, bufsize, devnode); -@@ -197,11 +197,11 @@ static void link_update(struct udev_device *dev, const char *slink, bool add) - - target = link_find_prioritized(dev, add, dirname, buf, sizeof(buf)); - if (target == NULL) { -- log_debug("no reference left, remove '%s'\n", slink); -+ log_debug("no reference left, remove '%s'", slink); - if (unlink(slink) == 0) - util_delete_path(udev, slink); - } else { -- log_debug("creating link '%s' to '%s'\n", slink, target); -+ log_debug("creating link '%s' to '%s'", slink, target); - node_symlink(dev, target, slink); - } - -@@ -246,7 +246,7 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev - if (found) - continue; - -- log_debug("update old name, '%s' no longer belonging to '%s'\n", -+ log_debug("update old name, '%s' no longer belonging to '%s'", - name, udev_device_get_devpath(dev)); - link_update(dev, name, false); - } -@@ -266,24 +266,24 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, mode_t mo - - if (lstat(devnode, &stats) != 0) { - err = -errno; -- log_debug("can not stat() node '%s' (%m)\n", devnode); -+ log_debug("can not stat() node '%s' (%m)", devnode); - goto out; - } - - if (((stats.st_mode & S_IFMT) != (mode & S_IFMT)) || (stats.st_rdev != devnum)) { - err = -EEXIST; -- log_debug("found node '%s' with non-matching devnum %s, skip handling\n", -+ log_debug("found node '%s' with non-matching devnum %s, skip handling", - udev_device_get_devnode(dev), udev_device_get_id_filename(dev)); - goto out; - } - - if (apply) { - if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { -- log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); -+ log_debug("set permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid); - chmod(devnode, mode); - chown(devnode, uid, gid); - } else { -- log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); -+ log_debug("preserve permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid); - } - label_fix(devnode, true, false); - } -@@ -299,7 +299,7 @@ void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, - char filename[UTIL_PATH_SIZE]; - struct udev_list_entry *list_entry; - -- log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d\n", -+ log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d", - udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid); - - if (node_permissions_apply(dev, apply, mode, uid, gid) < 0) -diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c -index 9b694c6..cbe0c37 100644 ---- a/src/udev/udev-watch.c -+++ b/src/udev/udev-watch.c -@@ -40,7 +40,7 @@ int udev_watch_init(struct udev *udev) - { - inotify_fd = inotify_init1(IN_CLOEXEC); - if (inotify_fd < 0) -- log_error("inotify_init failed: %m\n"); -+ log_error("inotify_init failed: %m"); - return inotify_fd; - } - -@@ -79,7 +79,7 @@ void udev_watch_restore(struct udev *udev) - if (dev == NULL) - goto unlink; - -- log_debug("restoring old watch on '%s'\n", udev_device_get_devnode(dev)); -+ log_debug("restoring old watch on '%s'", udev_device_get_devnode(dev)); - udev_watch_begin(udev, dev); - udev_device_unref(dev); - unlink: -@@ -103,10 +103,10 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev) - if (inotify_fd < 0) - return; - -- log_debug("adding watch on '%s'\n", udev_device_get_devnode(dev)); -+ log_debug("adding watch on '%s'", udev_device_get_devnode(dev)); - wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE); - if (wd < 0) { -- log_error("inotify_add_watch(%d, %s, %o) failed: %m\n", -+ log_error("inotify_add_watch(%d, %s, %o) failed: %m", - inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE); - return; - } -@@ -133,7 +133,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev) - if (wd < 0) - return; - -- log_debug("removing watch on '%s'\n", udev_device_get_devnode(dev)); -+ log_debug("removing watch on '%s'", udev_device_get_devnode(dev)); - inotify_rm_watch(inotify_fd, wd); - - snprintf(filename, sizeof(filename), "/run/udev/watch/%d", wd); -diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c -index d9dc73b..fe56758 100644 ---- a/src/udev/udevadm-hwdb.c -+++ b/src/udev/udevadm-hwdb.c -@@ -389,17 +389,17 @@ static int trie_store(struct trie *trie, const char *filename) { - goto out; - } - -- log_debug("=== trie on-disk ===\n"); -- log_debug("size: %8llu bytes\n", (unsigned long long)size); -- log_debug("header: %8zu bytes\n", sizeof(struct trie_header_f)); -- log_debug("nodes: %8llu bytes (%8llu)\n", -+ log_debug("=== trie on-disk ==="); -+ log_debug("size: %8llu bytes", (unsigned long long)size); -+ log_debug("header: %8zu bytes", sizeof(struct trie_header_f)); -+ log_debug("nodes: %8llu bytes (%8llu)", - (unsigned long long)t.nodes_count * sizeof(struct trie_node_f), (unsigned long long)t.nodes_count); -- log_debug("child pointers: %8llu bytes (%8llu)\n", -+ log_debug("child pointers: %8llu bytes (%8llu)", - (unsigned long long)t.children_count * sizeof(struct trie_child_entry_f), (unsigned long long)t.children_count); -- log_debug("value pointers: %8llu bytes (%8llu)\n", -+ log_debug("value pointers: %8llu bytes (%8llu)", - (unsigned long long)t.values_count * sizeof(struct trie_value_entry_f), (unsigned long long)t.values_count); -- log_debug("string store: %8llu bytes\n", (unsigned long long)trie->strings->len); -- log_debug("strings start: %8llu\n", (unsigned long long) t.strings_off); -+ log_debug("string store: %8llu bytes", (unsigned long long)trie->strings->len); -+ log_debug("strings start: %8llu", (unsigned long long) t.strings_off); - out: - free(filename_tmp); - return err; -@@ -412,7 +412,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list, - - value = strchr(line, '='); - if (!value) { -- log_error("Error, key/value pair expected but got '%s' in '%s':\n", line, filename); -+ log_error("Error, key/value pair expected but got '%s' in '%s':", line, filename); - return -EINVAL; - } - -@@ -420,7 +420,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list, - value++; - - if (line[0] == '\0' || value[0] == '\0') { -- log_error("Error, empty key or value '%s' in '%s':\n", line, filename); -+ log_error("Error, empty key or value '%s' in '%s':", line, filename); - return -EINVAL; - } - -@@ -471,7 +471,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam - break; - - if (line[0] == ' ') { -- log_error("Error, MATCH expected but got '%s' in '%s':\n", line, filename); -+ log_error("Error, MATCH expected but got '%s' in '%s':", line, filename); - break; - } - -@@ -482,7 +482,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam - - case HW_MATCH: - if (len == 0) { -- log_error("Error, DATA expected but got empty line in '%s':\n", filename); -+ log_error("Error, DATA expected but got empty line in '%s':", filename); - state = HW_NONE; - udev_list_cleanup(&match_list); - break; -@@ -508,7 +508,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam - } - - if (line[0] != ' ') { -- log_error("Error, DATA expected but got '%s' in '%s':\n", line, filename); -+ log_error("Error, DATA expected but got '%s' in '%s':", line, filename); - state = HW_NONE; - udev_list_cleanup(&match_list); - break; -@@ -602,7 +602,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { - - err = conf_files_list_strv(&files, ".hwdb", root, conf_file_dirs); - if (err < 0) { -- log_error("failed to enumerate hwdb files: %s\n", strerror(-err)); -+ log_error("failed to enumerate hwdb files: %s", strerror(-err)); - rc = EXIT_FAILURE; - goto out; - } -@@ -614,18 +614,18 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { - - strbuf_complete(trie->strings); - -- log_debug("=== trie in-memory ===\n"); -- log_debug("nodes: %8zu bytes (%8zu)\n", -+ log_debug("=== trie in-memory ==="); -+ log_debug("nodes: %8zu bytes (%8zu)", - trie->nodes_count * sizeof(struct trie_node), trie->nodes_count); -- log_debug("children arrays: %8zu bytes (%8zu)\n", -+ log_debug("children arrays: %8zu bytes (%8zu)", - trie->children_count * sizeof(struct trie_child_entry), trie->children_count); -- log_debug("values arrays: %8zu bytes (%8zu)\n", -+ log_debug("values arrays: %8zu bytes (%8zu)", - trie->values_count * sizeof(struct trie_value_entry), trie->values_count); -- log_debug("strings: %8zu bytes\n", -+ log_debug("strings: %8zu bytes", - trie->strings->len); -- log_debug("strings incoming: %8zu bytes (%8zu)\n", -+ log_debug("strings incoming: %8zu bytes (%8zu)", - trie->strings->in_len, trie->strings->in_count); -- log_debug("strings dedup'ed: %8zu bytes (%8zu)\n", -+ log_debug("strings dedup'ed: %8zu bytes (%8zu)", - trie->strings->dedup_len, trie->strings->dedup_count); - - if (asprintf(&hwdb_bin, "%s/etc/udev/hwdb.bin", root) < 0) { -diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c -index c4fc4ee..a131e3f 100644 ---- a/src/udev/udevadm-settle.c -+++ b/src/udev/udevadm-settle.c -@@ -113,20 +113,20 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) - end = udev_queue_get_kernel_seqnum(udev_queue); - - if (start > end) { -- log_error("seq-start larger than seq-end, ignoring\n"); -+ log_error("seq-start larger than seq-end, ignoring"); - start = 0; - end = 0; - } - - if (start > kernel_seq || end > kernel_seq) { -- log_error("seq-start or seq-end larger than current kernel value, ignoring\n"); -+ log_error("seq-start or seq-end larger than current kernel value, ignoring"); - start = 0; - end = 0; - } -- log_debug("start=%llu end=%llu current=%llu\n", (unsigned long long)start, (unsigned long long)end, kernel_seq); -+ log_debug("start=%llu end=%llu current=%llu", (unsigned long long)start, (unsigned long long)end, kernel_seq); - } else { - if (end > 0) { -- log_error("seq-end needs seq-start parameter, ignoring\n"); -+ log_error("seq-end needs seq-start parameter, ignoring"); - end = 0; - } - } -@@ -138,7 +138,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) - uctrl = udev_ctrl_new(udev); - if (uctrl != NULL) { - if (udev_ctrl_send_ping(uctrl, timeout) < 0) { -- log_debug("no connection to daemon\n"); -+ log_debug("no connection to daemon"); - udev_ctrl_unref(uctrl); - rc = EXIT_SUCCESS; - goto out; -@@ -150,10 +150,10 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) - pfd[0].events = POLLIN; - pfd[0].fd = inotify_init1(IN_CLOEXEC); - if (pfd[0].fd < 0) { -- log_error("inotify_init failed: %m\n"); -+ log_error("inotify_init failed: %m"); - } else { - if (inotify_add_watch(pfd[0].fd, "/run/udev" , IN_MOVED_TO) < 0) { -- log_error("watching /run/udev failed\n"); -+ log_error("watching /run/udev failed"); - close(pfd[0].fd); - pfd[0].fd = -1; - } -@@ -206,7 +206,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) - struct udev_list_entry *list_entry; - - if (!quiet && udev_queue_get_queued_list_entry(udev_queue) != NULL) { -- log_debug("timeout waiting for udev queue\n"); -+ log_debug("timeout waiting for udev queue"); - printf("\nudevadm settle - timeout of %i seconds reached, the event queue contains:\n", timeout); - udev_list_entry_foreach(list_entry, udev_queue_get_queued_list_entry(udev_queue)) - printf(" %s (%s)\n", -diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c -index df1409b..3aa3274 100644 ---- a/src/udev/udevadm-test.c -+++ b/src/udev/udevadm-test.c -@@ -52,7 +52,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) - {} - }; - -- log_debug("version %s\n", VERSION); -+ log_debug("version %s", VERSION); - - for (;;) { - int option; -@@ -74,7 +74,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) - resolve_names = -1; - } else { - fprintf(stderr, "resolve-names must be early, late or never\n"); -- log_error("resolve-names must be early, late or never\n"); -+ log_error("resolve-names must be early, late or never"); - exit(EXIT_FAILURE); - } - break; -diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c -index e14b3ca..dbca369 100644 ---- a/src/udev/udevadm.c -+++ b/src/udev/udevadm.c -@@ -79,7 +79,7 @@ static int run_command(struct udev *udev, const struct udevadm_cmd *cmd, int arg - { - if (cmd->debug) - log_set_max_level(LOG_DEBUG); -- log_debug("calling: %s\n", cmd->name); -+ log_debug("calling: %s", cmd->name); - return cmd->cmd(udev, argc, argv); - } - diff --git a/0196-man-units-tmpfiles.d-5-cleanup.patch b/0196-man-units-tmpfiles.d-5-cleanup.patch deleted file mode 100644 index fd8eb7b..0000000 --- a/0196-man-units-tmpfiles.d-5-cleanup.patch +++ /dev/null @@ -1,401 +0,0 @@ -From 6972095a2b6eb919b622a89d11e0dc823ed60efb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 24 Dec 2013 10:21:45 -0500 -Subject: [PATCH] man,units: tmpfiles.d(5) cleanup - -Condition for /lib (necessary for split /usr) was missing from the unit. - -Some changes which were done in tmpfiles.d(5) were not carried over to -systemd-tmpfiles(1). - -Also use markup where possible. - -Conflicts: - man/tmpfiles.d.xml ---- - man/systemd-tmpfiles.xml | 53 ++++++---- - man/tmpfiles.d.xml | 168 +++++++++++++++++++------------- - units/systemd-tmpfiles-setup.service.in | 1 + - 3 files changed, 134 insertions(+), 88 deletions(-) - -diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml -index ba727e1..91c0372 100644 ---- a/man/systemd-tmpfiles.xml -+++ b/man/systemd-tmpfiles.xml -@@ -54,7 +54,9 @@ - - - -- systemd-tmpfiles OPTIONS CONFIGURATION FILE -+ systemd-tmpfiles -+ OPTIONS -+ CONFIGFILE - - - systemd-tmpfiles-setup.service -@@ -67,22 +69,20 @@ - Description - - systemd-tmpfiles creates, -- deletes and cleans up volatile and temporary files and -+ deletes, and cleans up volatile and temporary files and - directories, based on the configuration file format and -- location specified in -- tmpfiles.d -- 5 -- . -+ location specified in -+ tmpfiles.d5. -+ - - If invoked with no arguments, it applies all - directives from all configuration files. If one or - more filenames are passed on the command line, only - the directives in these files are applied. If only - the basename of a configuration file is specified, -- all configuration directories as specified in -- tmpfiles.d -- 5 -- are searched for a matching file. -+ all configuration directories as specified in -+ tmpfiles.d5 -+ are searched for a matching file. - - - -@@ -94,12 +94,25 @@ - - - -- If this option is passed, all -- files and directories marked with f, -- F, d, D in the configuration files are -- created. Files and directories marked with z, -- Z have their ownership, access mode and security -- labels set. -+ If this option is -+ passed, all files and directories -+ marked with f, -+ F, -+ w, -+ d, -+ D, -+ p, -+ L, -+ c, -+ b, -+ m in the -+ configuration files are created or -+ written to. Files and directories -+ marked with z, -+ Z, -+ m have their -+ ownership, access mode and security -+ labels set. - - - -@@ -113,9 +126,11 @@ - - - If this option is -- passed, all files and directories marked -- with r, R in the configuration files -- are removed. -+ passed, all files and directories -+ marked with r, -+ R in the -+ configuration files are -+ removed. - - - -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index e8b630d..a00637b 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -67,23 +67,32 @@ - Configuration Format - - Each configuration file shall be named in the -- style of <package>.conf. -- Files in /etc/ override files -- with the same name in /usr/lib/ -- and /run/. Files in -- /run/ override files with the same -- name in /usr/lib/. Packages -+ style of -+ package.conf -+ or -+ package-part.conf. -+ The second variant should be used when it is desirable -+ to make it easy to override just this part of -+ configuration. -+ -+ Files in /etc/tmpfiles.d -+ override files with the same name in -+ /usr/lib/tmpfiles.d and -+ /run/tmpfiles.d. Files in -+ /run/tmpfiles.d override files -+ with the same name in -+ /usr/lib/tmpfiles.d. Packages - should install their configuration files in -- /usr/lib/. Files in -- /etc/ are reserved for the local -- administrator, who may use this logic to override the -- configuration files installed by vendor packages. All -- configuration files are sorted by their filename in -- lexicographic order, regardless in which of the -- directories they reside. If multiple files specify the -- same path, the entry in the file with the lexicographically -- earliest name will be applied, all all other conflicting -- entries logged as errors. -+ /usr/lib/tmpfiles.d. Files in -+ /etc/tmpfiles.d are reserved for -+ the local administrator, who may use this logic to -+ override the configuration files installed by vendor -+ packages. All configuration files are sorted by their -+ filename in lexicographic order, regardless in which -+ of the directories they reside. If multiple files -+ specify the same path, the entry in the file with the -+ lexicographically earliest name will be applied, all -+ all other conflicting entries logged as errors. - - If the administrator wants to disable a - configuration file supplied by the vendor, the -@@ -93,10 +102,10 @@ - same filename. - - The configuration format is one line per path -- containing action, path, mode, ownership, age and argument -+ containing type, path, mode, ownership, age, and argument - fields: - -- Type Path Mode UID GID Age Argument -+ #Type Path Mode UID GID Age Argument - d /run/user 0755 root root 10d - - L /tmp/foobar - - - - /dev/null - -@@ -109,12 +118,12 @@ L /tmp/foobar - - - - /dev/null - - - f -- Create a file if it does not exist yet (optionally writing a short string into it, if the argument parameter is passed) -+ Create a file if it does not exist yet. If the argument parameter is given, it will be written to the file. - - - - F -- Create or truncate a file (optionally writing a short string into it, if the argument parameter is passed) -+ Create or truncate a file. If the argument parameter is given, it will be written to the file. - - - -@@ -127,32 +136,32 @@ L /tmp/foobar - - - - /dev/null - - - d -- Create a directory if it does not exist yet -+ Create a directory if it does not exist yet. - - - - D -- Create or empty a directory -+ Create or empty a directory. - - - - p -- Create a named pipe (FIFO) if it does not exist yet -+ Create a named pipe (FIFO) if it does not exist yet. - - - - L -- Create a symlink if it does not exist yet -+ Create a symlink if it does not exist yet. - - - - c -- Create a character device node if it does not exist yet -+ Create a character device node if it does not exist yet. - - - - b -- Create a block device node if it does not exist yet -+ Create a block device node if it does not exist yet. - - - -@@ -174,11 +183,12 @@ L /tmp/foobar - - - - /dev/null - as controlled with the Age - parameter. Note that lines of - this type do not influence the -- effect of r or R lines. Lines -- of this type accept -+ effect of r -+ or R lines. -+ Lines of this type accept - shell-style globs in place of -- normal path -- names. -+ normal path names. -+ - - - -@@ -187,28 +197,31 @@ L /tmp/foobar - - - - /dev/null - during cleaning. Use this type - to exclude paths from clean-up - as controlled with the Age -- parameter. Unlike x this -+ parameter. Unlike -+ x, this - parameter will not exclude the -- content if path is a directory, -- but only directory itself. -- Note that lines of this type do -- not influence the effect of r -- or R lines. Lines of this type -- accept shell-style globs in -- place of normal path -- names. -+ content if path is a -+ directory, but only directory -+ itself. Note that lines of -+ this type do not influence the -+ effect of r -+ or R lines. -+ Lines of this type accept -+ shell-style globs in place of -+ normal path names. -+ - - - - r - Remove a file -- or directory if it -- exists. This may not be used -- to remove non-empty -- directories, use R for -- that. Lines of this type -- accept shell-style globs in -- place of normal path -+ or directory if it exists. -+ This may not be used to remove -+ non-empty directories, use -+ R for that. -+ Lines of this type accept -+ shell-style globs in place of -+ normal path - names. - - -@@ -308,11 +321,14 @@ L /tmp/foobar - - - - /dev/null - The file access mode to use when - creating this file or directory. If omitted or - when set to -, the default is used: 0755 for -- directories, 0644 for all other file -- objects. For z, Z lines, if omitted or when set -- to -, the file access mode will not be -- modified. This parameter is ignored for x, r, -- R, L lines. -+ directories, 0644 for all other file objects. -+ For z, Z -+ lines, if omitted or when set to -+ -, the file access mode -+ will not be modified. This parameter is -+ ignored for x, -+ r, R, -+ L lines. - - - -@@ -321,10 +337,15 @@ L /tmp/foobar - - - - /dev/null - The user and group to use for this file - or directory. This may either be a numeric - user/group ID or a user or group name. If -- omitted or when set to -, the default 0 (root) -- is used. For z, Z lines, when omitted or when set to -, -- the file ownership will not be modified. -- These parameters are ignored for x, r, R, L lines. -+ omitted or when set to -, -+ the default 0 (root) is used. For -+ z, Z -+ lines, when omitted or when set to -, the file -+ ownership will not be modified. These -+ parameters are ignored for -+ x, r, -+ R, L -+ lines. - - - -@@ -357,28 +378,37 @@ L /tmp/foobar - - - - /dev/null - When the age is set to zero, the files are cleaned - unconditionally. - -- The age field only applies to lines starting with -- d, D and x. If omitted or set to -, no automatic clean-up -- is done. -+ The age field only applies to lines -+ starting with d, -+ D, and -+ x. If omitted or set to -+ -, no automatic clean-up is -+ done. - - If the age field starts with a tilde -- character (~), the clean-up is only applied to -- files and directories one level inside the -- directory specified, but not the files and -- directories immediately inside it. -+ character ~, the clean-up -+ is only applied to files and directories one -+ level inside the directory specified, but not -+ the files and directories immediately inside -+ it. - - - - Argument - -- For L lines determines the destination -- path of the symlink. For c, b determines the -+ For L lines -+ determines the destination path of the -+ symlink. For c, -+ b determines the - major/minor of the device node, with major and -- minor formatted as integers, separated by :, -- e.g. "1:3". For f, F, w may be used to specify -- a short string that is written to the file, -- suffixed by a newline. Ignored for all other -- lines. -+ minor formatted as integers, separated by -+ :, e.g. -+ 1:3. For -+ f, F, -+ and w may be used to -+ specify a short string that is written to the -+ file, suffixed by a newline. Ignored for all -+ other lines. - - - -diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in -index 6f98063..3405e28 100644 ---- a/units/systemd-tmpfiles-setup.service.in -+++ b/units/systemd-tmpfiles-setup.service.in -@@ -14,6 +14,7 @@ Conflicts=shutdown.target - After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target - Before=sysinit.target shutdown.target - ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d -+ConditionDirectoryNotEmpty=|/lib/tmpfiles.d - ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d - ConditionDirectoryNotEmpty=|/etc/tmpfiles.d - ConditionDirectoryNotEmpty=|/run/tmpfiles.d diff --git a/0197-tmpfiles-introduce-the-concept-of-unsafe-operations.patch b/0197-tmpfiles-introduce-the-concept-of-unsafe-operations.patch deleted file mode 100644 index bfe7f21..0000000 --- a/0197-tmpfiles-introduce-the-concept-of-unsafe-operations.patch +++ /dev/null @@ -1,281 +0,0 @@ -From 66b1ee20b814b02cd0fb73fec4a2a9b11defc607 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 20 Dec 2013 20:25:39 -0500 -Subject: [PATCH] tmpfiles: introduce the concept of unsafe operations - -Various operations done by systemd-tmpfiles may only be safely done at -boot (e.g. removal of X lockfiles in /tmp, creation of /run/nologin). -Other operations may be done at any point in time (e.g. setting the -ownership on /{run,var}/log/journal). This distinction is largely -orthogonal to the type of operation. - -A new switch --unsafe is added, and operations which should only be -executed during bootup are marked with an exclamation mark in the -configuration files. systemd-tmpfiles.service is modified to use this -switch, and guards are added so it is hard to re-start it by mistake. - -If we install a new version of systemd, we actually want to enforce -some changes to tmpfiles configuration immediately. This should now be -possible to do safely, so distribution packages can be modified to -execute the "safe" subset at package installation time. - -/run/nologin creation is split out into a separate service, to make it -easy to override. - -https://bugzilla.redhat.com/show_bug.cgi?id=1043212 -https://bugzilla.redhat.com/show_bug.cgi?id=1045849 ---- - Makefile.am | 1 + - man/systemd-tmpfiles.xml | 6 ++++++ - man/tmpfiles.d.xml | 25 +++++++++++++++++++++++++ - src/tmpfiles/tmpfiles.c | 22 +++++++++++++++++++--- - tmpfiles.d/legacy.conf | 6 +++--- - tmpfiles.d/systemd-nologin.conf | 11 +++++++++++ - tmpfiles.d/systemd.conf | 4 +--- - tmpfiles.d/x11.conf | 2 +- - units/systemd-tmpfiles-setup.service.in | 6 ++++-- - 9 files changed, 71 insertions(+), 12 deletions(-) - create mode 100644 tmpfiles.d/systemd-nologin.conf - -diff --git a/Makefile.am b/Makefile.am -index 16a5c3c..6233a7f 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1599,6 +1599,7 @@ nodist_systemunit_DATA += \ - - dist_tmpfiles_DATA = \ - tmpfiles.d/systemd.conf \ -+ tmpfiles.d/systemd-nologin.conf \ - tmpfiles.d/tmp.conf \ - tmpfiles.d/x11.conf - -diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml -index 91c0372..495247e 100644 ---- a/man/systemd-tmpfiles.xml -+++ b/man/systemd-tmpfiles.xml -@@ -133,6 +133,12 @@ - removed. - - -+ -+ Also execute lines -+ with an exclamation mark. -+ -+ -+ - - Only apply rules that - apply to paths with the specified -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index a00637b..39aa68d 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -113,6 +113,9 @@ L /tmp/foobar - - - - /dev/null - - Type - -+ The type consists of a single letter and -+ optionally an exclamation mark. -+ - The following line types are understood: - - -@@ -262,6 +265,28 @@ L /tmp/foobar - - - - /dev/null - names. - - -+ -+ If the exclamation mark is used, this -+ line is only safe of execute during boot, and -+ can break a running system. Lines without the -+ exclamation mark are presumed to be safe to -+ execute at any time, e.g. on package upgrades. -+ systemd-tmpfiles will -+ execute line with an exclamation mark only if -+ option is given. -+ -+ -+ For example: -+ -+# Make sure these are created by default so that nobody else can -+d /tmp/.X11-unix 1777 root root 10d -+ -+# Unlink the X11 lock files -+r! /tmp/.X[0-9]*-lock -+ -+ The second line in contrast to the first one -+ would break a running system, and will only be -+ executed with . - - - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 00f74c2..30a8a55 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -106,6 +106,7 @@ static Set *unix_sockets = NULL; - static bool arg_create = false; - static bool arg_clean = false; - static bool arg_remove = false; -+static bool arg_unsafe = false; - - static char **include_prefixes = NULL; - static char **exclude_prefixes = NULL; -@@ -1073,7 +1074,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { - _cleanup_item_free_ Item *i = NULL; - Item *existing; - _cleanup_free_ char -- *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL; -+ *action = NULL, *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL; - char type; - Hashmap *h; - int r, n = -1; -@@ -1083,8 +1084,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { - assert(buffer); - - r = sscanf(buffer, -- "%c %ms %ms %ms %ms %ms %n", -- &type, -+ "%ms %ms %ms %ms %ms %ms %n", -+ &action, - &path, - &mode, - &user, -@@ -1096,6 +1097,14 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { - return -EIO; - } - -+ if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) { -+ log_error("[%s:%u] Unknown modifier '%s'", fname, line, action); -+ return -EINVAL; -+ } else if (strlen(action) > 1 && !arg_unsafe) -+ return 0; -+ -+ type = action[0]; -+ - i = new0(Item, 1); - if (!i) - return log_oom(); -@@ -1266,6 +1275,7 @@ static int help(void) { - " --create Create marked files/directories\n" - " --clean Clean up marked directories\n" - " --remove Remove marked files/directories\n" -+ " --unsafe Execute actions only safe at boot\n" - " --prefix=PATH Only apply rules that apply to paths with the specified prefix\n" - " --exclude-prefix=PATH Ignore rules that apply to paths with the specified prefix\n", - program_invocation_short_name); -@@ -1279,6 +1289,7 @@ static int parse_argv(int argc, char *argv[]) { - ARG_CREATE, - ARG_CLEAN, - ARG_REMOVE, -+ ARG_UNSAFE, - ARG_PREFIX, - ARG_EXCLUDE_PREFIX, - }; -@@ -1288,6 +1299,7 @@ static int parse_argv(int argc, char *argv[]) { - { "create", no_argument, NULL, ARG_CREATE }, - { "clean", no_argument, NULL, ARG_CLEAN }, - { "remove", no_argument, NULL, ARG_REMOVE }, -+ { "unsafe", no_argument, NULL, ARG_UNSAFE }, - { "prefix", required_argument, NULL, ARG_PREFIX }, - { "exclude-prefix", required_argument, NULL, ARG_EXCLUDE_PREFIX }, - { NULL, 0, NULL, 0 } -@@ -1318,6 +1330,10 @@ static int parse_argv(int argc, char *argv[]) { - arg_remove = true; - break; - -+ case ARG_UNSAFE: -+ arg_unsafe = true; -+ break; -+ - case ARG_PREFIX: - if (strv_extend(&include_prefixes, optarg) < 0) - return log_oom(); -diff --git a/tmpfiles.d/legacy.conf b/tmpfiles.d/legacy.conf -index 3fff347..a165687 100644 ---- a/tmpfiles.d/legacy.conf -+++ b/tmpfiles.d/legacy.conf -@@ -29,6 +29,6 @@ d /run/lock/lockdev 0775 root lock - - # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and - # 'quotacheck.mode=force' - --r /forcefsck --r /fastboot --r /forcequotacheck -+r! /forcefsck -+r! /fastboot -+r! /forcequotacheck -diff --git a/tmpfiles.d/systemd-nologin.conf b/tmpfiles.d/systemd-nologin.conf -new file mode 100644 -index 0000000..d61232b ---- /dev/null -+++ b/tmpfiles.d/systemd-nologin.conf -@@ -0,0 +1,11 @@ -+# This file is part of systemd. -+# -+# systemd is free software; you can redistribute it and/or modify it -+# under the terms of the GNU Lesser General Public License as published by -+# the Free Software Foundation; either version 2.1 of the License, or -+# (at your option) any later version. -+ -+# See tmpfiles.d(5) and systemd-forbid-user-logins.service(5). -+# This file has special suffix so it is not run by mistake. -+ -+F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)" -diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf -index a05c657..7c6d6b9 100644 ---- a/tmpfiles.d/systemd.conf -+++ b/tmpfiles.d/systemd.conf -@@ -8,7 +8,7 @@ - # See tmpfiles.d(5) for details - - d /run/user 0755 root root ~10d --F /run/utmp 0664 root utmp - -+F! /run/utmp 0664 root utmp - - - f /var/log/wtmp 0664 root utmp - - f /var/log/btmp 0600 root utmp - -@@ -22,8 +22,6 @@ d /run/systemd/users 0755 root root - - d /run/systemd/machines 0755 root root - - d /run/systemd/shutdown 0755 root root - - --F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)" -- - m /var/log/journal 2755 root systemd-journal - - - m /var/log/journal/%m 2755 root systemd-journal - - - m /run/log/journal 2755 root systemd-journal - - -diff --git a/tmpfiles.d/x11.conf b/tmpfiles.d/x11.conf -index ece6a5c..4c96a54 100644 ---- a/tmpfiles.d/x11.conf -+++ b/tmpfiles.d/x11.conf -@@ -15,4 +15,4 @@ d /tmp/.font-unix 1777 root root 10d - d /tmp/.Test-unix 1777 root root 10d - - # Unlink the X11 lock files --r /tmp/.X[0-9]*-lock -+r! /tmp/.X[0-9]*-lock -diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in -index 3405e28..c2dcae0 100644 ---- a/units/systemd-tmpfiles-setup.service.in -+++ b/units/systemd-tmpfiles-setup.service.in -@@ -6,7 +6,7 @@ - # (at your option) any later version. - - [Unit] --Description=Recreate Volatile Files and Directories -+Description=Create Volatile Files and Directories - Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) - DefaultDependencies=no - Wants=local-fs.target -@@ -18,8 +18,10 @@ ConditionDirectoryNotEmpty=|/lib/tmpfiles.d - ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d - ConditionDirectoryNotEmpty=|/etc/tmpfiles.d - ConditionDirectoryNotEmpty=|/run/tmpfiles.d -+RefuseManualStart=yes -+RefuseManualStop=yes - - [Service] - Type=oneshot - RemainAfterExit=yes --ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --exclude-prefix=/dev -+ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev diff --git a/0198-sleep-config-fix-useless-check-for-swapfile-type.patch b/0198-sleep-config-fix-useless-check-for-swapfile-type.patch deleted file mode 100644 index 2871866..0000000 --- a/0198-sleep-config-fix-useless-check-for-swapfile-type.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5e86ba530ae6f7a4c9aec4069b0b8481003094c6 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Tue, 24 Dec 2013 16:42:06 -0500 -Subject: [PATCH] sleep-config: fix useless check for swapfile type - -Since 0c6f1f4ea49 the check was useless, because the kernel will -ever only write "partition" or "file" there. - -OTOH, it is possible that "\\040(deleted)" (escaped " (deleted)") -will be added for removed files. This should not happen, so add -a warning to detect those cases. ---- - src/shared/sleep-config.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index 2bb0493..d76e3ad 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -183,7 +183,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) { - (void) fscanf(f, "%*s %*s %*s %*s %*s\n"); - - for (i = 1;; i++) { -- _cleanup_free_ char *dev = NULL, *d = NULL, *type = NULL; -+ _cleanup_free_ char *dev = NULL, *type = NULL; - size_t size_field, used_field; - int k; - -@@ -202,12 +202,8 @@ static int hibernation_partition_size(size_t *size, size_t *used) { - continue; - } - -- d = cunescape(dev); -- if (!d) -- return -ENOMEM; -- -- if (!streq(type, "partition") && !streq(type, "file")) { -- log_debug("Partition %s has type %s, ignoring.", d, type); -+ if (streq(type, "partition") && endswith(dev, "\\040(deleted)")) { -+ log_warning("Ignoring deleted swapfile '%s'.", dev); - continue; - } - diff --git a/0199-journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch b/0199-journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch deleted file mode 100644 index 08ec28f..0000000 --- a/0199-journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 2c3dd6140293fb09b4c78b5db2dbcad35ee7d002 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 26 Dec 2013 01:52:01 +0100 -Subject: [PATCH] journalctl: make sure -b --foobar cannot be misunderstood as - --boot=--foobar - -Conflicts: - src/journal/journalctl.c - src/systemd/sd-bus.h ---- - src/journal/journalctl.c | 111 +++++++++++++++++++++++++---------------------- - 1 file changed, 60 insertions(+), 51 deletions(-) - -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index 1d66792..ccd96b2 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -72,7 +72,8 @@ static bool arg_no_tail = false; - static bool arg_quiet = false; - static bool arg_merge = false; - static bool arg_boot = false; --static char *arg_boot_descriptor = NULL; -+static sd_id128_t arg_boot_id = {}; -+static int arg_boot_offset = 0; - static bool arg_dmesg = false; - static const char *arg_cursor = NULL; - static const char *arg_after_cursor = NULL; -@@ -122,6 +123,41 @@ static void pager_open_if_enabled(void) { - pager_open(arg_pager_end); - } - -+static int parse_boot_descriptor(const char *x, sd_id128_t *boot_id, int *offset) { -+ sd_id128_t id = SD_ID128_NULL; -+ int off = 0, r; -+ -+ if (strlen(x) >= 32) { -+ char *t; -+ -+ t = strndupa(x, 32); -+ r = sd_id128_from_string(t, &id); -+ if (r >= 0) -+ x += 32; -+ -+ if (*x != '-' && *x != '+' && *x != 0) -+ return -EINVAL; -+ -+ if (*x != 0) { -+ r = safe_atoi(x, &off); -+ if (r < 0) -+ return r; -+ } -+ } else { -+ r = safe_atoi(x, &off); -+ if (r < 0) -+ return r; -+ } -+ -+ if (boot_id) -+ *boot_id = id; -+ -+ if (offset) -+ *offset = off; -+ -+ return 0; -+} -+ - static int help(void) { - - pager_open_if_enabled(); -@@ -365,16 +401,23 @@ static int parse_argv(int argc, char *argv[]) { - case 'b': - arg_boot = true; - -- if (optarg) -- arg_boot_descriptor = optarg; -- else if (optind < argc) { -- int boot; -+ if (optarg) { -+ r = parse_boot_descriptor(optarg, &arg_boot_id, &arg_boot_offset); -+ if (r < 0) { -+ log_error("Failed to parse boot descriptor '%s'", optarg); -+ return -EINVAL; -+ } -+ } else { -+ -+ /* Hmm, no argument? Maybe the next -+ * word on the command line is -+ * supposed to be the argument? Let's -+ * see if there is one and is parsable -+ * as a boot descriptor... */ - -- if (argv[optind][0] != '-' || -- safe_atoi(argv[optind], &boot) >= 0) { -- arg_boot_descriptor = argv[optind]; -+ if (optind < argc && -+ parse_boot_descriptor(argv[optind], &arg_boot_id, &arg_boot_offset) >= 0) - optind++; -- } - } - - break; -@@ -809,9 +852,6 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative - assert(j); - assert(boot_id); - -- if (relative == 0 && !sd_id128_equal(*boot_id, SD_ID128_NULL)) -- return 0; -- - r = sd_journal_query_unique(j, "_BOOT_ID"); - if (r < 0) - return r; -@@ -878,58 +918,27 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative - - static int add_boot(sd_journal *j) { - char match[9+32+1] = "_BOOT_ID="; -- char *offset; -- sd_id128_t boot_id = SD_ID128_NULL; -- int r, relative = 0; -+ int r; - - assert(j); - - if (!arg_boot) - return 0; - -- if (!arg_boot_descriptor) -+ if (arg_boot_offset == 0 && sd_id128_equal(arg_boot_id, SD_ID128_NULL)) - return add_match_this_boot(j); - -- if (strlen(arg_boot_descriptor) >= 32) { -- char tmp = arg_boot_descriptor[32]; -- arg_boot_descriptor[32] = '\0'; -- r = sd_id128_from_string(arg_boot_descriptor, &boot_id); -- arg_boot_descriptor[32] = tmp; -- -- if (r < 0) { -- log_error("Failed to parse boot ID '%.32s': %s", -- arg_boot_descriptor, strerror(-r)); -- return r; -- } -- -- offset = arg_boot_descriptor + 32; -- -- if (*offset && *offset != '-' && *offset != '+') { -- log_error("Relative boot ID offset must start with a '+' or a '-', found '%s' ", offset); -- return -EINVAL; -- } -- } else -- offset = arg_boot_descriptor; -- -- if (*offset) { -- r = safe_atoi(offset, &relative); -- if (r < 0) { -- log_error("Failed to parse relative boot ID number '%s'", offset); -- return -EINVAL; -- } -- } -- -- r = get_relative_boot_id(j, &boot_id, relative); -+ r = get_relative_boot_id(j, &arg_boot_id, arg_boot_offset); - if (r < 0) { -- if (sd_id128_equal(boot_id, SD_ID128_NULL)) -- log_error("Failed to look up boot %+d: %s", relative, strerror(-r)); -+ if (sd_id128_equal(arg_boot_id, SD_ID128_NULL)) -+ log_error("Failed to look up boot %+i: %s", arg_boot_offset, strerror(-r)); - else -- log_error("Failed to look up boot ID "SD_ID128_FORMAT_STR"%+d: %s", -- SD_ID128_FORMAT_VAL(boot_id), relative, strerror(-r)); -+ log_error("Failed to look up boot ID "SD_ID128_FORMAT_STR"%+i: %s", -+ SD_ID128_FORMAT_VAL(arg_boot_id), arg_boot_offset, strerror(-r)); - return r; - } - -- sd_id128_to_string(boot_id, match + 9); -+ sd_id128_to_string(arg_boot_id, match + 9); - - r = sd_journal_add_match(j, match, sizeof(match) - 1); - if (r < 0) { diff --git a/0200-man-resolve-word-omissions.patch b/0200-man-resolve-word-omissions.patch deleted file mode 100644 index 8528eef..0000000 --- a/0200-man-resolve-word-omissions.patch +++ /dev/null @@ -1,725 +0,0 @@ -From 424e80301de3b39d8641a49a7755af6dc3d6b4e8 Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Thu, 26 Dec 2013 02:47:43 +0100 -Subject: [PATCH] man: resolve word omissions - -This is a recurring submission and includes corrections to: -word omissions and word class choice. - -Conflicts: - man/sd_bus_message_get_cookie.xml - man/sd_bus_request_name.xml - man/sd_watchdog_enabled.xml - man/systemd-getty-generator.xml ---- - man/binfmt.d.xml | 4 ++-- - man/journald.conf.xml | 2 +- - man/loginctl.xml | 2 +- - man/sd-daemon.xml | 2 +- - man/sd-journal.xml | 2 +- - man/sd-login.xml | 4 ++-- - man/sd_booted.xml | 2 +- - man/sd_get_seats.xml | 8 ++++---- - man/sd_id128_get_machine.xml | 2 +- - man/sd_id128_randomize.xml | 2 +- - man/sd_id128_to_string.xml | 2 +- - man/sd_is_fifo.xml | 2 +- - man/sd_journal_add_match.xml | 2 +- - man/sd_journal_get_catalog.xml | 2 +- - man/sd_journal_get_cursor.xml | 2 +- - man/sd_journal_get_cutoff_realtime_usec.xml | 2 +- - man/sd_journal_get_data.xml | 2 +- - man/sd_journal_get_fd.xml | 2 +- - man/sd_journal_get_realtime_usec.xml | 2 +- - man/sd_journal_get_usage.xml | 2 +- - man/sd_journal_next.xml | 6 +++--- - man/sd_journal_print.xml | 2 +- - man/sd_journal_query_unique.xml | 2 +- - man/sd_journal_seek_head.xml | 4 ++-- - man/sd_journal_stream_fd.xml | 2 +- - man/sd_listen_fds.xml | 4 ++-- - man/sd_login_monitor_new.xml | 2 +- - man/sd_notify.xml | 4 ++-- - man/sd_pid_get_session.xml | 2 +- - man/sd_seat_get_active.xml | 2 +- - man/sd_session_is_active.xml | 2 +- - man/sd_uid_get_state.xml | 4 ++-- - man/sysctl.d.xml | 4 ++-- - man/systemctl.xml | 4 ++-- - man/systemd-getty-generator.xml | 8 ++++---- - man/systemd-halt.service.xml | 2 +- - man/systemd-machine-id-setup.xml | 2 +- - man/systemd.preset.xml | 4 ++-- - man/systemd.service.xml | 2 +- - man/systemd.socket.xml | 4 ++-- - man/systemd.unit.xml | 4 ++-- - man/tmpfiles.d.xml | 4 ++-- - 42 files changed, 62 insertions(+), 62 deletions(-) - -diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml -index 94f97e0..6f8668b 100644 ---- a/man/binfmt.d.xml -+++ b/man/binfmt.d.xml -@@ -88,8 +88,8 @@ - administrator, who may use this logic to override the - configuration files installed from vendor - packages. All files are sorted by their filename in -- lexicographic order, regardless in which of the -- directories they reside. If multiple files specify -+ lexicographic order, regardless of which of the -+ directories they reside in. If multiple files specify - the same binary type name, the entry in the file with - the lexicographically latest name will be applied. - -diff --git a/man/journald.conf.xml b/man/journald.conf.xml -index 8e642a3..b362c5d 100644 ---- a/man/journald.conf.xml -+++ b/man/journald.conf.xml -@@ -155,7 +155,7 @@ - into the system journal. If - uid, any user ID - will get his own journal files -- regardless whether it belongs to a -+ regardless of whether it belongs to a - system service or refers to a real - logged in user. If - none, journal files -diff --git a/man/loginctl.xml b/man/loginctl.xml -index 1b54ff7..133d6cf 100644 ---- a/man/loginctl.xml -+++ b/man/loginctl.xml -@@ -109,7 +109,7 @@ - - When showing - session/user/seat properties, show all -- properties regardless whether they are -+ properties regardless of whether they are - set or not. - - -diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml -index 6e804e1..84c1afa 100644 ---- a/man/sd-daemon.xml -+++ b/man/sd-daemon.xml -@@ -144,7 +144,7 @@ - These APIs are implemented in the reference - implementation's sd-daemon.c and - sd-daemon.h files. These -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs -diff --git a/man/sd-journal.xml b/man/sd-journal.xml -index 6d39611..832d584 100644 ---- a/man/sd-journal.xml -+++ b/man/sd-journal.xml -@@ -98,7 +98,7 @@ - - Notes - -- These APIs are implemented as shared library, -+ These APIs are implemented as a shared library, - which can be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd-login.xml b/man/sd-login.xml -index 251b35b..1d47b29 100644 ---- a/man/sd-login.xml -+++ b/man/sd-login.xml -@@ -99,7 +99,7 @@ - caller with the libc - free3 - call after use, including the strings referenced -- therein. Similar, individual strings returned need to -+ therein. Similarly, individual strings returned need to - be freed, as well. - - As a special exception, instead of an empty -@@ -120,7 +120,7 @@ - - Notes - -- These APIs are implemented as shared library, -+ These APIs are implemented as a shared library, - which can be compiled and linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_booted.xml b/man/sd_booted.xml -index 64c0cd9..6f8cc95 100644 ---- a/man/sd_booted.xml -+++ b/man/sd_booted.xml -@@ -100,7 +100,7 @@ - in the reference implementation's - sd-daemon.c and - sd-daemon.h files. These -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs -diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml -index 8254b7c..1e55af3 100644 ---- a/man/sd_get_seats.xml -+++ b/man/sd_get_seats.xml -@@ -90,13 +90,13 @@ - NULL may be returned and should be considered - equivalent to an empty array. - -- Similar, sd_get_sessions() may -+ Similarly, sd_get_sessions() may - be used to determine all current login sessions. - -- Similar, sd_get_uids() may -+ Similarly, sd_get_uids() may - be used to determine all Unix users who currently have login sessions. - -- Similar, -+ Similarly, - sd_get_machine_names() may be - used to determine all current virtual machines and - containers on the system. -@@ -122,7 +122,7 @@ - sd_get_sessions(), - sd_get_uids() and - sd_get_machine_names() interfaces -- are available as shared library, which can be compiled -+ are available as a shared library, which can be compiled - and linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_id128_get_machine.xml b/man/sd_id128_get_machine.xml -index 6bee7ad..084fda2 100644 ---- a/man/sd_id128_get_machine.xml -+++ b/man/sd_id128_get_machine.xml -@@ -116,7 +116,7 @@ - - The sd_id128_get_machine() - and sd_id128_get_boot() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-id128 pkg-config1 - file. -diff --git a/man/sd_id128_randomize.xml b/man/sd_id128_randomize.xml -index 0b95803..100de16 100644 ---- a/man/sd_id128_randomize.xml -+++ b/man/sd_id128_randomize.xml -@@ -95,7 +95,7 @@ - Notes - - The sd_id128_randomize() interface -- is available as shared library, which can be compiled -+ is available as a shared library, which can be compiled - and linked to with the - libsystemd-id128 pkg-config1 - file. -diff --git a/man/sd_id128_to_string.xml b/man/sd_id128_to_string.xml -index 71cf82a..eae2915 100644 ---- a/man/sd_id128_to_string.xml -+++ b/man/sd_id128_to_string.xml -@@ -118,7 +118,7 @@ - - The sd_id128_to_string() - and sd_id128_from_string() interfaces are -- available as shared library, which can be compiled and -+ available as a shared library, which can be compiled and - linked to with the libsystemd-id128 pkg-config1 - file. - -diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml -index 4d9cd79..5e79453 100644 ---- a/man/sd_is_fifo.xml -+++ b/man/sd_is_fifo.xml -@@ -208,7 +208,7 @@ - related functions are implemented in the reference - implementation's sd-daemon.c and - sd-daemon.h files. These -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs -diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml -index b6c7b06..6568234 100644 ---- a/man/sd_journal_add_match.xml -+++ b/man/sd_journal_add_match.xml -@@ -174,7 +174,7 @@ - sd_journal_add_disjunction(), - sd_journal_add_conjunction() and - sd_journal_flush_matches() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml -index 4a7e0a1..ecd329f 100644 ---- a/man/sd_journal_get_catalog.xml -+++ b/man/sd_journal_get_catalog.xml -@@ -118,7 +118,7 @@ - - The sd_journal_get_catalog() and - sd_journal_get_catalog_for_message_id() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml -index 4cee7d5..046c154 100644 ---- a/man/sd_journal_get_cursor.xml -+++ b/man/sd_journal_get_cursor.xml -@@ -130,7 +130,7 @@ - - The sd_journal_get_cursor() - and sd_journal_test_cursor() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml -index 9bf8220..287c1c5 100644 ---- a/man/sd_journal_get_cutoff_realtime_usec.xml -+++ b/man/sd_journal_get_cutoff_realtime_usec.xml -@@ -122,7 +122,7 @@ - sd_journal_get_cutoff_realtime_usec() - and - sd_journal_get_cutoff_monotonic_usec() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_data.xml b/man/sd_journal_get_data.xml -index 0e1111e..6ed52b5 100644 ---- a/man/sd_journal_get_data.xml -+++ b/man/sd_journal_get_data.xml -@@ -203,7 +203,7 @@ - sd_journal_set_data_threshold() - and - sd_journal_get_data_threshold() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml -index 764f716..4b36f97 100644 ---- a/man/sd_journal_get_fd.xml -+++ b/man/sd_journal_get_fd.xml -@@ -253,7 +253,7 @@ else { - sd_journal_reliable_fd(), - sd_journal_process() and - sd_journal_wait() interfaces are -- available as shared library, which can be compiled and -+ available as a shared library, which can be compiled and - linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_realtime_usec.xml b/man/sd_journal_get_realtime_usec.xml -index 8870c29..bf1aa50 100644 ---- a/man/sd_journal_get_realtime_usec.xml -+++ b/man/sd_journal_get_realtime_usec.xml -@@ -122,7 +122,7 @@ - sd_journal_get_realtime_usec() - and - sd_journal_get_monotonic_usec() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml -index 180d8b2..08d8640 100644 ---- a/man/sd_journal_get_usage.xml -+++ b/man/sd_journal_get_usage.xml -@@ -84,7 +84,7 @@ - Notes - - The sd_journal_get_usage() -- interface is available as shared library, which can be -+ interface is available as a shared library, which can be - compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_next.xml b/man/sd_journal_next.xml -index 6e437d1..1409b0d 100644 ---- a/man/sd_journal_next.xml -+++ b/man/sd_journal_next.xml -@@ -102,7 +102,7 @@ - functions such as - sd_journal_get_data3. - -- Similar, sd_journal_previous() sets -+ Similarly, sd_journal_previous() sets - the read pointer back one entry. - - sd_journal_next_skip() and -@@ -129,7 +129,7 @@ - sd_journal_seek_head3 - and sd_journal_next() in order to - make iterating through the journal easier. See below -- for an example. Similar, -+ for an example. Similarly, - SD_JOURNAL_FOREACH_BACKWARDS() - may be used for iterating the journal in reverse - order. -@@ -156,7 +156,7 @@ - The sd_journal_next(), sd_journal_previous(), - sd_journal_next_skip() and - sd_journal_previous_skip() interfaces are -- available as shared library, which can be compiled and -+ available as a shared library, which can be compiled and - linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml -index e61a648..a716cc3 100644 ---- a/man/sd_journal_print.xml -+++ b/man/sd_journal_print.xml -@@ -227,7 +227,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid( - sd_journal_printv(), - sd_journal_send() and - sd_journal_sendv() interfaces -- are available as shared library, which can be compiled -+ are available as a shared library, which can be compiled - and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml -index f5d9d2b..f0b9204 100644 ---- a/man/sd_journal_query_unique.xml -+++ b/man/sd_journal_query_unique.xml -@@ -156,7 +156,7 @@ - The sd_journal_query_unique(), - sd_journal_enumerate_unique() and - sd_journal_restart_unique() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_seek_head.xml b/man/sd_journal_seek_head.xml -index 03de30a..939f0b1 100644 ---- a/man/sd_journal_seek_head.xml -+++ b/man/sd_journal_seek_head.xml -@@ -94,7 +94,7 @@ - seeks to the beginning of the journal, i.e. the oldest - available entry. - -- Similar, -+ Similarly, - sd_journal_seek_tail() may be - used to seek to the end of the journal, i.e. the most - recent available entry. -@@ -156,7 +156,7 @@ - sd_journal_seek_monotonic_usec(), - sd_journal_seek_realtime_usec(), - and sd_journal_seek_cursor() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml -index 4bd0abc..a8dc8fd 100644 ---- a/man/sd_journal_stream_fd.xml -+++ b/man/sd_journal_stream_fd.xml -@@ -112,7 +112,7 @@ - Notes - - The sd_journal_stream_fd() -- interface is available as shared library, which can -+ interface is available as a shared library, which can - be compiled and linked to with the - libsystemd-journal pkg-config1 - file. -diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml -index 240300d..aaabdbf 100644 ---- a/man/sd_listen_fds.xml -+++ b/man/sd_listen_fds.xml -@@ -73,7 +73,7 @@ - parameter is non-zero, - sd_listen_fds() will unset the - $LISTEN_FDS/$LISTEN_PID -- environment variables before returning (regardless -+ environment variables before returning (regardless of - whether the function call itself succeeded or - not). Further calls to - sd_listen_fds() will then fail, -@@ -149,7 +149,7 @@ - implemented in the reference implementation's - sd-daemon.c and - sd-daemon.h files. These -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs -diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml -index 909a3d9..f439d3e 100644 ---- a/man/sd_login_monitor_new.xml -+++ b/man/sd_login_monitor_new.xml -@@ -224,7 +224,7 @@ else { - sd_login_monitor_get_fd(), - sd_login_monitor_get_events() and - sd_login_monitor_get_timeout() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_notify.xml b/man/sd_notify.xml -index 55965ff..e078140 100644 ---- a/man/sd_notify.xml -+++ b/man/sd_notify.xml -@@ -79,7 +79,7 @@ - If the unset_environment - parameter is non-zero, sd_notify() - will unset the $NOTIFY_SOCKET -- environment variable before returning (regardless -+ environment variable before returning (regardless of - whether the function call itself succeeded or - not). Further calls to - sd_notify() will then fail, but -@@ -236,7 +236,7 @@ - the reference implementation's - sd-daemon.c and - sd-daemon.h files. These -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs -diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml -index e5c7709..ff5905b 100644 ---- a/man/sd_pid_get_session.xml -+++ b/man/sd_pid_get_session.xml -@@ -186,7 +186,7 @@ - sd_pid_get_owner_uid(), - sd_pid_get_machine_name() and - sd_pid_get_slice() interfaces are -- available as shared library, which can be compiled and -+ available as a shared library, which can be compiled and - linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml -index cd87696..23d582d 100644 ---- a/man/sd_seat_get_active.xml -+++ b/man/sd_seat_get_active.xml -@@ -164,7 +164,7 @@ - sd_seat_can_multi_session(), - sd_seat_can_tty() and - sd_seat_can_grapical() interfaces -- are available as shared library, which can be compiled -+ are available as a shared library, which can be compiled - and linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml -index 293ce71..06891f7 100644 ---- a/man/sd_session_is_active.xml -+++ b/man/sd_session_is_active.xml -@@ -252,7 +252,7 @@ - sd_session_get_class(), - sd_session_get_display() and - sd_session_get_tty() -- interfaces are available as shared library, which can -+ interfaces are available as a shared library, which can - be compiled and linked to with the - libsystemd-login pkg-config1 - file. -diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml -index d4d23f4..0faa765 100644 ---- a/man/sd_uid_get_state.xml -+++ b/man/sd_uid_get_state.xml -@@ -139,7 +139,7 @@ - be returned and should be considered equivalent to an - empty array. - -- Similar, sd_uid_get_seats() -+ Similarly, sd_uid_get_seats() - may be used to determine the list of seats on which - the user currently has sessions. Similar semantics - apply, however note that the user may have -@@ -171,7 +171,7 @@ - sd_uid_is_on_seat(), - sd_uid_get_sessions(), and - sd_uid_get_seats() interfaces are -- available as shared library, which can be compiled and -+ available as a shared library, which can be compiled and - linked to with the libsystemd-login pkg-config1 - file. - -diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml -index 854864c..5544283 100644 ---- a/man/sysctl.d.xml -+++ b/man/sysctl.d.xml -@@ -89,8 +89,8 @@ - administrator, who may use this logic to override the - configuration files installed by vendor packages. All - configuration files are sorted by their filename in -- lexicographic order, regardless in which of the -- directories they reside. If multiple files specify the -+ lexicographic order, regardless of which of the -+ directories they reside in. If multiple files specify the - same variable name, the entry in the file with the - lexicographically latest name will be applied. It is - recommended to prefix all filenames with a two-digit -diff --git a/man/systemctl.xml b/man/systemctl.xml -index b4bc15d..61deb19 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -250,7 +250,7 @@ systemctl start foo - sleep state. Any user may take these locks and privileged - users may override these locks. If any locks are taken, - shutdown and sleep state requests will normally fail -- (regardless if privileged or not) and a list of active locks -+ (regardless of whether privileged or not) and a list of active locks - is printed. However, if - is specified, the locks are ignored and not printed, and the - operation attempted anyway, possibly requiring additional -@@ -445,7 +445,7 @@ systemctl start foo - with identical immediate effects, however, since the latter - is lost on reboot, the changes are lost too. - -- Similar, when used with -+ Similarly, when used with - set-property, make changes only - temporarily, so that they are lost on the next - reboot. -diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml -index da88e72..b1993ae 100644 ---- a/man/systemd-getty-generator.xml -+++ b/man/systemd-getty-generator.xml -@@ -61,10 +61,10 @@ - subsystem. It will also instantiate - serial-getty@.service instances - for virtualizer consoles, if execution in a -- virtualized environment is detected. This should -- ensure that the user is shown a login prompt at the -- right place, regardless in which environment the -- system is started. For example, it is sufficient to -+ virtualized environment is detected. This -+ should ensure that the user is shown a login prompt at -+ the right place, regardless of which environment the -+ system is started in. For example, it is sufficient to - redirect the kernel console with a kernel command line - argument such as console= to get - both kernel messages and a getty prompt on a serial -diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml -index 90b443f..99457aa 100644 ---- a/man/systemd-halt.service.xml -+++ b/man/systemd-halt.service.xml -@@ -65,7 +65,7 @@ - systemd-halt.service is a - system service that is pulled in by - halt.target and is responsible -- for the actual system halt. Similar, -+ for the actual system halt. Similarly, - systemd-poweroff.service is - pulled in by poweroff.target, - systemd-reboot.service by -diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml -index fef76bc..bc38d55 100644 ---- a/man/systemd-machine-id-setup.xml -+++ b/man/systemd-machine-id-setup.xml -@@ -80,7 +80,7 @@ - UUID passed is sufficiently unique and is different - for every booted instanced of the VM. - -- Similar, if run inside a Linux container -+ Similarly, if run inside a Linux container - environment and a UUID is set for the container this - is used to initialize the machine ID. For details see - the documentation of the always, the service -- will be restarted regardless whether -+ will be restarted regardless of whether - it exited cleanly or not, got - terminated abnormally by a signal or - hit a timeout. -diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml -index 1c78562..ac3127d 100644 ---- a/man/systemd.socket.xml -+++ b/man/systemd.socket.xml -@@ -213,7 +213,7 @@ - traffic on any of the sockets will - trigger service activation, and all - listed sockets will be passed to the -- service, regardless whether there is -+ service, regardless of whether there is - incoming traffic on them or not. If - the empty string is assigned to any of - these options, the list of addresses -@@ -225,7 +225,7 @@ - it is often desirable to listen on it - before the interface it is configured - on is up and running, and even -- regardless whether it will be up and -+ regardless of whether it will be up and - running ever at all. To deal with this - it is recommended to set the - FreeBind= option -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index 77127ff..b70c5e9 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -634,7 +634,7 @@ - dependency on another unit is shut - down while the latter is started up, - the shut down is ordered before the -- start-up regardless whether the -+ start-up regardless of whether the - ordering dependency is actually of - type After= or - Before=. If two -@@ -938,7 +938,7 @@ - exists, is a regular file and marked - executable. - -- Similar, -+ Similarly, - ConditionKernelCommandLine= - may be used to check whether a - specific kernel command line option is -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index 39aa68d..ed88751 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -88,8 +88,8 @@ - the local administrator, who may use this logic to - override the configuration files installed by vendor - packages. All configuration files are sorted by their -- filename in lexicographic order, regardless in which -- of the directories they reside. If multiple files -+ filename in lexicographic order, regardless of which -+ of the directories they reside in. If multiple files - specify the same path, the entry in the file with the - lexicographically earliest name will be applied, all - all other conflicting entries logged as errors. diff --git a/0201-man-improvements-to-comma-placement.patch b/0201-man-improvements-to-comma-placement.patch deleted file mode 100644 index b1a9674..0000000 --- a/0201-man-improvements-to-comma-placement.patch +++ /dev/null @@ -1,507 +0,0 @@ -From 4a1155c88d295e81037fd8a48b585a00fbf43cbc Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Thu, 26 Dec 2013 02:47:44 +0100 -Subject: [PATCH] man: improvements to comma placement - -This is a recurring submission and includes corrections to: -comma placement. - -Conflicts: - man/sd_bus_message_get_cookie.xml - man/sd_bus_request_name.xml - man/sd_session_is_active.xml - man/sd_watchdog_enabled.xml - man/systemctl.xml - man/systemd.exec.xml - man/systemd.timer.xml - man/systemd.unit.xml ---- - man/halt.xml | 2 +- - man/hostnamectl.xml | 2 +- - man/sd-daemon.xml | 4 ++-- - man/sd-readahead.xml | 2 +- - man/sd_booted.xml | 2 +- - man/sd_get_seats.xml | 2 +- - man/sd_is_fifo.xml | 2 +- - man/sd_listen_fds.xml | 2 +- - man/sd_login_monitor_new.xml | 6 +++--- - man/sd_notify.xml | 2 +- - man/sd_readahead.xml | 2 +- - man/sd_seat_get_active.xml | 4 ++-- - man/sd_uid_get_state.xml | 4 ++-- - man/shutdown.xml | 2 +- - man/systemd-analyze.xml | 2 +- - man/systemd-ask-password.xml | 2 +- - man/systemd-cat.xml | 2 +- - man/systemd-cgls.xml | 2 +- - man/systemd-cgtop.xml | 2 +- - man/systemd-coredumpctl.xml | 2 +- - man/systemd-delta.xml | 2 +- - man/systemd-machine-id-setup.xml | 2 +- - man/systemd-notify.xml | 2 +- - man/systemd-tmpfiles.xml | 2 +- - man/systemd-tty-ask-password-agent.xml | 2 +- - man/systemd.device.xml | 2 +- - man/systemd.mount.xml | 2 +- - man/systemd.service.xml | 2 +- - man/systemd.special.xml | 2 +- - man/systemd.swap.xml | 2 +- - man/systemd.xml | 2 +- - man/telinit.xml | 2 +- - man/timedatectl.xml | 2 +- - 33 files changed, 38 insertions(+), 38 deletions(-) - -diff --git a/man/halt.xml b/man/halt.xml -index 2a13d3c..f54a864 100644 ---- a/man/halt.xml -+++ b/man/halt.xml -@@ -148,7 +148,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml -index b39fb55..a0776f5 100644 ---- a/man/hostnamectl.xml -+++ b/man/hostnamectl.xml -@@ -255,7 +255,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml -index 84c1afa..b48eac9 100644 ---- a/man/sd-daemon.xml -+++ b/man/sd-daemon.xml -@@ -83,7 +83,7 @@ - sd_booted3, - sd_is_fifo3 - for more information about the functions -- implemented. In addition to these functions a couple -+ implemented. In addition to these functions, a couple - of logging prefixes are defined as macros: - - #define SD_EMERG "<0>" /* system is unusable */ -@@ -135,7 +135,7 @@ - implementation. See the respective function man pages - for details. - -- In addition, for details about the algorithms -+ In addition, for details about the algorithms, - check the liberally licensed reference implementation - sources: - -diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml -index f8a0a0b..bcc46b2 100644 ---- a/man/sd-readahead.xml -+++ b/man/sd-readahead.xml -@@ -83,7 +83,7 @@ - reference implementation. See the respective function - man pages for details. - -- In addition, for details about the algorithms -+ In addition, for details about the algorithms, - check the liberally licensed reference implementation - sources: - -diff --git a/man/sd_booted.xml b/man/sd_booted.xml -index 6f8cc95..1e38d2a 100644 ---- a/man/sd_booted.xml -+++ b/man/sd_booted.xml -@@ -106,7 +106,7 @@ - file. Alternatively, applications consuming these APIs - may copy the implementation into their source - tree. For more details about the reference -- implementation see -+ implementation, see - sd-daemon3. - - If the reference implementation is used as -diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml -index 1e55af3..f0e7655 100644 ---- a/man/sd_get_seats.xml -+++ b/man/sd_get_seats.xml -@@ -107,7 +107,7 @@ - - Return Value - -- On success sd_get_seats(), -+ On success, sd_get_seats(), - sd_get_sessions(), - sd_get_uids() and - sd_get_machine_names() return the -diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml -index 5e79453..4bb2236 100644 ---- a/man/sd_is_fifo.xml -+++ b/man/sd_is_fifo.xml -@@ -214,7 +214,7 @@ - file. Alternatively, applications consuming these APIs - may copy the implementation into their source - tree. For more details about the reference -- implementation see -+ implementation, see - sd-daemon3. - - These functions continue to work as described, -diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml -index aaabdbf..6a9e082 100644 ---- a/man/sd_listen_fds.xml -+++ b/man/sd_listen_fds.xml -@@ -155,7 +155,7 @@ - file. Alternatively, applications consuming these APIs - may copy the implementation into their source - tree. For more details about the reference -- implementation see -+ implementation, see - sd-daemon3. - - If the reference implementation is used as -diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml -index f439d3e..14ff241 100644 ---- a/man/sd_login_monitor_new.xml -+++ b/man/sd_login_monitor_new.xml -@@ -198,13 +198,13 @@ else { - - Return Value - -- On success -+ On success, - sd_login_monitor_new(), - sd_login_monitor_flush() and - sd_login_monitor_get_timeout() -- return 0 or a positive integer. On success -+ return 0 or a positive integer. On success, - sd_login_monitor_get_fd() returns -- a Unix file descriptor. On success -+ a Unix file descriptor. On success, - sd_login_monitor_get_events() - returns a combination of POLLIN, - POLLOUT and suchlike. On failure, -diff --git a/man/sd_notify.xml b/man/sd_notify.xml -index e078140..aae27a8 100644 ---- a/man/sd_notify.xml -+++ b/man/sd_notify.xml -@@ -241,7 +241,7 @@ - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs - may copy the implementation into their source tree. For -- more details about the reference implementation see -+ more details about the reference implementation, see - sd-daemon3. - - If the reference implementation is used as -diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml -index bb01bcf..9827299 100644 ---- a/man/sd_readahead.xml -+++ b/man/sd_readahead.xml -@@ -139,7 +139,7 @@ - sd-readahead.h files. It is - recommended that applications consuming this API copy - the implementation into their source tree. For more -- details about the reference implementation see -+ details about the reference implementation, see - sd-readahead3 - - If -DDISABLE_SYSTEMD is set during compilation, -diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml -index 23d582d..c64ba13 100644 ---- a/man/sd_seat_get_active.xml -+++ b/man/sd_seat_get_active.xml -@@ -143,9 +143,9 @@ - - Return Value - -- On success -+ On success, - sd_seat_get_active() -- returns 0 or a positive integer. On success -+ returns 0 or a positive integer. On success, - sd_seat_get_sessions() returns - the number of entries in the session identifier - array. If the test succeeds, -diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml -index 0faa765..30b254c 100644 ---- a/man/sd_uid_get_state.xml -+++ b/man/sd_uid_get_state.xml -@@ -152,11 +152,11 @@ - - Return Value - -- On success -+ On success, - sd_uid_get_state() returns 0 or a - positive integer. If the test succeeds, - sd_uid_is_on_seat() returns a -- positive integer, if it fails -+ positive integer; if it fails, - 0. sd_uid_get_sessions() and - sd_uid_get_seats() return the - number of entries in the returned arrays. On failure, -diff --git a/man/shutdown.xml b/man/shutdown.xml -index 795fb66..27e7e87 100644 ---- a/man/shutdown.xml -+++ b/man/shutdown.xml -@@ -164,7 +164,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml -index aefbfc8..b7753f9 100644 ---- a/man/systemd-analyze.xml -+++ b/man/systemd-analyze.xml -@@ -270,7 +270,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml -index 8af328d..79902cb 100644 ---- a/man/systemd-ask-password.xml -+++ b/man/systemd-ask-password.xml -@@ -167,7 +167,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml -index ffb1dfd..ba7a2cf 100644 ---- a/man/systemd-cat.xml -+++ b/man/systemd-cat.xml -@@ -158,7 +158,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml -index 432706b..152b883 100644 ---- a/man/systemd-cgls.xml -+++ b/man/systemd-cgls.xml -@@ -145,7 +145,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml -index 7faedfb..0e1f7c5 100644 ---- a/man/systemd-cgtop.xml -+++ b/man/systemd-cgtop.xml -@@ -264,7 +264,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml -index 9ccb67d..67f75d1 100644 ---- a/man/systemd-coredumpctl.xml -+++ b/man/systemd-coredumpctl.xml -@@ -200,7 +200,7 @@ - - - Exit status -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. Not finding any matching coredumps is treated - as failure. - -diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml -index 4d3ab78..ebaa349 100644 ---- a/man/systemd-delta.xml -+++ b/man/systemd-delta.xml -@@ -223,7 +223,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml -index bc38d55..7b3aa7e 100644 ---- a/man/systemd-machine-id-setup.xml -+++ b/man/systemd-machine-id-setup.xml -@@ -116,7 +116,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-notify.xml b/man/systemd-notify.xml -index a769346..e14977d 100644 ---- a/man/systemd-notify.xml -+++ b/man/systemd-notify.xml -@@ -172,7 +172,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml -index 495247e..c678031 100644 ---- a/man/systemd-tmpfiles.xml -+++ b/man/systemd-tmpfiles.xml -@@ -178,7 +178,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd-tty-ask-password-agent.xml b/man/systemd-tty-ask-password-agent.xml -index 31a18ba..cb5fb43 100644 ---- a/man/systemd-tty-ask-password-agent.xml -+++ b/man/systemd-tty-ask-password-agent.xml -@@ -148,7 +148,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/systemd.device.xml b/man/systemd.device.xml -index 002b647..586473c 100644 ---- a/man/systemd.device.xml -+++ b/man/systemd.device.xml -@@ -75,7 +75,7 @@ - udev tag (by default all block and network devices, - and a few others). This may be used to define - dependencies between devices and other units. To tag a -- udev device use TAG+="systemd" in -+ udev device, use TAG+="systemd" in - the udev rules file, see - udev7 - for details. -diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml -index df5a79e..6f9f70c 100644 ---- a/man/systemd.mount.xml -+++ b/man/systemd.mount.xml -@@ -94,7 +94,7 @@ - in a unit file - home-lennart.mount. For details - about the escaping logic used to convert a file system -- path to a unit name see -+ path to a unit name, see - systemd.unit5. - - Optionally, a mount unit may be accompanied by -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 80a935d..e869f95 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -441,7 +441,7 @@ - one and - two two, - respectively. Since two commands are -- specified -+ specified, - Type=oneshot must - be used. - -diff --git a/man/systemd.special.xml b/man/systemd.special.xml -index 863a029..76bb5cd 100644 ---- a/man/systemd.special.xml -+++ b/man/systemd.special.xml -@@ -996,7 +996,7 @@ - smartcard.target, - sound.target. - -- In addition the following special unit is -+ In addition, the following special unit is - understood only when systemd runs as service instance: - - -diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml -index 13f6c84..5e8b25f 100644 ---- a/man/systemd.swap.xml -+++ b/man/systemd.swap.xml -@@ -85,7 +85,7 @@ - /dev/sda5 must be configured in a - unit file dev-sda5.swap. For - details about the escaping logic used to convert a -- file system path to a unit name see -+ file system path to a unit name, see - systemd.unit5. - - All swap units automatically get the appropriate -diff --git a/man/systemd.xml b/man/systemd.xml -index 85c06d3..23a0c26 100644 ---- a/man/systemd.xml -+++ b/man/systemd.xml -@@ -494,7 +494,7 @@ - /proc. - - For more information about the concepts and -- ideas behind systemd please refer to the Original - Design Document. - -diff --git a/man/telinit.xml b/man/telinit.xml -index bb80939..b20a60a 100644 ---- a/man/telinit.xml -+++ b/man/telinit.xml -@@ -171,7 +171,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - -diff --git a/man/timedatectl.xml b/man/timedatectl.xml -index be0ad3f..f4975ce 100644 ---- a/man/timedatectl.xml -+++ b/man/timedatectl.xml -@@ -222,7 +222,7 @@ - - Exit status - -- On success 0 is returned, a non-zero failure -+ On success, 0 is returned, a non-zero failure - code otherwise. - - diff --git a/0202-man-grammar-and-wording-improvements.patch b/0202-man-grammar-and-wording-improvements.patch deleted file mode 100644 index f40a0a9..0000000 --- a/0202-man-grammar-and-wording-improvements.patch +++ /dev/null @@ -1,79 +0,0 @@ -From cae52ffc976561b6c847a38e3ea9d9a9ce2c1513 Mon Sep 17 00:00:00 2001 -From: Jan Engelhardt -Date: Thu, 26 Dec 2013 02:47:45 +0100 -Subject: [PATCH] man: grammar and wording improvements - -This is a recurring submission and includes corrections to: -- missing words, preposition choice. -- change of /lib to /usr/lib, because that is what most distros are - using as the system-wide location for systemd/udev files. - -Conflicts: - man/journalctl.xml - man/sd_bus_message_get_cookie.xml - man/sd_bus_request_name.xml - man/systemctl.xml - man/systemd-networkd.service.xml - man/systemd.device.xml - man/systemd.exec.xml - man/systemd.timer.xml - man/udev.xml ---- - man/daemon.xml | 2 +- - man/sd_is_fifo.xml | 2 +- - man/systemd.service.xml | 2 +- - man/systemd.unit.xml | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/man/daemon.xml b/man/daemon.xml -index 7790420..1fe4546 100644 ---- a/man/daemon.xml -+++ b/man/daemon.xml -@@ -408,7 +408,7 @@ - description files. - - In systemd, if the developer or -- administrator wants to make sure a service or -+ administrator wants to make sure that a service or - other unit is activated automatically on boot, - it is recommended to place a symlink to the - unit file in the .wants/ -diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml -index 4bb2236..58cd1c9 100644 ---- a/man/sd_is_fifo.xml -+++ b/man/sd_is_fifo.xml -@@ -165,7 +165,7 @@ - called to check whether the specified file descriptor - refers to a special file. If the - path parameter is not -- NULL, it is checked whether file -+ NULL, it is checked whether the file - descriptor is bound to the specified file - name. Special files in this context are character - device nodes and files in /proc -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index e869f95..e3a370f 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -427,7 +427,7 @@ - ExecStart=/bin/sh -c 'dmesg | tac' - - -- Only select environment variables -+ Only select environment variables that - are set for executed commands. See - systemd.exec5. - -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index b70c5e9..f6b4b24 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -548,7 +548,7 @@ - of units. When systemd stops or restarts - the units listed here, the action is - propagated to this unit. -- Note that this is a one way dependency — -+ Note that this is a one-way dependency — - changes to this unit do not affect the - listed units. - diff --git a/0203-man-document-fail-nofail-auto-noauto.patch b/0203-man-document-fail-nofail-auto-noauto.patch deleted file mode 100644 index 104ec34..0000000 --- a/0203-man-document-fail-nofail-auto-noauto.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 6566f27fc123e1b2fd14e5177dcb21c6b3598d5d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 25 Dec 2013 23:20:57 -0500 -Subject: [PATCH] man: document fail/nofail, auto/noauto - -Also s/filesystem/file system/ in a few places. - -Conflicts: - TODO - man/systemd-fsck@.service.xml - man/systemd-fstab-generator.xml ---- - man/systemd-fsck@.service.xml | 5 ++++- - man/systemd-fstab-generator.xml | 6 ++++++ - man/systemd-halt.service.xml | 2 +- - man/systemd.mount.xml | 20 +++++++++++++++++++- - man/systemd.unit.xml | 2 +- - man/udevadm.xml | 2 +- - 6 files changed, 32 insertions(+), 5 deletions(-) - -diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml -index e934352..c653dc5 100644 ---- a/man/systemd-fsck@.service.xml -+++ b/man/systemd-fsck@.service.xml -@@ -62,7 +62,10 @@ - system - check. systemd-fsck-root.service is - responsible for file system checks on the root -- file system. -+ file system. The root file system check is performed -+ before the other file systems. Either service is enabled -+ at boot if passno in /etc/fstab for -+ the file system is set to a value greater than zero. - - systemd-fsck will - forward file system checking progress to the -diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml -index 9ca16c7..e3cf5d2 100644 ---- a/man/systemd-fstab-generator.xml -+++ b/man/systemd-fstab-generator.xml -@@ -61,6 +61,12 @@ - reloaded. This will instantiate mount and swap units - as necessary. - -+ The passno field is treated -+ like a simple boolean, and the ordering information is -+ discarded. However, if the root file system is -+ checked, it is checked before all the other -+ file systems. -+ - See - systemd.mount5 - and -diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml -index 99457aa..bec2e36 100644 ---- a/man/systemd-halt.service.xml -+++ b/man/systemd-halt.service.xml -@@ -86,7 +86,7 @@ - It is necessary to have this code in a separate binary - because otherwise rebooting after an upgrade might be broken — - the running PID 1 could still depend on libraries which are not -- available any more, thus keeping the filesystem busy, which -+ available any more, thus keeping the file system busy, which - then cannot be re-mounted read-only. - - Immediately before executing the actual system -diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml -index 6f9f70c..cadf950 100644 ---- a/man/systemd.mount.xml -+++ b/man/systemd.mount.xml -@@ -132,7 +132,10 @@ - for details). Mounts listed in - /etc/fstab will be converted into - native units dynamically at boot and when the -- configuration of the system manager is reloaded. See -+ configuration of the system manager is reloaded. In -+ general, configuring mount points through -+ /etc/fstab is the preferred -+ approach. See - systemd-fstab-generator8 - for details about the conversion. - -@@ -159,6 +162,21 @@ - s, min, - h, ms. - -+ If is given, this mount -+ will be only wanted, not required, by the -+ local-fs.target. This means that -+ the boot will continue even if this mount point is not -+ mounted successfully. Option has -+ the opposite meaning and is the default. -+ -+ If is given, this mount -+ will not be added as a dependency for -+ local-fs.target. This means that -+ it will not be mounted automatically during boot, -+ unless it is pulled in by some other unit. Option -+ has the opposite meaning and is -+ the default. -+ - If a mount point is configured in both - /etc/fstab and a unit file that - is stored below /usr, the former -diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml -index f6b4b24..4704352 100644 ---- a/man/systemd.unit.xml -+++ b/man/systemd.unit.xml -@@ -232,7 +232,7 @@ - multiple units from a single configuration file. If - systemd looks for a unit configuration file, it will - first search for the literal unit name in the -- filesystem. If that yields no success and the unit -+ file system. If that yields no success and the unit - name contains an @ character, systemd will look for a - unit template that shares the same name but with the - instance string (i.e. the part between the @ character -diff --git a/man/udevadm.xml b/man/udevadm.xml -index a1ffe42..ca3713f 100644 ---- a/man/udevadm.xml -+++ b/man/udevadm.xml -@@ -461,7 +461,7 @@ - - - -- Alternative root path in the filesystem for reading and writing files. -+ Alternative root path in the file system for reading and writing files. - - - diff --git a/0204-man-fix-description-of-is-enabled-returned-value.patch b/0204-man-fix-description-of-is-enabled-returned-value.patch deleted file mode 100644 index 0686560..0000000 --- a/0204-man-fix-description-of-is-enabled-returned-value.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 8debc611398abf60d16e73982c9d56b5ea957e15 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 24 Dec 2013 22:57:15 -0500 -Subject: [PATCH] man: fix description of is-enabled returned value - ---- - man/systemctl.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index 61deb19..25b03d8 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -932,7 +932,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service - - static - Unit is not enabled, but has no provisions for enabling in [Install] section -- 1 -+ 0 - - - disabled diff --git a/0205-man-fix-Type-reference.patch b/0205-man-fix-Type-reference.patch deleted file mode 100644 index 7bc3030..0000000 --- a/0205-man-fix-Type-reference.patch +++ /dev/null @@ -1,23 +0,0 @@ -From c32611c5388de404cf4b169fa3d757c2603e597d Mon Sep 17 00:00:00 2001 -From: Marcos Felipe Rasia de Mello -Date: Thu, 26 Dec 2013 17:47:57 -0200 -Subject: [PATCH] man: fix Type= reference - -Simple man page fix attached. ---- - man/systemd.service.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index e3a370f..898c19d 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -139,7 +139,7 @@ - - If set to - (the default -- value if BusName= -+ value if Type= - is not specified), it is expected that - the process configured with - ExecStart= is the diff --git a/0206-man-fix-Type-reference-v2.patch b/0206-man-fix-Type-reference-v2.patch deleted file mode 100644 index 694a0f3..0000000 --- a/0206-man-fix-Type-reference-v2.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 73868c5b0a59438256d8abd4157ff915a7dc1f37 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 27 Dec 2013 01:18:39 -0500 -Subject: [PATCH] man: fix Type= reference v2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -grawity: - - It looks like the old version _was_ correct – the default value will - be "Type=dbus" if the service has a BusName set. - - Suggested change: "if neither Type= nor BusName= is specified" ---- - man/systemd.service.xml | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 898c19d..71bcfb4 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -139,9 +139,11 @@ - - If set to - (the default -- value if Type= -- is not specified), it is expected that -- the process configured with -+ value if neither -+ Type= nor -+ BusName= are -+ specified), it is expected that the -+ process configured with - ExecStart= is the - main process of the service. In this - mode, if the process offers diff --git a/0207-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0207-hwdb-Update-database-of-Bluetooth-company-identifier.patch deleted file mode 100644 index c013152..0000000 --- a/0207-hwdb-Update-database-of-Bluetooth-company-identifier.patch +++ /dev/null @@ -1,38 +0,0 @@ -From d38baf3d9088a2d206a6b622fb7f609dc115bd6a Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Fri, 27 Dec 2013 09:35:20 -0800 -Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers - ---- - hwdb/20-bluetooth-vendor-product.hwdb | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb -index 6f8301f..192b715 100644 ---- a/hwdb/20-bluetooth-vendor-product.hwdb -+++ b/hwdb/20-bluetooth-vendor-product.hwdb -@@ -427,7 +427,7 @@ bluetooth:v008B* - ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC - - bluetooth:v008C* -- ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc. -+ ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.) - - bluetooth:v008D* - ID_VENDOR_FROM_DATABASE=Zscan Software -@@ -839,3 +839,15 @@ bluetooth:v0115* - - bluetooth:v0116* - ID_VENDOR_FROM_DATABASE=1OAK Technologies -+ -+bluetooth:v0117* -+ ID_VENDOR_FROM_DATABASE=Wimoto Technologies Inc -+ -+bluetooth:v0118* -+ ID_VENDOR_FROM_DATABASE=Radius Networks, Inc. -+ -+bluetooth:v0119* -+ ID_VENDOR_FROM_DATABASE=Wize Technology Co., Ltd. -+ -+bluetooth:v011A* -+ ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc. diff --git a/0208-man-add-a-note-about-propagating-signals.patch b/0208-man-add-a-note-about-propagating-signals.patch deleted file mode 100644 index 687f5a7..0000000 --- a/0208-man-add-a-note-about-propagating-signals.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 16142c7f1f24c58af1388608f1efb382a094bcb5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 27 Dec 2013 15:27:24 -0500 -Subject: [PATCH] man: add a note about propagating signals - ---- - man/systemd.service.xml | 39 +++++++++++++++++++++++++-------------- - 1 file changed, 25 insertions(+), 14 deletions(-) - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 71bcfb4..af3e0f2 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -734,22 +734,33 @@ ExecStart=/bin/echo $ONE $TWO ${TWO} - considered successful termination, in - addition to the normal successful exit - code 0 and the signals SIGHUP, SIGINT, -- SIGTERM and SIGPIPE. Exit status -+ SIGTERM, and SIGPIPE. Exit status - definitions can either be numeric exit - codes or termination signal names, -- separated by spaces. Example: -- SuccessExitStatus=1 2 8 -- SIGKILL, ensures that exit -- codes 1, 2, 8 and the termination -- signal SIGKILL are considered clean -- service terminations. This option may -- appear more than once in which case -- the list of successful exit statuses -- is merged. If the empty string is -- assigned to this option, the list is -- reset, all prior assignments of this -- option will have no -- effect. -+ separated by spaces. For example: -+ SuccessExitStatus=1 2 8 SIGKILL -+ ensures that exit codes 1, 2, 8 and -+ the termination signal -+ SIGKILL are -+ considered clean service terminations. -+ -+ -+ Note that if a process has a -+ signal handler installed and exits by -+ calling -+ _exit2 -+ in response to a signal, the -+ information about the signal is lost. -+ Programs should instead perform cleanup and kill themselves with the same signal instead. See -+ Proper handling of SIGINT/SIGQUIT — How to be a proper program. -+ -+ This option may appear more than once -+ in which case the list of successful -+ exit statuses is merged. If the empty -+ string is assigned to this option, the -+ list is reset, all prior assignments -+ of this option will have no -+ effect. - - - diff --git a/0209-man-include-autoconf-snippet-in-daemon-7.patch b/0209-man-include-autoconf-snippet-in-daemon-7.patch deleted file mode 100644 index 1a74456..0000000 --- a/0209-man-include-autoconf-snippet-in-daemon-7.patch +++ /dev/null @@ -1,41 +0,0 @@ -From cc5b9c30f5e8312ee8905f7882da7ab79fef571c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Fri, 27 Dec 2013 23:44:27 -0500 -Subject: [PATCH] man: include autoconf snippet in daemon(7) - -https://bugs.freedesktop.org/show_bug.cgi?id=40446 ---- - man/daemon.xml | 20 ++++++++++++++------ - 1 file changed, 14 insertions(+), 6 deletions(-) - -diff --git a/man/daemon.xml b/man/daemon.xml -index 1fe4546..105826a 100644 ---- a/man/daemon.xml -+++ b/man/daemon.xml -@@ -765,12 +765,20 @@ - - PKG_PROG_PKG_CONFIG - AC_ARG_WITH([systemdsystemunitdir], -- AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), -- [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) --if test "x$with_systemdsystemunitdir" != xno; then -- AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) --fi --AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) -+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),, -+ [with_systemdsystemunitdir=auto]) -+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [ -+ def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) -+ -+ AS_IF([test "x$def_systemdsystemunitdir" = "x"], -+ [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"], -+ [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])]) -+ with_systemdsystemunitdir=no], -+ [with_systemdsystemunitdir=$def_systemdsystemunitdir])]) -+AS_IF([test "x$with_systemdsystemunitdir" != "xno"], -+ [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) -+AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) -+ - - This snippet allows automatic - installation of the unit files on systemd diff --git a/0210-systemd-python-fix-setting-of-exception-codes.patch b/0210-systemd-python-fix-setting-of-exception-codes.patch deleted file mode 100644 index 82d0980..0000000 --- a/0210-systemd-python-fix-setting-of-exception-codes.patch +++ /dev/null @@ -1,325 +0,0 @@ -From 2a683cff7e7ac4f94ce545a0907d5b5b883c2a36 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 29 Dec 2013 23:39:28 -0500 -Subject: [PATCH] systemd-python: fix setting of exception codes - -The return value of 0 would be treated as failure by mistake, -resulting in " SystemError: error return without exception set". -The way that set_error() is used is changed to be the same -everywhere. ---- - src/python-systemd/_daemon.c | 14 +++++----- - src/python-systemd/_reader.c | 63 ++++++++++++++++++++------------------------ - 2 files changed, 35 insertions(+), 42 deletions(-) - -diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c -index f0ab16f..c6db69f 100644 ---- a/src/python-systemd/_daemon.c -+++ b/src/python-systemd/_daemon.c -@@ -88,7 +88,7 @@ static PyObject* notify(PyObject *self, PyObject *args, PyObject *keywds) { - #endif - - r = sd_notify(unset, msg); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -123,7 +123,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) { - #endif - - r = sd_listen_fds(unset); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return long_FromLong(r); -@@ -151,7 +151,7 @@ static PyObject* is_fifo(PyObject *self, PyObject *args) { - #endif - - r = sd_is_fifo(fd, path); -- if (set_error(r, path, NULL)) -+ if (set_error(r, path, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -179,7 +179,7 @@ static PyObject* is_mq(PyObject *self, PyObject *args) { - #endif - - r = sd_is_mq(fd, path); -- if (set_error(r, path, NULL)) -+ if (set_error(r, path, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -203,7 +203,7 @@ static PyObject* is_socket(PyObject *self, PyObject *args) { - return NULL; - - r = sd_is_socket(fd, family, type, listening); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -230,7 +230,7 @@ static PyObject* is_socket_inet(PyObject *self, PyObject *args) { - } - - r = sd_is_socket_inet(fd, family, type, listening, (uint16_t) port); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -265,7 +265,7 @@ static PyObject* is_socket_unix(PyObject *self, PyObject *args) { - #endif - - r = sd_is_socket_unix(fd, type, listening, path, length); -- if (set_error(r, path, NULL)) -+ if (set_error(r, path, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c -index bc5db19..0c88926 100644 ---- a/src/python-systemd/_reader.c -+++ b/src/python-systemd/_reader.c -@@ -206,8 +206,7 @@ PyDoc_STRVAR(Reader_reliable_fd__doc__, - static PyObject* Reader_reliable_fd(Reader *self, PyObject *args) - { - int r = sd_journal_reliable_fd(self->j); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - return PyBool_FromLong(r); - } -@@ -221,8 +220,7 @@ PyDoc_STRVAR(Reader_get_events__doc__, - static PyObject* Reader_get_events(Reader *self, PyObject *args) - { - int r = sd_journal_get_events(self->j); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - return long_FromLong(r); - } -@@ -242,8 +240,7 @@ static PyObject* Reader_get_timeout(Reader *self, PyObject *args) - uint64_t t; - - r = sd_journal_get_timeout(self->j, &t); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - if (t == (uint64_t) -1) -@@ -265,8 +262,7 @@ static PyObject* Reader_get_timeout_ms(Reader *self, PyObject *args) - uint64_t t; - - r = sd_journal_get_timeout(self->j, &t); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return absolute_timeout(t); -@@ -304,7 +300,7 @@ static PyObject* Reader_get_usage(Reader *self, PyObject *args) - uint64_t bytes; - - r = sd_journal_get_usage(self->j, &bytes); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - assert_cc(sizeof(unsigned long long) == sizeof(bytes)); -@@ -366,8 +362,7 @@ static PyObject* Reader_next(Reader *self, PyObject *args) - assert_not_reached("should not be here"); - Py_END_ALLOW_THREADS - -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - return PyBool_FromLong(r); - } -@@ -445,7 +440,8 @@ static PyObject* Reader_get(Reader *self, PyObject *args) - if (r == -ENOENT) { - PyErr_SetString(PyExc_KeyError, field); - return NULL; -- } else if (set_error(r, NULL, "field name is not valid")) -+ } -+ if (set_error(r, NULL, "field name is not valid") < 0) - return NULL; - - r = extract(msg, msg_len, NULL, &value); -@@ -530,7 +526,7 @@ static PyObject* Reader_get_realtime(Reader *self, PyObject *args) - assert(!args); - - r = sd_journal_get_realtime_usec(self->j, ×tamp); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - assert_cc(sizeof(unsigned long long) == sizeof(timestamp)); -@@ -555,7 +551,7 @@ static PyObject* Reader_get_monotonic(Reader *self, PyObject *args) - assert(!args); - - r = sd_journal_get_monotonic_usec(self->j, ×tamp, &id); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - assert_cc(sizeof(unsigned long long) == sizeof(timestamp)); -@@ -598,8 +594,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds - return NULL; - - r = sd_journal_add_match(self->j, match, match_len); -- set_error(r, NULL, "Invalid match"); -- if (r < 0) -+ if (set_error(r, NULL, "Invalid match") < 0) - return NULL; - - Py_RETURN_NONE; -@@ -616,8 +611,7 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args) - { - int r; - r = sd_journal_add_disjunction(self->j); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -633,8 +627,7 @@ static PyObject* Reader_add_conjunction(Reader *self, PyObject *args) - { - int r; - r = sd_journal_add_conjunction(self->j); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -661,7 +654,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args) - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_head(self->j); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -678,7 +671,7 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args) - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_tail(self->j); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -699,7 +692,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_realtime_usec(self->j, timestamp); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -723,20 +716,20 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) - - if (bootid) { - r = sd_id128_from_string(bootid, &id); -- if (set_error(r, NULL, "Invalid bootid")) -+ if (set_error(r, NULL, "Invalid bootid") < 0) - return NULL; - } else { - Py_BEGIN_ALLOW_THREADS - r = sd_id128_get_boot(&id); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - } - - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_monotonic_usec(self->j, id, timestamp); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - Py_RETURN_NONE; -@@ -809,7 +802,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_cursor(self->j, cursor); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, "Invalid cursor")) -+ if (set_error(r, NULL, "Invalid cursor") < 0) - return NULL; - Py_RETURN_NONE; - } -@@ -828,7 +821,7 @@ static PyObject* Reader_get_cursor(Reader *self, PyObject *args) - assert(!args); - - r = sd_journal_get_cursor(self->j, &cursor); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return unicode_FromString(cursor); -@@ -851,8 +844,7 @@ static PyObject* Reader_test_cursor(Reader *self, PyObject *args) - return NULL; - - r = sd_journal_test_cursor(self->j, cursor); -- set_error(r, NULL, NULL); -- if (r < 0) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return PyBool_FromLong(r); -@@ -876,7 +868,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args) - Py_BEGIN_ALLOW_THREADS - r = sd_journal_query_unique(self->j, query); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, "Invalid field name")) -+ if (set_error(r, NULL, "Invalid field name") < 0) - return NULL; - - value_set = PySet_New(0); -@@ -930,7 +922,8 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args) - else - set_error(r, NULL, NULL); - return NULL; -- } else if (set_error(r, NULL, NULL)) -+ } -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return unicode_FromString(msg); -@@ -955,13 +948,13 @@ static PyObject* get_catalog(PyObject *self, PyObject *args) - return NULL; - - r = sd_id128_from_string(id_, &id); -- if (set_error(r, NULL, "Invalid id128")) -+ if (set_error(r, NULL, "Invalid id128") < 0) - return NULL; - - Py_BEGIN_ALLOW_THREADS - r = sd_journal_get_catalog_for_message_id(id, &msg); - Py_END_ALLOW_THREADS -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return unicode_FromString(msg); -@@ -979,7 +972,7 @@ static PyObject* Reader_get_data_threshold(Reader *self, void *closure) - int r; - - r = sd_journal_get_data_threshold(self->j, &cvalue); -- if (set_error(r, NULL, NULL)) -+ if (set_error(r, NULL, NULL) < 0) - return NULL; - - return long_FromSize_t(cvalue); diff --git a/0211-systemd-python-fix-listen_fds-under-Python-2.patch b/0211-systemd-python-fix-listen_fds-under-Python-2.patch deleted file mode 100644 index fb0e675..0000000 --- a/0211-systemd-python-fix-listen_fds-under-Python-2.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 353a5553a38d002a69a4fbafabf1e9ab50ff32c2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 30 Dec 2013 00:01:00 -0500 -Subject: [PATCH] systemd-python: fix listen_fds under Python 2 - ---- - src/python-systemd/_daemon.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c -index c6db69f..3982e85 100644 ---- a/src/python-systemd/_daemon.c -+++ b/src/python-systemd/_daemon.c -@@ -114,7 +114,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) { - #else - PyObject *obj = NULL; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "|O:_listen_fds", -- (char**) kwlist, &unset, &obj)) -+ (char**) kwlist, &obj)) - return NULL; - if (obj != NULL) - unset = PyObject_IsTrue(obj); diff --git a/0212-man-expand-on-some-more-subtle-points-in-systemd.soc.patch b/0212-man-expand-on-some-more-subtle-points-in-systemd.soc.patch deleted file mode 100644 index a08fc4b..0000000 --- a/0212-man-expand-on-some-more-subtle-points-in-systemd.soc.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 204a710b647527c35cee26962bbd324e6cebc822 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 30 Dec 2013 00:11:30 -0500 -Subject: [PATCH] man: expand on some more subtle points in systemd.socket(5) - -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#1694 ---- - man/systemd.socket.xml | 67 ++++++++++++++++++++++++++++++++++++-------------- - 1 file changed, 49 insertions(+), 18 deletions(-) - -diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml -index ac3127d..570a6fb 100644 ---- a/man/systemd.socket.xml -+++ b/man/systemd.socket.xml -@@ -85,21 +85,26 @@ - processes of the socket. - - For each socket file a matching service file -- (see -+ must exist, describing the service to start on -+ incoming traffic on the socket (see - systemd.service5 -- for details) must exist, describing the service to -- start on incoming traffic on the socket. Depending on -- the setting of (see below), -- this must either be named like the socket unit, but -- with the suffix replaced; or it must be a template -- file named the same way. Example: a socket file -+ for more information about .service files). The name -+ of the .service unit is by default the same as the -+ name of the .socket unit, but can be altered with -+ option described below. -+ Depending on the setting of -+ option described below, this .service unit must either -+ be named like the .socket unit, but with the suffix -+ replaced, unless overridden with -+ ; or it must be a template -+ unit named the same way. Example: a socket file - foo.socket needs a matching - service foo.service if - is set. If -- is set, a service template -- file foo@.service must exist from -- which services are instantiated for each incoming -- connection. -+ is set, a service -+ template file foo@.service must -+ exist from which services are instantiated for each -+ incoming connection. - - Unless DefaultDependencies= - is set to , socket units will -@@ -116,9 +121,21 @@ - boot or late system shutdown should disable this - option. - -+ Socket units will have a -+ Before= dependency on the service -+ which they trigger added implicitly. No implicit -+ WantedBy= or -+ RequiredBy= dependency from the -+ socket to the service is added. This means that the -+ service may be started without the socket, in which -+ case it must be able to open sockets by itself. To -+ prevent this, an explicit Requires= -+ dependency may be added. -+ - Socket units may be used to implement on-demand - starting of services, as well as parallelized starting -- of services. -+ of services. See the blog stories linked at the end -+ for introduction. - - Note that the daemon software configured for - socket activation with socket units needs to be able -@@ -221,12 +238,23 @@ - of any of these options will have no - effect. - -+ It is also possible to have more -+ than one socket unit for the same -+ service when using -+ Service=, and the -+ service will receive all the sockets -+ configured in all the socket units. -+ Sockets configured in one unit are -+ passed in the order of configuration, -+ but no ordering between socket units -+ is specified. -+ - If an IP address is used here, - it is often desirable to listen on it - before the interface it is configured - on is up and running, and even - regardless of whether it will be up and -- running ever at all. To deal with this -+ running at any point. To deal with this - it is recommended to set the - FreeBind= option - described below. -@@ -687,11 +715,14 @@ - Service= - Specifies the service - unit name to activate on incoming -- traffic. This defaults to the service -- that bears the same name as the socket -- (ignoring the different suffixes). In -- most cases it should not be necessary -- to use this option. -+ traffic. This setting is only allowed -+ for sockets with -+ Accept=no. It -+ defaults to the service that bears the -+ same name as the socket (with the -+ suffix replaced). In most cases it -+ should not be necessary to use this -+ option. - - - diff --git a/0213-tmpfiles-rename-unsafe-to-boot.patch b/0213-tmpfiles-rename-unsafe-to-boot.patch deleted file mode 100644 index aec129c..0000000 --- a/0213-tmpfiles-rename-unsafe-to-boot.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 3d2c847396cf348ef1ee55f5d4211045a6202efc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 30 Dec 2013 13:00:38 -0500 -Subject: [PATCH] tmpfiles: rename --unsafe to --boot - -As suggested by Kay, it is better to describe what is done, -not what might happen. ---- - man/systemd-tmpfiles.xml | 2 +- - man/tmpfiles.d.xml | 4 ++-- - src/tmpfiles/tmpfiles.c | 14 +++++++------- - units/systemd-tmpfiles-setup.service.in | 2 +- - 4 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml -index c678031..64f9cf9 100644 ---- a/man/systemd-tmpfiles.xml -+++ b/man/systemd-tmpfiles.xml -@@ -133,7 +133,7 @@ - removed. - - -- -+ - Also execute lines - with an exclamation mark. - -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index ed88751..8267ffc 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -273,7 +273,7 @@ L /tmp/foobar - - - - /dev/null - execute at any time, e.g. on package upgrades. - systemd-tmpfiles will - execute line with an exclamation mark only if -- option is given. -+ option is given. - - - For example: -@@ -286,7 +286,7 @@ r! /tmp/.X[0-9]*-lock - - The second line in contrast to the first one - would break a running system, and will only be -- executed with . -+ executed with . - - - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 30a8a55..4dd1638 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -106,7 +106,7 @@ static Set *unix_sockets = NULL; - static bool arg_create = false; - static bool arg_clean = false; - static bool arg_remove = false; --static bool arg_unsafe = false; -+static bool arg_boot = false; - - static char **include_prefixes = NULL; - static char **exclude_prefixes = NULL; -@@ -1100,7 +1100,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { - if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) { - log_error("[%s:%u] Unknown modifier '%s'", fname, line, action); - return -EINVAL; -- } else if (strlen(action) > 1 && !arg_unsafe) -+ } else if (strlen(action) > 1 && !arg_boot) - return 0; - - type = action[0]; -@@ -1275,7 +1275,7 @@ static int help(void) { - " --create Create marked files/directories\n" - " --clean Clean up marked directories\n" - " --remove Remove marked files/directories\n" -- " --unsafe Execute actions only safe at boot\n" -+ " --boot Execute actions only safe at boot\n" - " --prefix=PATH Only apply rules that apply to paths with the specified prefix\n" - " --exclude-prefix=PATH Ignore rules that apply to paths with the specified prefix\n", - program_invocation_short_name); -@@ -1289,7 +1289,7 @@ static int parse_argv(int argc, char *argv[]) { - ARG_CREATE, - ARG_CLEAN, - ARG_REMOVE, -- ARG_UNSAFE, -+ ARG_BOOT, - ARG_PREFIX, - ARG_EXCLUDE_PREFIX, - }; -@@ -1299,7 +1299,7 @@ static int parse_argv(int argc, char *argv[]) { - { "create", no_argument, NULL, ARG_CREATE }, - { "clean", no_argument, NULL, ARG_CLEAN }, - { "remove", no_argument, NULL, ARG_REMOVE }, -- { "unsafe", no_argument, NULL, ARG_UNSAFE }, -+ { "boot", no_argument, NULL, ARG_BOOT }, - { "prefix", required_argument, NULL, ARG_PREFIX }, - { "exclude-prefix", required_argument, NULL, ARG_EXCLUDE_PREFIX }, - { NULL, 0, NULL, 0 } -@@ -1330,8 +1330,8 @@ static int parse_argv(int argc, char *argv[]) { - arg_remove = true; - break; - -- case ARG_UNSAFE: -- arg_unsafe = true; -+ case ARG_BOOT: -+ arg_boot = true; - break; - - case ARG_PREFIX: -diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in -index c2dcae0..01043b7 100644 ---- a/units/systemd-tmpfiles-setup.service.in -+++ b/units/systemd-tmpfiles-setup.service.in -@@ -24,4 +24,4 @@ RefuseManualStop=yes - [Service] - Type=oneshot - RemainAfterExit=yes --ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev -+ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev diff --git a/0214-sleep-config-Dereference-pointer-before-check-for-NU.patch b/0214-sleep-config-Dereference-pointer-before-check-for-NU.patch deleted file mode 100644 index 5bbb976..0000000 --- a/0214-sleep-config-Dereference-pointer-before-check-for-NU.patch +++ /dev/null @@ -1,47 +0,0 @@ -From ba087745bca7eea8f62cc529c3e6c5eaf6bf2904 Mon Sep 17 00:00:00 2001 -From: Stefan Beller -Date: Mon, 30 Dec 2013 17:43:52 +0100 -Subject: [PATCH] sleep-config: Dereference pointer before check for NULL - -This fixes a bug pointed out by http://css.csail.mit.edu/stack/ -(Optimization-unstable code) -It is a similar fix as f146f5e159 (2013-12-30, core: -Forgot to dereference pointer when checking for NULL) - -To explain this bug consider the following similar, but simpler code: - if (!p) - free(*p) - -Assume the if condition evaluates to true, then we will access *p, -which means the compiler can assume p is a valid pointer, so it could -dereference p and use the value *p. -Assuming p as a valid pointer, !p will be false. -But initally we assumed the condition evaluates to true. - -By this reasoning the optimizing compiler can deduce, we have dead code. -("The if will never be taken, as *p must be valid, because otherwise -accessing *p inside the if would segfault") - -This led to an error message of the static code checker, so I checked the -code in question. - -As we access *modes and *states before the check in the changed line of -this patch, I assume the line to be wrong and we actually wanted to check -for *modes and *states being both non null. ---- - src/shared/sleep-config.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index d76e3ad..b2a0787 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -94,7 +94,7 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) { - } else - assert_not_reached("what verb"); - -- if (!modes || !states) { -+ if (!*modes || !*states) { - strv_free(*modes); - strv_free(*states); - return log_oom(); diff --git a/0215-sleep-config-fix-double-free.patch b/0215-sleep-config-fix-double-free.patch deleted file mode 100644 index be26e91..0000000 --- a/0215-sleep-config-fix-double-free.patch +++ /dev/null @@ -1,99 +0,0 @@ -From e8d2aa2c8d3533a2dc6f0db5ed22453a16bcf1ee Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Tue, 31 Dec 2013 11:23:58 -0500 -Subject: [PATCH] sleep-config: fix double free - -Before 34a3baa4d 'sleep-config: Dereference pointer before check for NULL' -oom conditions would not be detected properly. After that commit, a double -free was performed. - -Rework the whole function to be easier to understand, and also replace -strv_split_nulstr with strv_new, since we know the strings anyway. ---- - src/shared/sleep-config.c | 38 ++++++++++++++++++++------------------ - 1 file changed, 20 insertions(+), 18 deletions(-) - -diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c -index b2a0787..70a0896 100644 ---- a/src/shared/sleep-config.c -+++ b/src/shared/sleep-config.c -@@ -28,11 +28,14 @@ - #include "strv.h" - #include "util.h" - --int parse_sleep_config(const char *verb, char ***modes, char ***states) { -+#define USE(x, y) do{ (x) = (y); (y) = NULL; } while(0) -+ -+int parse_sleep_config(const char *verb, char ***_modes, char ***_states) { - _cleanup_strv_free_ char - **suspend_mode = NULL, **suspend_state = NULL, - **hibernate_mode = NULL, **hibernate_state = NULL, - **hybrid_mode = NULL, **hybrid_state = NULL; -+ char **modes, **states; - - const ConfigTableItem items[] = { - { "Sleep", "SuspendMode", config_parse_strv, 0, &suspend_mode }, -@@ -59,47 +62,46 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) { - - if (streq(verb, "suspend")) { - /* empty by default */ -- *modes = suspend_mode; -+ USE(modes, suspend_mode); - - if (suspend_state) -- *states = suspend_state; -+ USE(states, suspend_state); - else -- *states = strv_split_nulstr("mem\0standby\0freeze\0"); -+ states = strv_new("mem", "standby", "freeze", NULL); - -- suspend_mode = suspend_state = NULL; - } else if (streq(verb, "hibernate")) { - if (hibernate_mode) -- *modes = hibernate_mode; -+ USE(modes, hibernate_mode); - else -- *modes = strv_split_nulstr("platform\0shutdown\0"); -+ modes = strv_new("platform", "shutdown", NULL); - - if (hibernate_state) -- *states = hibernate_state; -+ USE(states, hibernate_state); - else -- *states = strv_split_nulstr("disk\0"); -+ states = strv_new("disk", NULL); - -- hibernate_mode = hibernate_state = NULL; - } else if (streq(verb, "hybrid-sleep")) { - if (hybrid_mode) -- *modes = hybrid_mode; -+ USE(modes, hybrid_mode); - else -- *modes = strv_split_nulstr("suspend\0platform\0shutdown\0"); -+ modes = strv_new("suspend", "platform", "shutdown", NULL); - - if (hybrid_state) -- *states = hybrid_state; -+ USE(states, hybrid_state); - else -- *states = strv_split_nulstr("disk\0"); -+ states = strv_new("disk", NULL); - -- hybrid_mode = hybrid_state = NULL; - } else - assert_not_reached("what verb"); - -- if (!*modes || !*states) { -- strv_free(*modes); -- strv_free(*states); -+ if ((!modes && !streq(verb, "suspend")) || !states) { -+ strv_free(modes); -+ strv_free(states); - return log_oom(); - } - -+ *_modes = modes; -+ *_states = states; - return 0; - } - diff --git a/0216-rules-drivers-do-not-reset-RUN-list.patch b/0216-rules-drivers-do-not-reset-RUN-list.patch deleted file mode 100644 index 1c9eb58..0000000 --- a/0216-rules-drivers-do-not-reset-RUN-list.patch +++ /dev/null @@ -1,33 +0,0 @@ -From eb882aa36d9c700b7b5469df3f2bf43092d5c68b Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Fri, 3 Jan 2014 01:32:03 +0100 -Subject: [PATCH] rules: drivers - do not reset RUN list - ---- - rules/80-drivers.rules | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules -index 0b22d73..8551f47 100644 ---- a/rules/80-drivers.rules -+++ b/rules/80-drivers.rules -@@ -2,12 +2,12 @@ - - ACTION=="remove", GOTO="drivers_end" - --ENV{MODALIAS}=="?*", RUN{builtin}="kmod load $env{MODALIAS}" --SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}="kmod load tifm_sd" --SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}="kmod load tifm_ms" --SUBSYSTEM=="memstick", RUN{builtin}="kmod load ms_block mspro_block" --SUBSYSTEM=="i2o", RUN{builtin}="kmod load i2o_block" --SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}="kmod load ppdev" --KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}="kmod load sm_ftl" -+ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}" -+SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}+="kmod load tifm_sd" -+SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}+="kmod load tifm_ms" -+SUBSYSTEM=="memstick", RUN{builtin}+="kmod load ms_block mspro_block" -+SUBSYSTEM=="i2o", RUN{builtin}+="kmod load i2o_block" -+SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}+="kmod load ppdev" -+KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}+="kmod load sm_ftl" - - LABEL="drivers_end" diff --git a/0217-core-manager-print-info-about-interesting-signals.patch b/0217-core-manager-print-info-about-interesting-signals.patch deleted file mode 100644 index 3cad48c..0000000 --- a/0217-core-manager-print-info-about-interesting-signals.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 0e09a7e4c14e6b1d31a9a56b80d02b52c9583ab1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 27 Dec 2013 22:12:38 -0500 -Subject: [PATCH] core/manager: print info about interesting signals - -Information about signals which are not routinely received by systemd -are printed at info level. This should make it easier to see what is -happening in the system. ---- - src/core/manager.c | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/src/core/manager.c b/src/core/manager.c -index a34a3c6..69ad4b5 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -1435,16 +1435,22 @@ static int manager_process_signal_fd(Manager *m) { - } - - if (sfsi.ssi_pid > 0) { -- char *p = NULL; -+ _cleanup_free_ char *p = NULL; - - get_process_comm(sfsi.ssi_pid, &p); - -- log_debug("Received SIG%s from PID %lu (%s).", -- signal_to_string(sfsi.ssi_signo), -- (unsigned long) sfsi.ssi_pid, strna(p)); -- free(p); -+ log_full(sfsi.ssi_signo == SIGCHLD || -+ (sfsi.ssi_signo == SIGTERM && m->running_as == SYSTEMD_USER) -+ ? LOG_DEBUG : LOG_INFO, -+ "Received SIG%s from PID %lu (%s).", -+ signal_to_string(sfsi.ssi_signo), -+ (unsigned long) sfsi.ssi_pid, strna(p)); - } else -- log_debug("Received SIG%s.", signal_to_string(sfsi.ssi_signo)); -+ log_full(sfsi.ssi_signo == SIGCHLD || -+ (sfsi.ssi_signo == SIGTERM && m->running_as == SYSTEMD_USER) -+ ? LOG_DEBUG : LOG_INFO, -+ "Received SIG%s.", -+ signal_to_string(sfsi.ssi_signo)); - - switch (sfsi.ssi_signo) { - diff --git a/0218-core-service-check-if-mainpid-matches-only-if-it-is-.patch b/0218-core-service-check-if-mainpid-matches-only-if-it-is-.patch deleted file mode 100644 index 707ce3e..0000000 --- a/0218-core-service-check-if-mainpid-matches-only-if-it-is-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d4466e04783415eee7eec269104e60ab1f6b4b50 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 30 Dec 2013 11:21:56 -0500 -Subject: [PATCH] core/service: check if mainpid matches only if it is set - -https://bugzilla.redhat.com/show_bug.cgi?id=1047304 - -Conflicts: - src/core/service.c ---- - src/core/service.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/core/service.c b/src/core/service.c -index 62ae8f0..f0acda1 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -3400,7 +3400,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { - return; - } - -- if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) { -+ if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) { - log_warning_unit(u->id, - "%s: Got notification message from PID %lu, but reception only permitted for PID %lu", - u->id, (unsigned long) pid, (unsigned long) s->main_pid); diff --git a/0219-man-typo-fix.patch b/0219-man-typo-fix.patch deleted file mode 100644 index 6a1759b..0000000 --- a/0219-man-typo-fix.patch +++ /dev/null @@ -1,22 +0,0 @@ -From dfb3a987b160406fb4cf6cc3935cf54571d7c373 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Sat, 4 Jan 2014 23:21:13 +0100 -Subject: [PATCH] man: typo fix - ---- - man/systemd.time.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd.time.xml b/man/systemd.time.xml -index f438fa5..a837f23 100644 ---- a/man/systemd.time.xml -+++ b/man/systemd.time.xml -@@ -222,7 +222,7 @@ - In the date and time specifications, any - component may be specified as * in - which case any value will match. Alternatively, each -- component can be specified as list of values separated -+ component can be specified as a list of values separated - by commas. Values may also be suffixed with - / and a repetition value, which - indicates that the value and all values plus multiples diff --git a/0220-swap-remove-if-else-with-the-same-data-path.patch b/0220-swap-remove-if-else-with-the-same-data-path.patch deleted file mode 100644 index fc12f02..0000000 --- a/0220-swap-remove-if-else-with-the-same-data-path.patch +++ /dev/null @@ -1,29 +0,0 @@ -From d61f36a7ef07c252b49cc8015fe37b69bffb1a35 Mon Sep 17 00:00:00 2001 -From: Stefan Beller -Date: Fri, 3 Jan 2014 20:33:20 +0100 -Subject: [PATCH] swap: remove if/else with the same data path - -This was introduced in e1770af812 (2012-02-03, swap: replace failure -boolean by result enum). - -This just removes unneeded lines of code, no functional change. ---- - src/core/swap.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/src/core/swap.c b/src/core/swap.c -index f295b65..727bb95 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -959,10 +959,7 @@ static void swap_sigchld_event(Unit *u, pid_t pid, int code, int status) { - case SWAP_DEACTIVATING_SIGKILL: - case SWAP_DEACTIVATING_SIGTERM: - -- if (f == SWAP_SUCCESS) -- swap_enter_dead(s, f); -- else -- swap_enter_dead(s, f); -+ swap_enter_dead(s, f); - break; - - default: diff --git a/0221-hwdb-update.patch b/0221-hwdb-update.patch deleted file mode 100644 index 2c7a3c1..0000000 --- a/0221-hwdb-update.patch +++ /dev/null @@ -1,769 +0,0 @@ -From 3c8008b94726f3812ac28f4a33db61635323ee6a Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Sun, 5 Jan 2014 00:44:34 -0800 -Subject: [PATCH] hwdb: update - -Conflicts: - hwdb/20-sdio-vendor-model.hwdb ---- - hwdb/20-OUI.hwdb | 97 +++++++++++++++++++++++++- - hwdb/20-pci-vendor-model.hwdb | 154 ++++++++++++++++++++++++++++++++++++++---- - hwdb/20-usb-vendor-model.hwdb | 6 ++ - 3 files changed, 241 insertions(+), 16 deletions(-) - -diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb -index 92b96ae..a51a00a 100644 ---- a/hwdb/20-OUI.hwdb -+++ b/hwdb/20-OUI.hwdb -@@ -13627,6 +13627,12 @@ OUI:40D8551E2* - OUI:40D8551E3* - ID_OUI_FROM_DATABASE=Mega Electronics Ltd - -+OUI:40D8551E4* -+ ID_OUI_FROM_DATABASE=STEK Ltd -+ -+OUI:40D855EE6* -+ ID_OUI_FROM_DATABASE=Narinet, Inc. -+ - OUI:000000* - ID_OUI_FROM_DATABASE=XEROX CORPORATION - -@@ -35222,7 +35228,7 @@ OUI:001C4C* - ID_OUI_FROM_DATABASE=Petrotest Instruments - - OUI:001C4D* -- ID_OUI_FROM_DATABASE=Zeemote Technology Inc. (part of Aplix). -+ ID_OUI_FROM_DATABASE=Aplix IP Holdings Corporation - - OUI:001C4E* - ID_OUI_FROM_DATABASE=TASA International Limited -@@ -52606,6 +52612,9 @@ OUI:08D42B* - OUI:08D5C0* - ID_OUI_FROM_DATABASE=Seers Technology Co., Ltd - -+OUI:08D833* -+ ID_OUI_FROM_DATABASE=Shenzhen RF Technology Co,.Ltd -+ - OUI:08E5DA* - ID_OUI_FROM_DATABASE=NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD. - -@@ -53308,6 +53317,9 @@ OUI:1423D7* - OUI:142BD2* - ID_OUI_FROM_DATABASE=Armtel Ltd. - -+OUI:142D27* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -+ - OUI:142D8B* - ID_OUI_FROM_DATABASE=Incipio Technologies, Inc - -@@ -53761,6 +53773,9 @@ OUI:18C451* - OUI:18C8E7* - ID_OUI_FROM_DATABASE=Shenzhen Hualistone Technology Co.,Ltd - -+OUI:18CC23* -+ ID_OUI_FROM_DATABASE=Philio Technology Corporation -+ - OUI:18D071* - ID_OUI_FROM_DATABASE=DASAN SMC, Inc. - -@@ -54688,6 +54703,9 @@ OUI:2838CF* - OUI:2839E7* - ID_OUI_FROM_DATABASE=Preceno Technology Pte.Ltd. - -+OUI:283B96* -+ ID_OUI_FROM_DATABASE=Cool Control LTD -+ - OUI:283CE4* - ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd - -@@ -54907,6 +54925,9 @@ OUI:28E14C* - OUI:28E297* - ID_OUI_FROM_DATABASE=Shanghai InfoTM Microelectronics Co.,Ltd. - -+OUI:28E347* -+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation -+ - OUI:28E608* - ID_OUI_FROM_DATABASE=Tokheim - -@@ -55717,6 +55738,9 @@ OUI:34E0CF* - OUI:34E0D7* - ID_OUI_FROM_DATABASE=DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD - -+OUI:34E2FD* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:34EF44* - ID_OUI_FROM_DATABASE=2Wire - -@@ -56023,6 +56047,9 @@ OUI:3C1040* - OUI:3C106F* - ID_OUI_FROM_DATABASE=ALBAHITH TECHNOLOGIES - -+OUI:3C15C2* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:3C15EA* - ID_OUI_FROM_DATABASE=TESCOM CO., LTD. - -@@ -56227,6 +56254,9 @@ OUI:3CC99E* - OUI:3CCA87* - ID_OUI_FROM_DATABASE=Iders Incorporated - -+OUI:3CCD93* -+ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC -+ - OUI:3CCE73* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -@@ -56408,7 +56438,7 @@ OUI:40667A* - ID_OUI_FROM_DATABASE=mediola - connected living AG - - OUI:406826* -- ID_OUI_FROM_DATABASE=Thales Optronics Limited -+ ID_OUI_FROM_DATABASE=Thales UK Limited - - OUI:406AAB* - ID_OUI_FROM_DATABASE=RIM -@@ -57436,6 +57466,9 @@ OUI:5048EB* - OUI:504A5E* - ID_OUI_FROM_DATABASE=Masimo Corporation - -+OUI:504A6E* -+ ID_OUI_FROM_DATABASE=NETGEAR INC., -+ - OUI:504F94* - ID_OUI_FROM_DATABASE=Loxone Electronics GmbH - -@@ -58480,6 +58513,9 @@ OUI:6045BD* - OUI:604616* - ID_OUI_FROM_DATABASE=XIAMEN VANN INTELLIGENT CO., LTD - -+OUI:6047D4* -+ ID_OUI_FROM_DATABASE=FORICS Electronic Technology Co., Ltd. -+ - OUI:604A1C* - ID_OUI_FROM_DATABASE=SUYIN Corporation - -@@ -58630,6 +58666,9 @@ OUI:60D30A* - OUI:60D819* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -+OUI:60D9C7* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:60DA23* - ID_OUI_FROM_DATABASE=Estech Co.,Ltd - -@@ -58849,6 +58888,9 @@ OUI:6473E2* - OUI:647657* - ID_OUI_FROM_DATABASE=Innovative Security Designs - -+OUI:6476BA* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:647791* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -58882,6 +58924,9 @@ OUI:6487D7* - OUI:6488FF* - ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd. - -+OUI:648D9E* -+ ID_OUI_FROM_DATABASE=IVT Electronic Co.,Ltd -+ - OUI:64995D* - ID_OUI_FROM_DATABASE=LGE - -@@ -59161,6 +59206,9 @@ OUI:687924* - OUI:6879ED* - ID_OUI_FROM_DATABASE=SHARP Corporation - -+OUI:687CC8* -+ ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L. -+ - OUI:687CD5* - ID_OUI_FROM_DATABASE=Y Soft Corporation, a.s. - -@@ -59425,6 +59473,9 @@ OUI:6C6F18* - OUI:6C7039* - ID_OUI_FROM_DATABASE=Novar GmbH - -+OUI:6C709F* -+ ID_OUI_FROM_DATABASE=Apple -+ - OUI:6C71D9* - ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc - -@@ -59779,6 +59830,9 @@ OUI:708B78* - OUI:708D09* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:709383* -+ ID_OUI_FROM_DATABASE=Intelligent Optical Network High Tech CO.,LTD. -+ - OUI:7093F8* - ID_OUI_FROM_DATABASE=Space Monkey, Inc. - -@@ -60166,6 +60220,9 @@ OUI:74F612* - OUI:74F726* - ID_OUI_FROM_DATABASE=Neuron Robotics - -+OUI:74F85D* -+ ID_OUI_FROM_DATABASE=Berkeley Nucleonics Corp -+ - OUI:74FDA0* - ID_OUI_FROM_DATABASE=Compupal (Group) Corporation - -@@ -60862,6 +60919,9 @@ OUI:7CFADF* - OUI:7CFE28* - ID_OUI_FROM_DATABASE=Salutron Inc. - -+OUI:7CFF62* -+ ID_OUI_FROM_DATABASE=Huizhou Super Electron Technology Co.,Ltd. -+ - OUI:80000B* - ID_OUI_FROM_DATABASE=Intel Corporate - -@@ -61105,6 +61165,9 @@ OUI:80D019* - OUI:80D18B* - ID_OUI_FROM_DATABASE=Hangzhou I'converge Technology Co.,Ltd - -+OUI:80D433* -+ ID_OUI_FROM_DATABASE=LzLabs GmbH -+ - OUI:80D733* - ID_OUI_FROM_DATABASE=QSR Automations, Inc. - -@@ -61336,6 +61399,9 @@ OUI:84ACA4* - OUI:84AF1F* - ID_OUI_FROM_DATABASE=Beat System Service Co,. Ltd. - -+OUI:84B59C* -+ ID_OUI_FROM_DATABASE=Juniper networks -+ - OUI:84C2E4* - ID_OUI_FROM_DATABASE=Jiangsu Qinheng Co., Ltd. - -@@ -61402,6 +61468,9 @@ OUI:880355* - OUI:880905* - ID_OUI_FROM_DATABASE=MTMCommunications - -+OUI:880FB6* -+ ID_OUI_FROM_DATABASE=Jabil Circuits India Pvt Ltd,-EHTP unit -+ - OUI:881036* - ID_OUI_FROM_DATABASE=Panodic(ShenZhen) Electronics Limted - -@@ -62605,6 +62674,9 @@ OUI:983000* - OUI:983071* - ID_OUI_FROM_DATABASE=DAIKYUNG VASCOM - -+OUI:98349D* -+ ID_OUI_FROM_DATABASE=Krauss Maffei Technologies GmbH -+ - OUI:983571* - ID_OUI_FROM_DATABASE=Sub10 Systems Ltd - -@@ -63061,6 +63133,9 @@ OUI:9CCAD9* - OUI:9CCD82* - ID_OUI_FROM_DATABASE=CHENG UEI PRECISION INDUSTRY CO.,LTD - -+OUI:9CD21E* -+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -+ - OUI:9CD24B* - ID_OUI_FROM_DATABASE=zte corporation - -@@ -63358,6 +63433,9 @@ OUI:A0CEC8* - OUI:A0CF5B* - ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. - -+OUI:A0D12A* -+ ID_OUI_FROM_DATABASE=AXPRO Technology Inc. -+ - OUI:A0D3C1* - ID_OUI_FROM_DATABASE=Hewlett Packard - -@@ -64366,6 +64444,9 @@ OUI:B05B1F* - OUI:B05CE5* - ID_OUI_FROM_DATABASE=Nokia Corporation - -+OUI:B061C7* -+ ID_OUI_FROM_DATABASE=Ericsson-LG Enterprise -+ - OUI:B06563* - ID_OUI_FROM_DATABASE=Shanghai Railway Communication Factory - -@@ -64684,6 +64765,9 @@ OUI:B46293* - OUI:B462AD* - ID_OUI_FROM_DATABASE=raytest GmbH - -+OUI:B46698* -+ ID_OUI_FROM_DATABASE=Zealabs srl -+ - OUI:B467E9* - ID_OUI_FROM_DATABASE=Qingdao GoerTek Technology Co., Ltd. - -@@ -65590,6 +65674,9 @@ OUI:C098E5* - OUI:C09C92* - ID_OUI_FROM_DATABASE=COBY - -+OUI:C09D26* -+ ID_OUI_FROM_DATABASE=Topicon HK Lmd. -+ - OUI:C09F42* - ID_OUI_FROM_DATABASE=Apple - -@@ -65833,6 +65920,9 @@ OUI:C45DD8* - OUI:C46044* - ID_OUI_FROM_DATABASE=Everex Electronics Limited - -+OUI:C4626B* -+ ID_OUI_FROM_DATABASE=ZPT Vigantice -+ - OUI:C462EA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -@@ -68605,6 +68695,9 @@ OUI:EC14F6* - OUI:EC172F* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD. - -+OUI:EC1766* -+ ID_OUI_FROM_DATABASE=Research Centre Module -+ - OUI:EC1A59* - ID_OUI_FROM_DATABASE=Belkin International Inc. - -diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb -index 6142dc8..7f833e3 100644 ---- a/hwdb/20-pci-vendor-model.hwdb -+++ b/hwdb/20-pci-vendor-model.hwdb -@@ -4166,6 +4166,9 @@ pci:v00001002d00006600* - pci:v00001002d00006601* - ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M] - -+pci:v00001002d00006601sv0000103Csd00002100* -+ ID_MODEL_FROM_DATABASE=FirePro M4100 -+ - pci:v00001002d00006602* - ID_MODEL_FROM_DATABASE=Mars - -@@ -4185,10 +4188,22 @@ pci:v00001002d00006607* - ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M] - - pci:v00001002d00006610* -- ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250] -+ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] - - pci:v00001002d00006611* -- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570] -+ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM] -+ -+pci:v00001002d00006611sv00001028sd0000210B* -+ ID_MODEL_FROM_DATABASE=Radeon R5 240 OEM -+ -+pci:v00001002d00006611sv0000174Bsd00004248* -+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM -+ -+pci:v00001002d00006611sv0000174Bsd0000A240* -+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM -+ -+pci:v00001002d00006611sv00001B0Asd000090D3* -+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM - - pci:v00001002d00006613* - ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240] -@@ -4224,7 +4239,7 @@ pci:v00001002d00006658* - ID_MODEL_FROM_DATABASE=Bonaire XTX [Radeon R7 260X] - - pci:v00001002d0000665C* -- ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770] -+ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] - - pci:v00001002d0000665Csv00001043sd00000452* - ID_MODEL_FROM_DATABASE=Radeon HD 7790 DirectCU II OC -@@ -4235,6 +4250,12 @@ pci:v00001002d0000665Csv00001462sd00002930* - pci:v00001002d0000665Csv00001462sd00002932* - ID_MODEL_FROM_DATABASE=Radeon HD 8770 - -+pci:v00001002d0000665Csv00001462sd00002934* -+ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM -+ -+pci:v00001002d0000665Csv0000148Csd00009260* -+ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM -+ - pci:v00001002d0000665Csv00001682sd00003310* - ID_MODEL_FROM_DATABASE=Radeon HD 7790 Black Edition 2 GB - -@@ -4817,9 +4838,21 @@ pci:v00001002d00006742sv0000148Csd00006570* - pci:v00001002d00006742sv00001682sd00006570* - ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570] - -+pci:v00001002d00006742sv0000174Bsd00005570* -+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 5570] -+ - pci:v00001002d00006742sv0000174Bsd00006570* - ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570] - -+pci:v00001002d00006742sv0000174Bsd00007570* -+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7570] -+ -+pci:v00001002d00006742sv0000174Bsd00008510* -+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8510] -+ -+pci:v00001002d00006742sv0000174Bsd00008570* -+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8570] -+ - pci:v00001002d00006742sv00001787sd00006570* - ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570] - -@@ -5541,13 +5574,13 @@ pci:v00001002d00006770sv000017AAsd00003658* - ID_MODEL_FROM_DATABASE=Radeon HD 7470A - - pci:v00001002d00006771* -- ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490] -+ ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490 / R5 235X OEM] - - pci:v00001002d00006772* - ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7450A] - - pci:v00001002d00006778* -- ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470] -+ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] - - pci:v00001002d00006778sv00001019sd00000024* - ID_MODEL_FROM_DATABASE=Radeon HD 7470 -@@ -5580,7 +5613,7 @@ pci:v00001002d00006778sv0000174Bsd0000E145* - ID_MODEL_FROM_DATABASE=Radeon HD 7470 - - pci:v00001002d00006779* -- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450] -+ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] - - pci:v00001002d00006779sv00001019sd00000016* - ID_MODEL_FROM_DATABASE=Radeon HD 6450 -@@ -5979,7 +6012,7 @@ pci:v00001002d00006831* - ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] - - pci:v00001002d00006835* -- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260] -+ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R9 255 OEM] - - pci:v00001002d00006837* - ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] -@@ -8967,7 +9000,7 @@ pci:v00001002d0000999C* - ID_MODEL_FROM_DATABASE=Richland - - pci:v00001002d0000999D* -- ID_MODEL_FROM_DATABASE=Richland -+ ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8550D] - - pci:v00001002d000099A0* - ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G] -@@ -17663,6 +17696,9 @@ pci:v0000109Ed0000036Esv00001461sd00000761* - pci:v0000109Ed0000036Esv00001461sd00000771* - ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771 - -+pci:v0000109Ed0000036Esv00001464sd0000AA00* -+ ID_MODEL_FROM_DATABASE=iTuner Spectra8 -+ - pci:v0000109Ed0000036Esv000014F1sd00000001* - ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC - -@@ -27503,6 +27539,9 @@ pci:v000010ECd00005209* - pci:v000010ECd00005227* - ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader - -+pci:v000010ECd00005227sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v000010ECd00005229* - ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader - -@@ -48170,9 +48209,18 @@ pci:v0000168Cd00000033* - pci:v0000168Cd00000034* - ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter - -+pci:v0000168Cd00000034sv00001A56sd00002003* -+ ID_MODEL_FROM_DATABASE=Killer Wireless-N 1202 Half-size Mini PCIe Card -+ - pci:v0000168Cd00000036* - ID_MODEL_FROM_DATABASE=QCA9565 / AR9565 Wireless Network Adapter - -+pci:v0000168Cd00000037* -+ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter -+ -+pci:v0000168Cd00000037sv00001A3Bsd00002100* -+ ID_MODEL_FROM_DATABASE=AW-NB100H 802.11n Wireless Mini PCIe Card -+ - pci:v0000168Cd0000003C* - ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter - -@@ -48191,6 +48239,9 @@ pci:v0000168Cd00009013* - pci:v0000168Cd0000FF19* - ID_MODEL_FROM_DATABASE=AR5006X Wireless Network Adapter - -+pci:v0000168Cd0000FF1B* -+ ID_MODEL_FROM_DATABASE=AR2425 Wireless Network Adapter [AR5007EG 802.11bg] -+ - pci:v0000168Cd0000FF1C* - ID_MODEL_FROM_DATABASE=AR5008 Wireless Network Adapter - -@@ -49406,6 +49457,9 @@ pci:v00001814d00003298sv0000103Csd000018EC* - pci:v00001814d00003592* - ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe - -+pci:v00001814d0000359F* -+ ID_MODEL_FROM_DATABASE=RT3592 PCIe Wireless Network Adapter -+ - pci:v00001814d00005360* - ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R - -@@ -49421,6 +49475,9 @@ pci:v00001814d00005390* - pci:v00001814d00005390sv0000103Csd00001636* - ID_MODEL_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card - -+pci:v00001814d00005392* -+ ID_MODEL_FROM_DATABASE=RT5392 PCIe Wireless Network Adapter -+ - pci:v00001814d0000539F* - ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] - -@@ -50585,6 +50642,12 @@ pci:v00001957d00000087* - pci:v00001957d000000B4* - ID_MODEL_FROM_DATABASE=MPC8315E - -+pci:v00001957d000000B6* -+ ID_MODEL_FROM_DATABASE=MPC8314E -+ -+pci:v00001957d000000B6sv00001A56sd00001101* -+ ID_MODEL_FROM_DATABASE=Killer Xeno Pro Gigabit Ethernet Controller -+ - pci:v00001957d000000C2* - ID_MODEL_FROM_DATABASE=MPC8379E - -@@ -50669,6 +50732,12 @@ pci:v00001957d00007011* - pci:v00001957d00007018* - ID_MODEL_FROM_DATABASE=MPC8610 - -+pci:v00001957d0000C006* -+ ID_MODEL_FROM_DATABASE=MPC8308 -+ -+pci:v00001957d0000C006sv00001A56sd00001201* -+ ID_MODEL_FROM_DATABASE=Killer E2100 Gigabit Ethernet Controller -+ - pci:v00001958* - ID_VENDOR_FROM_DATABASE=Faster Technology, LLC. - -@@ -54164,6 +54233,9 @@ pci:v00008086d00000412* - pci:v00008086d00000416* - ID_MODEL_FROM_DATABASE=4th Gen Core Processor Integrated Graphics Controller - -+pci:v00008086d00000416sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d0000041A* - ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3 Processor Integrated Graphics Controller - -@@ -54680,9 +54752,15 @@ pci:v00008086d0000095Asv00008086sd00005000* - pci:v00008086d0000095Asv00008086sd00005002* - ID_MODEL_FROM_DATABASE=Wireless-N 7265 - -+pci:v00008086d0000095Asv00008086sd0000500A* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ - pci:v00008086d0000095Asv00008086sd00005010* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - -+pci:v00008086d0000095Asv00008086sd00005012* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ - pci:v00008086d0000095Asv00008086sd00005020* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 - -@@ -54695,6 +54773,9 @@ pci:v00008086d0000095Asv00008086sd00005090* - pci:v00008086d0000095Asv00008086sd00005110* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - -+pci:v00008086d0000095Asv00008086sd00005190* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ - pci:v00008086d0000095Asv00008086sd00005400* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - -@@ -54707,24 +54788,30 @@ pci:v00008086d0000095Asv00008086sd00005420* - pci:v00008086d0000095Asv00008086sd00005490* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - -+pci:v00008086d0000095Asv00008086sd00005590* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 -+ - pci:v00008086d0000095Asv00008086sd00009010* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - --pci:v00008086d0000095Asv00008086sd00009210* -+pci:v00008086d0000095Asv00008086sd00009110* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - --pci:v00008086d0000095Asv00008086sd00009410* -+pci:v00008086d0000095Asv00008086sd00009210* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - --pci:v00008086d0000095B* -- ID_MODEL_FROM_DATABASE=Wireless 7265 -+pci:v00008086d0000095Asv00008086sd00009310* -+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - --pci:v00008086d0000095Bsv00008086sd0000500A* -+pci:v00008086d0000095Asv00008086sd00009410* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - --pci:v00008086d0000095Bsv00008086sd00005012* -+pci:v00008086d0000095Asv00008086sd00009510* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265 - -+pci:v00008086d0000095B* -+ ID_MODEL_FROM_DATABASE=Wireless 7265 -+ - pci:v00008086d0000095Bsv00008086sd00005200* - ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265 - -@@ -54860,6 +54947,9 @@ pci:v00008086d00000C01* - pci:v00008086d00000C04* - ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller - -+pci:v00008086d00000C04sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00000C05* - ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller - -@@ -54872,6 +54962,9 @@ pci:v00008086d00000C09* - pci:v00008086d00000C0C* - ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller - -+pci:v00008086d00000C0Csv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00000C46* - ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1 - -@@ -57986,6 +58079,9 @@ pci:v00008086d00001539* - pci:v00008086d0000153A* - ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM - -+pci:v00008086d0000153Asv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d0000153B* - ID_MODEL_FROM_DATABASE=Ethernet Connection I217-V - -@@ -69035,6 +69131,9 @@ pci:v00008086d00008C02* - pci:v00008086d00008C03* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] - -+pci:v00008086d00008C03sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C04* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - -@@ -69062,12 +69161,18 @@ pci:v00008086d00008C0F* - pci:v00008086d00008C10* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1 - -+pci:v00008086d00008C10sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C11* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1 - - pci:v00008086d00008C12* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2 - -+pci:v00008086d00008C12sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C13* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2 - -@@ -69110,12 +69215,18 @@ pci:v00008086d00008C1F* - pci:v00008086d00008C20* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller - -+pci:v00008086d00008C20sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C21* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller - - pci:v00008086d00008C22* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller - -+pci:v00008086d00008C22sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C23* - ID_MODEL_FROM_DATABASE=8 Series Chipset Family CHAP Counters - -@@ -69125,12 +69236,21 @@ pci:v00008086d00008C24* - pci:v00008086d00008C26* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 - -+pci:v00008086d00008C26sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C2D* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 - -+pci:v00008086d00008C2Dsv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C31* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI - -+pci:v00008086d00008C31sv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C33* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family LAN Controller - -@@ -69140,6 +69260,9 @@ pci:v00008086d00008C34* - pci:v00008086d00008C3A* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 - -+pci:v00008086d00008C3Asv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C3B* - ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #2 - -@@ -69197,6 +69320,9 @@ pci:v00008086d00008C4E* - pci:v00008086d00008C4F* - ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller - -+pci:v00008086d00008C4Fsv000017AAsd0000220E* -+ ID_MODEL_FROM_DATABASE=ThinkPad T440p -+ - pci:v00008086d00008C50* - ID_MODEL_FROM_DATABASE=B85 Express LPC Controller - -diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb -index 6663820..60dbcd2 100644 ---- a/hwdb/20-usb-vendor-model.hwdb -+++ b/hwdb/20-usb-vendor-model.hwdb -@@ -46055,6 +46055,12 @@ usb:v1B5A* - usb:v1B65* - ID_VENDOR_FROM_DATABASE=The Hong Kong Standards and Testing Centre Ltd. - -+usb:v1B71* -+ ID_VENDOR_FROM_DATABASE=Fushicai -+ -+usb:v1B71p3002* -+ ID_MODEL_FROM_DATABASE=USBTV007 Video Grabber [EasyCAP] -+ - usb:v1B72* - ID_VENDOR_FROM_DATABASE=ATERGI TECHNOLOGY CO., LTD. - diff --git a/0222-journal-Add-missing-byte-order-conversions.patch b/0222-journal-Add-missing-byte-order-conversions.patch deleted file mode 100644 index 8493e83..0000000 --- a/0222-journal-Add-missing-byte-order-conversions.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 43539d6b60ef0db3e98d00bef0024614c8c1807a Mon Sep 17 00:00:00 2001 -From: George McCollister -Date: Tue, 31 Dec 2013 14:37:32 -0600 -Subject: [PATCH] journal: Add missing byte order conversions - -Convert entry_array.items[0] to host byte order prior to passing it to -chain_cache_put(). - -[zj: also use le64toh in journal-verify.c] - -https://bugs.freedesktop.org/show_bug.cgi?id=73194 ---- - src/journal/journal-file.c | 4 ++-- - src/journal/journal-verify.c | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index 5ef6a2a..ba65464 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -1452,7 +1452,7 @@ static int generic_array_get( - - found: - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i); -+ chain_cache_put(f->chain_cache, ci, first, a, le64toh(o->entry_array.items[0]), t, i); - - r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o); - if (r < 0) -@@ -1685,7 +1685,7 @@ found: - return 0; - - /* Let's cache this item for the next invocation */ -- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i); -+ chain_cache_put(f->chain_cache, ci, first, a, le64toh(array->entry_array.items[0]), t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i); - - if (subtract_one && i == 0) - p = last_p; -diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c -index 3405811..82b0f0a 100644 ---- a/src/journal/journal-verify.c -+++ b/src/journal/journal-verify.c -@@ -249,12 +249,12 @@ static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o - } - - for (i = 0; i < journal_file_entry_array_n_items(o); i++) -- if (o->entry_array.items[i] != 0 && -- !VALID64(o->entry_array.items[i])) { -+ if (le64toh(o->entry_array.items[i]) != 0 && -+ !VALID64(le64toh(o->entry_array.items[i]))) { - log_error(OFSfmt": invalid object entry array item (%"PRIu64"/%"PRIu64"): "OFSfmt, - offset, - i, journal_file_entry_array_n_items(o), -- o->entry_array.items[i]); -+ le64toh(o->entry_array.items[i])); - return -EBADMSG; - } - diff --git a/0223-hwdb-change-key-mappings-for-Samsung-90X3A.patch b/0223-hwdb-change-key-mappings-for-Samsung-90X3A.patch deleted file mode 100644 index 511c442..0000000 --- a/0223-hwdb-change-key-mappings-for-Samsung-90X3A.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c47bbfc9af040f1b0fce2edced4136ee921d9e70 Mon Sep 17 00:00:00 2001 -From: Raudi -Date: Mon, 6 Jan 2014 19:44:08 -0500 -Subject: [PATCH] hwdb: change key mappings for Samsung 90X3A - -The Key codes didn't match with the described key. Also the key -identifier strings were missing. I hope I chose appropriate ones. - -https://bugs.freedesktop.org/show_bug.cgi?id=70296 ---- - hwdb/60-keyboard.hwdb | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index ab9e569..644cb94 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -886,7 +886,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* - KEYBOARD_KEY_b3=!prog3 # Fn+F11 fan/cooling mode changer - - # Series 9 --keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr* - KEYBOARD_KEY_ce=! # Fn+F8 keyboard backlight up - KEYBOARD_KEY_8d=! # Fn+F7 keyboard backlight down -@@ -894,6 +893,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr - KEYBOARD_KEY_97=! # Fn+F12 Wi-Fi toggle - KEYBOARD_KEY_d5=! # Fn+F6 battery life extender - -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* -+ KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings -+ KEYBOARD_KEY_8d=!prog3 # Fn+F6 performance mode -+ KEYBOARD_KEY_97=!kbdillumdown # Fn+F7 keyboard backlight down -+ KEYBOARD_KEY_96=!kbdillumup # Fn+F8 keyboard backlight up -+ KEYBOARD_KEY_d5=!wlan # Fn+F12 Wi-Fi toggle -+ - # SQ1US - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr* - KEYBOARD_KEY_d4=menu diff --git a/0224-hwdb-add-Samsung-700G.patch b/0224-hwdb-add-Samsung-700G.patch deleted file mode 100644 index 41cb167..0000000 --- a/0224-hwdb-add-Samsung-700G.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 8e48fd6cc5e12bb1662970dc7a7d306550a9a079 Mon Sep 17 00:00:00 2001 -From: Dmitry Pisklov -Date: Mon, 6 Jan 2014 20:06:59 -0500 -Subject: [PATCH] hwdb: add Samsung 700G - -https://bugs.freedesktop.org/show_bug.cgi?id=72311 ---- - hwdb/60-keyboard.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 644cb94..ccfc734 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -875,6 +875,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr* - KEYBOARD_KEY_a9=! # Fn Lock - Function lock off - - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* - KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings diff --git a/0225-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch b/0225-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch deleted file mode 100644 index 0f668a2..0000000 --- a/0225-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 1bfc778f2c82180873407f2da8a8c3335ae37b07 Mon Sep 17 00:00:00 2001 -From: Dmitry Pisklov -Date: Mon, 6 Jan 2014 20:08:21 -0500 -Subject: [PATCH] hwdb: remove duplicate entry for Samsung 700Z - -keyboardbrightnessup/down are not even real keys. - -https://bugs.freedesktop.org/show_bug.cgi?id=72311 ---- - hwdb/60-keyboard.hwdb | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index ccfc734..cf3d1fb 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -918,11 +918,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*SX20S*:pvr* - KEYBOARD_KEY_77=f22 # Touchpad on - KEYBOARD_KEY_79=f23 # Touchpad off - --keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* -- KEYBOARD_KEY_ba=ejectcd -- KEYBOARD_KEY_96=keyboardbrightnessup -- KEYBOARD_KEY_97=keyboardbrightnessdown -- - keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:pvr* - KEYBOARD_KEY_ad=leftmeta - diff --git a/0226-hwdb-fix-match-for-Thinkpad-X201-tablet.patch b/0226-hwdb-fix-match-for-Thinkpad-X201-tablet.patch deleted file mode 100644 index ac9269d..0000000 --- a/0226-hwdb-fix-match-for-Thinkpad-X201-tablet.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0ec2b82ee4f1bb1fdbf3293cfe10e59240d5c533 Mon Sep 17 00:00:00 2001 -From: AppleBloom -Date: Mon, 6 Jan 2014 20:51:47 -0500 -Subject: [PATCH] hwdb: fix match for Thinkpad X201 tablet - -https://bugs.freedesktop.org/show_bug.cgi?id=71929 ---- - hwdb/60-keyboard.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index cf3d1fb..d253724 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -524,6 +524,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr* - - # Thinkpad X200_Tablet - keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet* - KEYBOARD_KEY_5d=menu - KEYBOARD_KEY_63=fn - KEYBOARD_KEY_66=screenlock diff --git a/0227-keymap-Recognize-different-Toshiba-Satellite-capital.patch b/0227-keymap-Recognize-different-Toshiba-Satellite-capital.patch deleted file mode 100644 index 3486097..0000000 --- a/0227-keymap-Recognize-different-Toshiba-Satellite-capital.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 5ed0efb00ec5cf103debcb4fc5f38398c59cc619 Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Tue, 7 Jan 2014 09:40:01 +0100 -Subject: [PATCH] keymap: Recognize different Toshiba Satellite capitalizations - -https://launchpad.net/bugs/665918 ---- - hwdb/60-keyboard.hwdb | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index d253724..84a061f 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -1056,9 +1056,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnFOXCONN:pnQBOOK:* - keyboard:dmi:bvn*:bvr*:bd*:svnMTC:pn*:pvrA0:* - keyboard:dmi:bvn*:bvr*:bd*:svnMio*Technology:pnN890:* - keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:* --keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU]30[05]*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr* --keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU]500*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:* - keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:* - keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:* diff --git a/0228-sleep.c-fix-typo.patch b/0228-sleep.c-fix-typo.patch deleted file mode 100644 index 0ad123a..0000000 --- a/0228-sleep.c-fix-typo.patch +++ /dev/null @@ -1,22 +0,0 @@ -From b1f114caf2e2b0913e4122847c7fa2b182b86771 Mon Sep 17 00:00:00 2001 -From: Michele Curti -Date: Tue, 7 Jan 2014 17:51:41 +0100 -Subject: [PATCH] sleep.c: fix typo - ---- - src/sleep/sleep.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c -index f96987f..c228cb6 100644 ---- a/src/sleep/sleep.c -+++ b/src/sleep/sleep.c -@@ -90,7 +90,7 @@ static int execute(char **modes, char **states) { - const char* note = strappenda("SLEEP=", arg_verb); - - /* This file is opened first, so that if we hit an error, -- * we can abort before modyfing any state. */ -+ * we can abort before modifying any state. */ - f = fopen("/sys/power/state", "we"); - if (!f) { - log_error("Failed to open /sys/power/state: %m"); diff --git a/0229-delta-ensure-that-d_type-will-be-set-on-every-fs.patch b/0229-delta-ensure-that-d_type-will-be-set-on-every-fs.patch deleted file mode 100644 index d005b76..0000000 --- a/0229-delta-ensure-that-d_type-will-be-set-on-every-fs.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 35fbb83e322dfe14771d0c84b623b423a38b1200 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Thu, 9 Jan 2014 16:43:00 +0100 -Subject: [PATCH] delta: ensure that d_type will be set on every fs - ---- - src/delta/delta.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/delta/delta.c b/src/delta/delta.c -index ae658f9..a8dd57e 100644 ---- a/src/delta/delta.c -+++ b/src/delta/delta.c -@@ -316,6 +316,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch - if (!de) - return -errno; - -+ dirent_ensure_type(d, de); -+ - if (dropins && de->d_type == DT_DIR && endswith(de->d_name, ".d")) - enumerate_dir_d(top, bottom, drops, path, de->d_name); - diff --git a/0230-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch b/0230-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch deleted file mode 100644 index 6e7cb46..0000000 --- a/0230-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 3bef88018c93e77d50d3206e84f6fa2fe8c2fb99 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Thu, 9 Jan 2014 18:00:50 +0100 -Subject: [PATCH] tmpfiles: don't allow label_fix to print ENOENT when we want - to ignore it - ---- - src/tmpfiles/tmpfiles.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 4dd1638..5e49cc8 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -435,8 +435,6 @@ finish: - } - - static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) { -- int r; -- - /* not using i->path directly because it may be a glob */ - if (i->mode_set) - if (chmod(path, i->mode) < 0) { -@@ -457,8 +455,7 @@ static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) { - } - } - -- r = label_fix(path, false, false); -- return r == -ENOENT && ignore_enoent ? 0 : r; -+ return label_fix(path, ignore_enoent, false); - } - - static int item_set_perms(Item *i, const char *path) { diff --git a/0231-man-mention-which-variables-will-be-expanded-in-Exec.patch b/0231-man-mention-which-variables-will-be-expanded-in-Exec.patch deleted file mode 100644 index a491004..0000000 --- a/0231-man-mention-which-variables-will-be-expanded-in-Exec.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 4f4e72a317126e9d41db675ddae27a0942cd23bf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 9 Jan 2014 22:23:32 -0500 -Subject: [PATCH] man: mention which variables will be expanded in ExecStart - -Conflicts: - man/systemd.service.xml ---- - man/systemd.exec.xml | 6 ++++-- - man/systemd.service.xml | 35 +++++++++++++++++++++++------------ - 2 files changed, 27 insertions(+), 14 deletions(-) - -diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml -index e213ec4..c8414d4 100644 ---- a/man/systemd.exec.xml -+++ b/man/systemd.exec.xml -@@ -295,9 +295,11 @@ - for the assignment. - - Example: -- Environment="VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6" -+ Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6" - gives three variables VAR1, -- VAR2, VAR3. -+ VAR2, VAR3 -+ with the values word1 word2, -+ word3, $word 5 6. - - - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index af3e0f2..4fb21ba 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -392,16 +392,32 @@ - replaced by the value of the - environment variable including all - whitespace it contains, resulting in a -- single argument. Use -+ single argument. Use - $FOO as a separate - word on the command line, in which - case it will be replaced by the value -- of the environment variable split up -- at whitespace, resulting in zero or -- more arguments. To pass literal dollar sign -- use $$. Note that the first -- argument (i.e. the program to execute) -- may not be a variable. -+ of the environment variable split at -+ whitespace, resulting in zero or more -+ arguments. To pass a literal dollar -+ sign, use $$. -+ Variables whose value is not known at -+ expansion time are treated as empty -+ strings. Note that the first argument -+ (i.e. the program to execute) may not -+ be a variable. -+ -+ Variables to be used in this -+ fashion may be defined through -+ Environment= and -+ EnvironmentFile=. -+ In addition, variables listed in -+ section "Environment variables in -+ spawned processes" in -+ systemd.exec5 -+ which are considered "static -+ configuration" may used (this includes -+ e.g. $USER, but not -+ $TERM). - - Optionally, if the absolute file - name is prefixed with -@@ -429,11 +445,6 @@ - ExecStart=/bin/sh -c 'dmesg | tac' - - -- Only select environment variables that -- are set for executed commands. See -- systemd.exec5. -- -- - Example: - ExecStart=/bin/echo one ; /bin/echo "two two" - diff --git a/0232-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch b/0232-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch deleted file mode 100644 index a9f69ab..0000000 --- a/0232-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0fb47635e6db4d27b821388274c0c83d612fc0bb Mon Sep 17 00:00:00 2001 -From: Unai Uribarri -Date: Sat, 11 Jan 2014 09:19:41 -0500 -Subject: [PATCH] hwdb: Add support for Toshiba Satellite P75-A7200 keyboard - ---- - hwdb/60-keyboard.hwdb | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 84a061f..e3d1f02 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -1012,6 +1012,14 @@ keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940 - KEYBOARD_KEY_13e=switchvideomode - KEYBOARD_KEY_13f=f21 # Touchpad toggle - -+# Satellite P75-A7200 -+keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr* -+ KEYBOARD_KEY_13c=brightnessdown -+ KEYBOARD_KEY_13d=brightnessup -+ KEYBOARD_KEY_13e=switchvideomode -+ KEYBOARD_KEY_13f=touchpad_toggle -+ KEYBOARD_KEY_9e=wlan -+ - ########################################################### - # VIA - ########################################################### diff --git a/0233-journal-fix-access-to-munmapped-memory-in-sd_journal.patch b/0233-journal-fix-access-to-munmapped-memory-in-sd_journal.patch deleted file mode 100644 index 4b23ffe..0000000 --- a/0233-journal-fix-access-to-munmapped-memory-in-sd_journal.patch +++ /dev/null @@ -1,321 +0,0 @@ -From 9b9103a07cc32fa76be4c71fcd9a93b5d946edd4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 28 Dec 2013 19:33:23 -0500 -Subject: [PATCH] journal: fix access to munmapped memory in - sd_journal_enumerate_unique - -sd_j_e_u needs to keep a reference to an object while comparing it -with possibly duplicate objects in other files. Because the size of -mmap cache is limited, with enough files and object to compare to, -at some point the object being compared would be munmapped, resulting -in a segmentation fault. - -Fix this issue by turning keep_always into a reference count that can -be increased and decreased. Other callers which set keep_always=true -are unmodified: their references are never released but are ignored -when the whole file is closed, which happens at some point. keep_always -is increased in sd_j_e_u and later on released. ---- - src/journal/journal-file.c | 5 +--- - src/journal/journal-file.h | 24 +++++++++++++++++++ - src/journal/journal-verify.c | 4 ---- - src/journal/mmap-cache.c | 57 +++++++++++++++++++++++++++++++++++--------- - src/journal/mmap-cache.h | 18 +++++++++++++- - src/journal/sd-journal.c | 18 +++++++++++--- - 6 files changed, 103 insertions(+), 23 deletions(-) - -diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c -index ba65464..4d9787a 100644 ---- a/src/journal/journal-file.c -+++ b/src/journal/journal-file.c -@@ -419,7 +419,6 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec - void *t; - Object *o; - uint64_t s; -- unsigned context; - - assert(f); - assert(ret); -@@ -428,10 +427,8 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec - if (!VALID64(offset)) - return -EFAULT; - -- /* One context for each type, plus one catch-all for the rest */ -- context = type > 0 && type < _OBJECT_TYPE_MAX ? type : 0; - -- r = journal_file_move_to(f, context, false, offset, sizeof(ObjectHeader), &t); -+ r = journal_file_move_to(f, type_to_context(type), false, offset, sizeof(ObjectHeader), &t); - if (r < 0) - return r; - -diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h -index 50bdb67..0bd23f7 100644 ---- a/src/journal/journal-file.h -+++ b/src/journal/journal-file.h -@@ -128,6 +128,10 @@ int journal_file_open_reliably( - #define ALIGN64(x) (((x) + 7ULL) & ~7ULL) - #define VALID64(x) (((x) & 7ULL) == 0ULL) - -+/* Use six characters to cover the offsets common in smallish journal -+ * files without adding too many zeros. */ -+#define OFSfmt "%06"PRIx64 -+ - static inline bool VALID_REALTIME(uint64_t u) { - /* This considers timestamps until the year 3112 valid. That should be plenty room... */ - return u > 0 && u < (1ULL << 55); -@@ -197,3 +201,23 @@ int journal_file_get_cutoff_realtime_usec(JournalFile *f, usec_t *from, usec_t * - int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot, usec_t *from, usec_t *to); - - bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec); -+ -+ -+static unsigned type_to_context(int type) { -+ /* One context for each type, plus one catch-all for the rest */ -+ return type > 0 && type < _OBJECT_TYPE_MAX ? type : 0; -+} -+ -+static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset) { -+ unsigned context = type_to_context(o->object.type); -+ -+ return mmap_cache_get(f->mmap, f->fd, f->prot, context, true, -+ offset, o->object.size, &f->last_stat, NULL); -+} -+ -+static inline int journal_file_object_release(JournalFile *f, Object *o, uint64_t offset) { -+ unsigned context = type_to_context(o->object.type); -+ -+ return mmap_cache_release(f->mmap, f->fd, f->prot, context, -+ offset, o->object.size); -+} -diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c -index 82b0f0a..f2422ff 100644 ---- a/src/journal/journal-verify.c -+++ b/src/journal/journal-verify.c -@@ -34,10 +34,6 @@ - #include "compress.h" - #include "fsprg.h" - --/* Use six characters to cover the offsets common in smallish journal -- * files without adding to many zeros. */ --#define OFSfmt "%06"PRIx64 -- - static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o) { - uint64_t i; - -diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c -index 42a8a7d..24b2bb8 100644 ---- a/src/journal/mmap-cache.c -+++ b/src/journal/mmap-cache.c -@@ -38,7 +38,7 @@ typedef struct FileDescriptor FileDescriptor; - struct Window { - MMapCache *cache; - -- bool keep_always; -+ unsigned keep_always; - bool in_unused; - - int prot; -@@ -185,7 +185,7 @@ static void context_detach_window(Context *c) { - c->window = NULL; - LIST_REMOVE(Context, by_window, w->contexts, c); - -- if (!w->contexts && !w->keep_always) { -+ if (!w->contexts && w->keep_always == 0) { - /* Not used anymore? */ - LIST_PREPEND(Window, unused, c->cache->unused, w); - if (!c->cache->last_unused) -@@ -360,7 +360,6 @@ static int try_context( - assert(m->n_ref > 0); - assert(fd >= 0); - assert(size > 0); -- assert(ret); - - c = hashmap_get(m->contexts, UINT_TO_PTR(context+1)); - if (!c) -@@ -378,9 +377,10 @@ static int try_context( - return 0; - } - -- c->window->keep_always = c->window->keep_always || keep_always; -+ c->window->keep_always += keep_always; - -- *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset); -+ if (ret) -+ *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset); - return 1; - } - -@@ -402,7 +402,6 @@ static int find_mmap( - assert(m->n_ref > 0); - assert(fd >= 0); - assert(size > 0); -- assert(ret); - - f = hashmap_get(m->fds, INT_TO_PTR(fd + 1)); - if (!f) -@@ -422,9 +421,10 @@ static int find_mmap( - return -ENOMEM; - - context_attach_window(c, w); -- w->keep_always = w->keep_always || keep_always; -+ w->keep_always += keep_always; - -- *ret = (uint8_t*) w->ptr + (offset - w->offset); -+ if (ret) -+ *ret = (uint8_t*) w->ptr + (offset - w->offset); - return 1; - } - -@@ -450,7 +450,6 @@ static int add_mmap( - assert(m->n_ref > 0); - assert(fd >= 0); - assert(size > 0); -- assert(ret); - - woffset = offset & ~((uint64_t) page_size() - 1ULL); - wsize = size + (offset - woffset); -@@ -520,7 +519,8 @@ static int add_mmap( - c->window = w; - LIST_PREPEND(Context, by_window, w->contexts, c); - -- *ret = (uint8_t*) w->ptr + (offset - w->offset); -+ if (ret) -+ *ret = (uint8_t*) w->ptr + (offset - w->offset); - return 1; - } - -@@ -541,7 +541,6 @@ int mmap_cache_get( - assert(m->n_ref > 0); - assert(fd >= 0); - assert(size > 0); -- assert(ret); - - /* Check whether the current context is the right one already */ - r = try_context(m, fd, prot, context, keep_always, offset, size, ret); -@@ -563,6 +562,42 @@ int mmap_cache_get( - return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret); - } - -+int mmap_cache_release( -+ MMapCache *m, -+ int fd, -+ int prot, -+ unsigned context, -+ uint64_t offset, -+ size_t size) { -+ -+ FileDescriptor *f; -+ Window *w; -+ -+ assert(m); -+ assert(m->n_ref > 0); -+ assert(fd >= 0); -+ assert(size > 0); -+ -+ f = hashmap_get(m->fds, INT_TO_PTR(fd + 1)); -+ if (!f) -+ return -EBADF; -+ -+ assert(f->fd == fd); -+ -+ LIST_FOREACH(by_fd, w, f->windows) -+ if (window_matches(w, fd, prot, offset, size)) -+ break; -+ -+ if (!w) -+ return -ENOENT; -+ -+ if (w->keep_always == 0) -+ return -ENOLCK; -+ -+ w->keep_always -= 1; -+ return 0; -+} -+ - void mmap_cache_close_fd(MMapCache *m, int fd) { - FileDescriptor *f; - -diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h -index 912336d..647555a 100644 ---- a/src/journal/mmap-cache.h -+++ b/src/journal/mmap-cache.h -@@ -31,7 +31,23 @@ MMapCache* mmap_cache_new(void); - MMapCache* mmap_cache_ref(MMapCache *m); - MMapCache* mmap_cache_unref(MMapCache *m); - --int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret); -+int mmap_cache_get( -+ MMapCache *m, -+ int fd, -+ int prot, -+ unsigned context, -+ bool keep_always, -+ uint64_t offset, -+ size_t size, -+ struct stat *st, -+ void **ret); -+int mmap_cache_release( -+ MMapCache *m, -+ int fd, -+ int prot, -+ unsigned context, -+ uint64_t offset, -+ size_t size); - void mmap_cache_close_fd(MMapCache *m, int fd); - void mmap_cache_close_context(MMapCache *m, unsigned context); - -diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c -index 52abbe9..46c3feb 100644 ---- a/src/journal/sd-journal.c -+++ b/src/journal/sd-journal.c -@@ -2508,9 +2508,7 @@ _public_ int sd_journal_query_unique(sd_journal *j, const char *field) { - } - - _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l) { -- Object *o; - size_t k; -- int r; - - if (!j) - return -EINVAL; -@@ -2535,9 +2533,11 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_ - for (;;) { - JournalFile *of; - Iterator i; -+ Object *o; - const void *odata; - size_t ol; - bool found; -+ int r; - - /* Proceed to next data object in the field's linked list */ - if (j->unique_offset == 0) { -@@ -2574,8 +2574,16 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_ - return r; - - /* Let's do the type check by hand, since we used 0 context above. */ -- if (o->object.type != OBJECT_DATA) -+ if (o->object.type != OBJECT_DATA) { -+ log_error("%s:offset " OFSfmt ": object has type %d, expected %d", -+ j->unique_file->path, j->unique_offset, -+ o->object.type, OBJECT_DATA); - return -EBADMSG; -+ } -+ -+ r = journal_file_object_keep(j->unique_file, o, j->unique_offset); -+ if (r < 0) -+ return r; - - r = return_data(j, j->unique_file, o, &odata, &ol); - if (r < 0) -@@ -2609,6 +2617,10 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_ - if (found) - continue; - -+ r = journal_file_object_release(j->unique_file, o, j->unique_offset); -+ if (r < 0) -+ return r; -+ - r = return_data(j, j->unique_file, o, data, l); - if (r < 0) - return r; diff --git a/0234-gpt-auto-generator-skip-nonexistent-devices.patch b/0234-gpt-auto-generator-skip-nonexistent-devices.patch deleted file mode 100644 index 1735610..0000000 --- a/0234-gpt-auto-generator-skip-nonexistent-devices.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 182a32427b50aed5812833e3ecb8a6078160a501 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= -Date: Tue, 7 Jan 2014 15:00:22 +0100 -Subject: [PATCH] gpt-auto-generator: skip nonexistent devices - -The devices we work with have eMMC chips for storage. The chips -provide four "hardware" partitions. The first is /dev/mmcblk0, it -takes almost whole space and holds a GPT with several real partitions -(/dev/mmcblk0p?). Then there are three block devices (mmcblk0boot0, -mmcblk0boot1, rpmb) that are part of the same hardware as mmcblk0 that -are presented by the kernel as children of the latter. That relationship -makes gpt-auto-generator try to peek them but since they are not GPT -partitions blkid_do_safeprobe() returns -2 making verify_gpt_parition() -function return -ENODEV. ---- - src/gpt-auto-generator/gpt-auto-generator.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c -index 25440e7..0e8e959 100644 ---- a/src/gpt-auto-generator/gpt-auto-generator.c -+++ b/src/gpt-auto-generator/gpt-auto-generator.c -@@ -298,6 +298,9 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) { - - r = verify_gpt_partition(node, &type_id, &nr, &fstype); - if (r < 0) { -+ /* skip child devices which are not detected properly */ -+ if (r == -ENODEV) -+ continue; - log_error("Failed to verify GPT partition %s: %s", - node, strerror(-r)); - return r; diff --git a/0235-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch b/0235-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch deleted file mode 100644 index 90dcbbb..0000000 --- a/0235-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 15ef380be7e38898fe2aef4ae3aa6fb0ce804564 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 11 Jan 2014 16:45:29 -0500 -Subject: [PATCH] gpt-auto-generator: use EBADSLT code when unable to detect - partition type - -ENODEV suggests that something is missing, which is be misleading -here. ---- - src/gpt-auto-generator/gpt-auto-generator.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c -index 0e8e959..d7c09f0 100644 ---- a/src/gpt-auto-generator/gpt-auto-generator.c -+++ b/src/gpt-auto-generator/gpt-auto-generator.c -@@ -74,10 +74,8 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr - - errno = 0; - r = blkid_do_safeprobe(b); -- if (r == -2) -- return -ENODEV; -- else if (r == 1) -- return -ENODEV; -+ if (r == -2 || r == 1) /* no result or uncertain */ -+ return -EBADSLT; - else if (r != 0) - return errno ? -errno : -EIO; - -@@ -299,7 +297,7 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) { - r = verify_gpt_partition(node, &type_id, &nr, &fstype); - if (r < 0) { - /* skip child devices which are not detected properly */ -- if (r == -ENODEV) -+ if (r == -EBADSLT) - continue; - log_error("Failed to verify GPT partition %s: %s", - node, strerror(-r)); diff --git a/0236-journald-do-not-free-space-when-disk-space-runs-low.patch b/0236-journald-do-not-free-space-when-disk-space-runs-low.patch deleted file mode 100644 index 53a0bda..0000000 --- a/0236-journald-do-not-free-space-when-disk-space-runs-low.patch +++ /dev/null @@ -1,265 +0,0 @@ -From 96dc1b72f3fb5d344538984121e11e5804905145 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Wed, 13 Nov 2013 00:42:22 -0500 -Subject: [PATCH] journald: do not free space when disk space runs low - -Before, journald would remove journal files until both MaxUse= and -KeepFree= settings would be satisfied. The first one depends (if set -automatically) on the size of the file system and is constant. But -the second one depends on current use of the file system, and a spike -in disk usage would cause journald to delete journal files, trying to -reach usage which would leave 15% of the disk free. This behaviour is -surprising for the user who doesn't expect his logs to be purged when -disk usage goes above 85%, which on a large disk could be some -gigabytes from being full. In addition attempting to keep 15% free -provides an attack vector where filling the disk sufficiently disposes -of almost all logs. - -Instead, obey KeepFree= only as a limit on adding additional files. -When replacing old files with new, ignore KeepFree=. This means that -if journal disk usage reached some high point that at some later point -start to violate the KeepFree= constraint, journald will not add files -to go above this point, but it will stay (slightly) below it. When -journald is restarted, it forgets the previous maximum usage value, -and sets the limit based on the current usage, so if disk remains to -be filled, journald might use one journal-file-size less on each -restart, if restarts happen just after rotation. This seems like a -reasonable compromise between implementation complexity and robustness. ---- - man/journald.conf.xml | 39 +++++++++++++++++++++++---------- - src/journal/journal-file.h | 1 + - src/journal/journal-vacuum.c | 6 ++--- - src/journal/journal-vacuum.h | 2 +- - src/journal/journald-server.c | 22 ++++++++++++++----- - src/journal/test-journal-interleaving.c | 4 ++-- - src/journal/test-journal.c | 4 ++-- - src/shared/macro.h | 7 ++++++ - 8 files changed, 58 insertions(+), 27 deletions(-) - -diff --git a/man/journald.conf.xml b/man/journald.conf.xml -index b362c5d..e0796e1 100644 ---- a/man/journald.conf.xml -+++ b/man/journald.conf.xml -@@ -250,20 +250,35 @@ - SystemMaxUse= - and RuntimeMaxUse= - control how much disk space the -- journal may use up at -- maximum. Defaults to 10% of the size -- of the respective file -- system. SystemKeepFree= -- and -+ journal may use up at maximum. -+ SystemKeepFree= and - RuntimeKeepFree= - control how much disk space -- systemd-journald shall always leave -- free for other uses. Defaults to 15% -- of the size of the respective file -- system. systemd-journald will respect -- both limits, i.e. use the smaller of -- the two values. -- SystemMaxFileSize= -+ systemd-journald shall leave free for -+ other uses. -+ systemd-journald -+ will respect both limits and use the -+ smaller of the two values. -+ -+ The first pair defaults to 10% -+ and the second to 15% of the size of -+ the respective file system. If the -+ file system is nearly full and either -+ SystemKeepFree= or -+ RuntimeKeepFree= is -+ violated when systemd-journald is -+ started, the value will be raised to -+ percentage that is actually free. This -+ means that if before there was enough -+ free space and journal files were -+ created, and subsequently something -+ else causes the file system to fill -+ up, journald will stop using more -+ space, but it'll will not removing -+ existing files to go reduce footprint -+ either. -+ -+ SystemMaxFileSize= - and - RuntimeMaxFileSize= - control how large individual journal -diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h -index 0bd23f7..2e06b57 100644 ---- a/src/journal/journal-file.h -+++ b/src/journal/journal-file.h -@@ -37,6 +37,7 @@ - - typedef struct JournalMetrics { - uint64_t max_use; -+ uint64_t use; - uint64_t max_size; - uint64_t min_size; - uint64_t keep_free; -diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c -index d4a1c6c..8b07f65 100644 ---- a/src/journal/journal-vacuum.c -+++ b/src/journal/journal-vacuum.c -@@ -150,7 +150,6 @@ static int journal_file_empty(int dir_fd, const char *name) { - int journal_directory_vacuum( - const char *directory, - uint64_t max_use, -- uint64_t min_free, - usec_t max_retention_usec, - usec_t *oldest_usec) { - -@@ -164,7 +163,7 @@ int journal_directory_vacuum( - - assert(directory); - -- if (max_use <= 0 && min_free <= 0 && max_retention_usec <= 0) -+ if (max_use <= 0 && max_retention_usec <= 0) - return 0; - - if (max_retention_usec > 0) { -@@ -310,8 +309,7 @@ int journal_directory_vacuum( - } - - if ((max_retention_usec <= 0 || list[i].realtime >= retention_limit) && -- (max_use <= 0 || sum <= max_use) && -- (min_free <= 0 || (uint64_t) ss.f_bavail * (uint64_t) ss.f_bsize >= min_free)) -+ (max_use <= 0 || sum <= max_use)) - break; - - if (unlinkat(dirfd(d), list[i].filename, 0) >= 0) { -diff --git a/src/journal/journal-vacuum.h b/src/journal/journal-vacuum.h -index f5e3e52..bc30c3a 100644 ---- a/src/journal/journal-vacuum.h -+++ b/src/journal/journal-vacuum.h -@@ -23,4 +23,4 @@ - - #include - --int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t min_free, usec_t max_retention_usec, usec_t *oldest_usec); -+int journal_directory_vacuum(const char *directory, uint64_t max_use, usec_t max_retention_usec, usec_t *oldest_usec); -diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c -index 1fcb3d5..cd2cfe9 100644 ---- a/src/journal/journald-server.c -+++ b/src/journal/journald-server.c -@@ -158,9 +158,18 @@ static uint64_t available_space(Server *s, bool verbose) { - } - - ss_avail = ss.f_bsize * ss.f_bavail; -- avail = ss_avail > m->keep_free ? ss_avail - m->keep_free : 0; - -- s->cached_available_space = MIN(m->max_use, avail) > sum ? MIN(m->max_use, avail) - sum : 0; -+ /* If we reached a high mark, we will always allow this much -+ * again, unless usage goes above max_use. This watermark -+ * value is cached so that we don't give up space on pressure, -+ * but hover below the maximum usage. */ -+ -+ if (m->use < sum) -+ m->use = sum; -+ -+ avail = LESS_BY(ss_avail, m->keep_free); -+ -+ s->cached_available_space = LESS_BY(MIN(m->max_use, avail), sum); - s->cached_available_space_timestamp = ts; - - if (verbose) { -@@ -168,13 +177,14 @@ static uint64_t available_space(Server *s, bool verbose) { - fb4[FORMAT_BYTES_MAX], fb5[FORMAT_BYTES_MAX]; - - server_driver_message(s, SD_MESSAGE_JOURNAL_USAGE, -- "%s journal is using %s (max %s, leaving %s of free %s, current limit %s).", -+ "%s journal is using %s (max allowed %s, " -+ "trying to leave %s free of %s available → current limit %s).", - s->system_journal ? "Permanent" : "Runtime", - format_bytes(fb1, sizeof(fb1), sum), - format_bytes(fb2, sizeof(fb2), m->max_use), - format_bytes(fb3, sizeof(fb3), m->keep_free), - format_bytes(fb4, sizeof(fb4), ss_avail), -- format_bytes(fb5, sizeof(fb5), MIN(m->max_use, avail))); -+ format_bytes(fb5, sizeof(fb5), s->cached_available_space + sum)); - } - - return s->cached_available_space; -@@ -378,7 +388,7 @@ void server_vacuum(Server *s) { - if (s->system_journal) { - char *p = strappenda("/var/log/journal/", ids); - -- r = journal_directory_vacuum(p, s->system_metrics.max_use, s->system_metrics.keep_free, s->max_retention_usec, &s->oldest_file_usec); -+ r = journal_directory_vacuum(p, s->system_metrics.max_use, s->max_retention_usec, &s->oldest_file_usec); - if (r < 0 && r != -ENOENT) - log_error("Failed to vacuum %s: %s", p, strerror(-r)); - } -@@ -386,7 +396,7 @@ void server_vacuum(Server *s) { - if (s->runtime_journal) { - char *p = strappenda("/run/log/journal/", ids); - -- r = journal_directory_vacuum(p, s->runtime_metrics.max_use, s->runtime_metrics.keep_free, s->max_retention_usec, &s->oldest_file_usec); -+ r = journal_directory_vacuum(p, s->runtime_metrics.max_use, s->max_retention_usec, &s->oldest_file_usec); - if (r < 0 && r != -ENOENT) - log_error("Failed to vacuum %s: %s", p, strerror(-r)); - } -diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c -index 1a058ea..974fa3b 100644 ---- a/src/journal/test-journal-interleaving.c -+++ b/src/journal/test-journal-interleaving.c -@@ -194,7 +194,7 @@ static void test_skip(void (*setup)(void)) - if (arg_keep) - log_info("Not removing %s", t); - else { -- journal_directory_vacuum(".", 3000000, 0, 0, NULL); -+ journal_directory_vacuum(".", 3000000, 0, NULL); - - assert_se(rm_rf_dangerous(t, false, true, false) >= 0); - } -@@ -279,7 +279,7 @@ static void test_sequence_numbers(void) { - if (arg_keep) - log_info("Not removing %s", t); - else { -- journal_directory_vacuum(".", 3000000, 0, 0, NULL); -+ journal_directory_vacuum(".", 3000000, 0, NULL); - - assert_se(rm_rf_dangerous(t, false, true, false) >= 0); - } -diff --git a/src/journal/test-journal.c b/src/journal/test-journal.c -index 190c426..3b8778d 100644 ---- a/src/journal/test-journal.c -+++ b/src/journal/test-journal.c -@@ -126,7 +126,7 @@ static void test_non_empty(void) { - if (arg_keep) - log_info("Not removing %s", t); - else { -- journal_directory_vacuum(".", 3000000, 0, 0, NULL); -+ journal_directory_vacuum(".", 3000000, 0, NULL); - - assert_se(rm_rf_dangerous(t, false, true, false) >= 0); - } -@@ -165,7 +165,7 @@ static void test_empty(void) { - if (arg_keep) - log_info("Not removing %s", t); - else { -- journal_directory_vacuum(".", 3000000, 0, 0, NULL); -+ journal_directory_vacuum(".", 3000000, 0, NULL); - - assert_se(rm_rf_dangerous(t, false, true, false) >= 0); - } -diff --git a/src/shared/macro.h b/src/shared/macro.h -index d4f92b6..bc5b3c1 100644 ---- a/src/shared/macro.h -+++ b/src/shared/macro.h -@@ -114,6 +114,13 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { - _a < _b ? _a : _b; \ - }) - -+#define LESS_BY(A,B) \ -+ __extension__ ({ \ -+ typeof(A) _A = (A); \ -+ typeof(B) _B = (B); \ -+ _A > _B ? _A - _B : 0; \ -+ }) -+ - #ifndef CLAMP - #define CLAMP(x, low, high) \ - __extension__ ({ \ diff --git a/0237-man-add-busctl-1.patch b/0237-man-add-busctl-1.patch deleted file mode 100644 index 208c839..0000000 --- a/0237-man-add-busctl-1.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 7cfdb4b03c310e9bb55609a98eb70356e4c50148 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 11 Jan 2014 23:44:34 -0500 -Subject: [PATCH] man: add busctl(1) - -Conflicts: - Makefile-man.am - TODO - man/systemd-bus-proxyd.xml ---- - Makefile-man.am | 1 + - man/busctl.xml | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 207 insertions(+) - create mode 100644 man/busctl.xml - -diff --git a/Makefile-man.am b/Makefile-man.am -index 3f626e8..9c3cb35 100644 ---- a/Makefile-man.am -+++ b/Makefile-man.am -@@ -3,6 +3,7 @@ - - MANPAGES += \ - man/bootup.7 \ -+ man/busctl.1 \ - man/daemon.7 \ - man/halt.8 \ - man/hostname.5 \ -diff --git a/man/busctl.xml b/man/busctl.xml -new file mode 100644 -index 0000000..0c5f05a ---- /dev/null -+++ b/man/busctl.xml -@@ -0,0 +1,206 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ busctl -+ systemd -+ -+ -+ -+ A monkey with a typewriter -+ Zbigniew -+ Jędrzejewski-Szmek -+ zbyszek@in.waw.pl -+ -+ -+ -+ -+ -+ busctl -+ 1 -+ -+ -+ -+ busctl -+ Introspect the bus -+ -+ -+ -+ -+ busctl -+ OPTIONS -+ COMMAND -+ NAME -+ -+ -+ -+ -+ Description -+ -+ busctl may be used to -+ introspect and monitor the D-Bus bus. -+ -+ -+ -+ Options -+ -+ The following options are understood: -+ -+ -+ -+ -+ -+ -+ Print a short help text and exit. -+ -+ -+ -+ -+ -+ -+ -+ Print a short version string and exit. -+ -+ -+ -+ -+ -+ -+ -+ Do not pipe output into a pager. -+ -+ -+ -+ -+ -+ -+ -+ Talk to the systemd system manager (the -+ default). -+ -+ -+ -+ -+ -+ -+ -+ Talk to the systemd manager of the calling -+ user. -+ -+ -+ -+ -+ -+ -+ Connect to the bus specified by -+ ADDRESS instead of using suitable -+ defaults for either the system or user bus (see -+ and -+ options). -+ -+ -+ -+ -+ -+ When showing the list of endpoints, show a -+ column containing the names of containers they belong to. -+ See -+ systemd-machined.service8. -+ -+ -+ -+ -+ -+ -+ When showing the list of endpoints, show -+ only "unique" names (of the form -+ :number.number). -+ -+ -+ -+ -+ -+ -+ The opposite of — -+ only "well-known" names will be shown. -+ -+ -+ -+ -+ -+ When showing the list of endpoints, show -+ only endpoints which haven't actually been activated yet, -+ but may be started automatically if accessed. -+ -+ -+ -+ -+ -+ -+ When showing messages being exchanged, show only the -+ subset matching MATCH. -+ -+ -+ -+ -+ -+ -+ Commands -+ -+ The following commands are understood: -+ -+ -+ -+ list -+ -+ Show endpoints attached to the bus. This is -+ the default if no command is specified. -+ -+ -+ -+ monitor NAME -+ -+ Dump messages being exchanged. If -+ NAME is specified, show messages -+ to or from this endpoint. Otherwsise, show all messages on the -+ bus. -+ -+ -+ -+ -+ -+ See Also -+ -+ -+ dbus-daemon1, -+ D-Bus, -+ kdbus, -+ sd-bus3, -+ systemd1, -+ systemd-bus-proxyd8, -+ machinectl1 -+ -+ -+ diff --git a/0238-journalctl-flip-to-full-by-default.patch b/0238-journalctl-flip-to-full-by-default.patch deleted file mode 100644 index 28f1a29..0000000 --- a/0238-journalctl-flip-to-full-by-default.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 25bebb7cc2b1b0d4ffc9ed02c348ae96b49c4572 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 6 Oct 2013 21:55:18 -0400 -Subject: [PATCH] journalctl: flip to --full by default - -We already shew lines in full when using a pager or not on a -tty. The commit disables ellipsization in the sole remaining case, -namely when --follow is used. - -This has been a popular request for a long time, and indeed, full -output seems much more useful. Old behaviour can still be requested by -using --no-full. Old options retain their behaviour for compatiblity, -but aren't advertised as much. This change applies only to jornalctl, -not to systemctl, when ellipsization is useful to keep the layout. - -https://bugzilla.redhat.com/show_bug.cgi?id=984758 ---- - man/journalctl.xml | 15 ++++++++++++--- - src/journal/journalctl.c | 12 +++++++++--- - 2 files changed, 21 insertions(+), 6 deletions(-) - -diff --git a/man/journalctl.xml b/man/journalctl.xml -index d75c758..d1e841a 100644 ---- a/man/journalctl.xml -+++ b/man/journalctl.xml -@@ -152,11 +152,20 @@ - - - -- -+ - -+ -+ -+ Ellipsize fields when -+ they don't fit in available columns. -+ The default is to show full fields, -+ allowing them to wrap or be truncated -+ by the pager if one is used. - -- Show all (printable) fields in -- full. -+ Old options -+ / -+ not useful anymore, except to undo -+ . - - - -diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c -index ccd96b2..1b5bdd3 100644 ---- a/src/journal/journalctl.c -+++ b/src/journal/journalctl.c -@@ -64,7 +64,7 @@ - static OutputMode arg_output = OUTPUT_SHORT; - static bool arg_pager_end = false; - static bool arg_follow = false; --static bool arg_full = false; -+static bool arg_full = true; - static bool arg_all = false; - static bool arg_no_pager = false; - static int arg_lines = -1; -@@ -187,7 +187,7 @@ static int help(void) { - " short-precise, short-monotonic, verbose,\n" - " export, json, json-pretty, json-sse, cat)\n" - " -x --catalog Add message explanations where available\n" -- " -l --full Do not ellipsize fields\n" -+ " --no-full Ellipsize fields\n" - " -a --all Show all fields, including long and unprintable\n" - " -q --quiet Do not show privilege warning\n" - " --no-pager Do not pipe output into a pager\n" -@@ -224,6 +224,7 @@ static int parse_argv(int argc, char *argv[]) { - enum { - ARG_VERSION = 0x100, - ARG_NO_PAGER, -+ ARG_NO_FULL, - ARG_NO_TAIL, - ARG_NEW_ID128, - ARG_LIST_BOOTS, -@@ -258,6 +259,7 @@ static int parse_argv(int argc, char *argv[]) { - { "output", required_argument, NULL, 'o' }, - { "all", no_argument, NULL, 'a' }, - { "full", no_argument, NULL, 'l' }, -+ { "no-full", no_argument, NULL, ARG_NO_FULL }, - { "lines", optional_argument, NULL, 'n' }, - { "no-tail", no_argument, NULL, ARG_NO_TAIL }, - { "new-id128", no_argument, NULL, ARG_NEW_ID128 }, -@@ -349,6 +351,10 @@ static int parse_argv(int argc, char *argv[]) { - arg_full = true; - break; - -+ case ARG_NO_FULL: -+ arg_full = false; -+ break; -+ - case 'a': - arg_all = true; - break; -@@ -1736,7 +1742,7 @@ int main(int argc, char *argv[]) { - - flags = - arg_all * OUTPUT_SHOW_ALL | -- (arg_full || !on_tty() || pager_have()) * OUTPUT_FULL_WIDTH | -+ arg_full * OUTPUT_FULL_WIDTH | - on_tty() * OUTPUT_COLOR | - arg_catalog * OUTPUT_CATALOG; - diff --git a/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch b/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch deleted file mode 100644 index 6b373bf..0000000 --- a/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a5c54f73b345b191b99cf47c8efe33afc0e4b066 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Tue, 14 Jan 2014 15:40:16 +0100 -Subject: [PATCH] coredumpctl: in case of error free pattern after print - ---- - src/journal/coredumpctl.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c -index 560a91b..a5997e2 100644 ---- a/src/journal/coredumpctl.c -+++ b/src/journal/coredumpctl.c -@@ -126,10 +126,11 @@ static int add_match(Set *set, const char *match) { - goto fail; - - log_debug("Adding pattern: %s", pattern); -- r = set_consume(set, pattern); -+ r = set_put(set, pattern); - if (r < 0) { - log_error("Failed to add pattern '%s': %s", - pattern, strerror(-r)); -+ free(pattern); - goto fail; - } - diff --git a/0240-shell-completion-remove-load-from-systemctl.patch b/0240-shell-completion-remove-load-from-systemctl.patch deleted file mode 100644 index 566e9af..0000000 --- a/0240-shell-completion-remove-load-from-systemctl.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 4028b4cf18191ca958d2ef6cced1d5087aeea976 Mon Sep 17 00:00:00 2001 -From: Lukas Nykryn -Date: Wed, 15 Jan 2014 15:31:07 +0100 -Subject: [PATCH] shell-completion: remove load from systemctl - -Conflicts: - shell-completion/bash/systemctl ---- - shell-completion/bash/systemctl | 2 +- - shell-completion/zsh/_systemctl | 3 +-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl -index eea4b6d..84149e3 100644 ---- a/shell-completion/bash/systemctl -+++ b/shell-completion/bash/systemctl -@@ -141,7 +141,7 @@ _systemctl () { - emergency exit halt hibernate hybrid-sleep kexec list-jobs - list-sockets list-units list-unit-files poweroff reboot rescue - show-environment suspend get-default' -- [NAME]='snapshot load' -+ [NAME]='snapshot' - [FILE]='link' - [TARGETS]='set-default' - ) -diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl -index 3959cd5..6d98cb6 100644 ---- a/shell-completion/zsh/_systemctl -+++ b/shell-completion/zsh/_systemctl -@@ -24,7 +24,6 @@ - "status:Show runtime status of one or more units" - "show:Show properties of one or more units/jobs or the manager" - "reset-failed:Reset failed state for all, one, or more units" -- "load:Load one or more units" - "list-unit-files:List installed unit files" - "enable:Enable one or more unit files" - "disable:Disable one or more unit files" -@@ -266,7 +265,7 @@ done - # [STANDALONE]='daemon-reexec daemon-reload default - # emergency exit halt kexec list-jobs list-units - # list-unit-files poweroff reboot rescue show-environment' --# [NAME]='snapshot load' -+# [NAME]='snapshot' - - _systemctl_caching_policy() - { diff --git a/0241-units-drop-Install-section-from-multi-user.target-an.patch b/0241-units-drop-Install-section-from-multi-user.target-an.patch deleted file mode 100644 index a204197..0000000 --- a/0241-units-drop-Install-section-from-multi-user.target-an.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 491712eabdbdb0693a8b04dfee02665094eb7576 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 17 Jan 2014 20:27:35 +0100 -Subject: [PATCH] units: drop [Install] section from multi-user.target and - graphical.target - -They were supposed to make it easy to make the default.target a symlink -to these targets, but this was never advertised and we have a better -command for this now in "systemctl set-default". Since the install -section makes the output of "systemctl list-unit-files" confusing (since -it makes the units appear as "disabled"), let's drop the sections. ---- - units/graphical.target | 3 --- - units/multi-user.target | 3 --- - 2 files changed, 6 deletions(-) - -diff --git a/units/graphical.target b/units/graphical.target -index 65f2521..a2c4532 100644 ---- a/units/graphical.target -+++ b/units/graphical.target -@@ -13,6 +13,3 @@ After=multi-user.target - Conflicts=rescue.target - Wants=display-manager.service - AllowIsolate=yes -- --[Install] --Alias=default.target -diff --git a/units/multi-user.target b/units/multi-user.target -index 998e046..0f0e5e9 100644 ---- a/units/multi-user.target -+++ b/units/multi-user.target -@@ -12,6 +12,3 @@ Requires=basic.target - Conflicts=rescue.service rescue.target - After=basic.target rescue.service rescue.target - AllowIsolate=yes -- --[Install] --Alias=default.target diff --git a/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch b/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch deleted file mode 100644 index 143add8..0000000 --- a/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d953cda9e6b3e41f419b63a35632edc8f769a7d0 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Mon, 20 Jan 2014 13:43:20 +0100 -Subject: [PATCH] systemctl: skip native unit file handling if sysv file - handling already handled everything - -Issue pointed out by Colin Guthrie. ---- - src/systemctl/systemctl.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index bc9808a..da49da7 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -4436,6 +4436,11 @@ static int enable_unit(DBusConnection *bus, char **args) { - if (r < 0) - return r; - -+ /* If the operation was fully executed by the SysV compat, -+ * let's finish early */ -+ if (strv_isempty(mangled_names)) -+ return 0; -+ - if (!bus || avoid_bus()) { - if (streq(verb, "enable")) { - r = unit_file_enable(arg_scope, arg_runtime, arg_root, mangled_names, arg_force, &changes, &n_changes); diff --git a/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch deleted file mode 100644 index e5ba4d2..0000000 --- a/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch +++ /dev/null @@ -1,35 +0,0 @@ -From abcf860569fc85e7a6eb05606d579b6f2e6de898 Mon Sep 17 00:00:00 2001 -From: Marcel Holtmann -Date: Mon, 20 Jan 2014 17:53:16 -0800 -Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers - ---- - hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb -index 192b715..6a9dc50 100644 ---- a/hwdb/20-bluetooth-vendor-product.hwdb -+++ b/hwdb/20-bluetooth-vendor-product.hwdb -@@ -851,3 +851,21 @@ bluetooth:v0119* - - bluetooth:v011A* - ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc. -+ -+bluetooth:v011B* -+ ID_VENDOR_FROM_DATABASE=Aruba Networks -+ -+bluetooth:v011C* -+ ID_VENDOR_FROM_DATABASE=Baidu -+ -+bluetooth:v011D* -+ ID_VENDOR_FROM_DATABASE=Arendi AG -+ -+bluetooth:v011E* -+ ID_VENDOR_FROM_DATABASE=Skoda Auto a.s. -+ -+bluetooth:v011F* -+ ID_VENDOR_FROM_DATABASE=Volkswagon AG -+ -+bluetooth:v0120* -+ ID_VENDOR_FROM_DATABASE=Porsche AG diff --git a/0244-udev-static_node-do-not-exit-rule-after-first-static.patch b/0244-udev-static_node-do-not-exit-rule-after-first-static.patch deleted file mode 100644 index f7f66b6..0000000 --- a/0244-udev-static_node-do-not-exit-rule-after-first-static.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 87041721ccfc9472d9c4f229402e342ba6c855b0 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Wed, 22 Jan 2014 10:47:48 +0100 -Subject: [PATCH] udev: static_node - do not exit rule after first static_node - item - -The nodes usually do not exist, so handle the next item instead of -skipping the entire rule. ---- - src/udev/udev-rules.c | 21 ++++++++++----------- - 1 file changed, 10 insertions(+), 11 deletions(-) - -diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c -index 6f8b127..c981773 100644 ---- a/src/udev/udev-rules.c -+++ b/src/udev/udev-rules.c -@@ -900,6 +900,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, - case TK_A_GOTO: - case TK_M_TAG: - case TK_A_TAG: -+ case TK_A_STATIC_NODE: - token->key.value_off = rules_add_string(rule_tmp->rules, value); - break; - case TK_M_IMPORT_BUILTIN: -@@ -942,9 +943,6 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, - case TK_A_MODE_ID: - token->key.mode = *(mode_t *)data; - break; -- case TK_A_STATIC_NODE: -- token->key.value_off = rules_add_string(rule_tmp->rules, value); -- break; - case TK_M_EVENT_TIMEOUT: - token->key.event_timeout = *(int *)data; - break; -@@ -992,7 +990,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, - } - - if (attr != NULL) { -- /* check if property/attribut name has substitution chars */ -+ /* check if property/attribute name has substitution chars */ - if (attr[0] == '[') - token->key.attrsubst = SB_SUBSYS; - else if (strchr(attr, '%') != NULL || strchr(attr, '$') != NULL) -@@ -2576,15 +2574,11 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) - /* we assure, that the permissions tokens are sorted before the static token */ - if (mode == 0 && uid == 0 && gid == 0 && tags == NULL) - goto next; -+ - strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL); -- if (stat(device_node, &stats) != 0) -- goto next; -- if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode)) -- goto next; - -+ /* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */ - if (tags) { -- /* Export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */ -- - STRV_FOREACH(t, tags) { - _cleanup_free_ char *unescaped_filename = NULL; - -@@ -2609,7 +2603,12 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) - - /* don't touch the permissions if only the tags were set */ - if (mode == 0 && uid == 0 && gid == 0) -- goto next; -+ break; -+ -+ if (stat(device_node, &stats) != 0) -+ break; -+ if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode)) -+ break; - - if (mode == 0) { - if (gid > 0) diff --git a/0245-cryptsetup-Support-key-slot-option.patch b/0245-cryptsetup-Support-key-slot-option.patch deleted file mode 100644 index 2cb4b61..0000000 --- a/0245-cryptsetup-Support-key-slot-option.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 47ac3edbade8ab5f4a205f2c1bad11ec9643b8b6 Mon Sep 17 00:00:00 2001 -From: Christian Seiler -Date: Sun, 26 Jan 2014 12:02:49 +0100 -Subject: [PATCH] cryptsetup: Support key-slot option - -Debian recently introduced the option key-slot to /etc/crypttab to -specify the LUKS key slot to be used for decrypting the device. On -systems where a keyfile is used and the key is not in the first slot, -this can speed up the boot process quite a bit, since cryptsetup does -not need to try all of the slots sequentially. (Unsuccessfully testing -a key slot typically takes up to about 1 second.) - -This patch makes systemd aware of this option. - -Debian bug that introduced the feature: -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704470 ---- - man/crypttab.xml | 14 ++++++++++++++ - src/cryptsetup/cryptsetup.c | 13 +++++++++++-- - 2 files changed, 25 insertions(+), 2 deletions(-) - -diff --git a/man/crypttab.xml b/man/crypttab.xml -index 90d8ce9..5f386e5 100644 ---- a/man/crypttab.xml -+++ b/man/crypttab.xml -@@ -164,6 +164,20 @@ - - - -+ key-slot= -+ -+ Specifies the key slot to -+ compare the passphrase or key against. -+ If the key slot does not match the given -+ passphrase or key, but another would, the -+ setup of the device will fail regardless. -+ This implies luks. See -+ cryptsetup8 -+ for possible values. The default is to try -+ all key slots in sequential order. -+ -+ -+ - luks - - Force LUKS mode. When this mode -diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c -index 39f7db7..6a76d21 100644 ---- a/src/cryptsetup/cryptsetup.c -+++ b/src/cryptsetup/cryptsetup.c -@@ -39,6 +39,7 @@ - static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */ - static char *opt_cipher = NULL; - static unsigned opt_key_size = 0; -+static int opt_key_slot = CRYPT_ANY_SLOT; - static unsigned opt_keyfile_size = 0; - static unsigned opt_keyfile_offset = 0; - static char *opt_hash = NULL; -@@ -87,6 +88,14 @@ static int parse_one_option(const char *option) { - return 0; - } - -+ } else if (startswith(option, "key-slot=")) { -+ -+ opt_type = CRYPT_LUKS1; -+ if (safe_atoi(option+9, &opt_key_slot) < 0) { -+ log_error("key-slot= parse failure, ignoring."); -+ return 0; -+ } -+ - } else if (startswith(option, "tcrypt-keyfile=")) { - - opt_type = CRYPT_TCRYPT; -@@ -432,7 +441,7 @@ static int attach_luks_or_plain(struct crypt_device *cd, - crypt_get_device_name(cd)); - - if (key_file) { -- r = crypt_activate_by_keyfile_offset(cd, name, CRYPT_ANY_SLOT, -+ r = crypt_activate_by_keyfile_offset(cd, name, opt_key_slot, - key_file, opt_keyfile_size, - opt_keyfile_offset, flags); - if (r < 0) { -@@ -446,7 +455,7 @@ static int attach_luks_or_plain(struct crypt_device *cd, - if (pass_volume_key) - r = crypt_activate_by_volume_key(cd, name, *p, opt_key_size, flags); - else -- r = crypt_activate_by_passphrase(cd, name, CRYPT_ANY_SLOT, *p, strlen(*p), flags); -+ r = crypt_activate_by_passphrase(cd, name, opt_key_slot, *p, strlen(*p), flags); - - if (r >= 0) - break; diff --git a/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch b/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch deleted file mode 100644 index 1f7df88..0000000 --- a/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 2373386db2501528c74e2f547c2c5d27d81be35b Mon Sep 17 00:00:00 2001 -From: Matthew Monaco -Date: Fri, 24 Jan 2014 11:23:01 -0700 -Subject: [PATCH] pam_systemd: Ignore vtnr when seat != seat0 - -logind considers it an error for a seat other than seat0 to have a -non-zero vtnr for CreateSession ---- - src/login/pam-module.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/login/pam-module.c b/src/login/pam-module.c -index 973daf7..7ebb5d2 100644 ---- a/src/login/pam-module.c -+++ b/src/login/pam-module.c -@@ -335,6 +335,12 @@ _public_ PAM_EXTERN int pam_sm_open_session( - get_seat_from_display(display, NULL, &vtnr); - } - -+ if (seat && !streq(seat, "seat0")) { -+ pam_syslog(handle, LOG_DEBUG, -+ "Ignoring vtnr %d for %s which is not seat0", vtnr, seat); -+ vtnr = 0; -+ } -+ - if (!type) - type = !isempty(display) ? "x11" : - !isempty(tty) ? "tty" : "unspecified"; diff --git a/0247-keymap-Add-HP-Chromebook-14-Falco.patch b/0247-keymap-Add-HP-Chromebook-14-Falco.patch deleted file mode 100644 index f3d28f6..0000000 --- a/0247-keymap-Add-HP-Chromebook-14-Falco.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 815422d1be5fab4acaa8c1c752342752a0935e3a Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Mon, 27 Jan 2014 09:04:22 +0100 -Subject: [PATCH] keymap: Add HP Chromebook 14 (Falco) - -Thanks to Stefan Nagy . ---- - hwdb/60-keyboard.hwdb | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index e3d1f02..c027cbe 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -417,6 +417,22 @@ keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHDX9494NR:pvr* - KEYBOARD_KEY_d8=!f23 # touchpad off - KEYBOARD_KEY_d9=!f22 # touchpad on - -+# Chromebook 14 -+# Top row keys (between ESC and power button) -+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnFalco:pvr* -+ KEYBOARD_KEY_3b=back -+ KEYBOARD_KEY_3c=forward -+ KEYBOARD_KEY_3d=refresh -+ KEYBOARD_KEY_3f=switchvideomode -+ KEYBOARD_KEY_40=brightnessdown -+ KEYBOARD_KEY_41=brightnessup -+ KEYBOARD_KEY_42=mute -+ KEYBOARD_KEY_43=volumedown -+ KEYBOARD_KEY_44=volumeup -+ KEYBOARD_KEY_db=search # Same position as caps lock key on most keyboards -+# KEYBOARD_KEY_3e=fullscreen, no defined key sym -+ -+ - ########################################################### - # IBM - ########################################################### diff --git a/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch b/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch deleted file mode 100644 index bef8d26..0000000 --- a/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch +++ /dev/null @@ -1,24 +0,0 @@ -From ad001361e54d4e04175acd7f0eca55ffcb5e19ad Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Tue, 28 Jan 2014 18:10:12 +0100 -Subject: [PATCH] keymap: Add release quirk for Acer AOA switchvideomode key - -https://launchpad.net/bugs/1272658 ---- - hwdb/60-keyboard.hwdb | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index c027cbe..52d9a2a 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -118,6 +118,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:* - keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:* - KEYBOARD_KEY_ee=screenlock - -+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOA*:pvr* -+ KEYBOARD_KEY_a9=!switchvideomode # Fn+F5 -+ - ########################################################### - # Alienware - ########################################################### diff --git a/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch b/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch deleted file mode 100644 index 778803c..0000000 --- a/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch +++ /dev/null @@ -1,24 +0,0 @@ -From cf981a6c17d44d00c385fe8a9ed7b8259533006d Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Tue, 28 Jan 2014 18:14:18 +0100 -Subject: [PATCH] keymap: Add Sony Vaio VGN-FW250 - -https://launchpad.net/bugs/1271163 ---- - hwdb/60-keyboard.hwdb | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 52d9a2a..ea206bb 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -981,6 +981,9 @@ keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-Z21*:pvr* - KEYBOARD_KEY_17=prog1 - KEYBOARD_KEY_20=media - -+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW250*:pvr* -+ KEYBOARD_KEY_10=suspend # Fn+F12 -+ - keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVPC*:pvr* - KEYBOARD_KEY_05=f21 # Fn+F1 -> KEY_F21 (The actual touchpad toggle) - KEYBOARD_KEY_0d=zoomout # Fn+F9 diff --git a/0250-keymap-Add-Toshiba-EQUIUM.patch b/0250-keymap-Add-Toshiba-EQUIUM.patch deleted file mode 100644 index 7feb0c9..0000000 --- a/0250-keymap-Add-Toshiba-EQUIUM.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 8b690dd3c8d28ff107a9992e7405126a02ee7ae2 Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Wed, 29 Jan 2014 16:13:22 +0100 -Subject: [PATCH] keymap: Add Toshiba EQUIUM - -Thanks Aleksander Kowalski ! ---- - hwdb/60-keyboard.hwdb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index ea206bb..f9084e4 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -1089,6 +1089,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:* - keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnEQUIUM [uU][35]0[05]*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:* - keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:* - keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:* diff --git a/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch b/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch deleted file mode 100644 index 70e9125..0000000 --- a/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 85e9236488cfad07cc0aa4d23610bc25039dda27 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 30 Jan 2014 21:40:27 -0500 -Subject: [PATCH] tmpfiles: fix memory leak of exclude_prefixes - -Missed in 5c795114. ---- - src/tmpfiles/tmpfiles.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 5e49cc8..fb88acd 100644 ---- a/src/tmpfiles/tmpfiles.c -+++ b/src/tmpfiles/tmpfiles.c -@@ -1332,12 +1332,12 @@ static int parse_argv(int argc, char *argv[]) { - break; - - case ARG_PREFIX: -- if (strv_extend(&include_prefixes, optarg) < 0) -+ if (strv_push(&include_prefixes, optarg) < 0) - return log_oom(); - break; - - case ARG_EXCLUDE_PREFIX: -- if (strv_extend(&exclude_prefixes, optarg) < 0) -+ if (strv_push(&exclude_prefixes, optarg) < 0) - return log_oom(); - break; - -@@ -1498,7 +1498,8 @@ finish: - hashmap_free(items); - hashmap_free(globs); - -- strv_free(include_prefixes); -+ free(include_prefixes); -+ free(exclude_prefixes); - - set_free_free(unix_sockets); - diff --git a/0252-analyze-fix-plot-issues-when-using-gummiboot.patch b/0252-analyze-fix-plot-issues-when-using-gummiboot.patch deleted file mode 100644 index 719477a..0000000 --- a/0252-analyze-fix-plot-issues-when-using-gummiboot.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 982c437cfa1dc189fb650e00c6124e00f2c6de68 Mon Sep 17 00:00:00 2001 -From: Thomas Hindoe Paaboel Andersen -Date: Fri, 31 Jan 2014 07:07:20 +0100 -Subject: [PATCH] analyze: fix plot issues when using gummiboot - -It would crash and the legend in the bottom followed the time 0.0. ---- - src/analyze/systemd-analyze.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c -index f4c7f68..317baf9 100644 ---- a/src/analyze/systemd-analyze.c -+++ b/src/analyze/systemd-analyze.c -@@ -540,7 +540,7 @@ static int analyze_plot(DBusConnection *bus) { - name.nodename, name.release, name.version, name.machine); - - svg("\n", 20.0 + (SCALE_X * boot->firmware_time)); -- svg_graph_box(m, -boot->firmware_time, boot->finish_time); -+ svg_graph_box(m, -(double) boot->firmware_time, boot->finish_time); - - if (boot->firmware_time) { - svg_bar("firmware", -(double) boot->firmware_time, -(double) boot->loader_time, y); -@@ -589,7 +589,10 @@ static int analyze_plot(DBusConnection *bus) { - y++; - } - -+ svg("\n"); -+ - /* Legend */ -+ svg("\n"); - y++; - svg_bar("activating", 0, 300000, y); - svg_text(true, 400000, y, "Activating"); diff --git a/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch b/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch deleted file mode 100644 index 4e93e33..0000000 --- a/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 66065b8d9cd1bb7e488fd84d4f19d34487bf29a7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= -Date: Sun, 2 Feb 2014 13:29:19 +0000 -Subject: [PATCH] udev: add zram to the list of devices inappropriate for - symlinks - -udev seems to have a race condition with swapon to see which can open -/dev/zram0 first, causing swapon to fail. Seems to be most noticeable -on arm devices one out of every 7 times or something. ---- - rules/60-persistent-storage.rules | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules -index a4d009a..154ffd9 100644 ---- a/rules/60-persistent-storage.rules -+++ b/rules/60-persistent-storage.rules -@@ -14,7 +14,7 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_ - SUBSYSTEM!="block", GOTO="persistent_storage_end" - - # skip rules for inappropriate block devices --KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end" -+KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*|zram*", GOTO="persistent_storage_end" - - # ignore partitions that span the entire disk - TEST=="whole_disk", GOTO="persistent_storage_end" diff --git a/0254-bash-completion-fix-completion-of-complete-verbs.patch b/0254-bash-completion-fix-completion-of-complete-verbs.patch deleted file mode 100644 index 8033222..0000000 --- a/0254-bash-completion-fix-completion-of-complete-verbs.patch +++ /dev/null @@ -1,116 +0,0 @@ -From f00ffd4f0ab82c38125d2292f8f429aa22865dc3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 6 Feb 2014 00:31:22 -0500 -Subject: [PATCH] bash-completion: fix completion of complete verbs - -When doing 'command verb', the arguments for verb would be -proposed, but it is too early. We should complete verb first. - -https://bugs.freedesktop.org/show_bug.cgi?id=74596 - -Conflicts: - shell-completion/bash/busctl - shell-completion/bash/loginctl - shell-completion/bash/systemctl - shell-completion/bash/systemd-analyze ---- - shell-completion/bash/hostnamectl | 2 +- - shell-completion/bash/localectl | 2 +- - shell-completion/bash/loginctl | 2 +- - shell-completion/bash/systemctl | 2 +- - shell-completion/bash/systemd-analyze | 2 +- - shell-completion/bash/timedatectl | 2 +- - shell-completion/bash/udevadm | 2 +- - 7 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl -index 38ab134..9c75da9 100644 ---- a/shell-completion/bash/hostnamectl -+++ b/shell-completion/bash/hostnamectl -@@ -41,7 +41,7 @@ _hostnamectl() { - [NAME]='set-hostname' - ) - -- for ((i=0; i <= COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break -diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl -index bec9e78..84e2a6b 100644 ---- a/shell-completion/bash/localectl -+++ b/shell-completion/bash/localectl -@@ -52,7 +52,7 @@ _localectl() { - [X11]='set-x11-keymap' - ) - -- for ((i=0; i <= COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break -diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl -index 3104b30..26a8696 100644 ---- a/shell-completion/bash/loginctl -+++ b/shell-completion/bash/loginctl -@@ -70,7 +70,7 @@ _loginctl () { - [ATTACH]='attach' - ) - -- for ((i=0; $i <= $COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} -diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl -index 84149e3..a5f10b4 100644 ---- a/shell-completion/bash/systemctl -+++ b/shell-completion/bash/systemctl -@@ -146,7 +146,7 @@ _systemctl () { - [TARGETS]='set-default' - ) - -- for ((i=0; $i <= $COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} -diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze -index b65466b..6afcd96 100644 ---- a/shell-completion/bash/systemd-analyze -+++ b/shell-completion/bash/systemd-analyze -@@ -39,7 +39,7 @@ _systemd_analyze() { - - _init_completion || return - -- for ((i=0; $i <= $COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} -diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl -index c6a6545..1a0acc6 100644 ---- a/shell-completion/bash/timedatectl -+++ b/shell-completion/bash/timedatectl -@@ -52,7 +52,7 @@ _timedatectl() { - [TIME]='set-time' - ) - -- for ((i=0; i <= COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break -diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm -index 8ad8550..7e89189 100644 ---- a/shell-completion/bash/udevadm -+++ b/shell-completion/bash/udevadm -@@ -36,7 +36,7 @@ _udevadm() { - - local verbs=(info trigger settle control monitor hwdb test-builtin test) - -- for ((i=0; i <= COMP_CWORD; i++)); do -+ for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}" && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} diff --git a/0255-shell-completion-fix-completion-of-localectl-set-loc.patch b/0255-shell-completion-fix-completion-of-localectl-set-loc.patch deleted file mode 100644 index 93c93c6..0000000 --- a/0255-shell-completion-fix-completion-of-localectl-set-loc.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 827591e3b789844ec103338573cf8ed82231c0ad Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Thu, 6 Feb 2014 11:59:33 -0500 -Subject: [PATCH] shell-completion: fix completion of localectl set-locale - -https://bugs.freedesktop.org/show_bug.cgi?id=74157 ---- - shell-completion/bash/localectl | 20 ++++++++++++++++++-- - shell-completion/zsh/_localectl | 13 +++++++++---- - 2 files changed, 27 insertions(+), 6 deletions(-) - -diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl -index 84e2a6b..c9e22af 100644 ---- a/shell-completion/bash/localectl -+++ b/shell-completion/bash/localectl -@@ -24,8 +24,14 @@ __contains_word () { - done - } - -+__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ -+ LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ -+ LC_NAME LC_ADDRESS LC_TELEPHONE \ -+ LC_MEASUREMENT LC_IDENTIFICATION ) -+# LC_ALL is omitted on purpose -+ - _localectl() { -- local i verb comps -+ local i verb comps locale_vals - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-convert --no-pager --no-ask-password - -H --host' -@@ -62,7 +68,17 @@ _localectl() { - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[LOCALES]}; then -- comps=$(command localectl list-locales) -+ if [[ $cur = *=* ]]; then -+ mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) -+ COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) -+ elif [[ $prev = "=" ]]; then -+ mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) -+ COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) -+ else -+ compopt -o nospace -+ COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) -+ fi -+ return 0 - elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then - comps=$(command localectl list-keymaps) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then -diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl -index 3d76bb0..c04f4f3 100644 ---- a/shell-completion/zsh/_localectl -+++ b/shell-completion/zsh/_localectl -@@ -1,17 +1,22 @@ - #compdef localectl - - _localectl_set-locale() { -- local -a _confs _locales -+ local -a _locales locale_fields -+ locale_fields=(LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ -+ LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ -+ LC_NAME LC_ADDRESS LC_TELEPHONE \ -+ LC_MEASUREMENT LC_IDENTIFICATION) -+ # LC_ALL is omitted on purpose -+ - local expl suf - _locales=( ${(f)"$(_call_program locales "$service" list-locales)"} ) -- _confs=( ${${(f)"$(_call_program confs "locale 2>/dev/null")"}%\=*} ) -+ compset -P1 '*=' - if [[ -prefix 1 *\= ]]; then - local conf=${PREFIX%%\=*} -- compset -P1 '*=' - _wanted locales expl "locales configs" \ - _combination localeconfs confs=$conf locales "$@" - - else -- compadd -S '=' $_confs -+ compadd -S '=' $locale_fields - fi - } - diff --git a/0256-zsh-completions-kernel-install-only-show-existing-ke.patch b/0256-zsh-completions-kernel-install-only-show-existing-ke.patch deleted file mode 100644 index 71ee646..0000000 --- a/0256-zsh-completions-kernel-install-only-show-existing-ke.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 7f10373aa0b75725edb66917fc31a17c65750a7c Mon Sep 17 00:00:00 2001 -From: Tom Gundersen -Date: Thu, 6 Feb 2014 18:15:47 +0100 -Subject: [PATCH] zsh-completions: kernel-install - only show existing kernels - for 'remove' - -When we remove a kernel, we don't remove the modules, so don't look at the modules directory to find installed kernels. ---- - shell-completion/zsh/_kernel-install | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install -index 0655188..4fdd3a4 100644 ---- a/shell-completion/zsh/_kernel-install -+++ b/shell-completion/zsh/_kernel-install -@@ -12,7 +12,7 @@ _kernels(){ - read _MACHINE_ID < /etc/machine-id - _kernel=( /lib/modules/[0-9]* ) - if [[ "$cmd" == "remove" && -n "$_MACHINE_ID" ]]; then -- _kernel=( /lib/modules/[0-9]* "/boot/$_MACHINE_ID"/[0-9]* ) -+ _kernel=( "/boot/$_MACHINE_ID"/[0-9]* ) - fi - _kernel=( ${_kernel##*/} ) - _describe "installed kernels" _kernel diff --git a/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch b/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch deleted file mode 100644 index 6e71a17..0000000 --- a/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch +++ /dev/null @@ -1,138 +0,0 @@ -From 43ccd990b8478b5aaf9b1618e0a5c3dd8924a9ee Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli -Date: Thu, 6 Feb 2014 19:09:59 +0100 -Subject: [PATCH] core: fix crashes if locale.conf contains invalid utf-8 - string - -In the parse_env_file_push() and load_env_file_push() functions, there -are two assert() call to check if the key or value parameters are utf8 valid. - -If the strings aren't utf8 valid, assert does abort. - -These function are used early by systemd to parse some files. For -example '/etc/locale.conf'. In my case this file contained a not utf8 -sequence, which is bad, but systemd crashed during the boot, which -is even worse! - -The enclosed patch removes the assert and return -EINVAL if the -sequence is invalid. This is possible because the caller of these -function [1] checks the errors. -So the check of an invalid utf8 sequence is still performed, but -systemd doesn't crash anymore and logs the error. - -[1] parse_env_file_internal(), invoked by load_env_file() and -parse_env_file() ---- - src/shared/fileio.c | 77 ++++++++++++++++++++++++++++++----------------------- - 1 file changed, 43 insertions(+), 34 deletions(-) - -diff --git a/src/shared/fileio.c b/src/shared/fileio.c -index 733b320..d28e38a 100644 ---- a/src/shared/fileio.c -+++ b/src/shared/fileio.c -@@ -462,35 +462,39 @@ fail: - - static int parse_env_file_push(const char *filename, unsigned line, - const char *key, char *value, void *userdata) { -- assert(utf8_is_valid(key)); - -- if (value && !utf8_is_valid(value)) -+ const char *k; -+ va_list aq, *ap = userdata; -+ -+ if (!utf8_is_valid(key)) { -+ log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", -+ filename, line, key); -+ return -EINVAL; -+ } -+ -+ if (value && !utf8_is_valid(value)) { - /* FIXME: filter UTF-8 */ -- log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.", -+ log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", - filename, line, key, value); -- else { -- const char *k; -- va_list* ap = (va_list*) userdata; -- va_list aq; -+ return -EINVAL; -+ } - -- va_copy(aq, *ap); -+ va_copy(aq, *ap); - -- while ((k = va_arg(aq, const char *))) { -- char **v; -+ while ((k = va_arg(aq, const char *))) { -+ char **v; - -- v = va_arg(aq, char **); -+ v = va_arg(aq, char **); - -- if (streq(key, k)) { -- va_end(aq); -- free(*v); -- *v = value; -- return 1; -- } -+ if (streq(key, k)) { -+ va_end(aq); -+ free(*v); -+ *v = value; -+ return 1; - } -- -- va_end(aq); - } - -+ va_end(aq); - free(value); - return 0; - } -@@ -514,26 +518,31 @@ int parse_env_file( - - static int load_env_file_push(const char *filename, unsigned line, - const char *key, char *value, void *userdata) { -- assert(utf8_is_valid(key)); -+ char ***m = userdata; -+ char *p; -+ int r; - -- if (value && !utf8_is_valid(value)) -+ if (!utf8_is_valid(key)) { -+ log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", -+ filename, line, key); -+ return -EINVAL; -+ } -+ -+ if (value && !utf8_is_valid(value)) { - /* FIXME: filter UTF-8 */ -- log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.", -+ log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", - filename, line, key, value); -- else { -- char ***m = userdata; -- char *p; -- int r; -+ return -EINVAL; -+ } - -- p = strjoin(key, "=", strempty(value), NULL); -- if (!p) -- return -ENOMEM; -+ p = strjoin(key, "=", strempty(value), NULL); -+ if (!p) -+ return -ENOMEM; - -- r = strv_push(m, p); -- if (r < 0) { -- free(p); -- return r; -- } -+ r = strv_push(m, p); -+ if (r < 0) { -+ free(p); -+ return r; - } - - free(value); diff --git a/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch b/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch deleted file mode 100644 index eb0a96c..0000000 --- a/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch +++ /dev/null @@ -1,128 +0,0 @@ -From e8321526823f2b7b945aeb04e5cdb1367e3d5b94 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 17 Jan 2014 21:28:41 -0500 -Subject: [PATCH] core: do not print invalid utf-8 in error messages - -Conflicts: - TODO ---- - src/shared/fileio.c | 11 +++++++---- - src/shared/utf8.c | 26 ++++++++++++++++++++++++++ - src/shared/utf8.h | 3 +++ - src/test/test-utf8.c | 17 +++++++++++++++++ - 4 files changed, 53 insertions(+), 4 deletions(-) - -diff --git a/src/shared/fileio.c b/src/shared/fileio.c -index d28e38a..121cd57 100644 ---- a/src/shared/fileio.c -+++ b/src/shared/fileio.c -@@ -467,15 +467,18 @@ static int parse_env_file_push(const char *filename, unsigned line, - va_list aq, *ap = userdata; - - if (!utf8_is_valid(key)) { -- log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", -- filename, line, key); -+ _cleanup_free_ char *p = utf8_escape_invalid(key); -+ -+ log_error("%s:%u: invalid UTF-8 in key '%s', ignoring.", -+ filename, line, p); - return -EINVAL; - } - - if (value && !utf8_is_valid(value)) { -- /* FIXME: filter UTF-8 */ -+ _cleanup_free_ char *p = utf8_escape_invalid(value); -+ - log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", -- filename, line, key, value); -+ filename, line, key, p); - return -EINVAL; - } - -diff --git a/src/shared/utf8.c b/src/shared/utf8.c -index 31120af..2b70d45 100644 ---- a/src/shared/utf8.c -+++ b/src/shared/utf8.c -@@ -172,6 +172,32 @@ const char *utf8_is_valid(const char *str) { - return str; - } - -+char *utf8_escape_invalid(const char *str) { -+ char *p, *s; -+ -+ assert(str); -+ -+ p = s = malloc(strlen(str) * 4 + 1); -+ if (!p) -+ return NULL; -+ -+ while (*str) { -+ int len; -+ -+ len = utf8_encoded_valid_unichar(str); -+ if (len > 0) { -+ s = mempcpy(s, str, len); -+ str += len; -+ } else { -+ s = mempcpy(s, UTF8_REPLACEMENT_CHARACTER, strlen(UTF8_REPLACEMENT_CHARACTER)); -+ str += 1; -+ } -+ } -+ *s = '\0'; -+ -+ return p; -+} -+ - char *ascii_is_valid(const char *str) { - const char *p; - -diff --git a/src/shared/utf8.h b/src/shared/utf8.h -index 96a03ea..f93dfb8 100644 ---- a/src/shared/utf8.h -+++ b/src/shared/utf8.h -@@ -25,8 +25,11 @@ - - #include "macro.h" - -+#define UTF8_REPLACEMENT_CHARACTER "\xef\xbf\xbd" -+ - const char *utf8_is_valid(const char *s) _pure_; - char *ascii_is_valid(const char *s) _pure_; -+char *utf8_escape_invalid(const char *s); - - bool utf8_is_printable(const char* str, size_t length) _pure_; - -diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c -index f0182ee..53c1d47 100644 ---- a/src/test/test-utf8.c -+++ b/src/test/test-utf8.c -@@ -66,12 +66,29 @@ static void test_utf8_encoded_valid_unichar(void) { - - } - -+static void test_utf8_escaping(void) { -+ _cleanup_free_ char *p1, *p2, *p3; -+ -+ p1 = utf8_escape_invalid("goo goo goo"); -+ puts(p1); -+ assert_se(utf8_is_valid(p1)); -+ -+ p2 = utf8_escape_invalid("\341\204\341\204"); -+ puts(p2); -+ assert_se(utf8_is_valid(p2)); -+ -+ p3 = utf8_escape_invalid("\341\204"); -+ puts(p3); -+ assert_se(utf8_is_valid(p3)); -+} -+ - int main(int argc, char *argv[]) { - test_utf8_is_valid(); - test_utf8_is_printable(); - test_ascii_is_valid(); - test_ascii_filter(); - test_utf8_encoded_valid_unichar(); -+ test_utf8_escaping(); - - return 0; - } diff --git a/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch b/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch deleted file mode 100644 index ce0de4f..0000000 --- a/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch +++ /dev/null @@ -1,42 +0,0 @@ -From caf058da753c7aae6fbf03feb68e689a8d8265c6 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Sat, 8 Feb 2014 12:54:58 -0500 -Subject: [PATCH] cryptsetup-generator: auto add deps for device as password - -If the password is a device file, we can add Requires/After dependencies -on the device rather than requiring the user to do so. ---- - src/cryptsetup/cryptsetup-generator.c | 20 +++++++++++++++----- - 1 file changed, 15 insertions(+), 5 deletions(-) - -diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c -index e1798a3..00891f1 100644 ---- a/src/cryptsetup/cryptsetup-generator.c -+++ b/src/cryptsetup/cryptsetup-generator.c -@@ -131,11 +131,21 @@ static int create_disk( - streq(password, "/dev/random") || - streq(password, "/dev/hw_random")) - fputs("After=systemd-random-seed.service\n", f); -- else if (!streq(password, "-") && -- !streq(password, "none")) -- fprintf(f, -- "RequiresMountsFor=%s\n", -- password); -+ -+ else if (!streq(password, "-") && !streq(password, "none")) { -+ _cleanup_free_ char *uu = fstab_node_to_udev_node(password); -+ if (uu == NULL) -+ return log_oom(); -+ -+ if (is_device_path(uu)) { -+ _cleanup_free_ char *dd = unit_name_from_path(uu, ".device"); -+ if (dd == NULL) -+ return log_oom(); -+ -+ fprintf(f, "After=%1$s\nRequires=%1$s\n", dd); -+ } else -+ fprintf(f, "RequiresMountsFor=%s\n", password); -+ } - } - - if (is_device_path(u)) diff --git a/0260-man-fix-reference-in-systemd-inhibit-1.patch b/0260-man-fix-reference-in-systemd-inhibit-1.patch deleted file mode 100644 index acafea6..0000000 --- a/0260-man-fix-reference-in-systemd-inhibit-1.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 46b93fa99d008403699a74478feac4e9b3f6f6a0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 9 Feb 2014 01:34:20 -0500 -Subject: [PATCH] man: fix reference in systemd-inhibit(1) - -http://bugs.debian.org/738316 ---- - man/systemd-inhibit.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml -index de2f264..cac0ef6 100644 ---- a/man/systemd-inhibit.xml -+++ b/man/systemd-inhibit.xml -@@ -198,7 +198,7 @@ - See Also - - systemd1, -- systemd-logind.conf5 -+ logind.conf5 - - - diff --git a/0261-man-fix-another-reference-in-systemd-inhibit-1.patch b/0261-man-fix-another-reference-in-systemd-inhibit-1.patch deleted file mode 100644 index 17c1e03..0000000 --- a/0261-man-fix-another-reference-in-systemd-inhibit-1.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 9bcaa50d2eb1f99fcb7393d52b53b95cdc193d30 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sun, 9 Feb 2014 01:34:20 -0500 -Subject: [PATCH] man: fix another reference in systemd-inhibit(1) - -http://bugs.debian.org/738316 ---- - man/systemd-inhibit.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml -index cac0ef6..f915fb8 100644 ---- a/man/systemd-inhibit.xml -+++ b/man/systemd-inhibit.xml -@@ -158,7 +158,7 @@ - time elapses, the lock is ignored and - the operation executed. The time limit - may be specified in -- systemd-logind.conf5. Note -+ logind.conf5. Note - that delay is only - available for sleep - and diff --git a/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch b/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch deleted file mode 100644 index 754805e..0000000 --- a/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9a36f797debf5f7dd240036a15c6942236c3e649 Mon Sep 17 00:00:00 2001 -From: Colin Guthrie -Date: Sun, 9 Feb 2014 12:07:11 +0000 -Subject: [PATCH] fstab-generator: Create fsck-root symlink with correct path - -This was noticed in Brussels at the hackfest. The fstab-generator currently -creates a broken symlink pointing to itself in -/run/systemd/generator/local-fs.target.wants/ for systemd-fsck-root.service ---- - src/fstab-generator/fstab-generator.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c -index 8c4c61c..0d954a2 100644 ---- a/src/fstab-generator/fstab-generator.c -+++ b/src/fstab-generator/fstab-generator.c -@@ -177,7 +177,7 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty - - lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service"); - mkdir_parents_label(lnk, 0755); -- if (symlink("systemd-fsck-root.service", lnk) < 0) { -+ if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0) { - log_error("Failed to create symlink %s: %m", lnk); - return -errno; - } diff --git a/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch b/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch deleted file mode 100644 index 40ababd..0000000 --- a/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch +++ /dev/null @@ -1,25 +0,0 @@ -From fe56ff349838e5dfbc523db1c4d5625f5c69e2a9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= -Date: Tue, 11 Feb 2014 09:54:49 -0300 -Subject: [PATCH] efi: fix Undefined reference efi_loader_get_boot_usec when - EFI support is disabled - ---- - src/shared/boot-timestamps.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c -index 9449965..d656685 100644 ---- a/src/shared/boot-timestamps.c -+++ b/src/shared/boot-timestamps.c -@@ -40,8 +40,10 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time - - r = acpi_get_boot_usec(&x, &y); - if (r < 0) { -+#ifdef ENABLE_EFI - r = efi_loader_get_boot_usec(&x, &y); - if (r < 0) -+#endif - return r; - } - diff --git a/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch b/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch deleted file mode 100644 index 374f00f..0000000 --- a/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5c2e6a05a8b4bcb05c88872eec27f848caf30722 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Thu, 13 Feb 2014 02:12:27 +0100 -Subject: [PATCH] core: make StopWhenUnneeded work in conjunction with units - that fail during their start job - -https://bugzilla.redhat.com/show_bug.cgi?id=997031 ---- - src/core/unit.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/core/unit.c b/src/core/unit.c -index 6c2c4a0..49833d1 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1453,7 +1453,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su - * sucessfully, since there's no change of state in that case. Which is - * why it is handled in service_set_state() */ - if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) { -- ExecContext *ec = unit_get_exec_context(u); -+ ExecContext *ec; -+ -+ ec = unit_get_exec_context(u); - if (ec && exec_context_may_touch_console(ec)) { - if (UNIT_IS_INACTIVE_OR_FAILED(ns)) { - m->n_on_console --; -@@ -1549,12 +1551,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su - } - - /* stop unneeded units regardless if going down was expected or not */ -- if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) -+ if (UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) - check_unneeded_dependencies(u); - - if (ns != os && ns == UNIT_FAILED) { -- log_notice_unit(u->id, -- "Unit %s entered failed state.", u->id); -+ log_notice_unit(u->id, "Unit %s entered failed state.", u->id); - unit_start_on_failure(u); - } - } diff --git a/0265-man-always-place-programlisting-and-programlisting-i.patch b/0265-man-always-place-programlisting-and-programlisting-i.patch deleted file mode 100644 index be075fe..0000000 --- a/0265-man-always-place-programlisting-and-programlisting-i.patch +++ /dev/null @@ -1,345 +0,0 @@ -From 8ea4ccf4ef7d3bc4c12ba008d270534257fb88b7 Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Fri, 14 Feb 2014 15:56:19 +0100 -Subject: [PATCH] man: always place and in a - line with actual sources, so that we don't get spurious newlines in the man - page output - -Conflicts: - man/systemd-socket-proxyd.xml ---- - man/daemon.xml | 3 +-- - man/kernel-install.xml | 8 ++------ - man/nss-myhostname.xml | 12 ++++-------- - man/sd_journal_get_fd.xml | 3 +-- - man/systemctl.xml | 3 +-- - man/systemd-delta.xml | 12 ++++-------- - man/systemd-journal-gatewayd.service.xml | 16 +++++----------- - man/systemd-run.xml | 3 +-- - man/systemd-sleep.conf.xml | 6 ++---- - man/systemd.service.xml | 13 ++++--------- - man/timedatectl.xml | 18 ++++++------------ - man/tmpfiles.d.xml | 7 ++----- - 12 files changed, 33 insertions(+), 71 deletions(-) - -diff --git a/man/daemon.xml b/man/daemon.xml -index 105826a..17d9dd6 100644 ---- a/man/daemon.xml -+++ b/man/daemon.xml -@@ -777,8 +777,7 @@ AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitd - [with_systemdsystemunitdir=$def_systemdsystemunitdir])]) - AS_IF([test "x$with_systemdsystemunitdir" != "xno"], - [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) --AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) -- -+AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) - - This snippet allows automatic - installation of the unit files on systemd -diff --git a/man/kernel-install.xml b/man/kernel-install.xml -index 929ceef..3612b7d 100644 ---- a/man/kernel-install.xml -+++ b/man/kernel-install.xml -@@ -90,9 +90,7 @@ along with systemd; If not, see . - /usr/lib/kernel/install.d/*.install and - /etc/kernel/install.d/*.install with - the arguments -- --add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ -- -+ add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ - - - The kernel-install plugin 50-depmod.install runs depmod for the KERNEL-VERSION. -@@ -114,9 +112,7 @@ add KERNEL-VERSION /boot/MACHI - - Calls every executable /usr/lib/kernel/install.d/*.install - and /etc/kernel/install.d/*.install with the arguments -- --remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ -- -+ remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ - - - kernel-install removes the entire directory -diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml -index efbadac..cca3a99 100644 ---- a/man/nss-myhostname.xml -+++ b/man/nss-myhostname.xml -@@ -86,8 +86,7 @@ - - Example - -- --# /etc/nsswitch.conf -+# /etc/nsswitch.conf - - passwd: compat - group: compat -@@ -101,20 +100,17 @@ services: db files - ethers: db files - rpc: db files - --netgroup: nis -- -+netgroup: nis - - To test, use glibc's getent tool: - -- --$ getent ahosts `hostname` -+ $ getent ahosts `hostname` - ::1 STREAM omega - ::1 DGRAM - ::1 RAW - 127.0.0.2 STREAM - 127.0.0.2 DGRAM --127.0.0.2 RAW -- -+127.0.0.2 RAW - - In this case the local hostname is omega. - -diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml -index 4b36f97..df7632f 100644 ---- a/man/sd_journal_get_fd.xml -+++ b/man/sd_journal_get_fd.xml -@@ -330,8 +330,7 @@ int wait_for_changes(sd_journal *j) { - pollfd.events = sd_journal_get_events(j); - poll(&pollfd, 1, msec); - return sd_journal_process(j); --} -- -+} - - - -diff --git a/man/systemctl.xml b/man/systemctl.xml -index 25b03d8..cde1694 100644 ---- a/man/systemctl.xml -+++ b/man/systemctl.xml -@@ -544,8 +544,7 @@ LISTEN UNIT ACTIVATES - [::]:22 sshd.socket sshd.service - kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service - --5 sockets listed. -- -+5 sockets listed. - Note: because the addresses might contains spaces, this output - is not suitable for programmatic consumption. - -diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml -index ebaa349..f802aa5 100644 ---- a/man/systemd-delta.xml -+++ b/man/systemd-delta.xml -@@ -204,20 +204,16 @@ - Examples - - To see all local configuration: -- systemd-delta -- -+ systemd-delta - - To see all runtime configuration: -- systemd-delta /run -- -+ systemd-delta /run - - To see all system unit configuration changes: -- systemd-delta systemd/system -- -+ systemd-delta systemd/system - - To see all runtime "drop-in" changes for system units: -- systemd-delta --type=extended /run/systemd/system -- -+ systemd-delta --type=extended /run/systemd/system - - - -diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml -index 0b6fd70..f639811 100644 ---- a/man/systemd-journal-gatewayd.service.xml -+++ b/man/systemd-journal-gatewayd.service.xml -@@ -154,14 +154,12 @@ along with systemd; If not, see . - Return a JSON structure describing the machine. - - Example: -- --{ "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446", -+ { "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446", - "boot_id" : "3d3c9efaf556496a9b04259ee35df7f7", - "hostname" : "fedora", - "os_pretty_name" : "Fedora 19 (Rawhide)", - "virtualization" : "kvm", -- ...} -- -+ ...} - - - -@@ -295,16 +293,12 @@ along with systemd; If not, see . - in Journal - Export Format: -- --curl --silent -H'Accept: application/vnd.fdo.journal' \ -- 'http://localhost:19531/entries?boot' -- -+ curl --silent -H'Accept: application/vnd.fdo.journal' \ -+ 'http://localhost:19531/entries?boot' - - - Listen for core dumps: -- --curl 'http://localhost:19531/entries?follow&MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1' -- -+ curl 'http://localhost:19531/entries?follow&MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1' - - - -diff --git a/man/systemd-run.xml b/man/systemd-run.xml -index 48a0715..97ddf44 100644 ---- a/man/systemd-run.xml -+++ b/man/systemd-run.xml -@@ -209,8 +209,7 @@ Sep 08 07:37:21 bupkis systemd[1]: Starting /usr/bin/env... - Sep 08 07:37:21 bupkis systemd[1]: Started /usr/bin/env. - Sep 08 07:37:21 bupkis env[19948]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin - Sep 08 07:37:21 bupkis env[19948]: LANG=en_US.UTF-8 --Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64 -- -+Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64 - - - -diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml -index dc4b0da..4622205 100644 ---- a/man/systemd-sleep.conf.xml -+++ b/man/systemd-sleep.conf.xml -@@ -160,10 +160,8 @@ along with systemd; If not, see . - Example: to exploit the freeze mode added - in Linux 3.9, one can use systemctl suspend - with -- --[Sleep] --SuspendState=freeze -- -+ [Sleep] -+SuspendState=freeze - - - -diff --git a/man/systemd.service.xml b/man/systemd.service.xml -index 4fb21ba..e8bb02c 100644 ---- a/man/systemd.service.xml -+++ b/man/systemd.service.xml -@@ -442,12 +442,9 @@ - be used, they need to be passed - explicitly to a shell implementation - of some kind. Example: -- ExecStart=/bin/sh -c 'dmesg | tac' -- -- -+ ExecStart=/bin/sh -c 'dmesg | tac' - Example: -- ExecStart=/bin/echo one ; /bin/echo "two two" -- -+ ExecStart=/bin/echo one ; /bin/echo "two two" - This will execute - /bin/echo two - times, each time with one argument, -@@ -460,8 +457,7 @@ - - Example: - ExecStart=/bin/echo / >/dev/null & \; \ --/bin/ls -- -+/bin/ls - This will execute - /bin/echo with five - arguments: /, -@@ -472,8 +468,7 @@ - - Example: - Environment="ONE=one" 'TWO=two two' --ExecStart=/bin/echo $ONE $TWO ${TWO} -- -+ExecStart=/bin/echo $ONE $TWO ${TWO} - This will execute - /bin/echo with four - arguments: one, -diff --git a/man/timedatectl.xml b/man/timedatectl.xml -index f4975ce..5f95486 100644 ---- a/man/timedatectl.xml -+++ b/man/timedatectl.xml -@@ -245,8 +245,7 @@ - - Examples - Show current settings: -- --$ timedatectl -+ $ timedatectl - Local time: Fri, 2012-11-02 09:26:46 CET - Universal time: Fri, 2012-11-02 08:26:46 UTC - RTC time: Fri, 2012-11-02 08:26:45 -@@ -262,27 +261,22 @@ NTP synchronized: no - Next DST change: CET → CEST, DST will become active - the clock will jump one hour forward - Sun, 2013-03-31 01:59:59 CET -- Sun, 2013-03-31 03:00:00 CEST -- -+ Sun, 2013-03-31 03:00:00 CEST - - - Enable an NTP daemon (chronyd): -- --$ timedatectl set-ntp true -+ $ timedatectl set-ntp true - ==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp === - Authentication is required to control whether network time synchronization shall be enabled. - Authenticating as: user - Password: ******** --==== AUTHENTICATION COMPLETE === -- -+==== AUTHENTICATION COMPLETE === - -- --$ systemctl status chronyd.service -+ $ systemctl status chronyd.service - chronyd.service - NTP client/server - Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) - Active: active (running) since Fri, 2012-11-02 09:36:25 CET; 5s ago --... -- -+... - - - -diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml -index 8267ffc..9578c93 100644 ---- a/man/tmpfiles.d.xml -+++ b/man/tmpfiles.d.xml -@@ -109,7 +109,6 @@ - d /run/user 0755 root root 10d - - L /tmp/foobar - - - - /dev/null - -- - - Type - -@@ -277,13 +276,11 @@ L /tmp/foobar - - - - /dev/null - - - For example: -- --# Make sure these are created by default so that nobody else can -+ # Make sure these are created by default so that nobody else can - d /tmp/.X11-unix 1777 root root 10d - - # Unlink the X11 lock files --r! /tmp/.X[0-9]*-lock -- -+r! /tmp/.X[0-9]*-lock - The second line in contrast to the first one - would break a running system, and will only be - executed with . diff --git a/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch b/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch deleted file mode 100644 index 0c1036c..0000000 --- a/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 29e00416bbef0e8073373fde25347d139749d949 Mon Sep 17 00:00:00 2001 -From: Colin Guthrie -Date: Mon, 27 Jan 2014 17:54:29 +0000 -Subject: [PATCH] Temporary work around for slow shutdown due to unterminated - user sessions. - ---- - units/user@.service.in | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/units/user@.service.in b/units/user@.service.in -index 3f8b59d..a7e0584 100644 ---- a/units/user@.service.in -+++ b/units/user@.service.in -@@ -14,5 +14,12 @@ User=%I - PAMName=systemd-user - Type=notify - ExecStart=-@rootlibexecdir@/systemd --user -+# Apply same work around as apache's httpd until issues with user session -+# killing is fixed (currently problem is that the kill issued by systemd --user -+# is itself killed by systemd (PID1) before it can work which can lead to slow -+# shutdowns -+# http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/16363 -+ExecStop=/bin/kill -TERM ${MAINPID} -+KillSignal=SIGCONT - Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket - Slice=user-%i.slice