Merge branch 'master' into meson-no-libudev

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2017-04-27 13:39:54 -04:00 committed by GitHub
commit 0bc9115251
8 changed files with 38 additions and 37 deletions

View file

@ -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 += \

View file

@ -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],

View file

@ -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],

View file

@ -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',

View file

@ -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

View file

@ -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;

View file

@ -409,8 +409,7 @@ tests += [
[['src/test/test-firewall-util.c'],
[libfirewall,
libshared],
[libshared],
[],
'HAVE_LIBIPTC'],

View file

@ -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;
}