X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fclean-ipc.c;h=0cfb684229f7715968c37fa0c3ff15d185822b6b;hb=51e8372fb6cca277dc7afc6e83f48a1a2b6d4dbe;hp=cb1722614e7cd5dc21f938bafa2b2d6629b4f9b1;hpb=f7dc3ab9f43b67abcbd34062b9352ab42debec49;p=elogind.git diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c index cb1722614..0cfb68422 100644 --- a/src/shared/clean-ipc.c +++ b/src/shared/clean-ipc.c @@ -19,19 +19,30 @@ along with systemd; If not, see . ***/ +#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include #include +#include +#include #include -#include -#include -#include -#include +#include -#include "util.h" -#include "strv.h" #include "clean-ipc.h" +#include "dirent-util.h" +#include "fd-util.h" +#include "fileio.h" +#include "formats-util.h" +#include "log.h" +#include "macro.h" +#include "string-util.h" +#include "strv.h" static int clean_sysvipc_shm(uid_t delete_uid) { _cleanup_fclose_ FILE *f = NULL; @@ -44,8 +55,7 @@ static int clean_sysvipc_shm(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/shm: %m"); - return -errno; + return log_warning_errno(errno, "Failed to open /proc/sysvipc/shm: %m"); } FOREACH_LINE(line, f, goto fail) { @@ -78,16 +88,16 @@ static int clean_sysvipc_shm(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV shared memory segment %i: %m", shmid); - ret = -errno; + ret = log_warning_errno(errno, + "Failed to remove SysV shared memory segment %i: %m", + shmid); } } return ret; fail: - log_warning("Failed to read /proc/sysvipc/shm: %m"); - return -errno; + return log_warning_errno(errno, "Failed to read /proc/sysvipc/shm: %m"); } static int clean_sysvipc_sem(uid_t delete_uid) { @@ -101,8 +111,7 @@ static int clean_sysvipc_sem(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/sem: %m"); - return -errno; + return log_warning_errno(errno, "Failed to open /proc/sysvipc/sem: %m"); } FOREACH_LINE(line, f, goto fail) { @@ -130,16 +139,16 @@ static int clean_sysvipc_sem(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV semaphores object %i: %m", semid); - ret = -errno; + ret = log_warning_errno(errno, + "Failed to remove SysV semaphores object %i: %m", + semid); } } return ret; fail: - log_warning("Failed to read /proc/sysvipc/sem: %m"); - return -errno; + return log_warning_errno(errno, "Failed to read /proc/sysvipc/sem: %m"); } static int clean_sysvipc_msg(uid_t delete_uid) { @@ -153,8 +162,7 @@ static int clean_sysvipc_msg(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/msg: %m"); - return -errno; + return log_warning_errno(errno, "Failed to open /proc/sysvipc/msg: %m"); } FOREACH_LINE(line, f, goto fail) { @@ -183,16 +191,16 @@ static int clean_sysvipc_msg(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV message queue %i: %m", msgid); - ret = -errno; + ret = log_warning_errno(errno, + "Failed to remove SysV message queue %i: %m", + msgid); } } return ret; fail: - log_warning("Failed to read /proc/sysvipc/msg: %m"); - return -errno; + return log_warning_errno(errno, "Failed to read /proc/sysvipc/msg: %m"); } static int clean_posix_shm_internal(DIR *dir, uid_t uid) { @@ -211,7 +219,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to stat() POSIX shared memory segment %s: %m", de->d_name); + log_warning_errno(errno, "Failed to stat() POSIX shared memory segment %s: %m", de->d_name); ret = -errno; continue; } @@ -225,7 +233,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { kid = xopendirat(dirfd(dir), de->d_name, O_NOFOLLOW|O_NOATIME); if (!kid) { if (errno != ENOENT) { - log_warning("Failed to enter shared memory directory %s: %m", de->d_name); + log_warning_errno(errno, "Failed to enter shared memory directory %s: %m", de->d_name); ret = -errno; } } else { @@ -239,7 +247,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to remove POSIX shared memory directory %s: %m", de->d_name); + log_warning_errno(errno, "Failed to remove POSIX shared memory directory %s: %m", de->d_name); ret = -errno; } } else { @@ -249,7 +257,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to remove POSIX shared memory segment %s: %m", de->d_name); + log_warning_errno(errno, "Failed to remove POSIX shared memory segment %s: %m", de->d_name); ret = -errno; } } @@ -258,7 +266,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { return ret; fail: - log_warning("Failed to read /dev/shm: %m"); + log_warning_errno(errno, "Failed to read /dev/shm: %m"); return -errno; } @@ -270,13 +278,13 @@ static int clean_posix_shm(uid_t uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /dev/shm: %m"); - return -errno; + return log_warning_errno(errno, "Failed to open /dev/shm: %m"); } return clean_posix_shm_internal(dir, uid); } +#if 0 /// UNNEEDED by elogind static int clean_posix_mq(uid_t uid) { _cleanup_closedir_ DIR *dir = NULL; struct dirent *de; @@ -287,8 +295,7 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /dev/mqueue: %m"); - return -errno; + return log_warning_errno(errno, "Failed to open /dev/mqueue: %m"); } FOREACH_DIRENT(de, dir, goto fail) { @@ -302,8 +309,9 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to stat() MQ segment %s: %m", de->d_name); - ret = -errno; + ret = log_warning_errno(errno, + "Failed to stat() MQ segment %s: %m", + de->d_name); continue; } @@ -317,17 +325,18 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to unlink POSIX message queue %s: %m", fn); - ret = -errno; + ret = log_warning_errno(errno, + "Failed to unlink POSIX message queue %s: %m", + fn); } } return ret; fail: - log_warning("Failed to read /dev/mqueue: %m"); - return -errno; + return log_warning_errno(errno, "Failed to read /dev/mqueue: %m"); } +#endif // 0 int clean_ipc(uid_t uid) { int ret = 0, r; @@ -352,9 +361,12 @@ int clean_ipc(uid_t uid) { if (r < 0) ret = r; + +#if 0 /// elogind does not use mq_open anywhere r = clean_posix_mq(uid); if (r < 0) ret = r; +#endif // 0 return ret; }