chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: fix strict aliasing violations in use of struct inotify_event v5
[elogind.git]
/
src
/
shared
/
util.h
diff --git
a/src/shared/util.h
b/src/shared/util.h
index ec0a6639cad5880a16d1c35e48b6f96b24c45522..7f02f42c61e11e1da94dd6bc866a4be611dd371f 100644
(file)
--- a/
src/shared/util.h
+++ b/
src/shared/util.h
@@
-42,6
+42,7
@@
#include <locale.h>
#include <mntent.h>
#include <sys/socket.h>
#include <locale.h>
#include <mntent.h>
#include <sys/socket.h>
+#include <sys/inotify.h>
#if SIZEOF_PID_T == 4
# define PID_FMT "%" PRIu32
#if SIZEOF_PID_T == 4
# define PID_FMT "%" PRIu32
@@
-1047,10
+1048,15
@@
int sethostname_idempotent(const char *s);
#define INOTIFY_EVENT_MAX (sizeof(struct inotify_event) + NAME_MAX + 1)
#define FOREACH_INOTIFY_EVENT(e, buffer, sz) \
#define INOTIFY_EVENT_MAX (sizeof(struct inotify_event) + NAME_MAX + 1)
#define FOREACH_INOTIFY_EVENT(e, buffer, sz) \
- for ((e) =
(struct inotify_event*) (buffer);
\
- (uint8_t*) (e) < (uint8_t*) (buffer) + (sz); \
+ for ((e) =
&buffer.ev;
\
+ (uint8_t*) (e) < (uint8_t*) (buffer
.raw
) + (sz); \
(e) = (struct inotify_event*) ((uint8_t*) (e) + sizeof(struct inotify_event) + (e)->len))
(e) = (struct inotify_event*) ((uint8_t*) (e) + sizeof(struct inotify_event) + (e)->len))
+union inotify_event_buffer {
+ struct inotify_event ev;
+ uint8_t raw[INOTIFY_EVENT_MAX];
+};
+
#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
int ptsname_malloc(int fd, char **ret);
#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
int ptsname_malloc(int fd, char **ret);