diff options
-rw-r--r-- | Makefile-man.am | 2 | ||||
-rw-r--r-- | Makefile.am | 8 | ||||
-rw-r--r-- | NEWS | 12 | ||||
-rw-r--r-- | src/basic/hashmap.c | 2 | ||||
-rw-r--r-- | src/basic/hashmap.h | 1 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 37 | ||||
-rw-r--r-- | src/test/test-hashmap.c | 43 |
7 files changed, 45 insertions, 60 deletions
diff --git a/Makefile-man.am b/Makefile-man.am index 7d31800345..76c9389835 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -2142,10 +2142,8 @@ EXTRA_DIST += \ man/systemd-vconsole-setup.service.xml \ man/systemd.automount.xml \ man/systemd.device.xml \ - man/systemd.directives.xml \ man/systemd.exec.xml \ man/systemd.generator.xml \ - man/systemd.index.xml \ man/systemd.journal-fields.xml \ man/systemd.kill.xml \ man/systemd.link.xml \ diff --git a/Makefile.am b/Makefile.am index e3962cc81f..936e4edd81 100644 --- a/Makefile.am +++ b/Makefile.am @@ -700,11 +700,10 @@ noinst_DATA += \ CLEANFILES += \ man/index.html -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_builddir)/man/*.xml) NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -SOURCE_XML_FILES = $(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES)) +SOURCE_XML_FILES = ${patsubst %,$(top_srcdir)/%,$(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES))} -update-man-list: $(top_srcdir)/tools/make-man-rules.py $(XML_GLOB) +update-man-list: $(top_srcdir)/tools/make-man-rules.py $(SOURCE_XML_FILES) $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am @echo "Makefile-man.am has been regenerated" @@ -726,7 +725,7 @@ endif endif EXTRA_DIST += \ - $(XML_FILES) \ + $(filter-out man/systemd.directives.xml,$(XML_FILES)) \ $(HTML_FILES) \ $(HTML_ALIAS) \ $(man_MANS) \ @@ -735,7 +734,6 @@ EXTRA_DIST += \ tools/xml_helper.py \ man/systemd.index.xml \ man/index.html \ - man/systemd.directives.xml \ man/glib-event-glue.c \ $(NULL) @@ -9,7 +9,7 @@ CHANGES WITH 221: supports both classic D-Bus as well as kdbus as transport backend. sd-event is a generic event loop abstraction that is built around Linux epoll, but adds features such as event - priorization or efficient timer handling. Both APIs are good + prioritization or efficient timer handling. Both APIs are good choices for C programs looking for a bus and/or event loop implementation that is minimal and does not have to be portable to other kernels. @@ -17,12 +17,12 @@ CHANGES WITH 221: * kdbus support is no longer compile-time optional. It is now always built-in. However, it can still be disabled at runtime using the kdbus=0 kernel command line setting, and - that setting my by changed to default to off, by specifying + that setting may be changed to default to off, by specifying --disable-kdbus at build-time. Note though that the kernel command line setting has no effect if the kdbus.ko kernel module is not installed, in which case kdbus is (obviously) also disabled. We encourage all downstream distributions to - begin testing kdbus by adding it to the kernel images if the + begin testing kdbus by adding it to the kernel images in the development distributions, and leaving kdbus support in systemd enabled. @@ -30,7 +30,7 @@ CHANGES WITH 221: 2.26. * Support for chkconfig (--enable-chkconfig) was removed in - favour of calling an abstraction tool + favor of calling an abstraction tool /lib/systemd/systemd-sysv-install. This needs to be implemented for your distribution. See "SYSV INIT.D SCRIPTS" in README for details. @@ -48,7 +48,7 @@ CHANGES WITH 221: external project. * The systemd-cgtop tool learnt a new --raw switch to generate - "raw" (machine parseable) output. + "raw" (machine parsable) output. * networkd's IPForwarding= .network file setting learnt the new setting "kernel", which ensures that networkd does not @@ -76,7 +76,7 @@ CHANGES WITH 221: Tezduyar Lindskog, Viktar Vauchkevich, Werner Fink, Zbigniew Jędrzejewski-Szmek - -- Berlin, 2015-05-XX + -- Berlin, 2015-06-XX CHANGES WITH 220: diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index 0ee2f3bd31..e5f05f36f8 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -1798,8 +1798,6 @@ void *ordered_hashmap_next(OrderedHashmap *h, const void *key) { struct ordered_hashmap_entry *e; unsigned hash, idx; - assert(key); - if (!h) return NULL; diff --git a/src/basic/hashmap.h b/src/basic/hashmap.h index 5723f09ca9..2af23024de 100644 --- a/src/basic/hashmap.h +++ b/src/basic/hashmap.h @@ -65,7 +65,6 @@ typedef struct { } Iterator; #define _IDX_ITERATOR_FIRST (UINT_MAX - 1) -#define _IDX_ITERATOR_NIL (UINT_MAX) #define ITERATOR_FIRST ((Iterator) { .idx = _IDX_ITERATOR_FIRST, .next_key = NULL }) typedef unsigned long (*hash_func_t)(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 23fc946fbf..538838b7fc 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5855,23 +5855,15 @@ static int run_editor(char **paths) { if (pid == 0) { const char **args; - char *editor; + char *editor, **editor_args = NULL; char **tmp_path, **original_path, *p; - unsigned i = 1; + unsigned n_editor_args = 0, i = 1; size_t argc; (void) reset_all_signal_handlers(); (void) reset_signal_mask(); argc = strv_length(paths)/2 + 1; - args = newa(const char*, argc + 1); - - args[0] = NULL; - STRV_FOREACH_PAIR(original_path, tmp_path, paths) { - args[i] = *tmp_path; - i++; - } - args[argc] = NULL; /* SYSTEMD_EDITOR takes precedence over EDITOR which takes precedence over VISUAL * If neither SYSTEMD_EDITOR nor EDITOR nor VISUAL are present, @@ -5884,9 +5876,30 @@ static int run_editor(char **paths) { editor = getenv("VISUAL"); if (!isempty(editor)) { - args[0] = editor; - execvp(editor, (char* const*) args); + editor_args = strv_split(editor, WHITESPACE); + if (!editor_args) { + (void) log_oom(); + _exit(EXIT_FAILURE); + } + n_editor_args = strv_length(editor_args); + argc += n_editor_args - 1; } + args = newa(const char*, argc + 1); + + if (n_editor_args > 0) { + args[0] = editor_args[0]; + for (; i < n_editor_args; i++) + args[i] = editor_args[i]; + } + + STRV_FOREACH_PAIR(original_path, tmp_path, paths) { + args[i] = *tmp_path; + i++; + } + args[i] = NULL; + + if (n_editor_args > 0) + execvp(args[0], (char* const*) args); FOREACH_STRING(p, "editor", "nano", "vim", "vi") { args[0] = p; diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c index 767cbd90e9..d0e65001f5 100644 --- a/src/test/test-hashmap.c +++ b/src/test/test-hashmap.c @@ -24,38 +24,17 @@ void test_hashmap_funcs(void); void test_ordered_hashmap_funcs(void); static void test_ordered_hashmap_next(void) { - OrderedHashmap *m; - char *val1, *val2, *val3, *val4, *r; - - m = ordered_hashmap_new(&string_hash_ops); - val1 = strdup("val1"); - assert_se(val1); - val2 = strdup("val2"); - assert_se(val2); - val3 = strdup("val3"); - assert_se(val3); - val4 = strdup("val4"); - assert_se(val4); - - ordered_hashmap_put(m, "key 1", val1); - ordered_hashmap_put(m, "key 2", val2); - ordered_hashmap_put(m, "key 3", val3); - ordered_hashmap_put(m, "key 4", val4); - - r = ordered_hashmap_next(m, "key 1"); - assert_se(streq(r, val2)); - r = ordered_hashmap_next(m, "key 2"); - assert_se(streq(r, val3)); - r = ordered_hashmap_next(m, "key 3"); - assert_se(streq(r, val4)); - r = ordered_hashmap_next(m, "key 4"); - assert_se(!r); - r = ordered_hashmap_next(NULL, "key 1"); - assert_se(!r); - r = ordered_hashmap_next(m, "key 5"); - assert_se(!r); - - ordered_hashmap_free_free(m); + _cleanup_ordered_hashmap_free_ OrderedHashmap *m = NULL; + int i; + + assert_se(m = ordered_hashmap_new(NULL)); + for (i = -2; i <= 2; i++) + assert_se(ordered_hashmap_put(m, INT_TO_PTR(i), INT_TO_PTR(i+10)) == 1); + for (i = -2; i <= 1; i++) + assert_se(ordered_hashmap_next(m, INT_TO_PTR(i)) == INT_TO_PTR(i+11)); + assert_se(!ordered_hashmap_next(m, INT_TO_PTR(2))); + assert_se(!ordered_hashmap_next(NULL, INT_TO_PTR(1))); + assert_se(!ordered_hashmap_next(m, INT_TO_PTR(3))); } static void test_uint64_compare_func(void) { |