summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-04-27 13:39:54 -0400
committerGitHub <noreply@github.com>2017-04-27 13:39:54 -0400
commit0bc9115251f1bf12a9b15cc7f0bf59cf450ab9c0 (patch)
tree83d6eba6ace443a0ca6cbde99d05df9501d2c3b8
parent34ce0a52c733bd667049e1a54696c2e5b983d615 (diff)
parent00a313261e840efcf8e82031e46a31918b49a74d (diff)
Merge branch 'master' into meson-no-libudev
-rw-r--r--Makefile.am6
-rw-r--r--meson.build4
-rw-r--r--src/network/meson.build8
-rw-r--r--src/resolve/meson.build6
-rw-r--r--src/shared/meson.build17
-rw-r--r--src/shared/pager.c10
-rw-r--r--src/test/meson.build3
-rw-r--r--src/update-done/update-done.c21
8 files changed, 38 insertions, 37 deletions
diff --git a/Makefile.am b/Makefile.am
index 8339625a62..f5f2793f5b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5599,6 +5599,9 @@ GENERAL_ALIASES += \
nodist_pkgsysconf_DATA += \
src/resolve/resolved.conf
+dist_rootlibexec_DATA += \
+ src/resolve/resolv.conf
+
libnss_resolve_la_SOURCES = \
src/nss-resolve/nss-resolve.sym \
src/nss-resolve/nss-resolve.c
@@ -5737,9 +5740,6 @@ EXTRA_DIST += \
units/systemd-resolved.service.m4.in \
src/resolve/resolved.conf.in
-dist_rootlibexec_DATA += \
- src/resolve/resolv.conf
-
# ------------------------------------------------------------------------------
if ENABLE_NETWORKD
rootlibexec_PROGRAMS += \
diff --git a/meson.build b/meson.build
index a7a316a74f..5a77785b8c 100644
--- a/meson.build
+++ b/meson.build
@@ -2134,8 +2134,7 @@ exe = executable('systemd-nspawn',
'src/core/loopback-setup.c',
'src/core/loopback-setup.h',
include_directories : [includes, include_directories('src/nspawn')],
- link_with : [libfirewall,
- libshared],
+ link_with : [libshared],
dependencies : [libacl,
libblkid,
libseccomp,
@@ -2149,7 +2148,6 @@ if conf.get('ENABLE_NETWORKD', 0) == 1
systemd_networkd_sources,
include_directories : includes,
link_with : [libnetworkd_core,
- libfirewall,
libsystemd_network,
libudev_internal,
libshared],
diff --git a/src/network/meson.build b/src/network/meson.build
index 94bbb156aa..771aa68ec1 100644
--- a/src/network/meson.build
+++ b/src/network/meson.build
@@ -128,9 +128,8 @@ if conf.get('ENABLE_NETWORKD', 0) == 1
[libnetworkd_core,
libudev_internal,
libsystemd_network,
- libshared,
- libfirewall],
- [libiptc]],
+ libshared],
+ []],
[['src/network/test-network-tables.c',
'src/network/test-network-tables.c',
@@ -139,8 +138,7 @@ if conf.get('ENABLE_NETWORKD', 0) == 1
libudev_internal,
libudev_core,
libsystemd_network,
- libshared,
- libfirewall],
+ libshared],
[],
'', '', [],
[network_include_dir] + libudev_core_includes],
diff --git a/src/resolve/meson.build b/src/resolve/meson.build
index 46a417e766..347ffaaeca 100644
--- a/src/resolve/meson.build
+++ b/src/resolve/meson.build
@@ -135,10 +135,10 @@ if conf.get('ENABLE_RESOLVED', 0) == 1
configuration : substs)
install_data(resolved_conf,
install_dir : pkgsysconfdir)
-endif
-install_data('resolv.conf',
- install_dir : rootlibexecdir)
+ install_data('resolv.conf',
+ install_dir : rootlibexecdir)
+endif
tests += [
[['src/resolve/test-resolve-tables.c',
diff --git a/src/shared/meson.build b/src/shared/meson.build
index 8968127d3f..0747f76649 100644
--- a/src/shared/meson.build
+++ b/src/shared/meson.build
@@ -34,6 +34,7 @@ shared_sources = '''
efivars.h
fdset.c
fdset.h
+ firewall-util.h
fstab-util.c
fstab-util.h
gcrypt-util.c
@@ -114,6 +115,10 @@ if conf.get('HAVE_SECCOMP', 0) == 1
shared_sources += ['seccomp-util.c']
endif
+if conf.get('HAVE_LIBIPTC', 0) == 1
+ shared_sources += ['firewall-util.c']
+endif
+
libshared_name = 'systemd-shared-@0@'.format(meson.project_version())
libshared = shared_library(
@@ -152,21 +157,9 @@ libshared_static = static_library(
libcap,
libacl,
libcryptsetup,
- libiptc,
libseccomp,
libselinux,
libidn,
libxz,
liblz4,
libblkid])
-
-if conf.get('HAVE_LIBIPTC', 0) == 1
- libfirewall = static_library(
- 'firewall',
- 'firewall-util.h',
- 'firewall-util.c',
- include_directories : includes,
- dependencies : [libiptc])
-else
- libfirewall = []
-endif
diff --git a/src/shared/pager.c b/src/shared/pager.c
index 22d7603ec6..4d7b02c63c 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -176,12 +176,14 @@ void pager_close(void) {
/* Inform pager that we are done */
(void) fflush(stdout);
- if (stdout_redirected && ((stored_stdout < 0) || (dup2(stored_stdout, STDOUT_FILENO) < 0)))
- (void) close(STDOUT_FILENO);
+ if (stdout_redirected)
+ if (stored_stdout < 0 || dup2(stored_stdout, STDOUT_FILENO) < 0)
+ (void) close(STDOUT_FILENO);
stored_stdout = safe_close(stored_stdout);
(void) fflush(stderr);
- if (stderr_redirected && ((stored_stderr < 0) || (dup2(stored_stderr, STDERR_FILENO) < 0)))
- (void) close(STDERR_FILENO);
+ if (stderr_redirected)
+ if (stored_stderr < 0 || dup2(stored_stderr, STDERR_FILENO) < 0)
+ (void) close(STDERR_FILENO);
stored_stderr = safe_close(stored_stderr);
stdout_redirected = stderr_redirected = false;
diff --git a/src/test/meson.build b/src/test/meson.build
index 488d1ebaaa..4ae1210fe1 100644
--- a/src/test/meson.build
+++ b/src/test/meson.build
@@ -409,8 +409,7 @@ tests += [
[['src/test/test-firewall-util.c'],
- [libfirewall,
- libshared],
+ [libshared],
[],
'HAVE_LIBIPTC'],
diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
index d466e1b759..06e2d7b71b 100644
--- a/src/update-done/update-done.c
+++ b/src/update-done/update-done.c
@@ -17,8 +17,10 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include "alloc-util.h"
#include "fd-util.h"
#include "fileio.h"
+#include "fs-util.h"
#include "io-util.h"
#include "selinux-util.h"
#include "util.h"
@@ -36,6 +38,7 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
_cleanup_fclose_ FILE *f = NULL;
int fd = -1;
int r;
+ _cleanup_(unlink_and_freep) char *tmp = NULL;
assert(path);
assert(ts);
@@ -50,20 +53,20 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
if (r < 0)
return log_error_errno(r, "Failed to set SELinux context for %s: %m", path);
- fd = open(path, O_CREAT|O_WRONLY|O_TRUNC|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
+ fd = open_tmpfile_linkable(path, O_WRONLY|O_CLOEXEC, &tmp);
mac_selinux_create_file_clear();
if (fd < 0) {
if (errno == EROFS)
- return log_debug("Can't create timestamp file %s, file system is read-only.", path);
+ return log_debug("Can't create temporary timestamp file %s, file system is read-only.", tmp);
- return log_error_errno(errno, "Failed to create/open timestamp file %s: %m", path);
+ return log_error_errno(errno, "Failed to create/open temporary timestamp file %s: %m", tmp);
}
f = fdopen(fd, "we");
if (!f) {
safe_close(fd);
- return log_error_errno(errno, "Failed to fdopen() timestamp file %s: %m", path);
+ return log_error_errno(errno, "Failed to fdopen() timestamp file %s: %m", tmp);
}
(void) fprintf(f,
@@ -76,7 +79,15 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
return log_error_errno(r, "Failed to write timestamp file: %m");
if (futimens(fd, twice) < 0)
- return log_error_errno(errno, "Failed to update timestamp on %s: %m", path);
+ return log_error_errno(errno, "Failed to update timestamp on %s: %m", tmp);
+
+ /* fix permissions */
+ (void) fchmod(fd, 0644);
+ r = link_tmpfile(fd, tmp, path);
+ if (r < 0)
+ return log_error_errno(r, "Failed to move \"%s\" to \"%s\": %m", tmp, path);
+
+ tmp = mfree(tmp);
return 0;
}