summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile-man.am2
-rw-r--r--Makefile.am8
-rw-r--r--NEWS12
-rw-r--r--src/basic/hashmap.c2
-rw-r--r--src/basic/hashmap.h1
-rw-r--r--src/systemctl/systemctl.c37
-rw-r--r--src/test/test-hashmap.c43
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)
diff --git a/NEWS b/NEWS
index 5a9c619bbe..0532cefac3 100644
--- a/NEWS
+++ b/NEWS
@@ -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) {