summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-16 17:17:21 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-16 23:26:44 +0100
commit943aad8ca57a6b5c49c4ea60f9e8c13bf9b20e6c (patch)
tree94ff8a9dd029b7505a1917b9d781e87b06454f19 /src
parent92b5814007dc5c9c44e94e717be6f53e24c356c0 (diff)
journal, shared: fix warnings during compilation on 32 bits
Some filesystem magics are too big to fit in 31 bits, and are wrapped to negative. f_type is an int on 32 bits, so it is signed, and we get a warning on comparison.
Diffstat (limited to 'src')
-rw-r--r--src/journal/catalog.c2
-rw-r--r--src/journal/sd-journal.c2
-rw-r--r--src/shared/util.c18
3 files changed, 12 insertions, 10 deletions
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index 22029da851..2812d5970b 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -384,7 +384,7 @@ int catalog_update(void) {
goto finish;
}
- log_debug("%s: wrote %u items, with %zu bytes of strings, %zu total size.",
+ log_debug("%s: wrote %u items, with %zu bytes of strings, %ld total size.",
CATALOG_DATABASE, n, sb->len, ftell(w));
free(p);
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index c86f1eaab1..41f0c4dfb4 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -1205,7 +1205,7 @@ static void check_network(sd_journal *j, int fd) {
return;
j->on_network =
- sfs.f_type == CIFS_MAGIC_NUMBER ||
+ (long)sfs.f_type == (long)CIFS_MAGIC_NUMBER ||
sfs.f_type == CODA_SUPER_MAGIC ||
sfs.f_type == NCP_SUPER_MAGIC ||
sfs.f_type == NFS_SUPER_MAGIC ||
diff --git a/src/shared/util.c b/src/shared/util.c
index 6d826b6f5e..4cf928f83a 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3400,6 +3400,12 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct
return ret;
}
+static int is_temporary_fs(struct statfs *s) {
+ assert(s);
+ return s->f_type == TMPFS_MAGIC ||
+ (long)s->f_type == (long)RAMFS_MAGIC;
+}
+
int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) {
struct statfs s;
@@ -3413,9 +3419,7 @@ int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root
/* We refuse to clean disk file systems with this call. This
* is extra paranoia just to be sure we never ever remove
* non-state data */
-
- if (s.f_type != TMPFS_MAGIC &&
- s.f_type != RAMFS_MAGIC) {
+ if (!is_temporary_fs(&s)) {
log_error("Attempted to remove disk file system, and we can't allow that.");
close_nointr_nofail(fd);
return -EPERM;
@@ -3448,8 +3452,7 @@ static int rm_rf_internal(const char *path, bool only_dirs, bool delete_root, bo
if (statfs(path, &s) < 0)
return -errno;
- if (s.f_type != TMPFS_MAGIC &&
- s.f_type != RAMFS_MAGIC) {
+ if (!is_temporary_fs(&s)) {
log_error("Attempted to remove disk file system, and we can't allow that.");
return -EPERM;
}
@@ -3468,8 +3471,7 @@ static int rm_rf_internal(const char *path, bool only_dirs, bool delete_root, bo
return -errno;
}
- if (s.f_type != TMPFS_MAGIC &&
- s.f_type != RAMFS_MAGIC) {
+ if (!is_temporary_fs(&s)) {
log_error("Attempted to remove disk file system, and we can't allow that.");
close_nointr_nofail(fd);
return -EPERM;
@@ -5767,7 +5769,7 @@ bool in_initrd(void) {
saved = access("/etc/initrd-release", F_OK) >= 0 &&
statfs("/", &s) >= 0 &&
- (s.f_type == TMPFS_MAGIC || s.f_type == RAMFS_MAGIC);
+ is_temporary_fs(&s);
return saved;
}