diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libbb.h | 6 | ||||
-rw-r--r-- | include/platform.h | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/include/libbb.h b/include/libbb.h index 1faa9e9..2868eba 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -965,6 +965,12 @@ enum { /* How long the longest ESC sequence we know? */ KEYCODE_BUFFER_SIZE = 4 }; +/* Note: fd may be in blocking or non-blocking mode, both make sense. + * For one, less uses non-blocking mode. + * Only the first read syscall inside read_key may block indefinitely + * (unless fd is in non-blocking mode), + * subsequent reads will time out after a few milliseconds. + */ int read_key(int fd, smalluint *nbuffered, char *buffer) FAST_FUNC; diff --git a/include/platform.h b/include/platform.h index 47fd5f6..317349f 100644 --- a/include/platform.h +++ b/include/platform.h @@ -173,7 +173,10 @@ /* performs reasonably well (gcc usually inlines memcpy here) */ #define move_from_unaligned16(v, u16p) (memcpy(&(v), (u16p), 2)) #define move_from_unaligned32(v, u32p) (memcpy(&(v), (u32p), 4)) -#define move_to_unaligned32(u32p, v) (memcpy((u32p), &(v), 4)) +#define move_to_unaligned32(u32p, v) do { \ + uint32_t __t = (v); \ + memcpy((u32p), &__t, 4); \ +} while (0) #endif /* ---- Networking ------------------------------------------ */ |